介紹如何在 Linux 中透過 PAM 的 pam_faillock
模組設定,封鎖登入失敗次數過多的帳號,以及解鎖方法。
faillock.conf
設定
PAM 的 pam_faillock
模組有一個設定檔位於 /etc/security/faillock.conf
,在這個設定檔可以設定 pam_faillock
模組的各項參數的預設值,對於在 PAM 設定檔中沒有指定的 pam_faillock
模組參數,就會以這裡的設定為準。
以下是 faillock.conf
設定檔中可用的參數與設定範例:
# 使用者登入失敗記錄的儲存位置 dir = /var/run/faillock # 若遇到不存在的使用者也納入記錄 audit # 不要輸出訊息 silent # 不要透過 syslog 記錄訊息 no_log_info # 只追蹤本機使用者 local_users_only # 若 900 秒內連續 3 次登入失敗,則封鎖帳號 deny = 3 fail_interval = 900 # 封鎖帳號後,等 600 秒才再度開放 unlock_time = 600 # 連 root 帳號也納入監控對象 even_deny_root # root 帳號封鎖後,等 900 秒才再度開放 root_unlock_time = 900 # 管理者群組(成員視同 root 帳號) admin_group = adm
PAM 設定
再 PAM 的設定檔中,需要在 /etc/pam.d/common-auth
與 /etc/pam.d/common-account
兩個檔案中加入一些設定。以下是 /etc/pam.d/common-auth
設定檔範例:
# faillock 顯示訊息用(可省略) auth requisite pam_faillock.so preauth auth [success=1 default=ignore] pam_unix.so nullok # faillock 封鎖登入失敗次數過多的帳號 auth [default=die] pam_faillock.so authfail auth sufficient pam_faillock.so authsucc auth requisite pam_deny.so auth required pam_permit.so auth optional pam_cap.so
以下是 /etc/pam.d/common-account
設定檔範例:
account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so account requisite pam_deny.so account required pam_permit.so # faillock 封鎖登入失敗次數過多的帳號 account required pam_faillock.so
更改設定檔之後,系統會立即生效。此時若有使用者登入失敗次數過多,就會被自動封鎖,封鎖的記錄可以在 /var/log/auth.log
中查詢。
May 16 10:26:34 imgqc sshd[117651]: pam_faillock(sshd:auth): Consecutive login failures for user test01 account temporarily locked
查詢、解除封鎖帳號
除了 /var/log/auth.log
紀錄檔之外,我們也可以用 faillock
指令來查詢 pam_faillock.so
認證失敗的記錄:
# 查詢認證失敗的記錄
faillock
test01: When Type Source Valid 2022-05-16 11:05:19 RHOST 129.226.225.131 V 2022-05-16 11:08:15 RHOST 129.226.225.131 V 2022-05-16 10:47:48 RHOST 61.177.173.35 I 2022-05-16 10:47:57 RHOST 61.177.173.35 I
faillock
指令亦可用來解除封鎖特定的帳號:
# 解除封鎖 test01 faillock --user test01 --reset