Parece um Samsung Galaxy usando uma entrada de DNS desatualizada para m.facebook.com; -)
Bem, se você der uma olhada no seu access.log, encontrará muitas solicitações como /pma
, /webadmin
, /admin/config.php
, /w00tw00t
, /vtigercrm
e assim por diante. Parece que há alguns bots verificando versões antigas / vulneráveis de softwares de código aberto bem conhecidos como o phpmyadmin, o wordpress ou qualquer outra coisa.
Como não gostamos muito disso, tentamos mantê-los fora. Na primeira vez, adicionamos apenas alguns locais ao nosso nginx-config, enviando um erro 404 nas solicitações que correspondiam a uma entrada de uma lista preenchida manualmente. Isso foi bom para confundi-los, mas realmente não diminuiu a quantidade de "pedidos ruins". Mais tarde, movemos a lista para "fail2ban". Sempre que uma solicitação GET apareceu em access.log com um dos nossos URIs predefinidos, o IP do cliente foi bloqueado por 48 horas pelo iptables. já que não conseguiam mais acessar nosso servidor, isso ajudou muito. Você só precisa instalar o fail2ban, adicionar um filtro (no debian em /etc/fil2an/filter.d/xxx.conf) com uma lista simples de valores regex e adicionar o filtro ao jail.conf.
Por exemplo, /etc/fail2ban/filter.d/nginx-bots.conf:
[INCLUDES]
[Definition]
failregex = ^<HOST> - .* "GET /?/phpmyadmin/
^<HOST> - .* "GET /?/phpMyAdmin/
^<HOST> - .* "GET /?/pma/
^<HOST> - .* "GET /?/PMA/
^<HOST> - .* "GET /?/sqlmanager/
^<HOST> - .* "GET /?/phpmyadmin-?2/
^<HOST> - .* "GET /?/phpMyAdmin-?2/
^<HOST> - .* "GET /?/mysqlmanager/
^<HOST> - .* "GET /?/webadmin/
^<HOST> - .* "GET /?/php-my-admin/
^<HOST> - .* "GET /?/myadmin
^<HOST> - .* "GET /?/MyAdmin
^<HOST> - .* "GET /?/cgi-bin/
^<HOST> - .* "POST /?/%%
^<HOST> - .* "GET /admin/config.php
^<HOST> - .* "GET /idssvc/iesvc
^<HOST> - .* "GET /vtigercrm/
^<HOST> - .* "GET /wstats/wstats
^<HOST> - .* "GET /CluJaNul/
^<HOST> - .* "GET /bynazi/
^<HOST> - .* "GET /invoker/
^<HOST> - .* "GET \x
^<HOST> - .* "GET /jmx-console/
^<HOST> - .* "GET /zecmd/
^<HOST> - .* "GET /?/manager/html/upload
^<HOST> - .* "GET /w00tw00t
^<HOST> - .* "GET /muieblackcat
ignoreregex =
Adicionado em /etc/fail2ban/jail.conf
:
[nginx-bots]
enable = true
port = http,https
filter = nginx-bots
logpath = /var/log/nginx/access.log*
maxretry = 1
bantime = 172800
findtime = 86400
Você também pode pensar em outra maneira de filtrar esses bots. Se você adicionar o código de status ao formato de log de acesso do nginx, será possível configurar o fail2ban / filter.conf para bloquear usuários com mais de 10 404 erros por minuto - ou algo assim.
Mas você deve ter em mente que pode bloquear "bons" usuários, se a configuração do fail2ban não for boa o suficiente.