The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Скрипт блокировки спамеров на www средствами ipfw table и nginx (spam block)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: spam, block,  (найти похожие документы)
From: ProFTP <q7u5@ukr.net.> Newsgroups: email Date: Mon, 15 Jul 2009 14:31:37 +0000 (UTC) Subject: Скрипт блокировки спамеров на www средствами ipfw table и nginx Задача: закрыть спам на сайтах. Есть черный список (black list) ip на сайте stopforumspam.com (есть и другие списки), список часто обновляется. В blacklist входя прокси-сервера, взломанные машины через которые боты пытаються спамить на все www сразу... Проще всего добаавить в ipfw таблицу, после блокировки максимум 1 спам сообщение за несколько суток или за неделю. add deny ip from table(1) to any vi /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 вариант помягче: http://forum.lissyara.su/viewtopic.php?f=14&t=16531#p159781 теперь в фаерволле у меня правило: 00530 fwd 127.0.0.1,8013 tcp from table(4) to me dst-port 80 а 127.0.0.1:8013 слушает nginx (основной вебсервер апач на 80 порту, а nginx только для быстрого отлупа "форум-спамера") вот конфиг nginx #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 10; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] $request ' # '"$status" $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 1; #gzip on; server { listen 127.0.0.1:8013; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; error_page 400 401 403 404 500 502 503 504 =200 /index.html; location / { root /usr/local/www/nginx; index index.html index.htm; } } } а в index.html что-то типа этого <html > <head> <title>Welcome to zztop!</title> </head> <body bgcolor="white" text="black"> <center><h1>You are seing this page, because you are in blacklist.</h1></center> <center><h2>Visit http://www.stopforumspam.com/ to check you IP, or contact me: [email protected]</h2></center> <center><h3>Best regards, St. Me.</h3></center> </body> </html> Результат: * nginx как "легкий" веб-сервер отлично и быстро отдает статику типа маленького html файлика, в котором написано что пользователь в стоп-листе * если пользователь оказывается в стоп-листе, то он не тупо отфаерволивается, а редиректится на nginx, где его посылают, но красиво :) * в апач запросы спамера не попадут вообще, т.е. он их не будет обрабатывать, и 1) нагружаться; 2) позволять роботам постить спам Автор: ProFTP ссылка: http://unixforum.org.ua/index.php?topic=2127 альтернативная http://www.lissyara.su/?id=1910

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру