正文:
步骤一:背景了解
从 CentOS Linux 8 & RHEL 8 开始,系统的身份验证模块从 CentOS Linux 7 & RHEL 7 的 pam_tally2 换成了 pam_faillock
步骤二:让 sshd 使用可插入身份验证模块
2.1 修改 /etc/ssh/sshd_config 配置文件
# vim /etc/ssh/sshd_config
将以下内容:
......
#UsePAM no
......
修改为:
......
UsePAM yes
......
2.2 让修改的配置生效
# systemctl restart sshd
步骤三:让本地登录和 sshd 登录使用密码认证
3.1 确认 /etc/pam.d/login 配置文件
# cat /etc/pam.d/login | grep system-auth
确保包含以下内容:
auth substack system-auth
account include system-auth
password include system-auth
session include system-auth
3.2 确认 /etc/pam.d/sshd 配置文件
# cat /etc/pam.d/sshd | grep password-auth
确保包含以下内容:
auth substack password-auth
account include password-auth
password include password-auth
session include password-auth
步骤四:设置 pam_faillock.so 模块
4.1 方法一:在配置文件中添加 pam_faillock.so 模块和相关参数
4.1.1 在 /etc/pam.d/system-auth 配置文件中添加 pam_faillock.so 模块和相关参数 (Rocky Linux 8 & RHEL 8 不建议)
# vim /etc/pam.d/system-auth
在此行:
......
auth required pam_env.so
......
下面添加:
......
auth required pam_faillock.so preauth silent audit even_deny_root deny=6 unlock_time=180
......
在此行:
......
auth sufficient pam_unix.so nullok try_first_pass
......
下面添加:
......
auth [default=die] pam_faillock.so authfail audit even_deny_root deny=6 unlock_time=180
......
在此行:
......
account required pam_unix.so
......
下面添加:
......
account required pam_faillock.so
......
(补充:这里以包括 root 用户每使用密码 SSH 远程登录失败 6 次则被锁定 180 秒为例)
(
注意:
Rocky Linux 8 & RHEL 8 不建议执行此步骤,执行后 Rocky Linux 8 & RHEL 8 正常的 SFTP 登录会被视为失败,不过正常的 SSH 登录不受影响。若要确保正常 SFTP 登录不被视为失败登录,则需要确保部分内容如下:
# cat /etc/authselect/system-auth
......
auth required pam_faillock.so preauth silent
......
auth required pam_faillock.so authfail
......
account required pam_faillock.so
......
)
4.1.2 在 /etc/pam.d/system-auth 配置文件中设置登录失败几次后提示登录失败
# vim /etc/pam.d/system-auth
将以下内容:
......
password requisite pam_pwquality.so ......
......
修改为:
......
password requisite pam_pwquality.so try_first_pass local_users_only enforce-for-root retry=3 ......
......
(补充:这里以登录失败 3 次后提示登录失败为例)
4.1.3 在 /etc/pam.d/password-auth 配置文件中添加 pam_faillock.so 模块和相关参数 (Rocky Linux 8 & RHEL 8 不建议)
# vim /etc/pam.d/password-auth
在此行:
......
auth required pam_env.so
......
下面添加:
......
auth required pam_faillock.so preauth silent audit even_deny_root deny=6 unlock_time=180
......
在此行:
......
auth sufficient pam_unix.so try_first_pass nullok
......
下面添加:
......
auth [default=die] pam_faillock.so authfail audit even_deny_root deny=6 unlock_time=180
......
在此行:
......
account required pam_unix.so
......
下面添加:
......
account required pam_faillock.so
......
(补充:这里以包括 root 用户每使用密码 SSH 远程登录失败 6 次则被锁定 180 秒为例)
(
注意:Rocky Linux 8 & RHEL 8 不建议执行此步骤,执行后 Rocky Linux 8 & RHEL 8 正常的 SFTP 登录会被视为错误失败,不过正常的 SSH 登录不受影响。若要确保正常 SFTP 登录不被视为失败登录,则需要确保部分内容如下:
# cat /etc/authselect/password-auth
......
auth required pam_faillock.so preauth silent
......
auth required pam_faillock.so authfail
......
account required pam_faillock.so
......
)
4.1.4 在 /etc/pam.d/password-auth 配置文件中设置登录失败几次后提示登录失败
# vim /etc/pam.d/password-auth
将以下内容:
......
password requisite pam_pwquality.so ......
......
修改为:
......
password requisite pam_pwquality.so try_first_pass local_users_only enforce-for-root retry=3 ......
......
(补充:这里以登录失败 3 次后提示登录失败为例)
4.1.5 修改 /etc/security/faillock.conf 配置文件 (只在 Rocky Linux 8 & RHEL 8 上执行)
# vim /etc/security/faillock.conf
将以下内容:
......
# deny =
......
# unlock_time =
......
修改为:
......
deny = 6
......
unlock_time = 180
......
(注意:只在 Rocky Linux 8 & RHEL 8 才进行此操作)
4.2 方法二:通过 authconfig 命令启用 pam_faillock.so 模块并设置相关参数
4.2.1 通过 authconfig 命令启用 pam_faillock.so 模块并设置相关参数
# authconfig --enablefaillock --faillockargs="deny=6 unlock_timeout=180" --update
(
补充:
1) 这里以包括 root 用户每使用密码 SSH 远程登录失败 6 次则被锁定 180 秒
2) 登录失败 3 次后提示登录失败
为例
)
4.2.2 通过 authconfig 命令启用 pam_faillock.so 模块并设置相关参数
# authconfig --disablefaillock --update
步骤五:用户登录失败的管理
5.1 显示某个用户近期输错了几次密码
# faillock --user root
(补充:这里以显示 root 用户近期输错了几次密码为例)
5.2 重制远程登录密码输错次数
5.2.1 重制某用户远程登录密码输错次数
# faillock --user root --reset
5.2.2 重制所有用户远程登录密码输错次数
# faillock --reset
步骤六:部分用户输错密码次数限制的排除 (Rocky Linux 8 & RHEL 8 不建议)
6.1 在 /etc/pam.d/system-auth 配置文件中添加 pam_succeed_if.so 模块和相关参数 (Rocky Linux 8 & RHEL 8 不建议)
# vim /etc/pam.d/system-auth
在此行:
......
auth required pam_faillock.so preauth silent audit even_deny_root deny=6 unlock_time=180
......
下面添加:
......
auth [success=1 default=ignore] pam_succeed_if.so user in mingyuzhu1:mingyuzhu2:mingyuzhu3
......
(补充:这里以排除用户 zhumingyu1、zhumingyu2 和 zhumingyu3 的输错密码次数限制为例)
(注意:Rocky Linux 8 & RHEL 8 不建议执行此步骤)
5.2 在 /etc/pam.d/password-auth 配置文件中添加 pam_succeed_if.so 模块和相关参数 (Rocky Linux 8 & RHEL 8 不建议)
# vim /etc/pam.d/password-auth
在此行:
......
auth [default=die] pam_faillock.so authfail audit even_deny_root deny=6 unlock_time=180
......
下面添加:
......
auth [success=1 default=ignore] pam_succeed_if.so user in mingyuzhu1:mingyuzhu2:mingyuzhu3
......
(补充:这里以排除用户 zhumingyu1、zhumingyu2 和 zhumingyu3 的输错密码次数限制为例)
(注意:Rocky Linux 8 & RHEL 8 不建议执行此步骤)
参考文献:
https://access.redhat.com/solutions/62949