Скрипт блокировки спамеров на www средствами ipfw table [2009]
задача: закрыть спам на сайтах.
есть черный список (black list) ip на сайте http://www.stopforumspam.com/ (есть и другие списки), список часто обновляется. В blacklist входя прокси-сервера, взломанные машины через которые боты пытаються спамить на все www сразу...
проще всего добаавить в ipfw таблицу, после блокировки максимум 1 спам сообщение за несколько суток или за неделю.
ipfw table:
add deny ip from table(1) to any
ee /root/spamstop.pl
#!/usr/bin/perl
# use Proc::Daemon;
# Proc::Daemon::Init;
# use Proc::PID::File;
# die "Already running!" if Proc::PID::File->running();
## можно раскомментировать, это для того чтобы скрпит одновременно повторно не запустился
use LWP::Simple;
my $spam = get("http://www.stopforumspam.com/downloads/bannedips.csv");
my $hash;
$hash->{$1} ++ while $spam =~ /(\d+\.\d+\.\d+\.\d+)/smg xor grep {$_>255} split /\./,$1;
system("ipfw table 4 flush > /dev/null &") if (defined $spam);
while( my $key = each %$hash){
system("ipfw table 4 add $key > /dev/null &");
}
exit;
crontab:
80 * * * root /root/spamstop.pl
можно при старте системы добавить этот скрипт в /usr/local/etc/rc.d/
скрипт выполняется не быстро, 4-10 минут, грузит процессор, можно добавить больше детей...
ipfw -a list | grep table
00150131765171 deny ip from table(1) to any