pam_tally2 是 linux 的pam中用來限制存取次數的一個模組。
編輯 /etc/pam.d/sshd,在最前面加入
auth required pam_tally2.so deny=1 lock_time=60
我測試了
- 使用 cross 登入
- 使用 root 登入
- 使用 cross 登入,切換 su –
以上三種情況,皆會因為1次密碼失敗後,鎖定60秒後才可再讓你使用正確的密碼登入
在 /var/log/secure裡可以看到它在倒數 (如果一直重試登入,它會顯示還有多久時間解鎖)
May 1 14:05:48 xx-xx su: pam_tally2: user root (0) has time limit [55s left] since last failure.
怎麼手動解鎖,如果不想等到數的話
pam_tally2 –reset -u 使用者名稱
後來再測試明白了一件事 (2011-06-01)
lock_time參數是只要1次失敗就會鎖 60秒,就算我用了 deny=3也是算1失敗就鎖了 (測試時用pam_tally2指令看統計就會知道了,失敗幾次它還是呈現1次)
所以要用 unlock_time=60 搭配 deny=2
auth required pam_tally2.so deny=2 unlock_time=60
它才會讓我2次失敗後鎖60秒,60秒過後才能再讓我用正確密碼成功登入,而失敗的次數就會因為成功登入後被自動清除了
用unlock_time在/var/log/secure裡就不會看到倒數了,呈現的記錄如下
Jun 2 00:38:55 xx-xx sshd[1888]: pam_tally2(sshd:auth): user root (0) tally 6, deny 5
不過以上限制到的是非root的帳號,如果連 root 也要限制的話 ,要多個 even_deny_root
auth required pam_tally2.so deny=2 unlock_time=60 even_deny_root
參數說明:
deny=n 代表拒絕存取,如果超過n次
lock_time=n 代表1次失敗後就鎖n秒
unlock_time=n 代表幾次失敗就鎖n秒,搭配deny=2就是兩次失敗就鎖n秒
even_deny_root 代表也限制root帳號
root_unlock_time=n 這個跟unlcok_time一樣,只是這只給root帳號用,如果要區別一般帳號的話,就可以額外作這個限制
注:本文转自https://ssorc.tw/1216/ssh%E6%90%AD%E9%85%8Dpam_tally2%E8%AE%93%E4%BD%BF%E7%94%A8%E8%80%85%E7%99%BB%E5%85%A5%EF%BC%8C%E5%B9%BE%E6%AC%A1%E5%A4%B1%E6%95%97%E5%B0%B1%E9%8E%96%E5%AE%9A%E6%99%82%E9%96%93/
Be First to Comment