User Tools

Site Tools


doc:appunti:linux:sa:fail2ban

This is an old revision of the document!


fail2ban

Si tratta di un programma che tiene sotto monitoraggio alcuni file di log, quando rileva dei tentativi falliti e ripetuti di accedere ad un servizio, blocca l'host incriminato a livello di indirizzo IP, aggiungendo delle opportune regole iptables.

Appena si installa il pacchetto vengono automaticamente abilitate delle regole, ad esempio per bloccare gli IP che falliscono l'accesso ssh.

Esiste un demone in esecuzione che può essere avviato/fermato con:

/etc/init.d/fail2ban {start|stop}

Il demone si controlla tramite fail2ban-client (che usa il socket /var/run/fail2ban/fail2ban.sock). Per vedere quali servizi sono monitorati e lo stato di ciascun servizio:

fail2ban-client status
fail2ban-client status ssh

Per sbloccare qualcuno ad esempio dal servizio ssh:

fail2ban-client set ssh unbanip 151.40.102.53

Il tempo di ban predefinito è 600 secondi (bantime in /etc/fail2ban/jail.conf). Per modificare le impostazioni predefinite non si deve toccare i file di configurazione forniti, ma aggiungere le differenze in /etc/fail2ban/jail.local.

Ecco alcune impostazioni da mettere:

[DEFAULT]
ignoreip = 185.21.73.97
ignoreip = 192.168.1.0/24

Per escludere un servizio dal controllo:

[ssh]
enabled  = false

ATTENZIONE: fail2ban cerca nei file di log i tentativi falliti, quindi applica delle regole predefinite di blocco. Se si personalizzano alcuni servizi - ad esempio utilizzando delle porte IP non standard - si corre il rischio che il blocco non sia effettivo, controllare la definizione del servizio (ad esempio il parametro port) ed eventualmente ridefinirlo.

Servizio personalizzato Apache mod_evasive

Supponiamo di voler aggiungere delle regole che reagiscono agli allarmi del modulo Apache mod_evasive.

Anzitutto si configura il modulo Apache (in /etc/apache2/mods-available/evasive.conf oppure in un VirtualHost):

<IfModule mod_evasive20.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
    #DOSEmailNotify      you@yourdomain.com
    DOSSystemCommand    "/usr/local/sbin/apache-evasive %s"
    DOSLogDir          "/var/lock/mod_evasive"
    #DOSWhitelist       127.0.0.*
</IfModule>

ATTENZIONE: nella directory DOSLogDir viene creato un file di lock per ogni IP bloccato, il comando DOSSystemCommand viene chiamato la prima volta, quindi lo si deve rimuovere se si vuole che venga eseguito nuovamente.

Si crea il file /etc/fail2ban/filter.d/apache-mod_evasive.local:

[Definition]
# regex to match the Forbidden log entrys in apache error.log provided by mod_evasive
failregex = '\[evasive20:error\].*\[client <HOST>:[0-9]+\] client denied by server configuration:'
# regex to ignore. If this regex matches, the line is ignored.
ignoreregex =

Per testare una espressione regolare su un file di log si può usare il comando:

fail2ban-regex /var/log/apache2/error.log <regex>

Quindi si attiva il servizio in /etc/fail2ban/jail.local:

[apache-mod_evasive]
enabled   = true
port      = http,https
filter    = apache-mod_evasive
banaction = iptables-allports
action    = %(action_mwl)s
logpath   = /var/log/apache2/*/error.log
bantime   = 600
maxretry  = 3
doc/appunti/linux/sa/fail2ban.1392023160.txt.gz · Last modified: 2014/02/10 10:06 by niccolo