Press "Enter" to skip to content

ssh搭配pam_tally2讓使用者登入,幾次失敗就鎖定時間,過了才可再次登入

pam_tally2 是 linux 的pam中用來限制存取次數的一個模組。

編輯 /etc/pam.d/sshd,在最前面加入

auth     required      pam_tally2.so deny=1 lock_time=60

我測試了

  1. 使用 cross 登入
  2. 使用 root 登入
  3. 使用 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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注