Apacheのログを調べると、知らないうちに様々なアクセスがあります。
不正なアクセスが検知された時点で、そのIPアドレスからのパケットを遮断するperlスクリプトを紹介します。
といっても最初のアクセスで侵入されてしまった場合は防ぎようがないのですが、何回も来られて困る場合には、それなりに使えると思います。
#!/usr/bin/perl5
$logsdir = "/foo/apache/logs"; #apahceのログ置場
$access_log = $logsdir . "/access_log";
$ipfw_log = $logsdir . "/ipfw_log";
$count = 1000;
open(IN, "tail -f $access_log|");
while(<IN>){
if(/winnt|scripts|default\.ida/){
$ip = (split)[0];
$ip =~ y/0-9\.//cd;
$time = time;
$count++;
system("/sbin/ipfw add $count deny ip from $ip to any");
system("/sbin/ipfw add $count deny ip from any to $ip");
open(LOG, ">>$ipfw_log");
flock(LOG,2);
print LOG "$time\t$count\t$ip\n";
close(LOG);
}
}
close(IN);
log_watcher.plというファイル名でパスの通ったディレクトリに置きます。