Firewall
E' un software o un hardware dedicato che blocca le porte o delle combinazioni particolari di porte/protocolli o porte/applicazioni a seconda del livello della pila ISO/OSI a cui lavorano. Generalmente si parte da una configurazione in cui sono tutte chiuse e poi, mano mano, vengono aperte quelle utilizzate dai servizi che si vogliono abilitare.
Linux/Mac
Esistono tre filtri che i pacchetti devono passare:
INPUT FORWARD OUTPUT
per vedere la configurazione di questi filtri bisogna usare il comando :
iptables -L
Ogni filtro (chain) ha una policy predefinita se nessuna regola corrisponde ad esso, che può essere DROP o ACCEOT e si può cambiare per esempio per il filtro INPUT con il comando:
iptables -P INPUT DROP
per aggiungere una regola si utilizza un comando del tipo:
iptables -A INPUT -s 123.123.123.123/123 -p tcp --destinantion-port 456 -j DROP
dove -A serve ad aggiungere per ultima nella catena delle regole INPUT un filtro che scarterà tutti i pacchetti provenienti dalla classe 123.123.123.123/123 con il protocollo tcp sulla porta 456 . Se al posto di -A si usa -I la regola viene inserita in cima alla catena. Per eliminare una regola al secondo posto nella catena delle regole INPUT siusa il comando :
iptables -D INPUT 3
L'elenco completo delle opzioni di comando è :
-L catena fa l'elenco delle regole
-A catena aggiunge la regola alla catena
-I numero catena aggiunge la regola alla numero-esima posizione
-D numero catena elimina la regola numero-esima dalla catena
-F catena elimina tutte le regole della catena tranne la policy di default
-P policy catena aggiunge la policy di defoult alla catena
L'elenco delle opzioni di specifica dei pacchetti
-s indirizzo/maschera aggiunge l'indirizzo/classe di origine dei pacchetti
-d indirizzo/maschera aggiunge l'indirizzo/classe di destinazione dei pacchetti
-i interfaccia aggiunge l'interfaccia di input dei pacchetti (eth0, ppp0, ecc.)
-o interfaccia aggiunge l'interfaccia di output dei pacchetti
-p protocollo aggiunge l'interfaccia di output dei pacchetti (tcp, udp, ecc.)
--source-port porta aggiunge la porta di sorgente dei pacchetti
--destination-port porta aggiunge la porta di arrivo dei pacchetti
--syn combinato con -p tcp seleziona i pacchetti di connessione
un esempio di configurazione è :
iptables -P INPUT DROP
iptables -A INPUT -p icmp -j ACCEPT #icmp
iptables -A INPUT -s 127.0.0.1 -j ACCEPT #loopback
iptables -A INPUT -s classeIpDellaSottorete -j ACCEPT #subnet
iptables -A INPUT -p tcp '!' --syn -j ACCEPT #DropTcpConnection
iptables -A INPUT -p udp --source-port 53 -s IpDelDNS -j ACCEPT #DNS
iptables -A INPUT -p tcp --destinantion-port 22 -j ACCEPT #ssh
iptables -A INPUT -p tcp --destinantion-port 25 -j ACCEPT #smtp
iptables -A INPUT -p tcp --destinantion-port 20 --destination-port 1024: -j ACCEPT #ftpPassiveMode