###BINDで歓迎されないクエリをIPTABLESでブロックする
BINDのログの中に、以下のような不正なクエリを見つけました。
client x.x.x.x query (cache) 'example.com/A/IN' denied
このようなエントリーが大量に頻繁に記録されています。
ログファイルのサイズが大きくなり、リソースの無駄遣いにもなります。
そこで、このクエリをブロックする必要がありますが、どうすればよいのでしょうか?
iptablesでソースIPをブロックすればよいのでしょうか。しかしながらソースIPが複数なのでこの手法は使えません。
ようやく見つけた方法は、iptablesにstringモジュールを付けてブロックする方法です。
以下のように。
DOMAIN=example.com
HEX=$(perl -e 'print map {chr(length($_)).$_} split /./, "'$DOMAIN'"'. | xxd -p)
echo $HEX
076578616d706c6503636f6d
iptables -I INPUT -m string --algo bm --hex-string '|076578616d706c6503636f6d|' -j DROP
man(英語版)によると、stringモジュールは2.6.14以上のカーネルバージョンから利用できるようです。