IPあたり1分あたりのSSHログインの試行回数を制限する方法は?
ログイン失敗後5秒以内にログイン試行を無効にしたいと思います。可能ですか? Fail2banのようにログを解析した後にユーザーを禁止することについて話すものではありません。
答え1
質問1
これはモジュールを通して行うことができますhashlimit
。
iptables -A INPUT -p tcp --dport 22 -m hashlimit \
--hashlimit-mode srcip --hashlimit-above 3/minute -j DROP
質問2
Netfilterは失敗したログイン接続のみを表示できます。 Fail2banのように、両方のレベルで動作するツールが必要です。ブロックされたIPチェーンを作成し、ログインが失敗するたびに次のスクリプトを実行できます。
iptables -A blocked_ips -s $evil_ip -j DROP
sleep 5
iptables -D blocked_ips -s $evil_ip -j DROP
答え2
iptable ビュー
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 5 --hitcount 2 -j DROP
5秒ごとにIPごとに1つの新しい接続のみが許可されます。
答え3
GNU/Linux システムで認証を担当するコンポーネントは、PAM(プラグ型認証システム)です。
モジュールを追加して設定できます。あなたの場合、興味深いモジュールはpam_tally
ログイン試行回数を制限し、ユーザーを禁止するために使用されます。
構成ファイルのいずれか/etc/pam.d/
に次の行を追加する場合:
auth required pam_tally.so deny=1 unlock_time=5 per_user
ログインに失敗したユーザーが次の5秒以内に再試行するのを防ぎます。したがって、1分あたりの接続試行の数は12回に制限されます。
引用:
答え4
/etc/ssh/sshd_config ファイルには役に立つと思うディレクティブがあります。
MaxAuthTries 6
マニュアルページのMaxAuthTries定義は次のとおりです。
MaxAuthTries - 接続ごとに許可される最大認証試行回数を指定します。失敗回数がこの値の半分に達すると、より多くの失敗が記録されます。デフォルトは6です。