Foro de elhacker.net

Seguridad Informática => Seguridad => Mensaje iniciado por: engel lex en 28 Diciembre 2017, 09:06 am



Título: Sus reglas personalizadas con fail2ban
Publicado por: engel lex en 28 Diciembre 2017, 09:06 am
Hola!

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...


Título: Re: Sus reglas personalizadas con fail2ban
Publicado por: WHK en 6 Agosto 2019, 06:05 am
Acá va otro para la detección de robots:

/etc/fail2ban/filter.d/whk-httpd-bots.conf

Código:
[Definition]
badbots = dav\.pm|libwww\-perl|python\-|typhoeus|winhttp|autoit|Java|java|sqlmap|hydra|\.nasl|email\s+extractor|arachni\/|autogetcontent|bilbo|BFAC|brutus|bsqlbf|cgichk|cisco\-torch|commix|core\-project\/|crimscanner|datacha0s|dirbuster|domino\s+hunter|dotdotpwn|fhscan|floodgate|f\-Secure|get\-minimal|auto\-rooter|grabber|grendel\-scan|havij|inspath|internet\s+ninja|jaascois|zmeu|masscan|metis|scanner|mysqloit|n\-stealth|nessus|netsparker|nikto|nmap|nsauditor|openvas|pangolin|paros|pmafind|customcrawler|qualys|s\.t\.a\.l\.k\.e\.r\.|security\s+scan|springenwerk|injector|lobster|exploit|dragostea|uil2pn|vega\/|voideye|w3af|webbandit|webinspect|webshag|analyzer|webvulnscan|whatweb|whcc|grabber|WPScan|struts\-pwn|fuck|pwned|hacker
failregex = ^<HOST> -.*?"(GET|POST|HEAD)\s.+HTTP.+?"\s\d+\s\d+\s".+?"\s".*?%(badbots)s.*?"$
ignoreregex =

Después se habilita en /etc/fail2ban/jail.local y le decimos que aplique un baneo automático al iptables:

Código:
[whk-httpd-bots]
enabled  = true
port     = http,https
logpath  = %(apache_access_log)s
maxretry = 1
action   = iptables-allports

Finalmente se reinicia el servicio y ya:

Código:
# systemctl restart fail2ban
# fail2ban-client status whk-httpd-bots
Status for the jail: whk-httpd-bots
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 0
|  `- File list: /var/log/httpd/access_log
`- Actions
   |- Currently banned: 0
   |- Total banned: 0
   `- Banned IP list:

Recordar que se está utilizando el log de accesos con ruta por defecto, cualquier cambio hay que indicar la ruta manualmente.


Título: Re: Sus reglas personalizadas con fail2ban
Publicado por: WHK en 6 Agosto 2019, 06:11 am
Acá va otro para banear el abuso de accesos denegados (filtros por htaccess y similares):

/etc/fail2ban/filter.d/whk-httpd-403.conf

Código:
[Definition]
failregex = ^<HOST> -.*?"(GET|POST|HEAD|OPTIONS|TRACE)\s.+HTTP.+?"\s403\s
ignoreregex =


Baneamos al tercer intento seguido:

nano /etc/fail2ban/jail.local

Código:
[whk-httpd-403]
enabled  = true
port     = http,https
logpath  = %(apache_access_log)s
maxretry = 3
action   = iptables-allports