ラインを追加しました
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
ファイルを使用した優れたソリューションがあります。これは、必要なものを取得するための1つの方法にすぎません。また、ドキュメントに基づいて、通常はパスワード認証方法チェックの代わりにSSHキーを使用することをお勧めします。https://help.ubuntu.com/community/SSH/OpenSSH/設定。
/etc/ssh/sshd_config
行の追加を変更する必要がありますMaxAuthTries 1
次のファイアウォールルールを作成する必要があります
新しいチェーンを作成する
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
ファイルに対して行われた試行を確認できます
/var/log/syslog
。
答え2
一般的な方法は、fail2ban
PAM レベルではなくネットワーク レベルで機能し、 によって実行されるすべての暗号化のリソースを節約するを使用することです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
私にとってはうまくいきます。