ufwからiptablesへの移行中です。
ufwにはデフォルトの「制限」ルールがあり、これはIPアドレスが30秒以内に6つ以上の接続を開始した場合に適用されます(sudo ufw limit ssh
)。私はSSHトラフィック(ポート22)にこの制限ルールを使用します。
私はiptablesでこれを行うさまざまな方法を読んでいて、本当に混乱しています。他のモジュールを使用する必要がconnlimit
あるかどうかはわかりません。limit
このルールをiptablesに1:1にマッピングする最も簡単な方法は何ですか?
答え1
ufw
iptables操作、ufwで移動中なのでiptablesをキャプチャしてufwがそこで何をしているのか確認できると思いました。
答え2
recent
拡張機能の使用
@Tomaszのアイデアに従って、ufwにルールを作成し、iptablesで結果を確認しました。 ufwは拡張を使用しているようですrecent
。
:LOG_REJECT - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --set
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 6 -j LOG_REJECT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A LOG_REJECT -m limit --limit 3/min -j LOG --log-prefix "[LIMITED SSH]"
-A LOG_REJECT -j REJECT --reject-with icmp-port-unreachable
limit
拡張機能の使用
ややクリーンでシンプルです。
:LOG_REJECT - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 12/minute -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j LOG_REJECT
-A LOG_REJECT -m limit --limit 3/minute -j LOG --log-prefix "[LIMITED SSH]" --log-level 7
-A LOG_REJECT -j REJECT --reject-with icmp-port-unreachable
icmp-port-unreachable
(この場合、これが正しい拒否メッセージであるかどうかはわかりません。)
connlimit
拡張機能の使用
...他の人がこれを追加することもできます。 :)