動的ブラックリスト:

動的ブラックリスト:

パケット数が 1 秒あたり 2 を超える場合 (テストのためにパケット数は減らしています)、サーバーからの ICMP PING をブロックしようとしています。次の 2 つのルールを個別に試しましたが、効果がないようです。

iptables -A INPUT -p icmp --icmp-type echo-request -m recent --update --seconds 1 --hitcount 2 -j DROP

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT --match limit --limit 2/s --limit-burst 2

これらのルールの何が問題なのですか?

以下のコマンドを使用して別のサーバーからpingを実行していますが、pingは応答を受け取り続けます -

ping -n -i 0.2 192.168.2.86

また、iptables -nvL の出力を確認すると、ルールのパケット数は増加していません...

使用マシンはcentos 6.8

進捗状況: テーブルの最後にデフォルトのドロップ ルールを追加しました。

iptables -A INPUT -p icmp -m icmp -j DROP

そしてこのルールを追加すると、制限を超えたpingがドロップされます

iptables -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 2/second -j ACCEPT -m comment --comment "icmprule1"

まだサーバーを完全にブロックすることはできません。

答え1

ここで、セカンダリ ICMPSCAN チェーンを追加します (そしてジャンプ ルールを INPUT チェーンの最初の位置に配置します)。

iptables -N ICMPSCAN
iptables -I INPUT -p icmp -m icmp --icmp-type echo-request -j ICMPSCAN 
iptables -A ICMPSCAN -m recent --set --name badicmp --rsource 
iptables -A ICMPSCAN -m recent --update --seconds 1 --hitcount 2 --name badicmp --rsource -j DROP

注: 両方の設定/更新ルールをセカンダリなしで INPUT に設定することもできますが、私はそのようなルールを別のチェーンに配置することを好みます。

注 2: --set の後に追加のルールを追加して、イベントをログに記録することもできます...

動的ブラックリスト:

ここで、最近のヒットカウント トリガーに基づいて永続的な動的ブラックリストを追加するには、ipset 機能を利用できます。ipset は Centos 6.x で使用でき、iptables は ipset を認識しますが、最初にインストールする必要がある場合があります。

ニーズに合った iptables/ipset ルールは次のとおりです。

iptables -F ICMPSCAN
iptables -N ICMPSCAN
ipset -N banned_hosts iphash
iptables -I INPUT -p icmp -m icmp --icmp-type echo-request -j ICMPSCAN 
iptables -A ICMPSCAN -m recent --set --name badicmp --rsource 
iptables -A ICMPSCAN -m recent --update --seconds 1 --hitcount 2 --name badicmp --rsource -j SET --add-set banned_hosts src
iptables -A ICMPSCAN -m set --set banned_hosts src -j DROP

ipset list を使用して、禁止リストの現在の内容を一覧表示できます。次に例を示します。

# ipset list banned_hosts
Name: banned_hosts
Type: hash:ip
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 8284
References: 2
Members:
192.168.122.1

セットリストを管理します。たとえば、次のような IP アドレスを削除します。

# ipset del banned_hosts 192.168.122.1

こちらのページもご覧ください:http://www.linuxjournal.com/content/advanced-firewall-configurations-ipset

関連情報