Linux 密码的安全

[步骤] Linux 密码的安全 (本地和 SSH 输错密码次数的限制)(pam_faillock 版) (CentOS Linux 7 & Rocky Linux 8 & RHEL 7 & RHEL 8 版)

https://eternalcenter.com/password-security-local-ssh-login-attempt-pam_faillock-centos-linux-7-centos-linux-8-rhel-7-rhel-8/#51_%E6%98%BE%E7%A4%BA%E6%9F%90%E4%B8%AA%E7%94%A8%E6%88%B7%E8%BF%91%E6%9C%9F%E8%BE%93%E9%94%99%E4%BA%86%E5%87%A0%E6%AC%A1%E5%AF%86%E7%A0%81
 

正文:

步骤一:背景了解

从 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

posted @ 2022-11-09 15:28  jjp816  阅读(592)  评论(0编辑  收藏  举报