Table of Contents

Usare ipset e la lista pubblica di blocklist.de

Lo scopo di questa configurazione è quello di inserire nel nostro firewall (fatto con iptables) delle regole per bloccare gli ip malevoli (ipv4 e ipv6) presi dalla lista pubblica disponibile dal sito blocklist.de.

Per farlo, useremo:

Installazione

Creare uno script di firewall

A questo punto si può creare uno script di firewall (che possiamo salvare dove vogliamo, per esempio nella home di root o anche questo in /opt/) che esegua le seguenti azioni:

Le regole così salvate verranno ricaricate al boot da iptables-restore (se funziona tutto correttamente) quindi questo script non va lanciato ad ogni boot, ma lo lanceremo a mano solo alla prima configurazione e poi se vogliamo fare modifiche al nostro firewall.

Ovviamente questo e` un esempio; le vostre regole saranno diverse.

#!/bin/sh

####
#### Inizializzazione (cancellazione delle regole vecchie)
####
iptables -F
ip6tables -F
iptables -F -t nat
iptables -X
ip6tables -X


###
### blocchi per ipset
###
iptables -I INPUT  -m set --match-set blocklists-de-permanent_v4 src -j DROP
ip6tables -I INPUT  -m set --match-set blocklists-de-permanent_v6 src -j DROP


####
#### SSH (per esempio)
####
iptables -A INPUT -i ens3 -m state --state NEW -p tcp --dport 22 -j ACCEPT
ip6tables -A INPUT -i ens3 -m state --state NEW -p tcp --dport 22 -j ACCEPT


####
#### accetto l' icmp
####
iptables -A INPUT -i ens3 -p icmp -j ACCEPT
ip6tables -A INPUT -i ens3 -p icmpv6 -j ACCEPT


####  
#### Blocco tutto quello che entra da ens3 che sia in stato NEW o INVALID
#### (e che non sia stato accettato prima, ovviamente)
####
iptables -A INPUT -i ens3 -m state --state NEW,INVALID -j DROP
ip6tables -A INPUT -i ens3 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ens3 -m state --state NEW,INVALID -j DROP
ip6tables -A FORWARD -i ens3 -m state --state NEW,INVALID -j DROP




####
#### Salvo le regole in modo che al boot vengano ricaricate da
#### netfilter-persistent
####
/sbin/ip6tables-save > /etc/iptables/rules.v6
/sbin/iptables-save > /etc/iptables/rules.v4

Conclusioni

Questa configurazione è la prima che documento per Debian 11 con systemd. Volendo fare la stessa configurazione senza systemd non dovrebbero esserci grosse differenze se non per il comando per abilitare netfilter-persistent che sarà diverso (probabilmente comunque è abilitato di default al momento in cui lo installiamo).

Nella "vecchia logica" che ho usato sempre prima di systemd non avrei proprio usato netfilter-persistent, ma avrei usato uno script di init che carica al boot tutte le regole di firewall e popola anche gli ipset. Questa "nuova logica" è pensata così perché non ho voglia di studiarmi a fondo systemd per crearmi una mia unit che carichi le regole di firewall, quindi ho deciso di appoggiarmi a netfilter-persistent e far fare il lavoro a lui. Probabilmente in futuro comunque tutto questo sarà obsoleto e saremo costretti a usare l'ennesima reinvenzione dell'acqua calda tipo firewalld, quindi sarà tutto da rivedere.