Packet Filter in LINUX (iptables) Laboratorio di Reti Ing. Telematica - Università Kore Enna A.A. 2008/2009 Ing. A. Leonardi
Firewall Può essere un software che protegge il pc da attacchi esterni Host Applicazioni Firewall Internet Può essere un host che filtra tutto il traffico da e per una rete locale Internet Firewall
Configurazione Politica per i servizi di rete default deny: tutti i servizi non esplicitamente permessi sono negati default allow: tutti i servizi non esplicitamente negati sono permessi
Implementazione Packet filter è un filtro che agisce sui pacchetti IP i pacchetti possono essere scartati sulla base di: indirizzo IP sorgente/destinazione indirizzo MAC sorgente/destinazione porta TCP interfaccia
IPTABLES è un applicativo per il packet filter (fa parte di Netfilter) presente nelle distribuzioni Linux con kernel 2.4 e 2.6 ha il controllo dei pacchetti IP in transito sulle interfacce di rete i pacchetti IP verranno processati tramite delle tabelle (table) e seguendo delle regole (chain) tipi di tabelle filter (filtraggio pacchetti) nat (sostituzione indirizzi IP) mangle (manipolazione dei campi dei pacchetti)
IPTABLES: filter Filtra i pacchetti in base all interfaccia di provenienza e ai campi IP e TCP tre chain: INPUT: regole di filtraggio sui pacchetti in arrivo all host OUTPUT: regole di filtraggio sui pacchetti in uscita dall host FORWARD: regole di filtraggio sui pacchetti in transito (arrivano e partono da interfacce diverse)
Applicazioni FILTER Output Input OUT Forward IN
IPTABLES: filter Regole possibili della chain: ACCEPT (accetta il pacchetto), DROP (scarta il pacchetto), REJECT (rifiuta il pacchetto), QUEUE (passa il pacchetto allo user-space), RETURN (esce dalla tabella attuale) Il pacchetto è soggetto alle regole della chain secondo l ordine di inserimento La decisione avviene in base a: interfaccia di rete indirizzo IP sorgente/destinazione tipo di protocollo (UDP, TCP, ICMP, etc.) porta TCP/UDP di origine/destinazione altrimenti regola di default della chain (policy)
IPTABLES: filter Conf. visualizzare le regole in uso per ogni chain iptables t filter L visualizzare le regole in uso per una particolare chain: iptables t filter L <chain> impostare la policy di default iptables t filter P <chain> <policy> aggiungere una regola in coda ad una chain iptables t filter A <chain> <options> -j <policy> <chain> = INPUT, FORWARD, OUTPUT <policy> = ACCEPT, DROP, REJECT
IPTABLES: filter Conf. aggiungere una regola in posizione <N> di una chain iptables t filter I <chain> <N> <options> -j <policy> per sostituire una regola in posizione <N> iptables t filter R <chain> <N> <options> -j <policy> per eliminare una regola in posizione <N> iptables t filter D <chain> <N> per eliminare tutte le regole da una specifica chain o da tutte le chain iptables t filter F <chain> iptables t filter F
IPTABLES: filter Conf. <options> interfaccia di ingresso -i <interface> interfaccia di uscita -o <interface> IP di origine e destinazione -s <address>/<netmask> -d <address>/<netmask> protocollo -p tcp, udp, icmp, all porta di origine/destinazione -sport <port> -dport <port>
IPTABLES: filter - Esempi Esempi: Bloccare tutto il traffico tcp iptables t filter -A INPUT -i eth0 -p tcp -j REJECT Accettare tutto il traffico nella porta 7001 iptables t filter -A INPUT -i eth0 -p udp -- destination-port 7001 -j ACCEPT Bloccare tutti i pacchetti udp iptables t filter -A INPUT -i eth0 -p udp -j REJECT Bloccare i pacchetti icmp iptables t filter A INPUT i eth0 p icmp j DROP - Bloccare i pacchetti provenienti da un indirizzo MAC Iptables t filter A INPUT m mac --mac-source <MAC_ADDRESS> -j DROP