decido abrir este tema para ver que util se consigue y aportar...
vamos a dejar aquí nuestras reglas personalizadas de fail2ban
esta primera que dejo, la cree porque tengo gente muy fastidiosa con bots, así que decidí frenarlos con todo XD
una cosa peculiar de gran parte de los bots es que no tienen user agent o no mandan host en la conexión... esto se ve reflejado por guiones al final de la linea en el log de accesos de apache, ejemplo
Código:
xxx.xxx.xxx.xxx - - [01/Dec/2017:00:00:02 -0600] "GET www.xxxxxxxxxxxxx.com:443 HTTP/1.1" 200 5363 "-" "-"
xxx.xxx.xxx.xxx - - [01/Dec/2017:00:00:17 -0600] "GET http://yyyyyyyyy.me/control/includes/version.php HTTP/1.1" 404 1287 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1944.0 Safari/537.36"
así que explotando esto decidí hacer una regla muy agresiva y listo
Código:
failregex = ^<HOST> - .*"CONNECT.*HTTP.*$ # no acepto este tipo de peticiones
^<HOST> - .*"\\x03.*$ # mala solicitud ssl? a quien le importa
^<HOST> - .*"\\x16\\x03.*$ # lo mismo de arriba
^<HOST> - .*"USER.*$ # nope... esto en http está mal
^<HOST> - .*HTTP.*\d+ \d+ "-" ".*$ # sin solicitar host no se entra
agresivo dije
Código:
[apache-agresive]
enabled = true
port = http,https
filter = apache-agresive
logpath = /var/log/apache2/access* #vhosts con sus propios logs
maxretry = 1 # agresivo...
findtime = 84600 # 24 horas
bantime = 8460000 # 100 dias
si, se que puede ser demasiado, pero una petición formal de un navegador común no tiene nada de eso...