11.5. PAM 配置示例
请参阅具有详细描述的 PAM 配置文件的示例。
带注释的 PAM 配置示例
#%PAM-1.0 auth required pam_securetty.so 1 auth required pam_unix.so nullok 2 auth required pam_nologin.so 3 account required pam_unix.so 4 password required pam_pwquality.so retry=3 5 password required pam_unix.so shadow nullok use_authtok 6 session required pam_unix.so 7
- 1
- 如果
/etc/securetty
文件存在,此行确保仅允许从该文件中列出的终端进行 root 登录。如果终端没有在文件中列出,则以 root 登录登录失败,并显示Login incorrect
消息。 - 2
- 提示用户输入密码,并根据存储在
/etc/passwd
和/etc/shadow
(如果存在)中的信息进行检查。nullok
参数允许空密码。 - 3
- 检查
/etc/nologin
文件是否存在。如果存在,且用户不是 root,则身份验证失败。注意在本例中,所有三个
auth
模块都检查了,即使第一个auth
模块失败了。这是一个很好的安全方法,可防止潜在的攻击者了解其身份验证在哪个阶段失败。 - 4
- 验证用户的帐户。例如,如果启用了 shadow 密码,
pam_unix.so
模块的帐户类型会检查过期的帐户或用户是否需要更改密码。 - 5
- 如果当前密码已过期或者用户手动请求密码更改,则会提示输入新密码。然后,它会检查新创建的密码的强度,以确保它满足质量要求,且不会被基于字典的密码破解程序轻松破解。参数
retry=3
指定用户有三次尝试创建强密码的机会。 - 6
pam_unix.so
模块管理密码更改。shadow
参数指示模块在更新用户密码时创建影子密码。nullok
参数允许用户更改空密码,否则 null 密码被视为帐户锁定。use_authtok
参数接受之前输入的任何密码,而不再次提示用户输入密码。这样,所有新密码在被接受之前都必须通过pam_pwquality.so
检查,以确保密码安全。- 7
pam_unix.so
模块管理会话,并在每个会话的开始和结束时记录用户名和服务类型。日志由systemd-journald
服务收集,可使用journalctl
命令查看。日志也存储在/var/log/secure
中。此模块可以通过与其他会话模块堆叠来补充其它功能。