Евгений Борисов

Евгений Борисов

С нами с 17 декабря 2012; Место в рейтинге пользователей: #33
Алексей
08 февраля 2016, 16:37
3
+2
у меня никаких особых защит не стоит — ни капчи, ни текстовых вопросов.
защита серверная.
Все дело в спам-программах — они сначало пытаются понять, с каким движком имеют дело, а только потом уже заспамиться\зарегистрировать пользователя\оставить ссылку, делают они это по следующим признакам:
1. наличие footprint'а в файле html
Powered by wordpress
Powered by joomla
Этот пункт не относится к MODX — пропускаем
2. ломятся по известным адресам (папкам)
/bitrix/
/user/
/users/
/registrate/
/login/
И так далее — тут они понимают, битрикс ли это или форум phpbb, или что там еще.
Вот этот пункт интересен.
В nginx вешаем правило
location ~* ^/(blocks|bitrix|user|users|registrate|login|node|netcat|wp-admin|wp-content|wordpress|engine|blocks|administrator|PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2)(|/) {
	try_files $uri =404;
}
— исключительно чтобы не нагружать php5-fpm\hhvm демон спамными запросами, динамический бэкэнд и там отдаст 404 ошибку т.к. этих папок нет.
Потом ставим fail2ban, и организуем следующий jail:
/etc/fail2ban/filter.d/nginx-noscript.conf
[INCLUDES]
before = common.conf

[Definition]
failregex = 	
		^[^ ]* <HOST> -.*"GET.*(\.php|\.asp|\.exe|\.pl|\.cgi|\.scgi).*" 404
		^[^ ]* <HOST> -.*"GET.*/(blocks|bitrix|user|users|registrate|login|node|netcat|wp-admin|wp-content|wordpress|engine|blocks|administrator|PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2).*" 404
		^[^ ]* <HOST> -.*"GET.*" 403
		^[^ ]* <HOST> -.*"GET.*" 401
		^[^ ]* <HOST> -.*"GET.*" 444
ignoreregex =
и в файле:
/etc/fail2ban/filter.d/jail.conf
[nginx-noscript]
enabled = true
port = http,https
#action = iptables-multiport[name=NoScript, port="http,https"]
filter = nginx-noscript 
logpath = /var/log/nginx*/*access*.log
maxretry = 3
bantime = 600
Таким образом, любой, кто запросит подобные расположения папок: example.com/bitrix более 3 раз (maxretry = 3), попадет в бан по IP адресу на 10 минут (bantime = 600)
При такой защите не только у спам-программ отпадает охота сканить ваш сайт, но и у тех, кто делает это вручную.
+Абсолютная неуязвимость к программам определяющих на какой CMS ваш сайт
+Практически никакого спама (только если форма отправки сообщений висиь на главной страничке)
+Разгрузка динамического бэкэнда php5-fpm\hhvm от ненужных запросов

Все эти интересные пути запрашиваются тысячами, обнаружить их можно анализируя логи через удобный интерфейс piwik, который называется log analizator, серверный скрипт, написанный на питоне. Смотрит все логи nginx и строит по ним всякие графики, пободно yandex.metrika, только по логам а не через прикрепляемый javascript (хотя такая возможность тоже есть). Тут же можно следить, как часто робот яндекса\гугла посещает ваш сайт.