Corso GNU/Linux Avanzato Uso e configurazione di un firewall usando iptables



Похожие документы
Firewall e NAT A.A. 2005/2006. Walter Cerroni. Protezione di host: personal firewall

Sicurezza nelle reti

Packet Filter in LINUX (iptables)


Corso avanzato di Reti e sicurezza informatica

Filtraggio del traffico IP in linux

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)

Crittografia e sicurezza delle reti. Firewall

Esercitazione 5 Firewall

Progettare un Firewall

Tre catene (chains) di base, si possono definire altre catene (convenzionalmente in minuscolo)

Transparent Firewall

esercizi su sicurezza delle reti maurizio pizzonia sicurezza dei sistemi informatici e delle reti

Iptables. Mauro Piccolo

Appunti configurazione firewall con distribuzione Zeroshell (lan + dmz + internet)

Firewall e Abilitazioni porte (Port Forwarding)

Innanzitutto, esistono diversi modi per realizzare una rete o più reti messe insieme; vi illustro la mia soluzione :

Università degli Studi di Pisa Dipartimento di Informatica. NAT & Firewalls

Reti di Calcolatori. Il software

Il livello 3 della pila ISO/OSI. Il protocollo IP e il protocollo ICMP

Dal menù Network/Interface/Ethernet configurare le interfacce WAN e LAN con gli opportuni ip:

Livello di Rete. Gaia Maselli

PACKET FILTERING IPTABLES

Firewall: concetti di base

2.1 Configurare il Firewall di Windows

Con accesso remoto s'intende la possibilità di accedere ad uno o più Personal Computer con un modem ed una linea telefonica.

La VPN con il FRITZ!Box Parte I. La VPN con il FRITZ!Box Parte I

Interconnessione di reti

INTRODUZIONE ALLE RETI: UN APPROCCIO PRATICO

FtpZone Guida all uso Versione 2.1

Reti di Telecomunicazione Lezione 8

FIREWALL. Firewall - modello OSI e TCP/IP. Gianluigi Me. me@disp.uniroma2.it Anno Accademico 2005/06. Modello OSI. Modello TCP/IP. Application Gateway

ALBO PRETORIO WEB MANUALE DELLA PROCEDURA SOMMARIO. Uso del manuale. Informazioni generali. Interfaccia grafica. Guida di riferimento

Proteggiamo il PC con il Firewall di Windows Vista

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Installazione del software Fiery per Windows e Macintosh

Guida all impostazione. Eureka Web

Laboratorio di Reti Esercitazione N 2-DNS Gruppo 9. Laboratorio di Reti Relazione N 2. Mattia Vettorato Alberto Mesin

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

Guida alla registrazione on-line di un DataLogger

Gestione degli indirizzi

MANUALE UTENTE Fiscali Free

NAS 224 Accesso remoto Configurazione manuale

Manuale Gestore. Utilizzo Programma. Magazzino

Indirizzamento privato e NAT

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

Protocolli di Comunicazione

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Elementi sull uso dei firewall

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

Modelli di rete aziendale port forward PAT PAT NAT + PAT NAT table

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

WAN / 24. L obiettivo è quello di mappare due server web interni (porta 80) associandoli agli indirizzi IP Pubblici forniti dall ISP.

File, Modifica, Visualizza, Strumenti, Messaggio

FRITZ!Box come centralino telefonico

ANTISPAM PLAYNET (nuova Piattaforma) In questa piccola guida vogliamo mostrarvi come creare regole di BlackListe e Whitelist per

BREVE GUIDA ALL ATTIVAZIONE DEL SERVIZIO DDNS PER DVR SERIE TMX

Dal protocollo IP ai livelli superiori

GUIDA RAPIDA CONFIGURAZIONE RETE DDNS - INTERNET

Configurazione WAN (accesso internet)

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino.

La VPN con il FRITZ!Box Parte I. La VPN con il FRITZ!Box Parte I

INFOCOM Dept. Antonio Cianfrani. Virtual LAN (VLAN)

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

Corso di Sistemi di Elaborazione delle informazioni. Reti di calcolatori 2 a lezione a.a. 2009/2010 Francesco Fontanella

Guida all Utilizzo dell Applicazione Centralino

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Reti. Reti. IPv4: concetti fondamentali. arp (address resolution protocol) Architettura a livelli (modello OSI)

Laboratorio di reti Relazione N 5 Gruppo 9. Vettorato Mattia Mesin Alberto

I M P O S T A R E U N A C C O U N T D I P O S T A C O N M O Z I L L A T H U N D E R B I R D

PRODUZIONE PAGELLE IN FORMATO PDF

Manuale servizio ScambioDati

FIRESHOP.NET. Gestione completa degli ordini e degli impegni. Rev

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

DOMOTICA ED EDIFICI INTELLIGENTI UNIVERSITA DI URBINO

Acronis License Server. Manuale utente

Università Politecnica delle Marche. Progetto Didattico

Introduzione alle applicazioni di rete

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

InitZero s.r.l. Via P. Calamandrei, Arezzo

ARP e RARP. Silvano GAI. sgai[at]cisco.com. Mario BALDI. mario.baldi[at]polito.it Fulvio RISSO

DA SA Type Data (IP, ARP, etc.) Padding FCS

Manuale di Desktop Sharing. Brad Hards Traduzione: Luciano Montanaro Traduzione: Daniele Micci

Programma di configurazione di reti NetWare

SCI Sistema di gestione delle Comunicazioni Interne > MANUALE D USO

FtpZone Guida all uso

Транскрипт:

Corso GNU/Linux Avanzato Uso e configurazione di un firewall usando iptables Marco Papa (marco@netstudent.polito.it) NetStudent Politecnico di Torino 04 Giugno 2009 Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 1 / 43

Introduzione Cos è un firewall? Cos è un firewall? Definition Un modulo del Kernel che è in grado di identificare il traffico dati e sottoporlo a delle regole Modulo del kernel Necessario dal momento che le operazioni devono essere eseguite rapidamente e gli stack di rete sono nel kernel Identificazione Bisogna raggruppare il traffico in determinate categorie e applicare, per ogni categoria, delle regole. I dati possono essere in una, nessuna o molte categorie. Applicazione delle regole Si può decidere di cancellare, modificare oppure marcare il traffico appartenente ad una determinata categoria Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 2 / 43

Introduzione Cos è un firewall? Cos è un firewall? Il firewall, come modulo software, non è direzionale: tutte le interfacce di rete hanno pari dignità Le regole, tipicamente, rendono direzionale il firewall Un uso classico dei firewall consiste nel proteggere un area interna dal resto della rete. Il firewall può essere installato su un router (area interna = una o più reti), su uno switch (area interna = alcune porte) o su un computer utente (area interna = computer stesso) Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 3 / 43

Introduzione Cos è un firewall? Cosa NON è un firewall? Il firewall NON prende decisioni di routing (ovvero non decide le interfacce di uscita dei pacchetti da inoltrare) Tuttavia può essere usato per marcare determinati dati. Tale marchio può essere tenuto in conto dal modulo che prende le decisioni di routing. Il firewall NON è un sistema di intrusion detection Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 4 / 43

Introduzione Premesse Premesse Gli esempi faranno riferimento a reti Ethernet IPv4 Questo è lo scenario più comune oggi negli ambienti domestici quanto nei grandi data center (almeno per quanto riguarda le reti best effort) Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 5 / 43

Introduzione Premesse Premesse Come si vede chiaramente dalla tabella sottostante gli indirizzi IPv4 stanno finendo e, probabilmente, nei prossimi anni assisteremo ad un emergere di IPv6. Tuttavia, per quanto riguarda gli utenti dei firewall, la differenza è risibile. Date Addresses free Used up 2006-01-01 1468.61 M 2007-01-01 1300.65 M 167.96 M 2008-01-01 1122.85 M 177.80 M (with return of 16.78 M to IANA) 2009-01-01 925.58 M 197.27 M Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 6 / 43

Introduzione Identificazione Identificazione L identificazione puo avvenire Sui singoli pacchetti (firewall stateless) Su interi flussi (firewall stetefull) iptables è un firewall statefull che gestisce sia regole basate su flussi che sui singoli pacchetti (come se fosse un firewall steteless). Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 7 / 43

Introduzione Identificazione Identificazione I firewall possono identificare i pacchetti/flussi in base al Livello Data Link (MAC, livello 2 ISO OSI) Livello rete (IP, livello 3 ISO OSI) Livello trasporto (TCP/UDP/ICMP/... livello 4 ISO OSI) Recentemente a livello applicativo (HTTP/eD2K/Kazaa/Jabber/... livello 7 ISO OSI) iptables supporta nativamente i primi tre punti e, tramite classificatori esterni (per esempio quelli forniti dai progetti L7-filter e IPP2P) il livello applicativo. Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 8 / 43

Introduzione Target Target Le regole a cui si sottopongono i pacchetti identificati prendono il nome di target, i principali sono DROP Elimina il pacchetto ACCEPT Accetta il pacchetto REJECT Restituisci al mittente del pacchetto un errore (CON)MARK Marca il pacchetto (o la connessione) in modo tale che sia riconoscibile da altri processi, per esempio quello di routing (iproute2) o il gestore della Qality of Service (QoS) (e.g. tc). Si tenga presente che il pacchetto, di per se, non viene modificato quindi questo marchio ha effetto solo all interno dello stesso router/pc che l ha marchiato LOG Segnala al syslogger il pacchetto MASQUERADE/SNAT Modifica l header IP in modo da implementare un Network Address Translation (NAT) Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 9 / 43

Tables e Chains Organizzazione Organizzazione Ogni riga di configurazione include una parte di identificazione e un target. Per esempio: Identificazione { }} { Se il pacchetto utilizza il protocollo UDP, Target { }} { eliminalo Se il pacchetto corrisponde all identificazione, viene applicato il target. Vi sono due tipi di target 1 Terminali: la ricerca finisce e le righe successive sono ignorate. 2 Non Terminali: il target viene eseguito e si continua con le righe successive In prima approssimazione l unico target non terminale è LOG. Dunque è inutile mettere più di una riga pensata per lo stesso pacchetto: verrà eseguita solo la prima e le successive saranno ignorate Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 10 / 43

Tables e Chains Esempi Esempio (1) È corretta questa catena? 1 Se un pacchetto non è UDP, accettalo 2 Se un pacchetto è TCP, cancellalo Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 11 / 43

Tables e Chains Esempi Risposta (1) È corretta questa catena? 1 Se un pacchetto non è UDP, accettalo 2 Se un pacchetto è TCP, cancellalo La catena di regole non è corretta, cerchiamo di capire cosa farebbe il firewall nel caso di un pacchetto UDP (che, leggendo la regola, sembrerebbe non dover essere accettato) Prima riga è ignorata (non rispetta la condizione pacchetto non UDP) Seconda regola è ignorata per lo stesso motivo Mentre nel caso di un pacchetto TCP (che deve essere cancellato) Prima riga identifica il pacchetto quindi il pacchetto viene accettato Seconda riga non viene neanche valutata Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 12 / 43

Tables e Chains Esempi Esempio (2) Catena A 1 Se un pacchetto è UDP, accettalo 2 Se un pacchetto è UDP, loggalo Catena B 1 Se un pacchetto è UDP, loggalo 2 Se un pacchetto è UDP, accettalo Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 13 / 43

Tables e Chains Esempi Risposta (2) Catena A 1 Se un pacchetto è UDP, accettalo 2 Se un pacchetto è UDP, loggalo Non è corretta: i pacchetti UDP vengono accettati ma non vengono loggati (la prima riga oscura la seconda) Catena B 1 Se un pacchetto è UDP, loggalo 2 Se un pacchetto è UDP, accettalo La catena è corretta: la prima riga ha un target non terminale quindi si eseguirà sia il primo che il secondo target Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 14 / 43

Tables e Chains Table e Chain Table Ma le righe come sono organizzate? In base al tipo di regole vi sono varie tabelle (Table) filter La tabella principale e di default: accetta target che NON modificano i pacchetti (e.g. ACCEPT, MARK, LOG) nat Questa tabella viene consultata quando un pacchetto inaugura una nuova connessione e accetta target che modificano i pacchetti. Come il nome suggerisce, è particolarmente indicato per implementare una NAT mangle Tabella pensata per la modifica dei pacchetti. Per esempio la si può utilizzare per incrementare il TTL dei pacchetti raw Utilizzato principalmente per escludere alcuni pacchetti dall analisi del firewall. Per esempio per evitare che alcuni pacchetti generino troppe informazioni di stato e facciano scoppiare la memoria Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 15 / 43

Tables e Chains Table e Chain Table La tabella più utile è senz altro la filter Se interessa il NAT, ovviamente serve anche la relativa tabella Si parlerà esclusivamente della tabella filter con qualche accenno alla tabella nat (sostanzialmente per implementare un NAT) Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 16 / 43

Tables e Chains Table e Chain Chain Le tabelle, a loro volta, sono divise in catene (chain) di linee di configurazione. Ogni tabella ha un determinato set di catene predefinite, per esempio la filter ha: INPUT Per i pacchetti destinati alla macchina su cui è presente il firewall FORWARD Per i pacchetti che sono inoltrati dalla macchina (router?) su cui gira il firewall OUTPUT Per i pacchetti che sono generati dalla macchina su cui è presente il firewall Inoltre è possibile creare delle proprie catene. Il nome della catena personalizzata diventa un target. Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 17 / 43

Tables e Chains Table e Chain Come sono richiamate le catene? Come è chiaramente illustrato da [1] le catene della tabella filter sono richiamate come segue Incoming / \ Outgoing -->[Routing ]---> FORWARD -------> [Decision] \ / ^ v / \ / \ OUTPUT INPUT \ / \ / ^ ----> Local Process ---- Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 18 / 43

Inserimento delle configurazione iptables iptables Il firewall di Linux ha, ovviamente, una componente (operativa) nel kernel. L utente si deve interfacciare con tale componente per configurarlo. Per tale compito esiste il comando iptables Attenzione: iptables è solo un interfaccia utente, se il kernel non supporta una caratteristica (e.g. un target non è disponibile nel kernel), anche se la pagina di manuale di iptables la nomina, ovviamente la caratteristica non funzionerà. Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 19 / 43

Inserimento delle configurazione iptables Tabella L opzione -t consente di scegliere la tabella su cui agire Example iptables -t nat iptables iptables -t filter (equivalente alla riga precedente) iptables -t raw Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 20 / 43

Inserimento delle configurazione Visualizzare le catene Visualizzare le catene L opzione -L consente di visualizzare una catena (spesso abbinata con l opzione -v che consente di visualizzare maggiori informazioni e -n per non fare reverse DNS di tutti gli IP) Example # iptables -vnl INPUT Chain INPUT (policy DROP 1702K packets, 119M bytes) pkts bytes target prot opt in out source destination 430K 65M ACCEPT 0 -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED, ESTABLISHED 0 0 ACCEPT 0 -- lo * 0.0.0.0/0 0.0.0.0/0 24 1520 ACCEPT 0 -- vlan92 * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 267K 18M ACCEPT udp -- * * 10.133.0.0/16 0.0.0.0/0 udp dpt:53 0 0 ACCEPT udp -- * * 10.133.0.0/16 0.0.0.0/0 udp dpt:123 16455 6068K ACCEPT udp --!eth1 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 1038 59179 ACCEPT icmp --!eth1 * 0.0.0.0/0 0.0.0.0/0 icmp type 8 Non specificando alcuna catena (e.g. iptables -vnl) si visualizzano tutte le catene della tabella Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 21 / 43

Inserimento delle configurazione Policy Policy Come si può osservare dalla slide precedente, vicino al nome della catena c è una policy con un target (nell esempio DROP) Serve a identificare un comportamento di default per tutti i pacchetti che non sono stati identificati in precedenza Equivale a dire se il pacchetto non è stato identificato da nessuna linea della catena (oppure è stato identificato solo da linee con target non terminali) applica il target della policy La policy è del tutto equivalente ad aggiungere una regola al fondo della catena che identifica TUTTI i pacchetti e che abbia lo stesso target della policy Example La policy si setta con l opzione -P e può essere solo ACCEPT o DROP # iptables -P INPUT DROP Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 22 / 43

Inserimento delle configurazione Aggiunta di una linea Aggiunta di una linea Si può utilizzare sia l opzione -A che l opzione -I -A aggiunge la riga in coda alla catena -I inserisce la riga nella posizione specificata della catena (Se non si mette alcun numero di posizione si intende in cima alla catena) Example # iptables -F INPUT # iptables -A INPUT -p udp -j DROP # iptables -A INPUT -p icmp -j DROP # iptables -I INPUT 2 -p tcp -s 129.0.0.1 -j DROP # iptables -vnl INPUT Chain INPUT (policy ACCEPT 792K packets, 235M bytes) pkts bytes target prot opt in out source destination 24 2932 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DROP tcp -- * * 129.0.0.1 0.0.0.0/0 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 Il significato delle opzioni -p, -s e -j si vedrà successivamente (ma è facilmente immaginabile) Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 23 / 43

Inserimento delle configurazione Rimozione di una o più linee Rimozione di una o più linee Si può utilizzare l opzione -D per cancellare selettivamente una riga mentre -F cancella tutte le righe. Example # iptables -vnl INPUT Chain INPUT (policy ACCEPT 792K packets, 235M bytes) pkts bytes target prot opt in out source destination 24 2932 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DROP tcp -- * * 129.0.0.1 0.0.0.0/0 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 # iptables -D INPUT 1 # iptables -vnl INPUT Chain INPUT (policy ACCEPT 792K packets, 235M bytes) pkts bytes target prot opt in out source destination 0 0 DROP tcp -- * * 129.0.0.1 0.0.0.0/0 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 # iptables -F INPUT # iptables -vnl INPUT Chain INPUT (policy ACCEPT 793K packets, 235M bytes) pkts bytes target prot opt in out source destination Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 24 / 43

Inserimento delle configurazione Rimozione di una o più linee Rimozione di una o più linee Attenzione! l opzione -F cancella tutte le linee ma NON setta la policy su ACCEPT, quindi se avete settato come policy DROP molto probabilmente bloccherete TUTTE le connessioni. Compresa la vostra sessione SSH con cui state configurando il firewall, chiudendovi allegramente FUORI (questo può essere un problema non trascurabile, specie nei sistemi embedded) Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 25 / 43

Inserimento delle configurazione Definizione dei target/caratteristiche Definizione dei target Il target viene indicato con l opzione -j Example # iptables -I INPUT -j LOG # logga tutto il traffico in ingresso (è la prima regola e non ha alcuna parte di identificazione) # iptables -A INPUT -j DROP # simile a iptables -P INPUT DROP # iptables -A INPUT # Identifica tutto il traffico e non fare nulla (ovviamente non è terminale) Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 26 / 43

Inserimento delle configurazione Definizione dei target/caratteristiche Definizione delle caratteristiche da identificare Alcune opzioni comunemente utilizzate per identificare il traffico sono: L opzione -i consente di specificare l interfaccia da cui si è ricevuto il pacchetto (e.g. eth0, lo). Ovviamente non è valido in catene come la OUTPUT L opzione -o è la duale della -i per l interfaccia di uscita. Ovviamente non è valido in catene come la INPUT L opzione -s consente di specificare l indirizzo o la rete (classless) della sorgente dei pacchetti (e.g. 130.192.27.216, 130.192.0.0/16). L opzione -d è la duale di -s per l indirizzo/rete della destinazione L opzione -p consente di specificare il protocollo (e.g. UDP/TCP/ICMP) Caricando il modulo mac (con il comando -m mac ) è possibile specificare l indirizzo MAC sorgente con l opzione mac-source Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 27 / 43

Inserimento delle configurazione Definizione dei target/caratteristiche Esempio Example # iptables -I FORWARD -m mac -i eth0 -o eth1 -s 130.192.27.216 -d 130.192.3.24 -p udp mac-source 00:11:22:33:44:55 -j DROP Ovvero per i paccetti Che si stiano inoltrando dall interfaccia eth0 All interfaccia eth1 Il cui indirizzo sorgente sia 130.192.27.216 Il cui indirizzo destinazione sia 130.192.3.24 Che contengano un datagram UDP E il cui indirizzo mac sorgente del precedente router (o della sorgente) sia uguale a 00:11:22:33:44:55 Devono essere cancellati Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 28 / 43

Inserimento delle configurazione Definizione dei target/caratteristiche Livello Trasporto Se il protocollo è UDP o TCP spesso si utilizzano le porte sorgente e destinazione per distinguere il protocollo di livello applicativo I server HTTP tipicamente sono in ascolto sulla porta 80/tcp I server DNS tipicamente sono in ascolto sulla porta 53/udp Questa è un assunzione non sempre vera Posso avviare un server HTTP su una qualunque porta TCP Freenet, skype, kad, il trasferimento dati di quasi tutti i protocolli P2P che porte usano? Skype usa (tra l altro) la porta 443/tcp (assegnata all HTTPS) per instaurare telefonate Per un approccio base può andare bene lo stesso Si utilizzano le opzioni sport e dport (disponibili sono con -p udp e -p tcp ) Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 29 / 43

Inserimento delle configurazione Definizione dei target/caratteristiche Esempio Example # iptables -A OUTPUT -p udp dport 53 -j ACCEPT # iptables -A OUTPUT -p tcp dport 80:443 -j ACCEPT # iptables -P OUTPUT DROP Consenti connessioni generate dalla macchina locale verso le porte 53/udp (DNS?) 80/tcp (HTTP?) e 443/tcp (HTTPS?). Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 30 / 43

Inserimento delle configurazione Definizione dei target/caratteristiche Esempio Ma se la mia macchina non è un computer utente ma un router? Voglio consentire agli utenti della mia rete (eth0) di accedere ad internet (con l interfaccia eth1) SOLO sulle porte 53/udp (DNS?) 80/tcp (HTTP?) e 443/tcp (HTTPS?) Non voglio che dall esterno si possano aprire connessioni verso le macchine della mia rete Potrei riproporre lo stesso meccanismo di prima? (con le opportune modifiche) Funziona? # iptables -A FORWARD -i eth0 -o eth1 -p udp dport 53 -j ACCEPT # iptables -A FORWARD -i eth0 -o eth1 -p tcp dport 80:443 -j ACCEPT # iptables -P FORWARD DROP Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 31 / 43

Inserimento delle configurazione Definizione dei target/caratteristiche Esempio Funziona? # iptables -A FORWARD -i eth0 -o eth1 -p udp dport 53 -j ACCEPT # iptables -A FORWARD -i eth0 -o eth1 -p tcp dport 80:443 -j ACCEPT # iptables -P FORWARD DROP Non fa ciò che voglio: consente ai pacchetti di uscire ma non consente alle risposte di tornare al richiedente. Potrei aggiungere regole per risolvere questo problema: Ho risolto in questo modo? # iptables -A FORWARD -i eth0 -o eth1 -p udp dport 53 -j ACCEPT # iptables -A FORWARD -i eth0 -o eth1 -p tcp dport 80:443 -j ACCEPT # iptables -A FORWARD -i eth1 -o eth0 -p udp sport 53 -j ACCEPT # iptables -A FORWARD -i eth1 -o eth0 -p tcp sport 80:443 -j ACCEPT # iptables -P FORWARD DROP Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 32 / 43

Inserimento delle configurazione Definizione dei target/caratteristiche Esempio Ho risolto in questo modo? # iptables -A FORWARD -i eth0 -o eth1 -p udp dport 53 -j ACCEPT # iptables -A FORWARD -i eth0 -o eth1 -p tcp dport 80:443 -j ACCEPT # iptables -A FORWARD -i eth1 -o eth0 -p udp sport 53 -j ACCEPT # iptables -A FORWARD -i eth1 -o eth0 -p tcp sport 80:443 -j ACCEPT # iptables -P FORWARD DROP La comunicazione funziona ma Una persona che si trova all esterno e vuole collegarsi ad una macchina interna può farlo!!! Basta che i pacchetti che manda abbiano come porta sorgente una tra 80/tcp, 443/tcp e 53/udp Non è rispettato uno dei requisiti del sistema! Bisogna sfruttare le potenzialità del firewall statefull Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 33 / 43

Inserimento delle configurazione Definizione dei target/caratteristiche Esempio Soluzione # iptables -A FORWARD -m state -i eth1 -o eth0 state RELATED,ESTABLISHED -j ACCEPT # iptables -A FORWARD -i eth0 -o eth1 -p udp dport 53 -j ACCEPT # iptables -A FORWARD -i eth0 -o eth1 -p tcp dport 80:443 -j ACCEPT # iptables -P FORWARD DROP La prima riga accetta tutti i pacchetti il cui stato sia ESTABLISHED (ovvero non sono i primi pacchetti della connessione) oppure RELATED (ovvero connessione legata alla precedente, a rigore non servirebbe) Questo consente la ricezione delle risposte dall esterno Non consente che dall esterno si aprano connessioni verso l interno Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 34 / 43

NAT Introduzione Introduzione Assumendo di avere a disposizione meno indirizzi IP di quanto si necessita cosa si può fare? Si assegna uno o più indirizzi IP forniti dall ISP ad un interfaccia del router (assumiamo eth1) Si assegnano degli IP privati alle altre interfacce (assumiamo una sola interfaccia, eth0) Si abilita il forwarding in /proc/sys/net/ipv4/ip_forward Si configura il firewall in modo da consentire il forwarding dei pacchetti da eth0 a eth1 (e i pacchetti di risposta) Si configura il firewall in modo da modificare l header IP e fare da NAT Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 35 / 43

NAT Esempio Esempio funzionante Example # # Abilito il Forwarding # iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT # iptables -A FORWARD -m state -i eth1 -o eth0 state RELATED,ESTABLISHED -j ACCEPT # # Attivo il NAT # iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 36 / 43

NAT Esempio Esempio funzionante Molto semplice ma con basse prestazioni Se si conosce l indirizzo o gli indirizzi a disposizione è molto più performante sostituire l ultima riga. (Si assuma di avere a disposizione gli indirizzi 130.192.225.5-130.192.225.10) Example # iptables -t nat -D POSTROUTING -o eth1 -j MASQUERADE # iptables -t nat -A POSTROUTING -o eth1 -j SNAT to-source 130.192.225.5-130.192.225.10 # # Se avessi avuto a disposzione solo un indirizzo avrei scritto to-source 130.192.225.5 Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 37 / 43

Conclusioni Considerazioni varie iptables <opzioni> help è vostro amico. Può sembrare una banalità ma tutti i moduli (e.g. mac, state) hanno loro opzioni e anche solo indicare -p icmp attiva delle opzioni specifiche, il comando help mostra tutte le opzioni disponibili con i moduli e i flag specificati fino a quel punto Se volete fare da router ricordate di abilitare l ip forwarding in /proc/sys/net/ipv4/ip_forward!!! Ovviamente vi sono altri aspetti da considerare quando si configura un router (per esempio server DHCP o algoritmi di routing) Spesso è utile identificare i pacchetti in base all utente (locale) che li ha generati, per questo scopo c è il modulo owner Quasi tutti i campi si possono negare con il carattere!, per esempio se voglio selezionare tutti i pacchetti che non provengono dall host 130.192.225.79 posso indicare -i! 130.192.225.79 Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 38 / 43

Conclusioni Valutazione difficoltà della lezione? Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 39 / 43

Appendice Bibliografia Bibliografia I Rusty Russel. Linux 2.4 packet filtering howto. Technical report, Netfilter, 2002. Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 40 / 43

Appendice Copyright Copyright Quest opera, per volontà dell autore, è rilasciata sotto la disciplina della seguente licenza Attribuzione-Non commerciale-non opere derivate 2.5 Italia Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 41 / 43

Appendice Copyright Copyright Tu sei libero: Alle seguenti condizioni: di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare quest opera Attribuzione. Devi attribuire la paternità dell opera nei modi indicati dall autore o da chi ti ha dato l opera in licenza e in modo tale da non suggerire che essi avallino te o il modo in cui tu usi l opera. Non commerciale. Non puoi usare quest opera per fini commerciali. Non opere derivate. Non puoi alterare o trasformare quest opera, ne usarla per crearne un altra. Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 42 / 43

Appendice Copyright Copyright Ogni volta che usi o distribuisci quest opera, devi farlo secondo i termini di questa licenza, che va comunicata con chiarezza. In ogni caso, puoi concordare col titolare dei diritti utilizzi di quest opera non consentiti da questa licenza. Questa licenza lascia impregiudicati i diritti morali. Le utilizzazioni consentite dalla legge sul diritto d autore e gli altri diritti non sono in alcun modo limitati da quanto sopra. Questo è un riassunto in linguaggio accessibile a tutti del Codice Legale (la licenza integrale) disponibile all indirizzo: http://creativecommons.org/licenses/by-nc-nd/2.5/it/legalcode Marco (NetStudent) Firewalling in GNU/Linux 04 Giugno 2009 43 / 43