iptablesにIP、ポート、IPを追加

iptablesにIP、ポート、IPを追加

今これを実行します。

create blockipset hash:ip
add blockipset 192.168.1.5 -exist
add blockipset 192.168.3.115 -exist

iptablesとipsetはip、ポート、ipをブロックできますか?たとえば、リストには次のものが含まれます。

192.168.1.5
192.168.3.115
192.168.1.55,80
192.168.1.53,22

答え1

ipsetこのコマンドを使用して、異なる種類の要素を同じコレクションに入れることはできません。ただし、各タイプに1つずつ異なるコレクションを使用できます(リスト全体を介して利用可能ipset help)。

hash:ip
hash:ip,port

たとえば、

ipset create blocklistip hash:ip
ipset create blocklistipport hash:ip,port

ipset add blocklistip 192.0.2.3
ipset add blocklistipport 192.0.2.2,80
ipset add blocklistipport 192.0.2.3,udp:53

udp:上記のように、特に明示的に指定されていない限り(UDPの場合、sctp:SCTPの場合...)ポートのプロトコルはデフォルトでTCPです。

スクリプトは、内容がわかった要素の種類を確認する必要があります。IPセット追加します。ここの簡単な例は、,ファイルからリストを読み取るときにリストをどこに配置するかを確認することですblocklist.txt

while read -r element; do
    if echo $element|grep -q ,; then
        ipset add blocklistipport $element
    else
        ipset add blocklistip $element
    fi
done < blocklist.txt

リスト内のすべてのアイテムをブロックできます。たとえば、次のようになります。

iptables -A INPUT -m set --match-set blocklistip src -j DROP
iptables -A INPUT -m set --match-set blocklistipport src,dst -j DROP

上記は、src,dstパケット内で一致するものを見つけるときにパケットの送信元IPアドレスと宛先ポートアドレスを使用することを意味しますhash:ip,port

返品、IPセットlist:set別のコレクションのリストで構成される特別なコレクションがあります。コマンドを使用してコレクションを個別に入力する方法は変更されませんが、ipset次のようにできます。

ipset create blocklist list:set
ipset add blocklist blocklistip
ipset add blocklist blocklistipport

前の2つを交換してください。iptables次のいずれかを含むルール:

iptables -A INPUT -m set --match-set blocklist src,dst -j DROP

これはあなたの目標を達成するのに役立ちます:このシングルiptablesルールは、ポートの有無にかかわらずコレクション要素を正しく処理します。ipsetに記録

関連情報