いつ頃から始まったのかはもう覚えていないのだけれど、
うちの鯖のhttpdのアクセスログに、毎日のように嫌な感じのお客さんが記録されている。

具体的にはcgi版のphpの脆弱性を狙ったアクセスとか、
同じくCMSの脆弱性を狙ったアクセスとか。

一度や二度ならともかく、毎日似たようなホストから記録されてるので
いい加減うんざりしてきた。

というわけで、index.phpにちょろっとスクリプトを仕込む。

// evil host check
if( strpos($_SERVER[‘REQUEST_URI’],’/images/stories/’)!==false ||
 strpos($_SERVER[‘REQUEST_URI’],’option=com_jce’)!==false ||
 strpos($_SERVER[‘REQUEST_URI’],’/cgi-bin/php’)!==false ){
 error_log($_SERVER[‘REMOTE_ADDR’].”
“,3,’./evil_host.txt’);
}

これで、アクセスしてきたホストのIPを evil_host.txt に保存。
次に、cronで以下のスクリプトを回す。

#!/bin/sh

# http 経由の邪悪なアクセスリストをソートしてpfのリストを作成する。
/usr/bin/sort -u /opt/htdocs/http/nucleus/evil_host.txt &gt /etc/pf.evilhost
# PFをリロード
/sbin/pfctl -f /etc/pf.conf &gt /dev/null 2>&1;

あとは、pf.conf で pf.evilhost をテーブルとして定義して、全部弾いてやれば良い。
とりあえず、cronの感覚は一時間にしておいた。

少し放置して様子を見ることにする。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です