サーバーで失敗したログイン試行をブロックするために、fail2ban を使用しています。ブロックは、次の構成の IP テーブルを使用して実行されます。
actionstart = iptables -N fail2ban
iptables -A fail2ban -j RETURN
iptables -I <chain> -p tcp -m multiport --dports <port> -j fail2ban
actionstop = iptables -D <chain> -p tcp -m multiport --dports <port> -j fail2ban
iptables -F fail2ban
iptables -X fail2ban
actionban = iptables -I fail2ban 1 -s <ip> -j DROP
actionunban = iptables -D fail2ban -s <ip> -j DROP
気になるのはルール処理性能です。上記のルールはステートフル モードであり、ステートレス モードで処理が速くなるかどうか疑問に思っていました。わかりやすくするために、侵入者の IP アドレスを TCP ポート (22 または 25 など) でブロックしています。
私はどこかで、TCP接続の特別な場合、ESTABLISHED、RELATED状態を追加する方が良いと読みました。しかし、各 IP は異なる接続を参照するため、これらの状態を適用する意味はありますか?
アップデート:
ここにサンプルがありますiptables -L
:
Chain INPUT (policy ACCEPT 399 packets, 36043 bytes)
pkts bytes target prot opt in out source destination
39 4230 fail2ban tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22,25,80,99,100,101
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 282 packets, 39686 bytes)
pkts bytes target prot opt in out source destination
Chain fail2ban (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 192.168.0.1 0.0.0.0/0
0 0 DROP all -- * * 192.168.0.2 0.0.0.0/0
0 0 DROP all -- * * 192.168.0.3 0.0.0.0/0
0 0 DROP all -- * * 192.168.0.4 0.0.0.0/0
39 4230 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0