私はiptablesルールを設定して、1分あたりIPで3回だけSSH経由でservirに接続し、SSH攻撃を防ぐためにすべての接続をドロップするようにしようとしています。しかし、私は何か間違ったことをしているようです!
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
ありがとう
Ipfilterルールも正当な接続をブロックするため、fail2ban
を使用する方がよいと思います。 fail2ban
は、接続に失敗した後にのみIPをブロックします。
次に、一般的な方法は、IPがポート22に接続しようとするときにIPを禁止し、sshサーバーを別のポートにバインドすることです。コンピュータがよく知られたターゲットでない場合は、週に2、3の不正な接続にしか直面しません。
あなたが尋ねた正確な質問について:
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
次の2つのルールで必要なものを実装できます
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 60 --hitcount 3 -j DROP
チェーンの最後にルールを追加する-A
を使用すると、iptablesルールの処理方法に違反する可能性があることに注意してください。つまり、一般的なDROPまたは許可ルールが到達する前に存在する場合、行動した。
fail2ban もこの種のブロックを実装するためのより良い方法であることがわかるかもしれないと言った。
LIMITモジュールを試してみることをお勧めします。
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute -j ACCEPT