Cómo configurar correctamente fail2ban para prohibir la IP si accede a algunos archivos incorrectos

Cómo configurar correctamente fail2ban para prohibir la IP si accede a algunos archivos incorrectos

Estoy intentando configurarfalla2banen mi servidor de prueba. Solo quiero bloquear temporalmente cualquier robot de script que intente sondear mi sitio. Entonces todo lo que tiene cgi-bin, admin, setup.phpy así sucesivamente. Anteriormente revisé todo lo que genera errores 404 con algo como grep "HTTP/1.1\" 404" access.log | awk '{print $7 } ' | sort | uniq -c | sort -nen mi access.log.

Me aseguré de que ninguna de mis URL tuviera ninguna de estas partes.

Entonces, después de la instalación, creé jail.localy no hice nada con jail.conf. Mi archivo se ve así (quiero bloquear la IP durante 10 minutos):

[DEFAULT]
ignoreip  = 127.0.0.1
bantime   = 600
destemail = myemail
banaction = iptables-multiport
action    = %(action_mwl)s


[apache-script-bots]
enabled  = true
port     = http,https
filter   = apache-script-bots
logpath  = /var/log/apache2/access.log
maxretry = 1

También creé apache-script-bots.confen filter.duna carpeta, que solo tiene esto dentro:

[Definition]
failregex = (admin|setup.php|main.php|w00tw00t|web-console|.jsp|manager|cgi-bin)
ignoreregex =

Al reiniciar fail2ban me muestra que todo está ok. Pero cuando intento probar si mi cárcel funciona intentando activarla con: mydomain/main.phpveo que no estoy encarcelado.

Cuando reviso el estado de fail2ban me dice que mi jail esta funcionando

fail2ban-client status
Status
|- Number of jail:  2
`- Jail list:       ssh, apache-script-bots

Supongo que el problema está en la expresión regular, pero no entiendo por qué.

Respuesta1

Debe indicarle a fail2ban (a través de la expresión regular) en qué parte de la entrada del registro encontrará un <HOST>para poder prohibir ese host. Para un registro de acceso normal, estaría al principio de la línea, por lo que

<HOST> -.*(w00tw00t|main.php|setup.php)

funcionaría, pero es posible que no haga exactamente lo que desea, ya que coincidiría con los activadores relevantes en cualquier parte de la entrada del registro.


Quizás quieras probar algo como

<HOST> -.*(/w00tw00t|/main.php |setup.php )

lo que debería atar algunas de las cuerdas a ubicaciones más específicas

información relacionada