
Quiero crear una acción fail2ban que enrute el tráfico a otra IP en caso de acción de prohibición y elimine la ruta en caso de acción de desbanificación.
Archivo: iptables-route.conf en /etc/fail2ban/action.d/
# Fail2Ban configuration file
#
#
[INCLUDES]
before = iptables-common.conf
[Definition]
# Option: actionstart
# Notes.: command executed once at the start of Fail2Ban.
# Values: CMD
#
actionstart = <iptables> -N f2b-<name>
<iptables> -A f2b-<name> -j <returntype>
<iptables> -I <chain> -p <protocol> -m multiport --dports <port> -j f2b-<name>
<iptables> -A FORWARD -i ens3 -p tcp -m state --state NEW --dport 80 -j ACCEPT
<iptables> -A FORWARD -i ens3 -p tcp -m state --state NEW --dport 443 -j ACCEPT
# Option: actionstop
# Notes.: command executed once at the end of Fail2Ban
# Values: CMD
#
actionstop = <iptables> -D <chain> -p <protocol> -m multiport --dports <port> -j f2b-<name>
<actionflush>
<iptables> -X f2b-<name>
<iptables> -D FORWARD -i ens3 -p tcp -m state --state NEW --dport 80 -j ACCEPT
<iptables> -D FORWARD -i ens3 -p tcp -m state --state NEW --dport 443 -j ACCEPT
# Option: actioncheck
# Notes.: command executed once before each actionban command
# Values: CMD
#
actioncheck = <iptables> -n -L <chain> | grep -q 'f2b-<name>[ \t]'
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: See jail.conf(5) man page
# Values: CMD
#
actionban = <iptables> -I f2b-<name> 1 PREROUTING -s <ip> -j DNAT --to-destination 188.68.45.124
# Option: actionunban
# Notes.: command executed when unbanning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: See jail.conf(5) man page
# Values: CMD
#
actionunban = <iptables> -D f2b-<name> -s <ip> -j DNAT --to-destination 188.68.45.124
[Init]
Archivo apache-route.local en /etc/fail2ban/jail.d/:
[apache-route]
enabled = true
filter = apache-probe
port = http,https
banaction = iptables-route.conf
maxretry = 3
findtime = 1500
bantime = 600
logpath = /var/www/*/userdata/logs/*-access.log
Ni siquiera puedo probarlo porque me da el siguiente error:
reinicio del cliente fail2ban
No se encontraron archivos de configuración accesibles para 'action.d/iptables-route.conf' en /etc/fail2ban
No se puede leer la acción 'iptables-route.conf'
Errores en la cárcel 'apache-route'. Salto a la comba...
Intento hacerlo funcionar, pero no tengo idea de por qué me da ese error.
Respuesta1
No se puede leer la acción 'iptables-route.conf'
Simplemente elimine .conf
del nombre de la acción:
-banaction = iptables-route.conf
+banaction = iptables-route
POR CIERTO. Tu acción me parece un poco incorrecta. ¿Por qué no utilizar iptables-multiport
de forma predeterminada los valores especificados (sobrescritos) chain
y blocktype
?
No estoy seguro de qué estás intentando, pero no sería algo como esto:
banaction = iptables-multiport[chain=PREROUTING, blocktype="DNAT --to-destination 188.68.45.124"]
¿Hacer el trabajo?
Respuesta2
¿Por qué simplemente no iptables-multiport predeterminado con cadena y tipo de bloque especificados (sobrescritos)?
iptables-multiport no agrega las cadenas de salida:
-A ADELANTE -i ens3 -p tcp -m estado --estado NUEVO --dport 80 -j ACEPTAR
-A ADELANTE -i ens3 -p tcp -m estado --estado NUEVO --dport 443 -j ACEPTAR
así que decidí crear una acción propia que los agregue y los elimine al cargar/descargar.
Olvidé que también necesito implementar un enrutamiento posterior, pero necesito repensar más para archivar esto.
Lo que quiero:
En Banaction, la solicitud se dirige a otra IP donde está alojada una página que dice "estás baneado debido a demasiadas solicitudes no válidas" en lugar de simplemente rechazar/descartar la solicitud.