Crear regla Fail2ban para Named

Crear regla Fail2ban para Named

Como estoy tratando de crear una regla para Fail2ban que me parece que falta desde hace mucho tiempo porque me sentí muy nervioso en el pasado, también estoy dispuesto a enviarla al mundo :-)

¿Qué se ha hecho?

  1. Ya se creó un archivo en fail2ban/filter/named-antispam.conf

  2. Lo creó con contenido
    #cat filter.d/named-antispam.conf
    [Definition]
    prefregex = ([a-zA-Z][a-zA-Z][a-zA-Z])\s([0-9]|[0-9][0-9])\s([0-9][0-9]):([0-9][0-9]:[0-9][0-9])
    failregex = ^rate limit drop all response to <HOST>$

y cárcel.conf

#Disabled for Writing this Articel
[named-antispam]
enabled = false
filter = named-antispam
logpath  = /var/log/named/rate.log
bantime      = 2628000
maxretry     = 30
findtime     = 60
  1. Verifiqué qué sucede con fail2ban si lo habilito y lo configuro para depurarlo.

2021-01-26 11:25:19,461 fail2ban.filterpyinotify[14180]: DEBUG   Event queue size: 16
2021-01-26 11:25:19,462 fail2ban.filterpyinotify[14180]: DEBUG   <_RawEvent cookie=0 mask=0x2 name='' wd=2 >

Si desactivo la regla, puedo configurar la depuración sin ese error, por lo que me parece que tengo algún tipo de error que no puedo resolver y por eso pregunto aquí. y al final: sí, tengo muchas entradas en mi registro, pero a fail2ban no le importa

Respuesta1

No proporcionó cuál es el problema básicamente, además, ni un extracto de registro con los mensajes que desea capturar en el filtro, ni el intento de fail2ban-regex -vbuscar con el filtro.

Supongo que el mensaje se ve así:

Jan 26 14:00:10 srv named[26403]: client 192.0.2.100#21324 (example.com): rate limit drop all response to 192.0.2.0/24

Luego, aquí hay dos cosas a tener en cuenta: en primer lugar, la IP está después del cliente (aquí 192.0.2.100) y al final tiene una subred (notación IP/CIDR, aquí 192.0.2.0/24).

Si desea prohibir una subred (si su fail2ban y la banacción elegida pueden prohibir subredes), puede usar según su versión:

ya sea esto (si su fail2ban lo admite <SUBNET>):

failregex = ^\s*\S+\s+named(?:\[\d+\])?: [^:]+: rate limit drop all response to <SUBNET>

o esto:

failregex = ^\s*\S+\s+named(?:\[\d+\])?: [^:]+: rate limit drop all response to (?:<F-IP4>\d+\.\S+</F-IP4>|<F-IP6>\w+\:\S+</F-IP6>)

También puedes prohibir la IP en lugar de la subred, luego usa esta:

failregex = ^\s*\S+\s+named(?:\[\d+\])?: client <ADDR>[^:]*: rate limit drop all response

También puedes comprobarlo con fail2ban-regex, por ejemplo:

msg='Jan 26 14:00:10 srv named[26403]: client 192.0.2.100#21324 (example.com): rate limit drop all response to 192.0.2.0/24'
fail2ban-regex "$msg" '^\s*\S+\s+named(?:\[\d+\])?: [^:]+: rate limit drop all response to <SUBNET>'
...
Lines: 1 lines, 0 ignored, 1 matched, 0 missed

o para probar el filtro con un archivo de registro use esto:

fail2ban-regex /var/log/named/rate.log named-antispam

En cuanto a tu prefregexy failregex, simplemente no son correctos. Ni prefregex ni failregex deben contener una parte que coincida con la marca de tiempo datepattern(lea los procedimientos en nuestrowikiomanual, contiene: NOTA: failregexse aplicará a la parte restante del mensaje después prefregexdel procesamiento (si se especifica), lo que a su vez tiene lugar después datepatterndel procesamiento (donde la cadena de marca de tiempo que coincide con el mejor patrón se corta del mensaje).

También prefregextiene sentido, si necesita algún filtrado previo, por ejemplo, tiene más de una expresión de error (y dicha expresión regular se aplicará en toda la parte de la línea o en una parte del RE coincidente encerrado entre <F-CONTENT>y </F-CONTENT>, si se especifica. Si no hay filtrado previo esperado, prefregextiene poco sentido.

De todos modos, si lo necesitas por algún motivo, se vería así:

prefregex = ^\s*\S+\s+named(?:\[\d+\])?: <F-CONTENT>.+</F-CONTENT>$ 

failregex = ^[^:]+: rate limit drop all response to <SUBNET>
#failregex = ^[^:]+: rate limit drop all response to (?:<F-IP4>\d+\.\S+</F-IP4>|<F-IP6>\w+\:\S+</F-IP6>)
#failregex = ^client <ADDR>[^:]*: rate limit drop all response

información relacionada