Iptables Mauro Piccolo piccolo@di.unito.it
Iptables Iptables e' utilizzato per compilare, mantenere ed ispezionare le tabelle di instradamento nel kernel di Linux La configurazione di iptables e' molto complessa. Iptables contiene tre tabelle Filter table Nat table Mangle table Ogni tabella contiene una catena di regole. Ogni regola viene analizzata nell'ordine in cui e' inserita. Ci si ferma quando un pacchetto matcha la regola Se un pacchetto non matcha nessuna regola, viene applicata la politica di default per la catena L'utente puo' definire nuove catene di regole
Filter table Questa tabella e' usata per filtrare pacchetti che passano il firewall. Il suo solo scopo e' il filtraggio dei pacchetti e filtrera' i pacchetti che entrano, escono o sono inoltrati tra interfacce di rete (quest'ultimo caso solo nel caso in cui la macchina abbia piu' interfacce di rete) Questa tabella contiene tre catene di regole INPUT OUTPUT FORWARD
Nat table Questa tabella e' usata per cambiare l'indirizzo IP del mittente in un pacchetto per effetto di una traduzione NAT Questa tabella contiene tre catene di regole PREROUTING Per alterare pacchetti prima di effettuare l'inoltro POSTROUTING Per alterare pacchetti dopo che viene effettuato l'inoltro OUTPUT Per alterare i pacchetti generati localmente prima che vengano instradati
Mangle table Questa tabella e' usata per alterazioni particolari di pacchetti Catene di regole PREROUTING Per alterare i pacchetti in entrata prima dell'instradamento OUTPUT Per alterare i pacchetti generati localmente prima dell'instradamento...
Target Una regola del firewall specifica diversi criteri di match con un pacchetto ed un provvedimento (target) per il pacchetto stesso ACCEPT fai passare il pacchetto DROP elimina il pacchetto MASQUERADE... Effettua l'ip Masquerading (vediamo dopo)
Opzioni iptables -A - Append this rule to a rule chain. -L - List the current filter rules. -p - The connection protocol used. --dport - The destination port(s) required for this rule. A single port may be given, or a range may be given as start:end, which will match all ports from start to end, inclusive. -j - Jump to the specified target -i - Only match if the packet is coming in on the specified interface. -I - Inserts a rule. Takes two options, the chain to insert the rule into, and the rule number it should be. -s --source - address[/mask] source specification -d --destination - address[/mask] destination specification -o --out-interface - output name[+] network interface name ([+] for wildcard)
Sintassi tipo di comandi iptables iptable -t {TABLE} -A {CHAIN} {RULE-SPEC} Inserisce nella tabella {TABLE} in fondo alla catena {CHAIN} la regola {RULE-SPEC} iptable -t {TABLE} -I {CHAIN} {RULENUM} {RULE-SPEC} Inserisce nella tabella {TABLE} nella catena {CHAIN} alla posizione {RULENUM} la regola {RULE-SPEC} iptable -t {TABLE} -P {CHAIN} {TARGET} Setta per la tabella {TABLE}, per la catena {CHAIN} la politica di default {TARGET} iptables -t {TABLE} -L Lista tutte le regole della tabella {TABLE} Quando non si specifica una tabella, si intende sempre la tabella d default filter table
Esempi Permettere il traffico in entrata su una specifica porta iptable -A INPUT -p TCP -dport 22 -j ACCEPT accetta tutto il traffico TCP diretto alla porta 22 iptables -A INPUT -p tcp --dport 80 -j ACCEPT accetta tutto il traffico web in entrata Supponete che voi vogliate bloccare tutto il traffico eccetto quello specificato sopra. Come fate? Date il comando iptables -A INPUT -j DROP dopo I comandi dati sopra Tale regola pero' e' troppo restrittiva: se vogliamo permettere il traffico sulla porta di loopback (interfaccia lo) Dare il comando iptables -I INPUT 1 -i lo -j ACCEPT
IP Masquerading Lo scopo dell'ip Masquerading e' di permettere alle macchine aventi indirizzi IP privati di accedere ad Internet attraverso un nodo (un router NAT o una macchina) che effettua il mascheramento. Il traffico da una rete privata destinato ad Internet deve essere manipolato per instradare correttamente i messaggi di risposta da rispedire alla macchina mittente Per fare questo, il kernel del nodo che effettua il mascheramento deve modificare l'indirizzo IP sorgente di ogni pacchetto in modo che le risposte al mittente siano indirizzate a lui, cosi' che sia per lui possibile inoltrarle al mittente
Esempio Echo 1 > /proc/sys/net/ipv4/ip_forward Abilita l'ip forwarding iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE si assume che lo spazio di indirizzamento della rete privata sia nel range 192.168.0.0/16 e che la macchina che opera il mascheramento sia connessa ad internet attraverso l'interfaccia ppp0 -t nat: la tabella manipolata e' la tabella nat -A POSTROUTING: la regola e' applicabile nella catena dopo che e' stato fatto l'inoltro -s 192.168.0.0/16: la regola si applica al traffico originato dagli indirizzi IP dati -o ppp0: la regola si applica sul traffico inoltrato all'interfaccia ppp0 -j MASQUERADE: l'operazione di mascheramento si applica al traffico i cui criteri sono stati specificati sopra