前言在linux系统中,root账户拥有完全的管理权限。root账户密码一旦泄露,将对服务器造成致命威胁;出于安全考虑,通常限制root账号的登录,改为配置普通用户登录服务器后切换到root账号。这种方法更安全。有很多方法可以限制root账户的登录。本文主要介绍如何通过linux-PAM登录限制账号;PAM模块介绍Linux-PAM(PluggableAuthenticationModulesforLinux)可插拔认证模块。Linux-PAM是Linux的认证共享库系统,为系统中的应用程序或服务提供动态认证模块支持。它提供了一个用于验证所有服务的中央机制。在Linux中,PAM是动态可配置的,本地系统管理员可以自由选择应用程序如何验证用户。由此我们可以看出PAM可以对linux系统的账户进行校验,我们可以通过PAM模块来限制linux系统中账户的登录;PAM下有很多功能模块,这次主要介绍通过pam_listfile.so模块限制账号登录的方法pam_listfile.so模块可以实现基于“用户/组、主机名/IP、终端”的访问控制。访问控制是通过PAM配置文件和自定义配置文件中的控制选项实现的。并且除了对上述访问源的控制外,它还可以控制ruser、rhost、所属的用户组、loginshell。访问控制的配置方法基于用户的访问控制的配置方法如下:/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文件中输入/添加一行信息如下:authrequiredpam_listfile.soitem=usersense=denyfile=/etc/pam.d/denyuseronerr=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__:定义在配置文件中找到符合条件的item时的控制方式。如果没有找到符合条件的项目,则一般验证将通过。file=filename__:用于指定配置文件的全路径名。_apply=user|@group__:定义规则适用的用户类型(用户或组)_。测试效果我们在云主机上添加这个配置来测试效果;编辑/etc/pam.d/sshd文件,添加以上信息:(该信息需要添加在auth第一行之前,否则不生效)在/etc/pam.conf中创建一个denyuser文件。d目录并将其写入根目录;然后测试使用root账号ssh登录云主机,提示密码被拒绝;查看服务器中的/var/log/secure文件,日志中显示的登录错误为:根据日志可以看出root登录被pam_listfile限制;如果想限制其他用户,可以在denyuser文件中添加要限制的用户名,添加后相应用户的登录也会被限制;etc/pam.d/login配置文件增加了限制。登录文件控制终端登录。通过控制台远程连接功能登录云主机属于终端登录;调整后root账号通过远程终端vnc连接后无法正常登录;表示配置已经生效。以上就是通过linux-PAM的pam_listfile.so模块限制账号登录的方法。我们可以灵活使用该模块来限制主机内的账号登录,加强主机的安全性。作者:马寅初