Manuel Roccon

ICT & Cyber Security Specialist

Aggiornare il filtro di Fail2Ban apache-security.conf filter per mod_security V2

Il filtro apache-security.conf incluso con Fail2Ban potrebbe non rilevare le voci del registro errori dopo l’installazione o l’aggiornamento alla versione 2. Questo perché il nuovo modulo ha aggiornato la modalità con cui scrive i log e le regola di default installata da fail2ban ha ancora la direttive per la versione precedente.

ModSecurity è un firewall per applicazioni Web open source per il server Apache, questo attraverso una serie di regole va ad individuare richieste anomale che arrivano al server web, bloccandole. In realtà vengono bloccate solo le singole chiamate, per bloccare totalemente il singolo host che continua a infrangere in modo continuato le regole (bot o brute force attack) è necessario usare e configurare una regola di fail2ban.

I test con l’utilità fail2ban-regex hanno indicato che il filtro apache-security.conf Fail2Ban non rileva più le voci di registro degli host rilevati da ModSecurity.

Per continuare a far funzionare correttamente fail2ban è possibile seguire le istruzioni che vengono messe a disposizione wiki di Mod Security che riassumo qui sotto.

Innanzi tutto consiglio di disabilitare la regola apache-modsecurity nel jail.conf (se attivata) e procedere nel creare una nuova configurazione per la nuova versione del modulo.

Per fare ciò iniziamo a creare un nuovo filtro in questa directory: /etc/fail2ban/filter.d/apache-modsecurity2.conf con il contenuto sottostante

[Definition] 
failregex = \[.*?\]\s[\w-]*\s<HOST>\s 
ignoreregex =

A questo punto occorrerà creare un file di configurazione con le direttive per il filtro appena creato. Anche se le regole di fail2ban sono situate nel file jail.conf (o jail.local) suggerisco di utilizzare la directory jail.d per inserire le vostre regole personalizzate, in modo da separarle da quelle di default e per una migliore gestione.

Creare quindi un file alla seguente directory con questo contenuto /etc/fail2ban/jail.d/apache-modsecurity.conf.

 [apache-modsecurity2]
 enabled = true
 port     = http,https
 logpath = /var/log/httpd/modsec_audit.log
 maxretry = 5
 # find also slow ip that try to hide in the log files
 findtime = 432000
 # keep em long away if found
 bantime  = 864000 

Potete personalizzare il vostro filtro indicato i tentativi massimi che fail2ban trova (maxretry), l’arco temporale in cui cerca evventuali record (findtime) e il temo in cui ip sarà bannato (bantime)

A questo punto fermare e riavviare fail2ban

fail2ban-client stop
fail2ban-client start

A questo punto vedrete tramite il log di fail2ban che gli ip che avranno violato alcune regole (a seconda delle regole impostate sul file di configurazione) verranno bannati

2019-07-24 21:11:29,465 fail2ban.actions        [19798]: NOTICE  [apache-modsecurity2] Ban x.xxx.xxx.xxx
2019-07-24 21:11:30,125 fail2ban.actions        [19798]: NOTICE  [apache-modsecurity2] Ban xx.xxx.xxx.xxx

Potrebbe accadere che mod security intercetti anche alcuni codici di errore come 401 e 500 della vostra applicazione e questo potrebbe avere effetti negativi nell’utilizzo della stessa. In tal caso è necessario escludere questi stati di errore dal dal parametro SecAuditLogRelevantStatus.

SecAuditEngine RelevantOnly
#SecAuditLogRelevantStatus "^(?:5|4(?!04))"
SecAuditLogRelevantStatus "^(?:5(?!00)|4(?!04|01))" 

Consiglio di verificare la regex e gli stati tramite il servizio online:

https://regex101.com/

1 thought on “Aggiornare il filtro di Fail2Ban apache-security.conf filter per mod_security V2

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *