Skip to content
Eternal Center

Eternal Center

  • Single-Node (单节点)
    • System (系统)
    • Service (服务)
    • Database (数据库)
    • Container (容器)
    • Virtualization (虚拟化)
  • Multi-Node (多节点)
    • Cluster (集群)
    • Big Data (大数据)
    • Cloud Computing (云计算)
    • Batch Processing (批量处理)
  • Approach (方式方法)
    • Languages (语言)
    • Ideas (思路)
    • Programing (编程)
    • Project (项目)
  • Eternity (永恒)
    • News (消息)
    • Creations (创作)
    • Classics (经典)
    • Legends (传说)
    • Chronicle (编年史)
    • FNIOS (宇宙公民开源学院)
Posted on January 2, 2022November 22, 2024 by Mingyu Zhu

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

  • 正文:
    • 步骤一:背景了解
    • 步骤二:让 sshd 使用可插入身份验证模块
      • 2.1 修改 /etc/ssh/sshd_config 配置文件
      • 2.2 让修改的配置生效
    • 步骤三:让本地登录和 sshd 登录使用密码认证
      • 3.1 确认 /etc/pam.d/login 配置文件
      • 3.2 确认 /etc/pam.d/sshd 配置文件
    • 步骤四:设置 pam_faillock.so 模块
      • 4.1 方法一:在配置文件中添加 pam_faillock.so 模块和相关参数
        • 4.1.1 在 /etc/pam.d/system-auth 配置文件中添加 pam_faillock.so 模块和相关参数 (Rocky Linux 8 & RHEL 8 不建议)
        • 4.1.2 在 /etc/pam.d/system-auth 配置文件中设置登录失败几次后提示登录失败
        • 4.1.3 在 /etc/pam.d/password-auth 配置文件中添加 pam_faillock.so 模块和相关参数 (Rocky Linux 8 & RHEL 8 不建议)
        • 4.1.4 在 /etc/pam.d/password-auth 配置文件中设置登录失败几次后提示登录失败
        • 4.1.5 修改 /etc/security/faillock.conf 配置文件 (只在 Rocky Linux 8 & RHEL 8 上执行)
      • 4.2 方法二:通过 authconfig 命令启用 pam_faillock.so 模块并设置相关参数
        • 4.2.1 通过 authconfig 命令启用 pam_faillock.so 模块并设置相关参数
        • 4.2.2 通过 authconfig 命令启用 pam_faillock.so 模块并设置相关参数
    • 步骤五:用户登录失败的管理
      • 5.1 显示某个用户近期输错了几次密码
      • 5.2 重制远程登录密码输错次数
        • 5.2.1 重制某用户远程登录密码输错次数
        • 5.2.2 重制所有用户远程登录密码输错次数
    • 步骤六:部分用户输错密码次数限制的排除 (Rocky Linux 8 & RHEL 8 不建议)
      • 6.1 在 /etc/pam.d/system-auth 配置文件中添加 pam_succeed_if.so 模块和相关参数 (Rocky Linux 8 & RHEL 8 不建议)
      • 5.2 在 /etc/pam.d/password-auth 配置文件中添加 pam_succeed_if.so 模块和相关参数 (Rocky Linux 8 & RHEL 8 不建议)
  • 参考文献:

正文:

步骤一:背景了解

从 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

CategoriesChinese Post (中文帖子), System (系统), System Login Security (系统登录安全), System Network & System Security & System Log (系统网络 & 系统安全 & 系统日志), System Operation & System Setting & System Software (系统操作 & 系统设置 & 系统软件), System Security (系统安全), System Setting (系统设置), System Setting Other Steps (系统设置其它步骤), System Setting Others (系统设置其它)

Post navigation

Previous PostPrevious [消息] Rocky Linux 和 AlmaLinux 可以用于代替 CentOS Linux
Next PostNext [命令] Linux 命令 [[]] (比较数值、文件、目录、链接、块、特殊文件、字符串)

Aspiration (愿景):

Everyone can achieve self-achievement and self-happiness fairly

每个人都能公平地实现自我成就和自我幸福

Logo (徽标):

Additional Information (其他信息):

About     Manual     Clone     Contact
Disclaimer     Friendly Links     Donation

关于     手册     克隆     联系
免责声明     友情链接     捐赠

Search Inside Website (站内搜索)

Search Outside Website (站外搜索):

Google         Wikipedia         Bing

Eternal URL (永恒网址):

https://eternity.eternalcenter.com Will be last access method / 将是最后的访问方式

Proudly powered by LNMP Proudly powered by WordPress