Второй мой перевод для русскоязычной мандрива-вики. Статья про то, как бороться со спамом в коменты и рефер-спамом.
Спам в Referrer
Если вы ведете блог с APXS, который является модульной версией Апача, поставляемой с мандрива линукс, то есть три способа сделать это: директивы Апача, .htaccess директивы и наконец, mod_security.
Директивы Apache
Существует возможность установить переменные Апач так, что они будут срабатывать, когда рефер будет содержать часть урла и блокировать доступ по этим признакам. Сначала надо добавить строки устанавливающие правила для переменной окружения исходя из ключевых слов:
SetEnvIfNoCase Referer ".*(keyword1|keyword2|keyword\.com|etc.).*" BadReferrer
Затем устанавливаем доступ исходя из этих переменных:
#Site settings <Directory "/var/www/html/directory"> allow from all deny from env=BadReferrer </Directory>
Теперь, когда кто-нибудь попытается зайти на сайт используя левый рефер, содержащий запрещенное слово, получит 403.
.htaccess директивы
Просто добавьте эти строки в .htaccess в корне сайта.
RewriteCond %{HTTP_REFERER} ^(.*).keyword1(.*)$ [OR] RewriteCond %{HTTP_REFERER} ^(.*).key(.*)-word(.*)$ [OR] RewriteCond %{HTTP_REFERER} ^(.*)keyword2(.*) [OR] RewriteCond %{HTTP_REFERER} ^(.*)keyword3.(.*) [OR] RewriteCond %{HTTP_REFERER} ^(.*)keyword.com(.*) [OR] RewriteCond %{HTTP_REFERER} ^http://(www\.)?keyword4.*$ RewriteRule .* http://www.thispagecannotbedisplayed.com/ [R,L]
правила для mod_security
Часто используемый метод, и очень эффективный в плане неограничееных опций, которые можно применить к проблемным посетителям.
Добавьте строки /etc/httpd/conf.d/82_mod_security.conf навроде этих:
SecFilterSelective "HTTP_REFERER" "(keyword1|keyword2|key\.word\.3|etc)" "deny,log,status:403"
для запрета доступа. Можно поменять «status:403» на «redirect:http://127.0.0.1» для отправки запроса на машину запрашивающего. Или,можно отправить на несуществующий адрес, например 192.168.52.142 и сайт будет грузится до тех пока не сбросится по таймауту.
Также, для особо назойливых товарищей, можно сделать редирект на хост, с которого идет спам.
Добавьте следующие строки для решения спама в комментах:
SecFilterSelective "POST_PAYLOAD" "(keyword1|keyword2|key\.word\.3|etc)" "deny,log,status:403"
примерно тоже самое, что в случае с реферами, но уже блокирует комментарии.
Comments are closed.