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:
8 0 * * * root /root/spamstop.pl
можно при старте системы добавить этот скрипт в /usr/local/etc/rc.d/скрипт выполняется не быстро, 4-10 минут, грузит процессор, можно добавить больше детей...
ipfw -a list | grep table 00150 1317 65171 deny ip from table(1) to any