黄砂とともにやってきたもので書いた通り、4月にはいってからスパムが急増しています。このサイトは
NP_BlacklistJPというプラグインのおかげで表示される内容にはなんら影響が出ていませんが、ログには今までにないくらいの痕跡が残っています。
サイトに反映されないので、見た目上の実害はさほどないのですが、このサーバはそんなに性能がよくありません。ですから、一度に大量のスパムがくると、若干なりとも影響がありそうです。気分的にもよくありませんしね。
NP_BlacklistJPというプラグインには、同一IPから規定回数以上のスパムが来た場合、IPアドレスをIPブラックリストに自動的に登録してくれる機能があります。この機能を使って、シェルスクリプトでスパム送信先からのアクセスを遮断するようにしてみました。
#!/bin/sh
#プラグインのIPブラックリストの場所
blockip_blacklist=/home/httpd/html/nucleus/plugins/blacklist/settings/blockip.pbl
#IPブラックリストから作成するiptableの書き込み先
blockipwritelist=/var/blockiptmp/blockiplist
grep "." $blockip_blacklist |awk '{ print "/sbin/iptables -I INPUT 1 -s " $1 " -p all -j DROP"}'>$blockipwritelist
これだけ。これを/usr/sbinなど適当なところに作って、実行権限をあたえます。
chmod 755 シェルスクリプト名
後はcronなどで自動実行に設定します。30分に一度くらいでしたらrootになって
crontab -e
で、crontabの編集モードに入り
10,40 * * * * /sbin/iptables -F;sh /var/blockiptmp/シェルスクリプト名
[間違い 2007/04/26修正]
10,40 * * * * /usr/sbin/シェルスクリプト名;/sbin/iptables -F;sh /var/blockiptmp/blockiplist
などと設定してやればOK。
これが何がいいかというと、IPブラックリストの管理画面でIPブラックリストを修正するだけで、ほぼ自動的にアクセス制御に反映されるってところです。こんな非生産的な作業を手作業でやっていては気が滅入るだけですからね。
それから、
URL: http://5e7cbfd220196b9fbf87.info
タイトル: 5e7cbfd220196b9fbf87
概要: 5e7cbfd22019
ブログ名: 5e7cbfd220196b9fbf87
みたいな意味不明のスパムですが、こちらは
NP_BlacklistJPのNGワードに
[A-Za-z0-9]{17,20}
みたいな感じで登録してやれば弾いてくれます。上記例では英数文字だけで17文字以上20文字以下に該当したものを弾いてくれます。