Come configurare Fail2Ban per il permanent e persistent bans

Normalmente Fail2ban ha un tempo di 10 minuti di ban nella jail. Ma se voi voleste rendere il ban permanente? Come fare?!

Allora: prima di tutto dovete modificare il file jail.conf (oppure .local se avete seguito la mia precedente guida):

sudo nano /etc/fail2ban/jail.local

Cambiando la riga:

bantime = -1

Poi dovete modificare questo file:

sudo nano /etc/fail2ban/action.d/iptables-multiport.conf

Cambiando questo paragrafo e aggiungendo le due righe in grassetto:

actionstart = iptables -N fail2ban-<name>
              iptables -A fail2ban-<name> -j RETURN
              iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>
              cat /etc/fail2ban/persistent.bans | awk '/^fail2ban-<name>/ {print $2}' \
              | while read IP; do iptables -I fail2ban-<name> 1 -s $IP -j <blocktype>; done 

E nell’actionban:

actionban = iptables -I fail2ban- 1 -s -j 
            echo "fail2ban- " >> /etc/fail2ban/persistent.bans

Poi riavviate il servizio con:

sudo service fail2ban restart

E voilà!

Come configurare Let’s Encrypt con nginx

La procedura è davvero easy, vi basterà installare certbot con:

sudo apt install certbot

Una volta installato eseguite:

sudo certbot certonly

Dovrebbe in automatico generarvi un certificato (seguite i passaggi e inserite mail e dominio). E una volta terminato i due file dovrebbero trovarsi qui:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Ora modificate il file di configurazione di nginx:

sudo nano /etc/nginx/sites-available/default

E dovrete fare in modo che la porta 80 faccia un redirect alla 443 e aggiungere un server alla 443:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;
}

Ovviamente dovrete anche controllare che il vostro firewall permetta TCP alla porta 443, nel caso usiate iptables (qui per vedere l’elenco):

sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Controllate che sia tutto ok su nginx con:

sudo nginx -t

Se passate il test, eseguite:

sudo service nginx restart

Per rinnovare il certificato vi basterà eseguire:

sudo cerbot renew

Mentre se volete che sia automatizzato con crontab:

sudo crontab -e

Ed incollate:

30 2 * * * /usr/bin/certbot renew --noninteractive --renew-hook "/bin/systemctl reload nginx" >> /var/log/le-renew.log

Come salvare permanentemente l’Iptables

Abbiamo visto che l’Iptables è il firewall di Linux e che funziona molto bene, si gestisce facilmente da linea di comando… ma ora andiamo diretti alle regole (se vuoi sapere come impostarle, leggi questo).

Prima di tutto installate questo pacchetto:

sudo apt install iptables-persistent

Poi spostatevi sull’account amministratore con sudo su ed eseguite:

iptables-save > /etc/iptables/rules.v4

Per salvare l’attuale configurazione. Mentre per ripristinarlo (nel caso abbiate apportato delle modifiche) con:

iptables-restore < /etc/iptables/rules.v4

Ora provate a riavviare e vedete se è ancora tutto uguale!

Come impostare delle regole nell’Iptables

Abbiamo visto cos’è l’Iptables ma non abbiamo ancora visto come impostare delle regole. Beh, come ho specificato nell’articolo precedente, è molto semplice! Aprite il terminale ed eseguite:

sudo iptables -A INPUT -i eth1 -p udp -m udp --dport 53 -j DROP
sudo iptables -A INPUT -i eth1 -p tcp -m tcp --dport 53 -j DROP

Questi due comandi imposteranno delle regole che bloccheranno tutte le richieste di DNS sull’interfaccia eth1 (se non sai cos’è una network interface, leggi qua).

Ovviamente queste regole al prossimo riavvio saranno resettate, nel prossimo articolo vedremo come salvarle permanentemente.

Cos’è l’Iptables

L’Iptables è un firewall installato in quasi tutti i sistemi Linux, molto semplice e intuitivo.

È facilmente gestibile da linea di comando e per ora non sono state trovate falle conclamate. Gestisce in modo semplice le regole di input, output e forward.

Potete leggere la documentazione in italiano sul sito di Ubuntu https://wiki.ubuntu-it.org/Sicurezza/Iptables

Photo by Viacheslav Bublyk on Unsplash