netfilter/iptables
Transcript
netfilter/iptables
Netfilter Tabelle e catene iptables Reference netfilter/iptables Lorenzo Cavallaro, Andrea Lanzi Università degli Studi di Milano Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica January 19, 2005 Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Sommario 1 Netfilter 2 Tabelle e catene 3 iptables Esempi 4 Reference Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Sommario 1 Netfilter 2 Tabelle e catene 3 iptables Esempi 4 Reference Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Sommario 1 Netfilter 2 Tabelle e catene 3 iptables Esempi 4 Reference Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Sommario 1 Netfilter 2 Tabelle e catene 3 iptables Esempi 4 Reference Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Netfilter (1) il framework netfilter infrastruttura “fondamentale” nei kernel Linux versione 2.4.x e 2.6.x; permette: packet filtering, stateless (IPv4/IPv6) e stateful (IPv6); (Source | Dest) Network Address Translation (S | DNAT); Network Address and Port Translation (NAPT), masquerading per Linux; “Port Address Translation” (PAT); packet mangling; infrastruttura flessibile ed estendibile via LKM e applicazioni user space; Sito di riferimento: http://www.netfilter.org Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Netfilter (2) caratteristiche insieme di hook nel kernel che permettono a moduli kernel di registrare funzioni callback nello stack di rete; funzione di callback chiamata per ogni pacchetto che attraversa il corrispondente hook; iptables è il tool userspace usato per specificare le regole del firewall; netfilter, iptables e il meccanismo di connection tracking, insieme al NAT formano, in realtà il framework. Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Opzioni di configurazione del kernel (1) Opzioni che devono essere abilitate nel kernel (oltre al supporto per il networking): Networking options Network packet filtering (replaces ipchains) IP: Netfilter Configuration Connection tracking (required for masq/NAT) → FTP protocol support → ... IP tables support (required for filtering/masq/NAT) → Connection state match support → Connection tracking match support → ... → Packet filtering → REJECT target support Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Opzioni di configurazione del kernel (1) continued . . . Networking options ... IP: Netfilter Configuration IP tables support (required for filtering/masq/NAT) → ... → Full NAT → MASQUERADE target support → REDIRECT target support → Packet mangling → TOS target support → ... → LOG target support Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Tabelle e catene (1) attraversamento dei pacchetti tabelle principali: 1 2 3 filter (default); nat; mangle. catene di default: 1 2 3 4 5 INPUT (filter, mangle); OUTPUT (filter, mangle, nat); FORWARD (filter, mangle); PREROUTING (mangle, nat → target DNAT); POSTROUTING (mangle, nat → target SNAT). Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Tabelle e catene (2) continued. . . ogni catena raggruppa un insieme di regole che vengono esaminate sequenzialmente, specificando cosa fare in caso di match → target da seguire; ogni catena ha una policy di default: ACCEPT, DROP; possibilità di estendere il comportamento del framework, tramite “estensioni” che operano su: funzionalità di match dei pacchetti (via regole); target (user-defined o estensioni via LKM). Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi iptables (1) operazioni sulle catene crearne una nuova, user-defined: flag -N; cancellarne una vuota: flag -X; cambiare la policy di default (built-in chain): flag -P; mostrare le regole: flag -L; flush delle regole: flag -F; appendere una regola: flag -A; inserire una regola: flag -I; rimpiazzare una regola (ad una certa posizione): flag -R; cancellare una regola (ad una certa posizione): flag -D; Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi iptables (2) alcuni esempi # iptables -N test-chain # iptables -X test-chain # iptables -P INPUT DROP # iptables -nL [chain] Chain INPUT (policy DROP) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination # iptables -F INPUT Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi iptables (3) operazioni sulle regole ogni regola specifica un’insieme di condizioni che il pacchetto deve soddisfare affinché avvenga il match; a match avvenuto, il destino del pacchetto è deciso dal target specificato nella regola; policy di default in caso contrario. # iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP $ ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes --- 127.0.0.1 ping statistics --1 packets transmitted, 0 packets received, 100% packet loss Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi iptables (4) altri flag sulle regole specificare source (-s) e destination (-d) (ip/mask); specificare “negazione” (!); specificare un protocollo (-p): “abilita” anche estensioni; specificare un’interfaccia (-i) o (-o); specificare porta sorgente (–sport) e destinazione (–dport); # iptables -A INPUT -i ppp0 -s <trusted-ip> -p tcp --dport 22 \ -j ACCEPT # iptables -A FORWARD -i ppp0 -s <trusted-ip> -d <ip/mask> \ -p tcp --dport 80 -j ACCEPT Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi Estensioni di iptables: nuovi match (1) estensioni su tcp # iptables -p tcp --help TCP v1.2.11 options: --tcp-flags [!] mask comp match when TCP flags & mask == comp (Flags: SYN ACK FIN RST URG PSH ALL NONE) [!] --syn match when only SYN flag set (equivalent to --tcp-flags SYN,RST,ACK SYN) --source-port [!] port[:port] --sport ... match source port(s) --destination-port [!] port[:port] --dport ... match destination port(s) --tcp-option [!] number match if TCP option set Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi Estensioni di iptables: nuovi match (2) estensioni su icmp # iptables -p icmp --help ICMP v1.2.11 options: --icmp-type [!] typename match icmp type (or numeric type or type/code) Valid ICMP Types: any echo-reply (pong) destination-unreachable ... echo-request (ping) ... Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi Estensioni di iptables: lo state match Altre estensioni sono “abilitate” con il flag -m <state> stateful packet filter l’estensione state, interpreta l’analisi effettuata di connection-tracking del modulo “ip conntrack” estensioni su state # iptables -m state --help state v1.2.11 options: [!] --state [INVALID|ESTABLISHED|NEW|RELATED|UNTRACKED][,...] State(s) to match esempio # iptables -A FORWARD -i ppp0 -m state --state NEW -j DROP Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi Estensioni di iptables: user-defined chain e nuovi target (1) cosa fare una volta che c’è stato un match; ACCEPT e DROP (built-in); target che sono catene user-defined (permettono di “annidare” regole); nuovi target user-defined chain # iptables -N test-icmp # iptables -A OUTPUT -p icmp -j test-icmp # iptables -A test-icmp -d www.debian.org -j ACCEPT # iptables -A test-icmp -d www.cnn.com -j DROP $ ping -c 1 www.cnn.com PING cnn.com (64.236.24.20): 56 data bytes ping: sendto: Operation not permitted ping: wrote cnn.com 64 chars, ret=-1 Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi Estensioni di iptables: user-defined chain e nuovi target (1) nuovi target LOG; REJECT (–reject-with <type>); RETURN (built-in); QUEUE (built-in). # iptables -A OUTPUT -d www.sikurezza.org -p tcp -dport 80 \ -j REJECT --reject-with icmp-net-unreachable $ telnet www.sikurezza.org 80 Trying 193.254.241.218... telnet: Unable to connect to remote host: Network is unreachable Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi Esempi filter table # # # # iptables -N test iptables -A test -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A test -m state --state NEW -i ! ppp0 -j ACCEPT iptables -A test -i ppp0 -m limit -j LOG \ --log-prefix ’Bad packet’ # iptables -A test -j DROP # iptables -A INPUT -j test nat table # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE # iptables -t nat -A POSTROUTING -o ppp0 -j SNAT \ --to-source 1.2.3.4 # iptables -t nat -A PREROUTING -i ppp0 -j DNAT --to 5.6.7.8 # iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 \ -j DNAT --to 5.6.7.8:8080 Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Esempi Struttura di netfilter Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables Netfilter Tabelle e catene iptables Reference Reference reference www.netfilter.org; iptables(8); Networking Concepts HOWTO; Packet Filtering HOWTO; NAT HOWTO; Lorenzo Cavallaro, Andrea Lanzi netfilter/iptables