Sommario Esercitazione 5 Firewall Laboratorio di Sicurezza 2015/2016 Andrea Nuzzolese Packet Filtering ICMP Descrizione esercitazione Applicazioni da usare: Firewall: netfilter Packet sniffer: wireshark ALMA MATER STUDIORUM UNIVERSITA DI BOLOGNA 2 Packet Filtering [ ICMP ] Esercitazione Descrizione generale Il packet filtering è una tecnica per implementare firewall Un firewall di questo tipo filtra i pacchetti sulla base di regole applicate all header del pacchetto E possibile bloccare o far passare pacchetti verificando gli indirizzi IP dell host sorgente o destinazione, il protocollo, le dimensioni dei pacchetti, le porte utilizzate L esercitazione richiede di filtrare pacchetti ICMP destinati a specifici indirizzi IP ICMP è un protocollo di servizio e diagnostica incapsulato nel protocollo IP Le applicazioni ping e traceroute usano ICMP Lo studente usa sulla propria macchina virtuale un firewall packet filtering e un packet sniffer per monitorare la rete Riceve una coppia di indirizzi IP di macchine del dipartimento (che chiameremo A e B) Configura il firewall per far passare le richieste ICMP alla macchina A e bloccare quelle destinate alla macchina B Esegue due richieste ICMP alle due macchine e verifica che il firewall funzioni Inserisce nel report i log del firewall e del packet sniffer
Passo 1: configurare il Laboratorio Virtuale Cosa installa il pacchetto Il pacchetto da installare il pacchetto 8009-babaoglu-sicurezza-firewall nella vostra home; Una volta installato il pacchetto occorre: Decomprimere l archivio esercitazione5.zip disponibile o nella directory /usr/share/unibo oppure nella root del file system; Spostarsi nella cartella Esercitazione5 appena decompressa Lanciare l installer $>./install.sh Il pacchetto 8009-babaoglu-sicurezza-firewall installa Netfilter Wireshark (a fine presentazione trovate i link a queste risorse per documentazione) Passo 2: recupero indirizzi IP Passo 3: configurazione del firewall http://localhost/esercitazione5/index.php Compilare la form Indirizzo email e password del dominio studio.unibo.it (per l invio della mail) Nome, cognome, matricola (10 cifre) In risposta si riceve una mail di conferma con Subject: [Laboratorio Sicurezza: Esercitazione 5]: Mail di conferma per Cognome Nome Matricola I dati inseriti Una coppia di indirizzi IP del cluster CS Mail inviata in copia anche al tutor Lo studente configura il firewall per filtrare le richieste ICMP destinate agli indirizzi IP ricevuti via mail. In particolare: permette le richieste all host A blocca le richieste all host B
Netfilter: introduzione Netfilter: tabelle Nei sistemi Linux è possibile utilizzare il framework netfilter In particolare, è possibile utilizzare l utility iptables, che permette di manipolare le regole applicate dal kernel ai pacchetti N.B.: il comando iptables richiede privilegi di root Il kernel gestisce delle tabelle (tables) raw, mangle, nat, e filter Ogni tabella consiste di catene (chains), predefinite ed eventualmente definite dall utente Una catena è una sequenza di regole (rules). Una regola specifica delle condizioni di match ed un target se un pacchetto soddisfa una regola, allora viene eseguito il target altrimenti si passa a valutare la regola successiva nella catena se nessuna regola della catena viene soddisfatta allora viene applicata una regola di default, detta policy Netfilter: RAW table La tabella RAW è usata esclusivamente per selezionare i pacchetti che devono essere gestiti dal sistema di tracking della connessione Le sue chain sono PREROUTING OUTPUT Netfilter: MANGLE table Le chain della tabella mangle sono usate principalmente per modificare alcuni campi negli header dei pacchetti Le chain sono TOS (Type of Service): usato per settare delle policy su come inoltrare un pacchetto nella rete TTL (Time to Live): il tempo di vita del pacchetti MARK: usato per settare dei contrassegni speciali nel pacchetto SECMARK: usato per settare contrassegni di sicurezza nei singoli pacchetti CONSECMARK: usato per copiare i campi SECMARK nei o dai singoli pacchetti in modo da estenderli a tutta la connessione
Netfilter: NAT table Netfilter: FILTER table La tabella nat è usata per le traduzioni dell indirizzo di rete (Network Address Translation - NAT) sui pacchetti Le chain NAT sono DNAT: usato per cambiare l indirizzo del destinatario del pacchetto SNAT: usato per cambiare l indirizzo del mittente del pacchetto La sicurezza è gestita dalla tabella FILTER, che permette di implementare un firewall Le regole di packet filtering sono implementate in questa tabella La tabella filter ha tre catene predefinite INPUT, per i pacchetti destinati all host FORWARD, per i pacchetti che devono instradati verso altri host OUTPUT, per i pacchetti generati localmente Netfilter: connection tracking workflow Netfilter: command synopsis di iptables Command synopsis iptables [-t table] {-A -C -D -I} chain rule-specification La selezione della tabella [-t table] è opzionale, se non fornita equivale ad indicare la tabella FILTER I parametri {-A -C -D -I} servono ad indicare se si vuole aggiungere (-A), verificare l esistenza (-C), cancellare (-D) o inserire (-I) una regola nella chain Le chain sono quelle viste nelle slide precedenti. Per questa esercitazione occorre usare solo le chain della tabella FILTER I parametri in rule-specification descrivono il comportamento della regola
Netfilter: esempi con iptables Aggiungere una regola per accettare tutte le connessioni sulla chain in uscita $> sudo iptables -A OUTPUT -j ACCEPT Aggiungere una regola per bloccare tutte le connessioni sulla chain in entrata $> sudo iptables -A INPUT -j REJECT Aggiungere una regola per bloccare il forward all host XXX $> sudo iptables -A INPUT -j FORWARD -d XXX Avere il quadro completo delle chain della tabella FILTER $> sudo iptables L Impostare i log di sistema (visibili in /var/log/syslog) sulla chain di output $> sudo iptables -A OUTPUT -j LOG --log-level 7 Passo 4: configurazione ed attivazione del packet sniffer Wireshark (1) Wireshark è un analizzatore di rete (packet sniffer): largamente utilizzato (probabilmente il più diffuso) multipiattaforma (Windows, Linux, Mac OS, Solaris, FreeBSD) multi-protocollo (circa 100 protocolli supportati) più di 8000 filtri di visualizzazione (diversi dai filtri del firewall!) L esercitazione richiede di monitorare il traffico di rete dopo aver configurato Wireshark per: visualizzare il timestamp delle richieste/risposte filtrare le richieste ICMP (opzionale) Passo 4: configurazione ed attivazione del packet sniffer Wireshark (2) icmp Passo 5: Esecuzione e filtro delle richieste ICMP I comandi ping e tracert usano il protocollo ICMP per spedire messaggi di diagnostica Lo studente esegue uno tra questi comandi su entrambi gli indirizzi IP ricevuti via mail. Il firewall fa passare una richiesta e blocca l altra: ping 130.136.1.110 PING 130.136.1.110 (130.136.1.110) 56(84) bytes of data. 64 bytes from 130.136.1.110: icmp_seq=1 ttl=63 time=0.614 ms 64 bytes from 130.136.1.110: icmp_seq=2 ttl=63 time=0.713 ms ping 130.136.4.145 PING 130.136.4.145 (130.136.4.145) 56(84) bytes of data. Destination host unreachable.
Esercitazione Cosa inserire nel report Un esempio di consegna Uno screenshot di Wireshark che riporta il traffico di rete relativo alle due richieste: meglio se è applicato il filtro icmp in fase di visualizzazione dovrebbe essere visualizzata solo la richiesta permessa dal firewall I log del firewall che riportano sia la richiesta bloccata che quella eseguita con successo Le regole di configurazione del firewall Screenshot e log devono includere i timestamp Destinazione IP da bloccare: 130.136.5.34 Destinazione IP da far passare: 130.136.4.145 http://www.wireshark.org/ http://www.netfilter.org/ Riferimenti Questa è l ultima esercitazione Il report deve essere spedito entro il all indirizzo mail 10 Gennaio 2016, ore 23:59 labsicurezza@cs.unibo.it Seguite le regole di consegna spiegate nella prima lezione Un consiglio: non consegnate il report troppo a ridosso della deadline. Le esercitazioni si possono completare con molto anticipo da oggi! I risultati dei report saranno pubblicati, prima dell esame orale, sul sito del corso