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.php
y 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 -n
en 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.local
y 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.conf
en filter.d
una 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.php
veo 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