Avanti Indietro Indice

11. Consigli su come realizzare il filtraggio dei pacchetti

Nell'area della sicurezza dei computer è considerato saggio bloccare qualsiasi cosa e poi aprire i "buchi" strettamente necessari. Si dice in genere `tutto ciò che non è esplicitamente permesso è proibito'. Raccomando questo approccio se il proprio massimo interesse è la sicurezza.

Non si avvii nessun servizio a meno che non se ne abbia bisogno, anche se si pensa di averne bloccato l'accesso.

Se si sta creando un firewall dedicato, si cominci dal non avviare nulla, poi si aggiungano i servizi e si lascino passare i pacchetti che sono necessari.

Raccomando "security in depth" (sicurezza in profondità): si combinino tcp-wrapper (per connessioni al filtro dei pacchetti stesso), proxy (per connessioni che transitano attraverso il filtro dei pacchetti), verifica degli instradamenti e filtraggio dei pacchetti. La verifica degli instradamenti consiste nello scartare i pacchetti che arrivano da un'interfaccia inaspettata. Ad esempio se la propria rete locale ha indirizzi del tipo 10.1.1.0/24, e un pacchetto con questo indirizzo sorgente arriva alla propria interfaccia esterna, allora sarà scartato. Questo può essere abilitato per una interfaccia (ppp0) così:

# echo 1 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
#

O per tutte le interfacce esistenti e future in questo modo:

# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
#     echo 1 > $f
# done
# 

Debian lo fa per default dove possibile. Se si ha un instradamento asimmetrico (ossia si aspettano pacchetti provenienti da diverse direzioni), si vorrà disabilitare il filtraggio su queste interfacce.

Registrare i messaggi è utile quando si imposta un firewall e qualcosa non funziona, ma con un firewall pronto all'uso, lo si combini sempre con `limit' per impedire che qualcuno cerchi di inondarvi di messaggi.

Raccomando il connection tracking (tracciamento delle connessioni) per i sistemi sicuri: introduce un po' di lavoro in più, in quanto tutte le connessioni saranno tracciate, ma è davvero utile per controllare gli accessi alla propria rete. Potrebbe essere necessario caricare il modulo `ip_conntrack.o' se non è stato compilato direttamente nel kernel o se il kernel non carica i moduli automaticamente. Se si vuole tenere una traccia accurata dei protocolli complessi, allora si deve caricare il modulo appropriato di aiuto (es. `ip_conntrack_ftp.o').

# iptables -N no-conns-from-ppp0
# iptables -A no-conns-from-ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A no-conns-from-ppp0 -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A no-conns-from-ppp0 -i ppp0 -m limit -j LOG --log-prefix "Bad packet from ppp0:"
# iptables -A no-conns-from-ppp0 -i ! ppp0 -m limit -j LOG --log-prefix "Bad packet not from ppp0:"
# iptables -A no-conns-from-ppp0 -j DROP

# iptables -A INPUT -j no-conns-from-ppp0
# iptables -A FORWARD -j no-conns-from-ppp0

Come realizzare un buon firewall va oltre lo scopo di questo HOWTO, consiglio comunque di essere sempre `minimalisti'. Si legga il Security HOWTO per maggiori informazioni su come effettuare il test e provare la propria box.


Avanti Indietro Indice