通过 linux-PAM 实现禁止 root 用户登陆的方法
前言
在 linux 系统中,root 账户是有全部管理权限的,一旦 root 账户密码外泄,对于服务器而言将是致命的威胁;出于安全考虑,通常会限制 root 账户的登陆,改为配置普通用户登陆服务器后 su 切换到 root 账户使用,这种方式较为安全,限制 root 账户登陆的方式有多种,本文主要介绍如何通过 linux-PAM 限制账户登陆;
PAM 模块简介
Linux-PAM (Pluggable Authentication Modules for Linux)可插拔认证模块。Linux-PAM 是一套适用于 Linux 的身份验证共享库系统,它为系统中的应用程序或服务提供动态身份验证模块支持。它提供了对所有服务进行认证的中央机制,在 Linux 中,PAM 是可动态配置的,本地系统管理员可以自由选择应用程序如何对用户进行身份验证。
由此可知 PAM 可以对 linux 系统的账户做验证,我们通过 PAM 模块可以对 linux 系统内的账户进行登陆限制;PAM 下的功能模块较多,此次主要讲述通过 pam_listfile.so 模块限制账户登陆的方法
pam_listfile.so 模块可以实现基于"用户/组,主机名/IP,终端"的访问控制。访问控制依靠 PAM 配置文件中的控制选项和一个自定义的配置文件来实现的。而且除了针对上述访问源的控制之外,还能够控制到 ruser,rhost,所属用户组和登录 shell。
访问控制的配置方法
下面说下基于用户的访问控制的配置方法:
/etc/pam.d/目录下是 PAM 配置文件所在路径,/etc/pam.d/sshd 和/etc/pam.d/login 两个文件是本次要修改的文件;/etc/pam.d/sshd 对应的是 sshd 登陆的配置文件,/etc/pam.d/login 对应的是管理终端登陆的配置文件;
我们先在/etc/pam.d/sshd 文件中增加一行如下信息:
auth required pam_listfile.so item=user sense=deny file=/etc/pam.d/denyuser onerr=succeed
此行表示用户通过管理终端登陆主机的时候,会调用 pam_listfile.so 模块来验证用户是否可以登录;pam_listfile.so 中配置的 item=user 表示基于用户;sense=deny 表示拒绝;file=/etc/pam.d/denyuser 则是定义了一个 denyuser 的文件;此行的含义是 denyuser 文件中的用户拒绝通过 ssh 系统;
此处对 pam_listfile.so 模块配置做下说明:
格式分为五个部分:分别是 item、sense、file、onerr 以及 apply。
其中:
item=[tty|user|rhost|ruser|group|shell]:定义了对哪些列出的目标或者条件采用规则,显然,这里可以指定多种不同的条件。
onerr=succeed|fail:定义了当出现错误(比如无法打开配置文件)时的缺省返回值。
sense=allow|deny:定义了当在配置文件中找到符合条件的项目时的控制方式。如果没有找到符合条件的项目,则一般验证都会通过。
file=filename:用于指定配置文件的全路径名称。
apply=user|@group:定义规则适用的用户类型(用户或者组)。
测试效果
我们在云主机中添加此配置测试下效果;
编辑下/etc/pam.d/sshd 文件添加上述信息:(信息需要添加到 auth 的第一行之前,否则不会生效)
在/etc/pam.d 目录下创建 denyuser 文件,并写入 root;
之后测试下使用 root 账户 ssh 登录云主机,提示密码被拒绝;
在服务器内查看/var/log/secure 文件,日志中显示的登陆错误为:
根据日志可以看出 root 登陆不上是被 pam_listfile 限制了;
如果想限制其他用户,可以在 denyuser 文件中将要限制的用户名添加下,添加后对应用户的登陆也会被限制;
下面在通过在/etc/pam.d/login 配置文件添加限制,login 文件控制的是终端登陆,云主机通过控制台的远程连接功能登陆属于终端登陆;
调整后通过远程终端 vnc 连接后,使用 root 账户登陆无法正常;说明配置已经生效。
以上是通过 linux-PAM 的 pam_listfile.so 模块限制账户登陆的方法,我们可以灵活运用此模块限制主机内的账户登陆情况,加强主机的安全性。
作者:马寅初
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/311c0eb74125c4e29638c47b3】。文章转载请联系作者。
评论