PAM

PAM,(Pluggable Authentication Modules for Linux),Linux可植入式验证模块

当User访问一个Service或者Program,应用程序需要进行认证服务,会根据自身定义认证的PAM配置文件来调用PAM相关模块进行验证,最后将验证结果返回给应用程序,应用程序再产生相应的动作。

并不是所有程序都支持PAM,通过 ldd /usr/sbin/sshd |grep pam 查看对应程序是否支持

PAM配置文件保存位置 /etc/pam.d/*

一、配置文件构成

vim /etc/pam.d/sshd

第一列:module-type

名称描述
auth对用户身份进行识别,如提示输入密码,判断是否root
account对账号各项属性进行检查,如是否允许登录,是否达到最大用户数
session定义登录前,及退出后所要进行的操作
password使用用户信息来更新数据,如修改用户密码

第二列:control-flag

名称描述
optional他表示即便该行所涉及的模块验证失败用户仍能通过认证
required表示该行以及所涉及模块的成功是用户通过鉴别的必要条件
requisite与required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别
sufficient表示该行以及所涉及模块验证成功是用户通过鉴别的充分条件
include包含后面的子配置文件,如果子配置文件里流程失败,也会退出父流程
substack包含后面的子配置文件,如果子配置文件里流程失败,只退出子配置流程,不退出父流程

第三列:模块名

第四列:模块参数

二、模块案例

查看帮助文档:

man 模块名

pam_nologin

禁止所有非root用户登录

# man pam_nologin

touch /etc/nologin

pam_listfile

实现sshd黑白名单

# man pam_nologin

# vim /etc/pam.d/sshd
auth       required     pam_listfile.so item=user sense=deny file=/etc/ssh/blacklist onerr=succeed

可以通过查看/var/log/secure日志看到pam相关的拒绝信息

pam_time

sshd登录加上时间限制

#man pam_time

#1.修改pam配置文件 ,添加如下内容
#vim /etc/pam.d/sshd
account     requisite     pam_time.so
#2.添加对应策略
vim /etc/security/time.conf
#user01用户在周四的17点到18点不能ssh登录
sshd;*;user01;!Th1700-1800

pam_tally2

限制登录时错误次数,方式暴力破解密码

# man pam_tally2
# vim /etc/pam.d/sshd
auth   required   pam_tally2.so deny=3 even_deny_root root_unlock_time=600 unlock_time=600

#查看某个用户错误次数
pam_tally2 --user=root

pam_limits

限制用户会话对系统资源的使用,该模块对root无效

# man pam_limits

#vim /etc/pam.d/sshd
session    required     pam_limits.so

#vim /etc/security/limits.conf
#表示user01普通用户,最多只能ssh登录两个,第三个登录就会被拒绝
user01     hard    maxlogins       2

更多:man limits.conf

Last modification:April 13th, 2020 at 10:26 pm