NAGIOS: controllo della banda e del fail2ban

Il monitoraggio dei sistemi è diventato una pratica essenziale per qualsiasi azienda che fornisca servizi in ambito IT. Avere strumenti che controllino lo stato dei servizi e delle reti dei clienti, permette di prevenire guasti e può anticipare anche tentativi di intrusione.
Siccome questo strumento che esegue svariati tipi di controlli locali e remoti è largamente utilizzato e documentato sul web, concentriamoci su una sua particolarità, ovvero la possibilità di monitorare remotamente lo stato di sistemi server per quel che riguarda i tentativi di attacco ed il consumo della banda.
Prerequisiti
Per prima cosa è necessario installare sul client che vogliamo proteggere questi due servizi:
Installiamo fail2ban
E’ un servizio che protegge il nostro sistema dagli attacchi brute force
# apt install fail2ban
Installiamo portsentry
E’ un servizio che controlla tentativi di portscan al nostro sistema e che normalmente precedono i tentavi di attacchi brute force
# apt install portsentry
# touch /var/lib/portsentry/portsentry.history
Configuriamo fail2ban con le jail desiderate
# pico /etc/fail2ban/jail.conf
[sshd]
port = ssh
logpath = %(sshd_log)s
[recidive]
logpath = /var/log/fail2ban.log
banaction = iptables-allports
bantime = 604800 ; 1 week
findtime = 86400 ; 1 day
maxretry = 5
[portsentry] enabled = true log
path = /var/lib/portsentry/portsentry.history
maxretry = 1
# pico /etc/fail2ban/jail.d/defaults-debian.conf
[sshd]
enabled = true
[recidive]
enabled = true
[portsenty]
enabled = true
Riavviamo, fail2ban
# systemctl reload fail2ban
Cosa ci serve avere sul sistema che vogliamo monitorare?
Un server con Nagios installato ed in grado di eseguire comandi NRPE (Nagios Remote Plugin Executor). Questo comodo plugin permette ad un server di collegarsi ad un host, previa autorizzazione, e ottenere in tempo reale lo stato di risorse e servizi.
Invece sul client da monitorare per prima cosa, dobbiamo installare il nagios-nrpe-server (server Remote Plugin Executor per Nagios):
# apr install nagios-nrpe-server nagios-nrpe-plugin
Successivamente dobbiamo installare nella directory /usr/lib/nagios/plugins, i due i plugin necessari per effettuare il monitoraggio della risorsa locale, questi plugin sono check_eth e check_fail2ban
A questo punto possiamo editare il file nrpe.cfg
# nano /etc/nagios/nrpe.cfg
allowed_hosts=127.0.0.1,::1, X.Y.Z.K
Controlli di default
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -r -w .15,.10,.05 -c .30,.25,.20
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
Quelli che aggiungiamo noi.
command[check_bandwidth]=/usr/lib/nagios/plugins/check_eth -i eth0 -w 5024K Bps -c 10048K Bps
command[check_fail2ban]=/usr/lib/nagios/plugins/check_fail2ban.sh -w 10 -c 20
Possiamo riavviare il servizio per rendere efficaci le modifche:
# systemctl reload nagios-nrpe-server
Attenzione!!
- Può essere utile testare il funzionamento locale dei plugin per verificare configurazioni ed eventuali dipendenze dei moduli Perl necessarie
- Spesso l’esecuzione del check_fail2ban può presentare problemi di permessi per l’esecuzione remota, ecco una soluzione per risolvere:
Lanciare questo comando per impostare le corrette permissions al file di socket del fail2ban.
# setfacl -m u:nagios:rwx /var/run/fail2ban/fail2ban.sock
Aggiungere questi comandi al file sudoers che permette a nagios di avere le autorizzazioni per eseguire il check
# pico /etc/sudoers
# User alias specification
nagios ALL=NOPASSWD:/usr/bin/fail2ban-client
nagios ALL=NOPASSWD:/usr/bin/fail2ban-server
nagios ALL=NOPASSWD:/usr/share/fail2ban
nagios ALL=NOPASSWD:/usr/lib/nagios/plugins/check_fail2ban.sh
A questo punto, attendendo il giusto tempo per l’esecuzione del check dovremmo avere il risultato in tempo reale sul nostro pannello di controllo del Nagios Server ed eventualmente i warning (via mail) se impostati.
E’ davvero importante far notare come il crescere degli IP bannati ci dia immediatamente un segnale di attacco ai nostri sistemi, allo stesso modo l’aumento oltre i valori normalmente utilizzati della banda dal sistema, ci offre un importantissimo parametro sul suo stato di “salute”.