Basta scrivere regole iptables a mano

Firewall iptables nftables

Chi gestisce firewall Linux ci è passato: 20 minuti per scrivere una regola iptables, un errore di battitura nel nome della chain, SSH perso. Poi tocca andare in sala server o sperare che la console funzioni.

La sintassi di iptables è potente ma non perdona. Basta un errore nell'ordine delle regole e il firewall che hai costruito con cura fa l'opposto di quello che volevi.

I 5 errori che fanno tutti

1. Dimenticare conntrack nella prima regola

# Sbagliato: blocca il traffico di ritorno delle connessioni già stabilite
iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Giusto: prima accetta le connessioni già stabilite
iptables -P INPUT DROP
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Senza conntrack ogni pacchetto TCP ACK viene scartato. La sessione SSH cade nel momento in cui applichi le regole.

2. Ordine delle regole sbagliato

iptables legge le regole dall'alto in basso e vince la prima che corrisponde:

# Sbagliato: il DROP non scatta mai perché l'ACCEPT corrisponde prima
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 22 -j DROP
# Giusto: prima restringi, poi consenti
iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 22 -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

3. Non salvare le regole

# Le regole spariscono al riavvio
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Rendile persistenti con iptables-persistent
apt install iptables-persistent
netfilter-persistent save

4. Ignorare IPv6

Hai chiuso IPv4 ma hai lasciato IPv6 completamente aperto:

# Controlla: se vedi solo le regole di default, hai un problema
ip6tables -L -n

Ogni regola iptables deve avere la sua controparte ip6tables. In alternativa imposta la policy di default a DROP.

5. Loggare tutto (e riempire il disco)

# Su un server trafficato riempie /var/log in poche ore
iptables -A INPUT -j LOG --log-prefix "DROPPED: "
# Meglio: log con rate limit
iptables -A INPUT -m limit --limit 5/min --limit-burst 10 \
  -j LOG --log-prefix "DROPPED: "
iptables -A INPUT -j DROP

Set di regole comuni che nessuno ricorda a memoria

Web server di base

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Gateway NAT

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m conntrack \
  --ctstate ESTABLISHED,RELATED -j ACCEPT

Rate limit su SSH

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW \
  -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW \
  -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

La via visuale: il Firewall Builder di NetForge

Invece di ricordare la sintassi, usa il builder visuale di regole di NetForge:

  1. Scegli la chain (INPUT, OUTPUT, FORWARD)
  2. Scegli protocollo, porta, sorgente e destinazione
  3. Scegli l'azione (ACCEPT, DROP, REJECT, LOG)
  4. Clicca "Aggiungi regola"
  5. Esporta come script iptables o nftables

Funzioni:

iptables o nftables: quale usare?

Su Debian 11+ o Ubuntu 22.04+ il backend di default è nftables. I comandi iptables funzionano ancora tramite il layer di compatibilità, ma la sintassi nativa di nftables è più pulita:

iptablesnftables
-A INPUT -p tcp --dport 22 -j ACCEPTtcp dport 22 accept
-t nat -A POSTROUTING -j MASQUERADEmasquerade
Comandi separati per v4/v6Un'unica family inet per entrambi

NetForge genera entrambi i formati dalle stesse regole visuali.

Prova NetForge

Builder visuale di regole firewall con export iptables/nftables. Niente cloud, gira sulla tua macchina.

Scopri NetForge