2024年3月27日 星期三

在Linux 使用pam_faillock鎖定使用者帳戶

在Linux使用pam_faillock鎖定使用者帳戶

為了增加主機安全性,將限定使用者帳號登入密碼錯誤次數後鎖定使用者帳戶。
現有主機OS為CentOS7.9,參考RedHat官網資料1資料2資料3
發現在Red Hat Enterprise Linux 7可以使用pam_faillock和pam_tally 2種方式。
將使用pam_faillock來設定使用者3次失敗後鎖定使用者帳號10分鐘(600 秒)的功能。

設定

在RHEL 7.x 參考資料1,有2個方法。

第一個直接修改PAM設定檔
直接將以下設定加入/etc/pam.d/system-auth和/etc/pam.d/password-auth,2個檔案都要。
要照順序加入3行設定,才會生效。
---
auth        required      pam_env.so
auth        required      pam_faillock.so preauth silent audit deny=3 unlock_time=600      # 增加設定
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_faillock.so authfail audit deny=3 unlock_time=600            # 增加設定
auth        required      pam_deny.so
account     required      pam_faillock.so                                                  # 增加設定
account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so
---

第二個是使authconfig 進行配置
要注意 authconfig-6.2.8-19 及更高版本支援 pam_faillock,才不會出現錯誤。
啟用
authconfig --enablefaillock --faillockargs="deny=5 unlock_time=1200" --update
停用
authconfig --disablefaillock --update

功能驗證

使用faillock 指令,可以查看/重設身份驗證失敗記錄
顯示使用者認證失敗記錄:
# faillock --user username
重置使用者認證失敗記錄:
# faillock --user username --reset

特別設定

變更鎖定重置持續時間

當連續認證失敗重覆發生的鎖定時間,其間隔可以由fail_interval=n 選項控制。
預設值為 900(15 分鐘)。若要將間隔變更為 10 分鐘,可以新增選項,
---
auth        required      pam_faillock.so preauth silent audit fail_interval=600 deny=3 unlock_time=600      # 增加 fail_interval
---

指定root用戶不同設定

如果要設定root用戶和普通用戶不同設定,增加even_deny_root設定
---
auth    required    pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=1200 root_unlock_time=600
---

排除特定用戶不鎖定

如要排除使用者在多次登入失敗後鎖定,請將以下行新增至pam_faillock並將user1 、 user2等替換為實際使用者名稱:
---
auth [success=1 default=ignore] pam_succeed_if.so user in user1:user2:user3                       #增加設定,排除特定使用者
auth        required      pam_faillock.so authfail audit deny=3 unlock_time=600
---


sshd服務配置調整

如果pam_faillock.so沒有正常運作,請檢查sshd服務的配置。

檢查sshd設定檔/etc/ssh/sshd_config,請確認ChallengeResponseAuthentication和PasswordAuthentication設定正確。
---
ChallengeResponseAuthentication yes
PasswordAuthentication no
---
重新啟動sshd服務,使配置變更生效。
#systemctl restart sshd

參考資料
How to use pam_faillock in Red Hat Enterprise Linux 6 & 7 to lockout users due to successive failed login attempts
https://access.redhat.com/solutions/7002274
What is pam_faillock and how to use it in Red Hat Enterprise Linux 8 & 9?
https://access.redhat.com/solutions/62949
Difference in the behavior of unlock_time in pam_faillock and pam_tally modules
https://access.redhat.com/solutions/649663

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。