Introduzione ai firewall con Linux · Il nostro computer di casa, una volta connesso a Internet...
Transcript of Introduzione ai firewall con Linux · Il nostro computer di casa, una volta connesso a Internet...
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Introduzione ai firewalls
Introduzione ai firewalls
Introduzione ai firewall con Linux
Belluno, 27 novembre 2004
Mauro Barattin e Oriano Chiaradia
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Perché proteggersiCosa proteggere con un firewallApprocci pratici alla sicurezzaDefinizione di firewallBreve introduzione tecnicaNetfilter e IptablesTabelle catene e regoleCome si costruiscono le regoleFiltraggio steteless e statefullEsempi applicativiConclusioni
SommarioSommario
Introduzione
Introduzione
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Il nostro computer di casa, una volta connesso a Internet tramite un modem, è raggiungibile da ogni host del mondo! In mancanza di dispositivi di filtraggio, ogni servizio di rete attivo sul nostro computer (es. condivisioni windows...) può essere raggiungibile dall'esterno. Dal punto di vista della sicurezza, inoltre, ogni servizio esposto rappresenta una possibile vulnerabilità del nostro sistema e della nostra rete...
L'offerta di connettività ADSL a basso costo ha permesso anche all'utenza casalinga di usufruire di linee “always on” ad alta velocità che, proprio perché sempre attive, necessitano di una maggiore protezione contro le intrusioni.
Perché è meglio proteggersi?Perché è meglio proteggersi?
Sicurezza informatica
Sicurezza informatica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
DatiPrivacyIntegritàDisponibilità
RisorseIntegrità hardware e softwareTempo di calcolo/memoria
ReputazioneFurto di identità (es. accesso a chiavi private)Catena di attacchi (mascheramento provenienza originaria) Presenza materiale indesiderato in archivi pubbliciDefacement
Cosa dobbiamo proteggere?Cosa dobbiamo proteggere?
Sicurezza informatica
Sicurezza informatica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
IntrusioneAccesso non autorizzatoScalata privilegiModifica dei sistemi (installazione di backdoors)
Denial of serviceNetwork floodingResource exhaustionDisabilitazione/danneggiamento dei servizi
Furto di informazioniAccesso agli archiviMonitoraggio del traffico di rete (sniffing)
Tipologie di attaccoTipologie di attacco
Sicurezza informatica
Sicurezza informatica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Host levelSicurezza a livello di singola macchinaOgni sistema è dotato di misure di protezione individualiNon scalabile e di difficile gestioneNon adatto ad ambienti eterogenei per architetture e software
Network levelSicurezza a livello reteControllo di accesso concentrato (hardware/software dedicato)Scalabile, gestibile, adattabileMinore flessibilità
Approcci alla sicurezzaApprocci alla sicurezza
Sicurezza informatica
Sicurezza informatica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Proviamo a dare qualche definizione...
“Muro di fuoco”
“Il firewall è un componente attivo che si interpone fra due o più reti (ad esempio una rete locale e una rete pubblica), configurato con un insieme di regole che determinano quali comunicazioni sono permesse e quali invece sono vietate”.
“Il firewall è un componente hardware con due o più schede di rete sul quale viene installato un ambiente operativo che analizza e gestisce il traffico dei pacchetti in base alla configurazione fornita dall'amministratore di rete”.
...insomma, un firewall è un FILTRO!
Cos'è un firewall?Cos'è un firewall?I firewall
I firewall
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Cosa fa...Separazione fisica tra due o più retiRestrizione sul trafficoMonitoraggio del trafficoLogging del traffico
Cosa non fa...Non protegge da virusNon impedisce lo scaricamento di software infettoNon esamina il payload dei pacchetti (i “dati”)Non può fare ciò che non è stato previsto in partenzaNon protegge da tipi di attacchi non noti a prioriNon protegge da utenti legittimiNon protegge in caso di punti di accesso non controllati
Cosa fa e cosa non fa...Cosa fa e cosa non fa...I firewall
I firewall
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
I firewall si dividono in due categorie:
Packet filterAgisce a livello network/transport.Limitate richieste hardware
Application proxyAgisce a livello application.Applicazioni separate per ogni servizioRichiede hardware più velocePoco adatti su reti ad alto traffico
Nel seguito ci occuperemo di packet filter...
Packet filter vs. application proxyPacket filter vs. application proxyI firewall
I firewall
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
I protocolli sono gli standard che specificano:
Come avvengono i trasferimenti da una macchina ad un'altraCome sono rappresentati i datiQuali sono tecniche per la rivelazione d'erroreIl meccanismo di acknowledgment per i pacchetti trasmessi
Tali protocolli rendono invisibile all'utente l'hardware sottostante durante una qualsiasi sessione di lavoro.
Per TCP/IP, il protocollo su cui si basa Internet, non si intende solo il protocollo di trasmissione TCP ed il protocollo di rete IP, ma una famiglia di protocolli comprendente anche l'UDP, l'ICMP, l'ARP, ...
Il protocollo TCP/IPIl protocollo TCP/IP
Introduzione tecnica
Introduzione tecnica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Il protocollo TCP si assume la responsabilità di instaurare (SYN) un collegamento tra due host, di rendere affidabile il trasferimento di dati e comandi tra essi (richiedendo, se necessario, la ritrasmissione di alcuni dati) ed infine di chiudere la connessione (FIN).
ConnectionorientedAffidabile (controllo di integrità e sequenzialità)Alto overheadNecessita lo stabilirsi di una connessioneOgni servizio identificato da una porta (si noti che il TCP usa la connessione, e non la porta, come sua fondamentale astrazione...)Usato dai servizi HTTP, FTP, SMTP ed altri
TCPTCP(Transmission Control Protocol)(Transmission Control Protocol)
Introduzione tecnica
Introduzione tecnica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Il protocollo UDP fornisce un servizio di recapito dei datagrammi connectionless ed inaffidabile (non prevede nessun meccanismo per il controllo dell'errore). Perciò i messaggi UDP possono essere persi, duplicati oppure arrivare fuori dall'ordine; inoltre i pacchetti possono arrivare più velocemente di quanto il ricevente sia in grado di processarli.
Non connectionorientedNessun controllo di integritàBasso overheadServizi identificati da porteUsato da DNS, NFS, NetBIOS
UDPUDP(Transmission Control Protocol)(Transmission Control Protocol)
Introduzione tecnica
Introduzione tecnica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Il protocollo ICMP consente una comunicazione “straordinaria” tra routers ed hosts permettendo lo scambio di segnali di errore o di controllo (ad esempio i messaggi di redirect, che richiedono ad un host di cambiare la propria tabella di routing, e messaggi di echo request/echo reply, che l'host può usare per determinare se la destinazione può essere raggiunta).
Echo request (type 8)Echo reply (type 0)Time exceeded (type 11)Destination unreachable (type 3)Redirect (type 5)
ICMPICMP(Internet Control Message Protocol)(Internet Control Message Protocol)
Introduzione tecnica
Introduzione tecnica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Il threeway handshake assicura che la connessione tra due host A e B sia stata stabilita con successo.
L'host A fa una richiesta di connessione verso l'host B (SYN).
L'host B, ricevuta la richiesta di connessione, invia all'host A un datagramma di conferma (SYN + ACK).
Ricevuto il datagramma di conferma, l'host A invia all'host B un datagramma che informa lo stesso host B che la conferma di connessione è arrivata allo host A (ACK).
TCP Threeway handshakeTCP Threeway handshake
host A host B
Richiesta connessione
Conferma connessione
Conferma di aver ricevutola conferma di connessione
Introduzione tecnica
Introduzione tecnica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Le porte sono il mezzo essenziale che permette ai protocolli TCP e UDP di gestire flussi multipli di dati attraverso una unica connessione fisica alla rete. Le porte sono indicate con un numero intero compreso tra 0 e 65.535 e possono essere assegnate sia al protocollo TCP che UDP.
Le porte del protocollo TCP/IPLe porte del protocollo TCP/IP
7 ECHO9 DISCARD13 DAYTIME20 FTPDATA (FTP data transfer)21 FTP (File Transfer Protocol)22 SSH (Secure Shell)23 TELNET25 SMTP (Simple Mail Transfer Protocol)42 WINS (Windows Internet Naming Service)53 DNS (Domain Name Server)80 HTTP (Hyper Text Transfer Protocol)110 POP3 (Post Office Protocol 3)
119 NNTP (Network News Transfer Protocol)135 EPMAP (DCE Endpoint Mapper)137 NETBIOSns (name service)138 NETBIOSdgm (datagram service)139 NETBIOSss (session service)143 IMAP (Internet Message Access Protocol)161 SNMP (Simple Network Management Protocol)389 LDAP (Lightweight Directory Access Protocol)443 HTTPS (Secure HTTP) 445 Microsoftds (Microsoft Directory Service)465 – SMTPS (Secure SMTP)995 – POP3S (Secure POP3)
Introduzione tecnica
Introduzione tecnica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Lo IANA (Internet Assigned Numbers Authority) è l'ente che ha tra i suoi scopi la standardizzazione delle porte e l'aggiornamento costante di un documento, chiamato portsnumber, contenente l'elenco dei servizi registrati e delle relative porte utilizzate. Nel suddetto documento, lo spazio delle 65536 porte UDP e TCP è stato suddiviso in tre parti:
Well Known Ports (porte 0 – 1023): sono porte assegnate univocamente e sono riservate ai servizi server standard.
Registered Ports (porte 1024 – 49151): l'utilizzo di questo insieme di porte è libero nonostante contenga dei servizi registrati.
Dynamic and/or Private Ports (porte 49152 – 65535): nessun servizio è registrato in quest'area. Il suo utilizzo è libero.
Tipi di porteTipi di porte
Introduzione tecnica
Introduzione tecnica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Dal punto di vista della sicurezza riveste grande importanza lo stato di una porta vista dall'esterno della macchina. Sono posssibili tre casi:
Porta aperta (Open): un processo server è in ascolto sulla porta. E' possibile stabilire una connessione dall'esterno.
Porta chiusa (Closed): nessun processo è in attesa e la porta è quindi inutilizzata. Se un client cerca di connettersi, il sistema operativo manda un segnale di reset della comunicazione.
Porta filtrata (Filtered): un firewall, filtro, o un altro ostacolo di rete sta “coprendo” la porta impedendo di determinare se la porta è aperta. In questo caso nessun segnale di reset viene inviato al client e il sistema rimane semplicemente muto.
Tipi di porteTipi di porte
Introduzione tecnica
Introduzione tecnica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Strumenti che ci permettono di stabilire lo stato di una porta:
Analisi del sistema locale: visualizzazione delle connessioni attive (established) e delle porte in ascolto (listening) permettendo quindi di individuare tutti i server in esecuzione sul computer in esame.
netstat -a
Analisi da un sistema remoto: visualizzazione delle porte in ascolto (listening) con l'ausilio di un “portscanner” (es. Nmap). Questo test risulta utile tutte le volte che la nostra macchina o la nostra rete non è direttamente esposta su internet ma è separata da questa da un firewall, un router od un generico gateway.
nmap -v -sS -O www.sito.com
Come rilevare lo stato di una porta?Come rilevare lo stato di una porta?
Introduzione tecnica
Introduzione tecnica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
La RFC 1918 (Request for comments) specifica i range di indirizzi IP che possono essere usati per le reti private e che non vengono quindi utilizzati da Internet. Tali indirizzi sono:
10.0.0.0 10.254.254.254172.16.0.0 172.31.254.254192.168.0.0 192.168.254.254
I computer con questi indirizzi possono accedere a Internet solo attraverso server proxy o collegandosi ad un router che effettui il mascheramento delle connessioni uscenti (noto come "NAT").
Reti interneReti interne
Introduzione tecnica
Introduzione tecnica
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Dalla versione 2.4 il kernel si basa sull'infrastruttura netfilter/iptablesche permette di configurare un firewall per fare:
Packet filtering (stateless, statefull): regole di filtraggio dei pacchetti che il firewall origina, riceve o che transitano dal firewall.
Network Address Translation (NAT): regole per alterare l'intestazione dei pacchetti, tenendo traccia delle manipolazioni fatte ed operando l'operazione inversa sui pacchetti di risposta.
Packet mangling: modifica di alcuni flag dei pacchetti.
Netfilter è il sistema di filtraggio dei pacchetti
Iptables è il tool per creare le regole
Firewall di LinuxFirewall di Linux
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Si basa sui concetti di tabelle, catene (chains) e regole (rules).
Una tabella è formata da catene e una catena da regole.
Una catena è un insieme di regole concatenate fra loro che vanno ad agire sulle intestazioni dei pacchetti per verificarne la corrispondenza.
Per ciascuna catena, Iptables numera le regole in ordine crescente partendo dalla regola numero 1.
Tabelle e cateneTabelle e catene
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
filterINPUTOUTPUT FORWARD
natPREROUTINGPOSTROUTINGOUTPUT
manglePREROUTINGINPUTFORWARDOUTPUTPOSTROUTING
Tabelle e cateneTabelle e catene decisione sul routing +------------+ +---------+ +-------------+IN ----->| PREROUTING |-----> ------>| FORWARD |-------> ---->| POSTROUTING |-----> OUT +------------+ \ +---------+ / +-------------+ DNAT | filtro | SNAT REDIRECT | | MASQUERADE v | +-------+ +--------+ | INPUT | | OUTPUT | +-------+ +--------+ | ^ filtro | | filtro,DNAT v | +------------------------------+ | Processo Locale | +------------------------------+
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
INPUT: contiene le regole di filtraggio per i pacchetti indirizzati al firewall stesso.
OUTPUT: contiene le regole di filtraggio per i pacchetti generati da un processo interno al firewall e destinati verso un host esterno.
FORWARD: contiene le regole di filtraggio per i pacchetti non destinati al firewall, secondo la tabella di routing.
PREROUTING: contiene le direttive che devono essere applicate prima del processo di routing. A questo livello si applica il Destination NAT (DNAT).
POSTROUTING: Direttive che devono essere aplicate dopo il processo di routing. A questo livello nel quale vengono applicate le direttive di Source NAT (SNAT).
Le cateneLe catene
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Livello fisicoInterfaccia di rete
Livello data linkMAC sorgente
Livello reteIndirizzo IP sorgenteIndirizzo IP destinazione
Livello trasportoTipo di protocollo (TCP, UDP, ICMP, ...)Porta TCP/UDP sorgentePorta TCP/UDP destinazioneTipo di messaggio ICMP
Filtraggio... in base a cosa?Filtraggio... in base a cosa?
Il firewall di Linux
Il firewall di Linux
Alcune di queste informazioni della propria macchina posso essere ottenute dall'output dei seguenti comandi:
✔ ip✔ ifconfig✔ route✔ arp
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Iptables accetta la sintassi seguente:
iptables [t table] command [match] [target]
Come si costruisce una regolaCome si costruisce una regola
Selezionedella
tabellaCriteri per la
selezionedel pacchetto
Destino del pacchetto che soddisfa
il matchCome operaresulle regoledella catena
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
I comandi di Iptables che agiscono sulle chain sono i seguenti:
-A | --append Aggiunge una nuova regola in coda. precedenti.-I | --insert Inserisce una nuova regola in posizione...-R | --replace Sostituisce una regola con una nuova.-D | --delete Elimina una regola.-L | --list Visualizza le informazioni sulle chain.-N | --new-chain Crea una nuova chain.-X | --delete-chain Elimina una chain solo se vuota.-P | --policy Cambia la policy per una chain.-F | --flush Elimina tutte le regole sulle chain.-Z | --zero Azzera i byte e i contatori in tutte le chain.-E | --rename-chain Cambia nome ad una chain.
CommandCommand
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
La match generica agisce su ogni tipo di protocollo che il kernel è capace di controllare. Non è richiesto nessun comando o opzione per controllare la match.
-s | --source Specifica l'indirizzo IP sorgente.-d | --destination Specifica l'indirizzo IP destinazione.-p | --protocol Lista di protocolli separata dal carattere ",".-i | --in-interface Interfaccia di rete di ingresso.-o | --out-interface Interfaccia di rete di uscita.
Le regole nelle match possono venire anticipate dal carattere "!".La sua funzione è di negare la regola.
Match genericheMatch generiche
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Match per il protocollo TCP:
--tcp-flags Filtra un flag specifico del TCP. --syn Pacchetti con flag SYN attivato.--sport | --source-port Porta di origine.--dport | --destination-port Porta di destinazione.
Match per il protocollo UDP:
--sport | --source-port Porta di origine.--dport | --destination-port Porta di destinazione.
Match per il protocollo ICMP:
--icmp-type Tipo di pacchetto.
Match TCP, UDP, ICMPMatch TCP, UDP, ICMP
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Match MAC (sono caricate con l'opzione “-m mac”):
--mac-source Numero MAC dell'indirizzo sorgente.
Match multiporta (sono caricate con l'opzione “-m multiport”):
--source-port Lista di porte sorgente separate da ",".--destination-port Lista di porte di destinazione separate da ",". --port Lista porte sia in ingresso che in uscita.
Match espliciteMatch esplicite
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Queste match garantiscono l'accesso alle informazione sul “tracking” delle connessioni. Sono caricate con l'opzione “m state”.
--state
Match stateMatch state
Stato della connessione.Indica lo stato che deve essere confrontato della connessione: INVALID, ESTABLISHED, NEW e RELATED.
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Stateless filteringLa decisione sull'instradamento o meno di un pacchetto è presa esclusivamente sulla base della sola informazione contenuta nei campi header del pacchetto stesso
Indirizzo di provenienza/destinazioneProtocollo di trasportoInformazioni addizionali
Statefull inspectionLa decisione è presa sulla base dell'informazione contenuta nel pacchetto e del traffico precedente, di cui è mantenuta memoria
Iptables è in grado di eseguire la statefull inspection...
Approcci al packet filteringApprocci al packet filtering
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Un pacchetto (TCP, UDP, ICMP) può essere in uno degli stati:
NEW: crea una nuova connessione
ESTABLISHED: appartiene a una connessione esistente
RELATED: relativo, ma non parte di una connessione esistente (es. ICMP di errore)
INVALID: non identificato o errore non relativo ad alcuna connessione
Stateful inspectionStateful inspection
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Con “target” si intende il destino dato ai pacchetti da una regola.I target sono molti e possono essere estesi tramite patch, i più comunemente utilizzati sono:
ACCEPT: il pacchetto viene accettato.
DROP: il pacchetto viene scartato, senza segnalazione.
REJECT: simile a DROP, con segnalazione all'indirizzo sorgente.
LOG: il pacchetto viene memorizzato nel file di log.
SNAT: cambia l'indirizzo sorgente del pacchetto.
DNAT: cambia l'indirizzo di destinazione del pacchetto.
MASQUERADE: simile a DNAT...
ULOG: trasmette i pacchetti loggati in userspace.
I targetI target
Il firewall di Linux
Il firewall di Linux
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Elimina tutte le regole impostate nella tabella “filter” (implicito):
# iptables -F
Elimina tutte le regole impostate nella tabella “nat”:
# iptables -t nat -F
Elimina tutte le catene definite dall'utente nella tabella “filter”:
# iptables -X
Per “policy” si intende la politica adottata in una catena.Ogni catena ne ha una di default che ha come valore ACCEPT...
# iptables -P INPUT DROP# iptables -P FORWARD DROP# iptables -P OUTPUT ACCEPT
EsempiEsempi
Semplici regole
Semplici regole
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Accetta in ingresso le connessioni verso la porta ssh del firewall:
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Si impedisce l'ingresso a ogni pacchetto non proviene da 192.168.0.*
# iptables -A INPUT -s ! 192.168.0.0/24 -j DROP
Non permette il passaggio di connessioni verso la porta telnet:
# iptables -A FORWARD -i eth0 -o eth1 -p tcp \ --dport telnet -j DROP
Accetta i pacchetti che appartengono ad una connessione nota o relativi ad essa (es. ICMP error, ftp data, ...)
# iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
Esempi...Esempi...
Semplici regole
Semplici regole
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Logga tutte le connessioni dell'host 10.0.0.3 verso la porta 80 locale.
# iptables -A INPUT -s 10.0.0.3 -p tcp –dport 80 \ -j LOG --log-prefix "Dropped (http): "
Rigetta tutte le connessioni TCP.
# iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
Visualizza le regole nella tabella “filter”.
# iptables -A INPUT -m mac --mac-source 00:0A:5E:20:10:FE \ -p tcp --dport pop3 -j ACCEPT
Visualizza le regole nella catena di INPUT.
# iptables -L# iptables -L INPUT -v -n --line-numbers
EsempiEsempi
Semplici regole
Semplici regole
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Esistono due approcci ortogonali per la politica di sicurezza:
Default Permit Stance: si vietano soltanto alcuni servizi particolari, partendo da un sistema aperto.
Default Deny Stance: si vieta qualunque cosa per default e si controllano direttamente i servizi che si vogliono abilitare. In altre parole, tutto ciò che non è esplicitamente permesso e proibito!
La nostra analisi si basa sul primo approccio.
Approcci al packet filteringApprocci al packet filtering
Esempi pratici
Esempi pratici
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
# iptables -F# iptables -P INPUT DROP# iptables -P OUTPUT ACCEPT# iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
PC di casaPC di casa
Esempi pratici
Esempi pratici
PCLINUX
MODEM
INTERNETppp0
IP DINAMICO
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
DNAT : utilizzato per indirizzare l'indirizzo IP di destinazione verso un altro nodo, appartenente ad una zona protetta dal firewall.
SNAT: utilizzato per riscrivere l'indirizzo IP sorgente del pacchetto. L'utilizzo principale si ha quando più computer condividono la stessa connessione Internet con un unico IP statico assegnato al firewall o al router. Senza questa traduzione la LAN non potrebbe non potrebbe comunicare con l'esterno in quanto, generalmente, usa indirizzi IP privati e non pubblici.
MASQUERADE: equivalente a SNAT, tuttavia non richiede di specificare un numero IP sorgente in quanto questo viene calcolato ogni volta. L'utilizzo principale si ha quando più condividono la stessa connessione Internet con un unico Ip dinamico assegnato al firewall o al router.
.
Tipi di NATTipi di NAT
Esempi pratici
Esempi pratici
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
# echo 1 > /proc/sys/net/ipv4/ip_forward# iptables -F# iptables -t nat -F# iptables -P INPUT DROP# iptables -P FORWARD DROP# iptables -P OUTPUT ACCEPT# iptables -A INPUT -i eth0 -s 192.168.0.0/24 -p tcp –dport ssh -j ACCEPT# iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT# iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -j ACCEPT# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT# iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE
LAN aziendaleLAN aziendaleCLIENTSERVER
FIREWALLLINUX ROUTER
INTERNET
192.168.0.10 192.168.0.11 192.168.0.12192.168.0.1 192.168.0.2
192.168.0.254 81.114.10.138
81.114.10.137
eth0 eth1
WWW
FTP
IP STATICOEsempi pratici
Esempi pratici
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
...# iptables -t nat -A PREROUTING -i eth1 -d 81.114.10.138 \ -p tcp -–dport http -j DNAT –to 192.168.0.1
# iptables -t nat -A PREROUTING -i eth1 -s 151.37.112.9 -d 81.114.10.138 \ -p tcp -–dport ftp -j DNAT –to 192.168.0.2
Le connessioni vanno permesse anche sulla catena FORWARD
LAN aziendale + servizi pubbliciLAN aziendale + servizi pubbliciSERVER
FIREWALLLINUX ROUTER
INTERNET
192.168.0.1 192.168.0.2
192.168.0.254 81.114.10.138
81.114.10.137
eth0 eth1
WWW
FTP
151.37.112.9
223.10.7.22
Esempi pratici
Esempi pratici
DMZ
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
Il firewall è un elemento essenziale per raggiungere un elevato livello di sicurezza su una rete locale, ma non basta installare un sistema di firewall per avere la certezza dell inviolabilità della propria rete.
Un firewall ha bisogno di costante controllo e mantenimento del software che lo costituisce. E' essenziale tenere aggiornato il proprio firewall con tutte le patch di sicurezza per mettersi al riparo da eventuali falle che potrebbero permettere ad un malintenzionato di penetrare nel sistema. Proprio per ridurre questa eventualità si consiglia di disabilitare tutti i servizi non strettamente necessari.
Esistono varie tipologie di firewall ognuna delle quali può avere pregi e punti deboli.
La realizzazione di un architettura di firewall è spesso non banale da realizzare e non esiste una ricetta generale per risolvere i problemi che possono nascere nella configurazione, installazione e mantenimento di un firewall. Ogni architettura di firewall è quindi specifica alla tipologia particolare di LAN a cui viene applicata.
Il modello di firewall che si può implementare dipende molto dalle politiche di sicurezza che devono essere decise a priori ed applicate con coerenza.
ConclusioniConclusioniConclusioni
Conclusioni
Belluno, 27 novembre 2004 Relatore: Ing. Mauro Barattin
Introduzione ai firewall
Introduzione ai firewall BBelluno elluno LLinux inux UUser ser GGrouproup
Introduzione ai firewall con LinuxIntroduzione ai firewall con Linux
W. R. Stevens, “TCP/IP Illustrated”, Addison Wesley, 1994C. Hunt, “TCP/IP Network Administration”, O'Reilly, 1995R. Russell “Packet filtering HOWTO”E. Bruni “Linux Firewall”, 2002C. Contavalli “Iptables for Fun”, 2003M. Lotto, “Network Packet Filtering”, 2003G. Bianchini “Sistemi firewall”, 2002F. Bucciarelli “Filtraggio del traffico IP in linux”, 2003R. Veraldi – “Firewalls”, 2000V. Vecchione “Netfilter: scacco matto all'intruso!”, 2002Yan Raber, “Le porte del protocollo TCP/IP”Umberto Zanatta, “linuxDidattica: la Rete”Sito web Netfilter (http://www.netfilter.org)Manpage di iptables
BibliografiaBibliografia
Bibliografia
Bibliografia