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 回失敗した後でも、ユーザーはパスワードの入力を試みることができます。

ssh3 回の警告後にユーザーを禁止するにはどうすればよいですか?

答え1

SSHの場合は、PAM以外のものを使用する方が良いかもしれません。iptablesとsshd_configファイルを使用した優れたソリューションがあります。これは、必要なものを取得するための1つの方法にすぎません。また、ドキュメントに基づいて、通常はパスワード認証方法チェックの代わりにSSHキーを使用することをお勧めします。https://help.ubuntu.com/community/SSH/OpenSSH/設定

  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 秒間ブロックします。4 回目の接続試行の場合、リクエストは 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

一般的な方法は、fail2banPAM レベルではなくネットワーク レベルで機能し、 によって実行されるすべての暗号化のリソースを節約するを使用することですsshd

とにかく、認証に失敗した後、正しいパスワードを入力してみましたか? 受け入れられましたか? 何がログインされていますか/var/log/auth.log?

sshdサーバーは、ユーザーが存在しない場合、一時停止されている場合、またはロックされている場合でも、サイドチャネルを使用した攻撃 (既存のユーザーの識別など) を排除するために常にすべての PAM スタックを実行します。これが、発生している問題のようです。動作することはできますが、sshセキュリティ上の理由で確認できません。

答え3

行の順序を変更してみてください。PAM は行を 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

私にとってはうまくいきます。

関連情報