Fail2Ban: RegEx para filtrar todos los errores 404 del registro de Apache

Fail2Ban: RegEx para filtrar todos los errores 404 del registro de Apache

En mis registros veo regularmente un montón de errores 404 en los que los robots obviamente escanean el servidor sistemáticamente en busca de instalaciones de software específicas. Como esto también genera mucho tráfico, quiero prohibirlos.

Entonces, basándome en algunos procedimientos, intenté encontrar una expresión regular para fail2ban que filtre estas solicitudes 404 de los registros de Apache y, en función de esto, bloquee las IP relacionadas.

Lamentablemente, ninguno de los patrones RegEx que encontré y probé funciona. Entonces como ejemplo:

fail2ban-regex /var/log/apache2/other*access.log '^<HOST> - .* "(GET|POST|HEAD).*HTTP.*" 404 .*$'

(que me parece bien) no encuentra nada:

Date template hits:
|- [# of hits] date format
|  [1210] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-

Lines: 1210 lines, 0 ignored, 0 matched, 1210 missed

Definitivamente hay varios errores 404 en ese archivo de registro. Entonces, ¿qué estoy haciendo mal? ¿Cómo debería verse una expresión regular adecuada para obtener todos los 404?

¡Gracias!

Respuesta1

other_vhosts_access.logpor defecto tiene un diferente LogFormat vhost_combinedque tiene el prefijo a vhost:porten comparación con el estándar common LogFormat. Debe modificar la expresión regular en consecuencia.

Respuesta2

¿Has probado este?

failregex = ^<HOST> - .* "(GET|POST|HEAD).*HTTP.*" 404 .*$
ignoreregex =.*(robots.txt|favicon.ico|jpg|png)

información relacionada