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 tuo massimo interesse è la sicurezza.

Non avviare nessun servizio a meno che tu non ne abbia bisogno, anche se pensi di averne bloccato l'accesso.

Se stai creando un firewall dedicato, comincia dal non avviare nulla, poi aggiungi i servizi e lascia passare i pacchetti che sono necessari.

Raccomando "security in depth" (sicurezza in profondità): combina 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 tua rete locale ha indirizzi del tipo 10.1.1.0/24, e un pacchetto con questo indirizzo sorgente arriva alla tua 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 hai instradamento asimmetrico (ossia aspetti pacchetti provenienti da diverse direzioni), vorrai 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, combinalo sempre con `limit' per impedire che qualcuno cerchi di inondarti 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 tua rete. Potrebbe essere necessario caricare il modulo `ip_conntrack.o' se non è compilato direttamente nel kernel o se il kernel non carica i moduli automaticamente. Se vuoi tenere traccia accurata di protocolli complessi, allora devi 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'. Leggi il Security HOWTO per maggiori informazioni su come fare il test e provare la tua box.


Avanti Indietro Indice