為什麼這個 PAM 程式碼會阻止所有登錄到 Debian 系統?
為什麼將此行添加到
/etc/pam.d/common-auth
:auth required pam_tally2.so deny=4 unlock_time=1200 even_deny_root
並將這一行添加到
/etc/pam.d/common-account
:account required pam_tally2.so
阻止所有登錄到我的 Debian 10 系統?我的所有其他
pam
配置文件(login
、common-session
和common-password
與預設值相比沒有變化,但如有必要,我也可以發布這些文件)。我已經看到了一些其他討論的問題
pam_tally
,例如this one,this one和this one,但他們要麼沒有特定的答案,pam_tally
要麼根本沒有任何答案。(作為背景,我正在嘗試為 Debian 系統調整此更新指南)
編輯:
libpam-modules
軟體包已安裝。來自
common-auth
:auth [success=1 default=ignore] pam_unix.so nullok_secure auth required pam_tally2.so deny=4 unlock_time=1200 even_deny_root auth requisite pam_deny.so auth required pam_permit.so
來自
common-account
:account required pam_tally2.so account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so account requisite pam_deny.so account required pam_permit.so
這個答案有兩個部分。第一個添加
pam_tally2
到auth
. 第二個將其添加到account
. 您需要這兩個部分pam_tally2
才能正常工作。讓我們來看看
common-auth
。auth [success=1 default=ignore] pam_unix.so nullok_secure auth required pam_tally2.so deny=4 unlock_time=1200 even_deny_root auth requisite pam_deny.so auth required pam_permit.so
第一行說:“嘗試使用 UNIX (
/etc/passwd
) 身份驗證。如果成功,則跳過一行並繼續。否則繼續下一步。”
- 成功:我們跳過一行(
success=1
),即pam_tally2
,並點擊pam_deny
拒絕登錄- 失敗:我們點擊
pam_tally2
thenpam_deny
,拒絕登錄部分解決方案是將
pam_tally2
列表放入堆棧頂部。(您可能認為更改success=2
會起作用,但這會跳過pam_tally2
成功的身份驗證,因此只能在超時到期後從失敗中重置。)這是我的,來自一個相當普通的 Debian 系統:auth required pam_tally2.so deny=5 unlock_time=1200 even_deny_root # here are the per-package modules (the "Primary" block) auth [success=1 default=ignore] pam_unix.so nullok_secure # here's the fallback if no module succeeds auth requisite pam_deny.so # prime the stack with a positive return value if there isn't one already; # this avoids us returning an error just because nothing sets a success code # since the modules above will each just jump around auth required pam_permit.so # and here are more per-package modules (the "Additional" block) auth optional pam_cap.so # end of pam-auth-update config
這會增加計數,但您需要一種在成功登錄後無需使用
pam_tally2
命令即可重置它的方法。不是特別明顯的是,你需要添加pam_tally2.so
到該account
部分,也作為第一個條目account required pam_tally2.so onerr=fail
我已經對此進行了測試,但是當您嘗試它時,請確保您在目標機器上打開了一個額外的 root shell,以便您可以恢復對 PAM 配置的任何更改!
tail -F /var/log/auth.log
您可以看到和發生了什麼watch pam_tally2 --user {user}
。請注意,一旦嘗試進行身份驗證,計數就會增加,並且僅在成功時重置,因此計數限制必須比允許的嘗試次數大一。