目录
PAM软件介绍
PAM软件结构
1、配置文件分类
2、PAM动态库文件
3、二进制执行文件
PAM四种模块类型
PAM五个控制模块
PAM四列配置模型
PAM用户锁模块
1、查看错误登录次数(错误次数到达上限就上锁)V代表命中
2、错误登录次数清空(解锁)
PAM软件介绍
PAM 通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活的根据需要给不同的服务配置不同的认证方式,而无需更改服务程序。
PAM软件结构
1、配置文件分类
/etc/pam.d/*服务配置文件,目录中都有一个对应的文件,其中包含应当如何获取该服务的验证及帐户信息的规则或说明。用户也可根据需要在此目录下定义自己想要针对的某程序的pam 的配置文件;
/etc/security/*动态链路库配置文件,环境相关的设置的配置文件 : pam 使用的动态库文件对应使用的配置文件。
2、PAM动态库文件
由服务动态库文件与若干个功能动态库组成
3、二进制执行文件
PAM四种模块类型
分别代表四种不同的任务。
auth:认证管理
account:账号管理
session:会话管理
password:密码管理
PAM五个控制模块
控制模块处理服务相关的PAM模块成功或失败情况。
required:“一票否决",表示本模块必须返回成功才能通过认证。是如果该模块返回失败,将不再执行同一功能内的任何模块,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕再将失败结果返回给应用程序;
requisite:“一票否决”,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序;
sufficient:“一票通过”,表明本模块返回成功则通过身份认证的要求,且通过同一type 内的模块,则不必再执行同一type内的其它模块,而是去执行下一个模块。但如果本模块返回失败则可忽略;
optional:表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略 ;
include:用其他的配置文件中定义的配置信息。
PAM四列配置模型
分别定义模块名称、控制、模块库文件、参数。
以/etc/pam.d/system-auth配置为例:
auth required pam_env.so //登陆后的环境变量
auth sufficient pam_fprintd.so //指纹认证
auth sufficient pam_unix.so nullok try_first_pass //验证用户密码有效性
auth requisite pam_succeed_if.so
auth required pam_deny.so
auth required pam_faillock.so deny=3 unlock_time=900 even_deny_root root_unlock_time=10 //连续密码错误3次锁定账户,普通用户3秒后解锁,root用户10秒解锁
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet //对用户的登录条件做一些限制,允许ID小于500的用户登入。
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 ucredit=-2 lcredit=-4 dcredit=-1 ocredit=-1 //登陆失败可以重试3次;密码最小长度8;最少包括2个大写字母;最少包含4个小写字母;最少包含一个数字;最好包含一个特殊字符
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5 //用户最近5次使用过的旧密码不能重复使用
password required pam_deny.so
session optional pam_keyinit.so
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
PAM用户锁模块
1、查看错误登录次数(错误次数到达上限就上锁)V代表命中
# faillock --user xxx
2、错误登录次数清空(解锁)
# faillock –reset //解锁所有用户
# faillock --user xxx –reset //解锁xxx用户