GNU/Linux e i firewall Relatori: Giorgio Bodo Bodini Roberto Oliverino Azzini
Classificazione delle reti in base all'estensione
VPN VPN: Virtual Private Network LAN security gateway security gateway LAN
Topologie di rete a stella ad anello su bus
reti a stella concentratore
Topologie di rete a stella ad anello su bus
reti su bus
pacchetti
Lo stack OSI/ISO 7 Applicazione 6 Presentazione 5 sessione 4 Trasporto 3 Rete 2 Data - link 1 Fisico ripetitore 7 Applicazione 6 Presentazione 5 sessione 4 Trasporto 3 Rete 2 Data - link 1 Fisico
incapsulamento dei pacchetti 7 Applicazione 6 Presentazione 5 sessione 4 Trasporto 3 Rete 2 Data - link 1 Fisico
Livello 1 -Fisico Schede di rete Cavi di rete Hub o concentratori
indirizzi MAC
HUB vs. switch HUB Switch pacchetto in ingresso pacchetti ripetuti su ogni porta pacchetto in ingresso pacchetto in uscita
Lo stack OSI/ISO 7 Applicazione 6 Presentazione 5 sessione 4 Trasporto 3 Rete 2 Data - link 1 Fisico ripetitore 7 Applicazione 6 Presentazione 5 sessione 4 Trasporto 3 Rete 2 Data - link 1 Fisico
indirizzi IP indirizzo IP 1.2.3.4 ID RETE ID NODO netmask 255.255.255.0 indirizzo di rete indirizzo di broadcast 1.2.3.0 1.2.3.255
classi di rete classe C netmask 255.255.255.0 indirizzi 192.0.1.1-223.255.254.254 classe B netmask 255.255.0.0 indirizzi 128.1.0.1-194.254.255.254 classe A netmask 255.0.0.0 indirizzi 1.0.0.1-126.255.255.254
notazione CIDR 192.168.1.0 / 24
gateway
tabella di routing root@caronte:~ # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 81.85.248.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 (Internet) 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 (LAN) 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 (DMZ) 0.0.0.0 81.85.248.1 0.0.0.0 UG 0 0 0 eth2 (defaultroute)
scoprire gli hop
scoprire gli hop [root@portlinux sandman]# traceroute www.lugcr.it traceroute to www.lugcr.it (81.88.226.70), 30 hops max, 38 byte packets 1 192.168.0.200 (192.168.0.200) 0.251 ms 0.224 ms 0.190 ms 2 81.85.248.1 (81.85.248.1) 1.030 ms 0.691 ms 0.557 ms 3 core-sw-cr-02.aemcom.net (81.88.227.222) 0.635 ms 0.638 ms 0.574 ms 4 81.88.227.66 (81.88.227.66) 2.336 ms 2.347 ms 2.277 ms 5 81.88.226.76 (81.88.226.76) 2.180 ms 2.143 ms 2.030 ms 6 81.88.226.70 (81.88.226.70) 2.467 ms 2.431 ms 2.305 ms [root@portlinux sandman]# traceroute www.debian.org traceroute to www.debian.org (194.109.137.218), 30 hops max, 38 byte packets 1 192.168.0.200 (192.168.0.200) 0.572 ms 0.425 ms 0.205 ms 2 81.85.248.1 (81.85.248.1) 0.581 ms 0.614 ms 0.557 ms 3 bgp-cr-vr-inf-01.aemcom.net (81.88.227.254) 3.544 ms 1.922 ms 1.854 ms 4 217.12.177.161 (217.12.177.161) 3.558 ms 4.326 ms 5.657 ms 5 217.12.179.252 (217.12.179.252) 8.655 ms 5.232 ms 5.866 ms 6 217.26.80.130 (217.26.80.130) 13.477 ms 13.445 ms 12.683 ms 7 193.158.5.137 (193.158.5.137) 21.748 ms 13.588 ms 14.756 ms 8 ams-e4.ams.nl.net.dtag.de (62.154.15.2) 44.257 ms 46.638 ms 44.772 ms
IPv6 FEDC:BA98:7654:3210:FEDC:BA98:7654:3210 = 1080:0:0:0:8:800:200C:417A
indirizzi speciali loopback 127.0.0.1 default route 0.0.0.0
indirizzi per reti private 1x classe A 10.x.x.x 10.0.0.1-10.255.255.254 16x classe B 172.Y.x.x 172.16.0.1-172.31.255.254 256x classe C 192.168.Y.x 192.168.0.1-192.168.255.254
/etc/protocols # /etc/protocols: # $Id: protocols,v 1.2 2001/05/02 17:10:04 chmouel Exp $ # # Internet (IP) protocols # # from: @(#)protocols 5.1 (Berkeley) 4/17/89 # # Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992). # # See also http://www.isi.edu/in-notes/iana/assignments/protocol-numbers ip 0 IP # internet protocol, pseudo protocol number #hopopt 0 HOPOPT # hop-by-hop options for ipv6 icmp 1 ICMP # internet control message protocol igmp 2 IGMP # internet group management protocol ggp 3 GGP # gateway-gateway protocol ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'') st 5 ST # ST datagram mode tcp 6 TCP # transmission control protocol cbt 7 CBT # CBT, Tony Ballardie <A.Ballardie@cs.ucl.ac.uk> egp 8 EGP # exterior gateway protocol igp 9 IGP # any private interior gateway (Cisco: for IGRP) bbn-rcc 10 BBN-RCC-MON # BBN RCC Monitoring nvp 11 NVP-II # Network Voice Protocol pup 12 PUP # PARC universal packet protocol argus 13 ARGUS # ARGUS emcon 14 EMCON # EMCON xnet 15 XNET # Cross Net Debugger chaos 16 CHAOS # Chaos udp 17 UDP # user datagram protocol mux 18 MUX # Multiplexing protocol dcn 19 DCN-MEAS # DCN Measurement Subsystems hmp 20 HMP # host monitoring protocol prm 21 PRM # packet radio measurement protocol...
ICMP
UDP - TCP UDP user datagram protocol TCP transmission control protocol 0 1023 1024 65535 porte privilegiate porte non privilegiate
flags TCP SYN ACK FIN RST synchronize acknowledge finish reset
three-way handshake (A) > SYN > (B) (A) < SYN/ACK < (B) (A) > ACK > (B)
protocolli dei servizi di rete # /etc/services: # $Id: services,v 1.22 2001/07/19 20:13:27 notting Exp $ # # Network services, Internet style # # The Well Known Ports are those from 0 through 1023. # The Registered Ports are those from 1024 through 49151 # The Dynamic and/or Private Ports are those from 49152 through 65535 # Each line describes one service, and is of the form: # # service-name port/protocol [aliases...] [# comment]... ftp-data 20/tcp ftp 21/tcp ssh 22/tcp # SSH Remote Login Protocol telnet... 23/tcp smtp 25/tcp mail... domain 53/tcp nameserver # name-domain server domain 53/udp nameserver... http 80/tcp www www-http # WorldWideWeb HTTP... pop3... 110/tcp pop-3 # POP version 3 https 443/tcp # MCom...
netstat [root@portlinux sandman]# netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.168.121.112:32778 web5.w3.org:http ESTABLISHED tcp 0 0 192.168.121.112:32777 klecker.debian.org:http ESTABLISHED tcp 0 0 192.168.121.112:32779 ftp.slackware.com:ftp ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 12 unix 3 [ ] [ ] DGRAM STREAM CONNECTED 3222 /dev/log 11554 /tmp/.x11-unix/x0 unix 3 [ ] STREAM CONNECTED 11553 unix... 3 [ ] STREAM CONNECTED 11483 /home/sandman/tmp/orbit-
protocolli dei servizi di rete HTTP SMTP POP3 - tcp/80 - tcp/25 - tcp/110
protocolli dei servizi di rete FTP
Architetture di rete con firewall Internet - firewall - LAN Interne t firewall LAN hub server client
Architetture di rete con firewall Internet - firewall - LAN + DMZ Internet firewall DMZ LAN hub server Web server client
Architetture di rete con firewall Internet - firewall esterno - DMZ - firewall interno - LAN Firewall esterno Firewall interno internet HUB DMZ Lan
Packet filter firewall e stack OSI 7 Applicazione 7 Applicazione 6 Presentazione 6 Presentazione 5 sessione 5 sessione 4 Trasporto 4 Trasporto 4 Trasporto 4 Trasporto 3 Rete 3 Rete 3 Rete 3 Rete 2 Data - link 2 Data - link 2 Data - link 2 Data - link 1 Fisico 1 Fisico 1 Fisico 1 Fisico
stato della connessione NEW ESTABLISHED RELATED INVALID
iptables: tabelle e catene
iptables: matches -p, --protocol seleziona i pacchetti in base al protocollo: #iptables -A INPUT -p udp seleziona solo i pacchetti UDP -s, --src, --source seleziona i pacchetti in base all'indirizzo IP di provenienza: #iptables -A INPUT -s! 192.168.0.0/24 seleziona solo i pacchetti che non provengono dalla rete 192.168.0.x -d, --dst, --destination #iptables -A INPUT -d 192.168.1.1 seleziona i pacchetti destinati all'indirizzo IP 192.168.1.1 -i, --in-interface #iptables -A INPUT -i eth0 seleziona i pacchetti arrivati dall'interfaccia di rete eth0 -o, --out-interface #iptables -A FORWARD -o eth1 seleziona i pacchetti che devono uscire dall'interfaccia eth1 --sport, --source-port #iptables -A INPUT -p tcp --sport 80 seleziona i pacchetti che provengono da una porta 80/TCP, cioè da un server web
iptables: matches --dport, --destination-port #iptables -A INPUT -p tcp --dport 25 seleziona i pacchetti destinati ad una porta 25/TCP, ovvero ad un server SMTP (posta in uscita) --tcp-flags #iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN SYN seleziona solo i pacchetti che abbiano attivo il solo flag SYN tra i flag SYN, ACK e FIN, ovvero i tentativi di instaurare nuove connessioni TCP --icmp-type #iptables -A INPUT -p icmp --icmp-type 8 seleziona i pacchetti ping in uscita --state #iptables -A INPUT -m state --state RELATED,ESTABLISHED seleziona solo i pacchetti appartenenti a connessioni stabilite o correlate -m mac o --mac-source controlla la corrispondenza delle regole delle catene in base all'indirizzo MAC della scheda di provenienza del pacchetto; è utile per impostare le regole su macchine che hanno l'indirizzo IP assegnato dinamicamente (via DHCP).
iptables: target ACCEPT DROP REJECT LOG MARK SNAT DNAT MASQUERADE REDIRECT
iptables: comandi -A, --append #iptables -A INPUT... Questo comando aggiunge la regola alla fine della catena quindi sarà l'ultima ad essere verificata. -D, --delete #iptables -D INPUT --dport 80 -j DROP #iptables -D INPUT 1 Questo comando cancella una regola dalla catena di INPUT. Questo può essere fatto in due modi. Nel primo esempio si cancella la regola che ha le caratteristiche riportate; nel secondo si cancella la prima regola della catena. -R, --replace #iptables -R INPUT 3 -s 192.168.0.1 -j DROP Questo comando sostituisce la terza regola della catena INPUT con una nuova regola con le caratteritiche descritte -I, --insert #iptables -I INPUT 8 --dport 80 -j ACCEPT Inserisce la nuova regola all'ottava posizione della catena -L, --list #iptables -L INPUT Questo comando mostra la lista di tutte le regole presenti nella catena specificata. Se non si specifica una catena, verranno mostrate le regole di tutte le catene
iptables: comandi -F, --flush #iptables -F INPUT Questo comando svuota la catena INPUT da tutte le regole presenti ed equivale a cancellare tutte le regole una per una con il comando -D -N, --new-chain #iptables -N allowed Questo comando dice al kernel di creare una nuova catena di nome allowed -X, --delete-chain #iptables -X allowed Cancella la catena allowed dalla tabella. Funziona solo se la catena è gia stata svuotata da tutte le regole. -P, --policy #iptables -P INPUT DROP Questo comando è usato per settare le policy di default per le catene predefinita. Tutti i pacchetti che non soddisfano nessuna regola della catena subiranno questa fine. I target possibili sono solo DROP, ACCEPT e REJECT -E, --rename-chain #iptables -E allowed consentiti Il comando rinomina la catena di nome allowed in consentiti