iptablesのみを使用して接続が成功した場合のSSHブロック解除

iptablesのみを使用して接続が成功した場合のSSHブロック解除

現在、冗長SSH接続をブロックするために、Linuxルータには次のiptablesルールがあります。

-A wan_ingress -p tcp --dport 22 -m state --state NEW -m recent --name sshthrottle --set -m comment --comment "Tag incoming SSH requests"
-A wan_ingress -m state --state NEW -m recent --name sshthrottle --rcheck --seconds 300 --reap --hitcount 3 -j logdrop -m comment --comment "Log and drop packets"
-A logdrop -j LOG --log-prefix "sshthrottle:drop "
-A logdrop -j DROP

しかし、問題は重複を防ぐということです。成功接続、5分以内に接続と切断を3回成功すると、私もブロックされます。ところで5分しかないので今まで我慢できませんでした。

SSH無差別代入プログラムは自動的に自主的に制限されるため、制限時間を5分から1日に延長しようとしています。ただし、これは1日に制限された回数だけSSHを実行できます。そうしないと、SSHもブロックされます。

したがって、SSH接続が成功した場合は、接続試行回数を計算するために使用されるリストからそのIPを削除する追加のiptablesルールを追加するのが最善の方法であると思います。

私はSSHセッションが実際に確立されていることを確認するために2番目のパケットカウンタのようなものを使用すると思いましたが--state ESTABLISHED(長い間失敗したログイン試行を確立された接続としてカウントしないため)、そのルールをトリガに適用する方法がわかりません。元のリストのIPです。

答え1

私は常に高いポートを最初にノックして接続を切断し、ポート22にログインし、最後の瞬間にIPが高いポートに達したことを確認するようにsshを設定します。最初に鳴らないものはすべて捨てろ

答え2

これは効果があるように見えるアプローチです。このルールを追加しました後ろに接続がすでにブロックされていない場合にのみ到達できるように存在します。

-A wan_ingress -p tcp --dport 22 -m state --state ESTABLISHED -m recent \
    --name unblock --set -m comment --comment "Tag successful SSH connections"

-A wan_ingress -p tcp --dport 22 -m state --state ESTABLISHED -m recent \
    --name unblock --rcheck --seconds 10 --reap --hitcount 50 -j unblock \
    -m comment --comment "Remove the IP from the sshthrottle list after successful login"

-A unblock -m recent --name sshthrottle --remove -j LOG --log-prefix "unblock "

これは、確立されたSSH接続を介して送信されたパケット数を数えることによって行われます。 10秒以内に50を超えるパケットが送信されると、テーブルに移動し、unblockそのIPが表示されたリストから削除され、その事実が記録されます。接続が確立されると、--state NEW元のルールの条件に基づいて IP がタグリストに再追加されません。

確立された接続を通過するパケットの数に関係なく、メッセージはメッセージのみが記録されます。これは、IPがタグリストにある場合にのみメッセージが記録されるためです。存在しない場合、ログメッセージは印刷されません。接続が確立されると、新しい--state NEW接続のみがリストに追加されることを保証する接続は存在しません。

50パケットは調整が必要な場合があります。高速SSH接続は50個のパケットに到達する前にブロックされるため、私には効果があるようです。ログインが成功するとまだ50パケットに達していないため、何もせずにログインしてログアウトすると、ブロックされ続けることがあります。 Enterを数十回押すか、lsログイン後に実行すると、50個のパケットがヒットされ、表示されたIPのリストからそのIPが削除されます。

答え3

これは明らかです。 SSHキーログインのみが許可され、パスワードログインは完全に禁止されています。ここではファイアウォールを見下ろす必要はありません。

なぜ無差別代入クラッカーに誤って正しい24文字のパスワードを推測する可能性が統計的に希薄なのかを与えますか?

接続失敗後もまだブロックしたい場合は、これがfall2banの目的です。

繰り返しますが、追加の利点なしに問題を要求したくない場合は、ファイアウォールを含める理由はありません。

関連情報