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