pam_tally2 不計算 ssh 失敗次數

pam_tally2 不計算 ssh 失敗次數

我已經添加了行

auth required pam_tally2.so deny=3 unlock_time=180

到我的/etc/pam.d/login文件,在 tty 中這很好,在 3 次嘗試後被testuser暫停。

然而,同一行卻/etc/pam.d/sshd沒有產生任何效果。

xieerqi:$ ssh testuser@localhost
Password: 
Password: 
Password: 
Permission denied (publickey,keyboard-interactive).

xieerqi:$ ssh testuser@localhost                                                                                           
Password: 
Password: 
Password: 
Permission denied (publickey,keyboard-interactive).

正如您所看到的,在 3 次嘗試失敗後,使用者仍然可以嘗試輸入密碼。

如何ssh在 3 次攻擊後禁止使用者?

答案1

對於 SSH,最好使用與 pam 不同的東西,透過 iptables 和sshd_config檔案提供了一個很好的解決方案。這只是獲得你想要的東西的一種方法,也是基於文檔,通常建議使用 SSH 金鑰而不是密碼驗證方法檢查https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

  1. 您需要更改/etc/ssh/sshd_config新增行

    MaxAuthTries 1
    
  2. 您需要建立以下防火牆規則

    • 建立新鏈

      iptables -N SSHATTACK   
      iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7  
      iptables -A SSHATACK -j DROP  
      
    • 阻止每個在 120 秒內建立超過 3 個連線的 IP 位址 120 秒。在第四次連接嘗試的情況下,請求將被委託給 SSHATTACK 鏈,該鏈負責記錄可能的 ssh 攻擊並最終丟棄該請求。

      iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set     
      iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK    
      
  3. 您可以檢查對該文件所做的嘗試/var/log/syslog

答案2

常見的做法是使用fail2ban它在網路層級而不是 pam 層級工作,並且它可以為 .net 完成的所有加密節省資源sshd

不管怎樣,在身份驗證失敗後,您是否嘗試插入正確的密碼?是否被接受?登入了什麼/var/log/auth.log

sshd伺服器始終運行所有 pam 堆疊,即使用戶不存在、掛起或鎖定,以消除使用側通道的攻擊(例如識別現有用戶)。這就是您似乎遇到的問題。它可以工作,但ssh由於安全原因你無法看到它。

答案3

嘗試更改行的順序,PAM 1 by 1 執行它們
例如:
/etc/pam.d/common-auth

auth    required                        pam_tally2.so deny=3 onerr=fail unlock_time=300 debug
auth    [success=1 default=ignore]      pam_unix.so nullok
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so
auth    optional                        pam_cap.so

對我有用。

相關內容