nftables 文字列マッチングのサポート

nftables 文字列マッチングのサポート

Iptables は文字列によってパケットを照合できます。

DNS の例:

iptables -A INPUT -i eth0 -p udp --dport 53 -m string --hex-string "|09|proxypipe|03|net" --algo bm -j DROP

nftables でこのようなマッチングを実行するにはどうすればよいでしょうか?

答え1

nftablesでは、Raw Payload Expression構文(ドキュメント化されている)を使用できます。ここ) を使用して、ビットのチャンクの内容に基づいてパケットを照合します。

したがって、クエリをブロックするルールはproxypipe.net次のようになります。

meta l4proto udp udp dport 53 @th,160,120 0x0970726f787970697065036e657400 counter drop comment "block queries for proxypipe.net"

上記は、トランスポートヘッダーのビット160()から始まる120ビット分のデータを取得し@th、それを次の16進数の値と比較します。|09|proxypipe|03|net

iptables バージョンとは異なり、上記はproxypipe.netパケット内の固定位置でのみ一致することに注意してください。つまり、foobar.proxypipe.net他のサブドメインはブロックされません。

関連情報