DNSサーバーへの攻撃 で
named.conf の blackhole による対応を行いましたが、攻撃を受けるごとにIPアドレスを登録して
named を再起動というのはやってられません。
そこで、ログ監視ツール
swatch を導入し、コマンド実行アクションで
iptables によるブロックを行うようにしました。
構築情報は、以下になります。
http://www.system-act.com/server/swatch.html
なお、現時点ではブロックのスクリプトは単に
・iptables によるブロック
・一定時間後にブロックを解除
を実現しているのみです。
swatch の導入に伴い、
named.conf の blackhole はコメントアウトしました。
(以下、2009/01/20追記)
なぜか、swatch 導入後も 69.50.142.11 がブロックされないで syslog に
client 69.50.142.11#xxxxx: view external: query (cache) './NS/IN' denied
が延々と記録されています。
調べてみると、
検出時に実行するスクリプトに問題がありました。
iptables への二重登録を防ぐため、念のために入れていた
iptables -L -n | grep "DROP.*$IPADDR" > /dev/null
ですが、これだと既に 69.50.142.110 が登録されていた場合、69.50.142.11 が二重登録と判定されてしまいます。
iptables -L -n | grep "DROP.* $IPADDR " > /dev/null
と
$IPADDR の前後に空白を入れなければなりません。
修正後、ブロックされるようになりました。