Время от времени мой сервер выходит из строя, и когда я проверяю свои журналы nginx, я обычно вижу что-то вроде этого:
78.37.54.31 - - [20 / апр / 2016: 20: 58: 51 +0300] "\ x00 \ x00 \ x00TZ \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x01 \ x00 \ x00 \ x04 \ x010I \ x00 \ x00 \ x00 \ x00 \ xFC \ x01 \ xA8 \ xC0 \ x00! \ x00 \ xFDk \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 "400 166" - "" - "
89.169.219.212 - - [21 / Апр / 2016: 11: 37: 22 +0300] "\ x00 \ x00 \ x00 c \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 "400 166" - "" - "
Я установил fail2ban по умолчанию рекомендуемая конфигурация, рекомендованная в этой статье DigitalOcean , но она не помешала сканерам такого типа периодически перегружать мой сервер. Установка naxsi сейчас для меня не вариант. Может ли кто-нибудь помочь мне сформировать правильные правила регулярного выражения для fail2ban? Тюрьмы "apache-badbots" и "apache-wootwoot" (которые можно легко найти в Google) у меня не сработали.
В /etc/fail2ban/jail.conf
[nginx-x00]
enabled = true
port = http,https
filter = nginx-x00
logpath = /var/log/nginx/access.log
bantime = 3600
maxretry = 1
и в /etc/fail2ban/filter.d/nginx-x00.conf
[Definition]
failregex = ^<HOST> .* ".*\\x.*" .*$
, и все готово. В следующий раз, когда кто-то будет с вами связываться, он / она будет забанен на час или в любое другое время, которое вы укажете в бантайме.
Не беспокойтесь о правильно сформированных запросах с \ x, потому что они закодированы в urlencode, и они будут обрабатываться нормально.
1143371]