「n」回SSHログイン失敗後にIPアドレスを一時的に禁止する方法は?

「n」回SSHログイン失敗後にIPアドレスを一時的に禁止する方法は?

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です。

関連情報