index...
TRANSCRIPT
Sicurezza nelle Reti
Prof. Claudio A. Ardagna, Dr. Marco Anisetti, Dr. Valerio Bellandi, Dott. Fulvio Frati
http://homes.di.unimi.it/anisetti/index.html
Università degli Studi di Milano
Firewall
Lo scopo principale di un firewall è di controllare
l’accesso da e per una rete protetta
Il controllo è effettuato obbligando le connessioni a
passare attraverso il firewall, dove vengono esaminate
e valutate
Un firewall può essere un router o anche un PC,
posizionati topologicamente per proteggere host o
sottoreti
2
Personal firewall (1)
Identifica protezione orientata al singolo host
Un firewall è un filtro software che serve a proteggersi da
accessi indesiderati provenienti dall’esterno della rete
internet
3
Personal Firewall (2)
Windows dispone di un personal firewall.
E’ possibile installare anche altri personal firewall come ad
esempio Comodo o ZoneAllarm, Kerio...
In ogni caso bisognerà indicare la firewall cosa far passare
e cosa bloccare.
4
Firewall di Windows (1)
Selezionare la scheda di rete da proteggere. Ogni scheda
è un ingresso verso il nostro pc.
5
Firewall di Windows (2)
Nella finestra che si apre selezionate il tab “Avanzate”
6
Firewall di Windows (3)
Il firewall deve essere abilitato (se non è in uso un firewall
di terze parti)
7
Firewall di Windows (4)
Con la tab avanzate è possibile indicare a quali schede
associare la protezione via firewall
8
Firewall di Windows (5)
Con la tab eccezioni si abilitano le applicazioni ad
attraversare o meno il firewall
9
Ripasso reti
Concetti di base
Pacchetti e ISO/OSI
Livelli applicativi
10
Tre principi inderogabili dei firewall
FW deve essere l’unico punto di contatto della rete interna con quella esterna
Solo il traffico “autorizzato” può attraversare il FW
Il FW deve essere un sistema altamente sicuro esso stesso
D.Cheswick
S.Bellovin
11
Controlli del Firewall e ISO/OSI
12
Physical
Datalink
Network
Transport
Application
IP header TCP/UDP header Data payload
application gateway
circuit gateway
packet filter
Firewall di rete
Il firewall può essere una macchina dedicata che filtra
tutto il traffico da e per una rete locale
internet
13
Senza protezione perimetrale
internet
LAN
ftp
telnet
ssh
14
ssh
telnet
Con protezione perimetrale
internet
LAN
ftp
15
Considerazioni architetturali
Spesso alcuni PC della nostra rete forniscono servizi
pubblici che devono essere raggiungibili dall’esterno.
Se utilizzassi un firewall come indicato in precedenza
questo comporterebbe la teorica raggiungibilità di
qualsiasi pc della rete.
Per ovviare a questo problema si usa suddividere
ulteriormente la rete protetta da firewall in due zone
16
DMZ e rete pubblica
Una rete pubblica è quel tratto di rete visibile da tutto il "mondo". In questa rete possono essere situati un web server, un mail server, ecc...
La rete pubblica in gergo tecnico viene anche chiamata DMZ (De-Militarized Zone, Zona De-Militarizzata): è un tratto di rete in cui il firewall permette l'accesso a tutti.
La rete privata è una rete i cui computer possono accedere a internet ma non vengono visti dal "mondo".
17
Perimetro della rete
Rete
DMZ
BORDER
router
internet
ISP
router
Firewall
WEB server
MAIL server
FTP DNS
Rete internaPerimetro della rete
aziendale
18
Separazione in zone di sicurezza
Sul firewall dovranno essere installate tre interfacce di
rete:
una che servirà per il collegamento internet
una per la rete privata o rete interna
una per la DMZ
Questa architettura si chiama anche Three-legged
architecture.
19
Zone di sicurezza
Rete
DMZ
BORDER
router
internet
Firewall
Rete DMZ
Rete
INTERNA
comunicazione comunicazione
20
Protezione di rete Tutto il traffico fra la rete locale ed Internet deve essere
filtrato dal firewall
Solo il traffico autorizzato deve attraversare il firewall
Si deve comunque permettere che i servizi di rete ritenuti necessari siano mantenuti
Il firewall deve essere, per quanto possibile, immune da problemi di sicurezza sull’host
In fase di configurazione di un firewall, per prima cosa si deve decidere la politica di default per i servizi di rete default deny: tutti servizi non esplicitamente permessi sono negati default allow: tutti i servizi non esplicitamente negati sono permessi
21
Effetti di un firewall
per ogni sottorete protetta da un firewall si possono definire politiche di accesso
solo i componenti esterni al firewall sono direttamente accedibili (senza protezione)
gestione delle connessioni tra le diverse interfacce del firewall. Ad esempio, si consentono connessioni da Internet alla Rete DMZ, ma non da Internet verso la Rete Interna
realizza una separazione in zone aventi diverso grado di sicurezza nella architettura di rete
22
I primi firewall
23
Basati su ‘Unix-based gateway(Mogul, 1989) ULTRIX (Ranum, 1992)
Gatekeeper proxy applicativo: raccoglie le richieste applicative dall'interno e le manda verso l'esterno
Gate filtra il traffico
Firewall Cisco
24
Livelli di implementazione
Un firewall può essere implementato come
Static packet filtering (stateless filter)
Stateful filtering
Proxy server
application gateway
circuit-level gateway
25
Packet Filtering
Static Packet filter (1)
Controllo del traffico basato unicamente sulle informazioni contenute negli header dei singoli pacchetti
I valori dei parametri degli header dei pacchetti vengono confrontati con le regole definite in un una ACL (Access Control List) e ammessi o scartati secondo il risultato del confronto
Ogni pacchetto viene quindi esaminato singolarmente, indipendentemente dai pacchetti precedentemente ricevuti e da quelli successivi
27
Static Packet filter (2)
Sul firewall si configura un filtro sui datagrammi IP da
trasferire attraverso le varie interfacce
Il filtro scarta i datagrammi sulla base di
tipo di servizio a cui il datagramma è destinato (porta
TCP/UDP oppure campo PROTOCOL)
indirizzo IP sorgente o destinazione
indirizzo MAC sorgente o destinazione
interfaccia di provenienza o destinazione
28
Physical
Datalink
Network
Transport
Application
Static Packet filter SPF (2)
È la prima e più semplice tecnologia adottata per i sistemi di firewall
Nei sistemi odierni è stata superata dalla tecnologia di tipo stateful ma continua a essere usata nei sistemi di fascia bassa e nei router per la sua semplicità e per le ottime performance.
E’ fondamentale per comprendere il meccanismo di filtraggio.
29
Static Packet filter SPF (3)
indipendente dalle applicazioni
ottima scalabilità
controlli poco precisi: più facile da “fregare” (es. IP spoofing)
ottime prestazioni
basso costo (disponibile su router e molti SO)
arduo supportare servizi con porte allocate dinamicamente (es. FTP)
30
Applicazioni di SPF
Spesso, per alcuni servizi, si impone che le comunicazioni
vengano regolate in modo tale che: dalla rete interna si
possa raggiungere l’esterno ma non il contrario.
Es. ssh, ping…
31
SPF: connessioni TCP
Una connessione TCP passa attraverso il 3-way
Handshake (scambio di pacchetti bidirezionale)
Attraverso i FLAG dell’header TCP possiamo
supportare la politica di sicurezza analizzata. (SYN-
SYN/ACK- ACK)
internet
SYN
Rete
INTERNA
32
SPF: protocolli connectioneless
I protocolli connectionless (UDP, ICMP) possono essere
sia unidirezionali che bidirezionali, in funzione delle
diverse applicazioni.
PING (ICMP): bidirezionale
Source Quench (ICMP): unidirezionale
DNS Query (UDP): bidirezionale
33
SPF: Efficacia
Spoofing: controllo degli indirizzi IP sorgente
Tentate Connessioni: controllo degli indirizzi IP, delle porte di destinazione e dei flag TCP
Traffico ICMP: tipo e codice messaggi ICMP
Source Routing: impedisce traffico con l’opzione di Source Routing attiva
Spesso la funzionalità di SPF viene svolta dal BorderRouter (dispositivo fisico) invece che da un componente specificatamente dedicato alla funzione di firewall.
34
SPF: riflessioni
Utile se configurato su un router come primo livello di
protezione perimetrale
Protegge solo da tecniche di attacco non sofisticate
Utile per valutare il funzionamento dei protocolli
applicativi
35
Packet filtering stateful
Un packet filter può essere stateful o stateless ma
praticamente tutte le implementazioni di packet filters
stateful offrono anche un qualche tipo di protocol
inspection per cui sono dei multilayer stateful firewall
36
Protocol inspection
La stateful inspection è quel processo per cui ogni singola connessione autorizzata viene registrata dal firewall in una apposita tabella (la cosiddetta connection o state table) Oltre all'ip sorgente e di destinazione, solitamente vengono registrati
tanti altri dati, quali il protocollo, le porte, i flag, i sequence number, ecc.
In questo modo, è difficile per un hacker potersi inserire in una connessione stabilita (il cosiddetto session hijacking).
In pratica, ogni volta che un pacchetto arriva al firewall, viene verificato se esso fa parte di una connessione precedentemente stabilita in caso affermativo, esso viene lasciato passare senza ulteriori
controlli sulle catene del firewall stesso, altrimenti subisce la sorte di un normale pacchetto in ingresso
37
Packet filtering: Considerazioni
Comunque anche con la migliore configurazione il packet
filter non verifica il contenuto dei pacchetti per cui non
può bloccare virus ed ha problemi con protocolli che
negoziano le porte, come ad esempio FTP attivo
38
Servizi su internet
Porte e servizi
principali
39
Access Control List (ACL)
Le ACL definiscono le regole per il filtraggio statico dei pacchetti in transito.
Semantica ACCEPT/DENY
Criterio TOP-DOWN di filtraggio: la prima regola che viene verificata produce la decisione sul
pacchetto
il test del pacchetto continua fino a che una regola corrisponde alle caratteristiche del pacchetto oppure fino a che la lista di regole termina
di norma esiste una regola di DEFAULT
40
Access Control List (ACL)
Le ACL permettono di scegliere tra due strategie:
Default Permit
Default Deny
Usate nei router CISCO
Packet filtering che applica le ACL lavora al Network layer
della pila OSI, oppure al livello Internet layer della pila
TCP/IP.
41
Perché usare le ACL
Limitare il traffico indesiderato migliorando le performance della rete
Le ACL permettono il controllo del flusso del traffico restringendo la delivery degli update per il routing
Possono essere usato in aggiunta ad altre tecniche di controllo della sicurezza.
Controllano il tipo di traffico che viene rigirato o bloccato dal router.
Possibilità di controllare a quale area un client accede.
42
Tipi di ACL
Secondo gli standard Cisco si hanno:
STANDARD ACL
Numerate tra 0 e 99.
Filtrano solo gli indirizzi IP sorgente
EXTENDED ACL
Numerate tra 100 e 199
Filtrano indirizzi IP sorgente, destinatario,protocollo, porte UDP e TCP e tipo/codice messaggi ICMP
43
Standard ACL
Access-list numero azione sorgente [wild card] | any
Numero: da 0 a 99 per ACL Standard
Azione: permit oppure deny
Sorgente: indirizzo IP sorgente
Wild Card: vedi la prossima diapositiva
Any: qualunque valore
Esempio:
Access-list 20 permit 192.168.1.0 0.0.0.255
44
Wild Card
Determina la parte dell’indirizzo IP da verificare e quella da ignorare
È simile alla netmask ma ha una semantica dei valori invertita: valore binario 1: bit dell’indirizzo IP che non deve essere
verificato valore binario 0: bit dell’indirizzo IP che deve essere
verificato
Access-list 20 permit 192.168.1.0 0.0.0.255
11111111Vengono usate anche in Enhanced Interior Gateway Protocol (EIGRP) e OSPF.
45
ACL: esempi
Access-list 17 permit host 192.168.1.100
Access-list 17 deny 192.168.1.0 0.0.0.255
Access-list 17 permit any
Keyword host: si usa quando si indica un indirizzo IP unico
analogo alla wild card 0.0.0.0
Regola di default: permit any oppure deny any
i router Cisco, se non specificato nulla nell’ACL, implicitamente applicano deny any
46
Ingress vs. Egress firewall
ingress firewall collegamenti incoming tipicamente verso servizi offerti all'esterno talvolta come parte di una comunicazione attivata
dall'interno
egress firewall collegamenti outgoing controllo dell'attività del personale
distinzione facile per servizi orientati al canale (es. applicazioni TCP), difficile per servizi basati su datagrammi (es. ICMP, applicazioni UDP)
47
Filtraggio
48
Packet filter
Forwarding
engine
filtro
filtro
filtro
filtro
Incoming
packets
outgoing
packets
Ingress ACL
Access-list 14 deny 10.0.0.0 0.255.255.255
Access-list 14 deny 127.0.0.0 0.255.255.25
Access-list 14 deny 172.16.0.0 0.15.255.255
Access-list 14 deny 192.168.0.0 0.0.255.255
Access-list 14 deny <la propria rete interna> <wild card>
Access-list 17 permit any
Queste ACL bloccano ogni traffico con sorgente IP di rete locale (come definito in RFC 1918 )
49
DDoS con indirizzi locali
Esistono casi di siti web personali vittime di attacchi di
distributed denial of service (DDoS) lanciati interamente
usando indirizzi inclusi in RFC 1918, ovvero indirizzi di
rete locale.
Se l’ ISP (Internet Service Provide) avesse bloccato in
ingress gli indirizzi, l’attacco non sarebbe mai avvenuto.
50
RFC 2827
Definisce come dovrebbero essere impostati gli ingress and egress filtering a seconda della rete assegnata all’organizzazione.
Se si ha a disposizione192.0.2.0/24 questi sono gli ip che dovrebbero essere usati dalla rete
Ogni pacchetto che abbandona la rete dovrebbe avere una sorgente all’interno del range 192.0.2.0/24.
Ogni pacchetto entrante non dovrebbe avere indirizzi in tale range
51
Egress ACL
Access-list 14 permit <la propria rete interna> <wild
card>
Access-list 14 deny any
52
Extended ACL: formato
Access-list numero azione tipo sorgente [wild card] opzioni destinazione [wild card] [log]
Numero: da 100 a 199 per ACL Extended
Azione: permit/deny
Sorgente: indirizzo IP sorgente
Destinazione: indirizzo IP destinazione
Type: IP, UDP o TCP
Opzioni: Porte TCP/UDP, Tipo/Codice ICMP, operatori speciali
Log: opzionale. Scrive un messaggio in un log per ogni pacchetto verificato da una regola
53
Extended ACL
Gli esempi della slide successiva mostrano come un
amministratore possa indicare le porte TCP o UDP
mettendole alla fine della extended ACL.
Si possono usare operatori logici come: equal (eq), not
equal (neq), greater than (gt), and less than (lt).
54
Esempi
Using Port Numbers
acces-list 101 permit tcp 192.168.2.0 0.0.0.255 any eq 23
acces-list 101 permit tcp 192.168.2.0 0.0.0.255 any eq 21
acces-list 101 permit tcp 192.168.2.0 0.0.0.255 any eq 20
Using keywords
acces-list 101 permit tcp 192.168.2.0 0.0.0.255 any eq telnet
acces-list 101 permit tcp 192.168.2.0 0.0.0.255 any eq ftp
acces-list 101 permit tcp 192.168.2.0 0.0.0.255 any eq ftp-data
55
EXTENDED ACL: operatore ESTABLISHED
Permette di filtrare il traffico in ingresso verificando se i
flag RST o ACK sono attivi
In questo modo si permette l’ingresso di tali pacchetti
solo in presenza di una sessione TCP già stabilita, evitando
attività di scanning
56
Esempio di configurazione (1)Restringere l’ Internet access permettendo solo il browsing web. ACL 101 per il
traffico che lascia la rete 192.168.2.0 e ACL 102 per il traffico in entrata.
57
Esempio di configurazione (2)
R1(config)#access-list 101 permit tcp 192.168.2.0
0.0.0.255 any eq 80
R1(config)#access-list 101 permit tcp 192.168.2.0
0.0.0.255 any eq 443
R1(config)#access-list 102 permit tcp 192.168.2.0
0.0.0.255 any eq established
58
Esempio di configurazione (3) ACL 101 permette richieste dalle porte 80 e 443
ACL 102 permette risposte HTTP e HTTPS se la comunicazione è established.
ACL 101 Permette il traffico che arriva da ogni indirizzo della rete 192.168.2.0 di proseguire verso ogni destinazione, a patto che il traffico sia diretto verso una porta 80 (HTTP) o 443 (HTTPS).
La natura della connessioni HTTP richiede anche un traffico che ritorni dal destinatario, in questo caso l’amministratore vuole restringere il traffico alle sole risposte HTTP determinate da una richiesta partita dalla rete. La soluzione più sicura è vietare ogni altro tipo di traffico in ingresso.
ACL 102 ottiene quanto voluto bloccando tutto il traffico in ingresso ad eccezione di quello derivante da una connessione già stabilita dall’interno.
59
ACL e interfacce
Router(config-if)# ip access-group access-list number{in|out}
Access-list-number: Indica il numero della ACL che deve essere legata all’interfaccia.
In|out: Specifica se la ACL va applicata all’interfaccia in entrata o in uscita. Un’ACL in input fa sì che il router applichi prima l’ACL e poi effettui il routing, mentre in output prima il routing e poi l’ACL. Se non è specificato, per default è out.
60
ACL Interface esempio
61
ACL Interface esempio
R1#config t
Enter configuration commands, one per line. End withCNTL/Z.
R1#(config)#interface s0/0/0
R1#(config)#ip access-group 101 out
R1#(config)#ip access-group 102 in
R1#(config)#end
62
ACL Interface esempio
Bloccare FTP (File Transfer Protocol) dalla subnet 192.168.2.0
verso la subnet 192.168.3.0, ma permettere il resto del traffico.
FTP richiede le porte 20 e 21.
Tali porte devono essere specificate es. eq 20 e eq 21 per il
deny FTP.
63
ACL e interface esempi
R1#config t
Enter configuration commands, one per line. End with CNTL/Z.
access-list 103 deny tcp 192.168.3.0 0.0.0.255 192.168.2.0 0.0.0.255 eq 21
access-list 103 deny tcp 192.168.3.0 0.0.0.255 192.168.2.0 0.0.0.255 eq 20
access-list 103 permit ip any any
interface fa0/1
ip access-group 103 in
64
Esercizio
negare il traffico FTP
Non-172.16.0.0
E0 E1
S0
172.16.3.0 172.16.4.0
172.16.4.23
65
Soluzione
access-list 101 deny tcp 172.16.4.0 0.0.0.255
172.16.3.0 0.0.0.255 eq 21
access-list 101 permit ip 172.16.4.0 0.0.0.255 any
(access-list 101 deny any any – implicito, non visibile nella
lista)
interface ethernet 0
ip access-group 101 (non specificato è default out)
66
Esercizio
Si vuole negare all'host B l'accesso al Server FTP e allo
stesso tempo negare all'host C qualsiasi accesso alla rete
172.16.3.0.
Host A
Host B
Host C
FTP Server
172.16.3.0172.16.3.52
172.16.3.99
172.16.4.1
172.16.4.0
172.16.4.12
S0S0
E1 E0
Router A Router B
ACL standard
ACL estesa
67
Soluzione
access-list 1 deny host 172.16.4.12
access-list 1 permit any
interface ethernet 1
ip access-group 1
access-list 101 deny tcp host 172.16.4.1 172.16.3.0 0.0.0.255 eq ftp
access-list 101 permit ip 172.16.4.0 0.0.0.255 any
interface ethernet 0
ip access-group 101
68
Formalismo (1)
Una ACL Static Packet Filter è definita da una tabella
come la seguente:
69
Direz. IP
Sorg
IP
Dest
Protoc. Porta
Sorg
Porta
Dest
Flag
ACK
Azione
Formalismo (2) Direzione: Indica la direzione del traffico:
se non ambiguo, IN/OUT
nei restanti casi indicazione delle zone sorgente e destinataria (es. DMZ->Internet), oppure delle interfacce (es. eth0->eth1)
IP Sorgente/Destinatario Valori degli indirizzi (es. 159.149.10.1, 159.149.10.0/24) o uso di variabili
Protocollo TCP, UDP, ICMP, IP
Porta Sorgente/Destinataria Valore o range (es. >1023)
Flag ACK Se il protocollo è TCP, il suo valore può essere 0, 1 o 0/1; ** per altri protocolli
Azione Permit/Deny
70
Variabili
È molto diffuso l'uso di variabili alle quali assegnare valori
di parametri, tipicamente indirizzi IP e sottoreti
Nelle regole di un firewall si utilizzano le variabili
anziché i valori:
si può separare la definizione dei valori dalla definizione della
politica di un firewall
si possono modificare i valori senza editare la politica
stessa
71
Variabili esempio
DMZ := 159.149.70.0/24
Internal := 192.168.20.0/24
Private := 10.0.0.0/8 and ….
External := not (Internal or DMZ or Private)
WebServer := 159.149.70.11 and 159.149.70.12
72
Packet Filtering : Telnet (1)
Vogliamo autorizzare solo connessioni Telnet dall’interno
della rete aziendale verso l’esterno
73
Direz. IP
Sorg
IP
Dest
Protoc. Porta
Sorg
Porta
Dest
Flag
ACK
Azione
OUT Internal Any TCP >1023 23 Permit
IN Any Internal TCP 23 >1023 Permit
Any Any Any Any Any Any ** Deny
Packet Filtering : Telnet (2)
Filtrare il traffico solo sulle Porte Sorgente e Destinazione, può portare a una politica di sicurezza troppo permissiva.
Ad esempio, supponiamo che la seconda regola sia:
IN Any InternalTCP 23 >1023 Permit
Questa regola permette connessioni generate da qualunque host esterno e dirette a qualunque hostinterno aventi porta sorgente 23/tcp e porta destinataria >1023.
74
Packet Filtering : Telnet (3)
I pacchetti provenienti dall’esterno della rete sono solo
risposte del server.
Quindi il flag ACK è sempre settato.
Client Server
SYN
SYN-ACK
ACK
DATA+ACK
3-way
HANDSHAKE
75
Packet Filtering : Telnet (4)
La politica è ancora troppo lasca. Chiunque può ricevere connessioni sulla porta 23/tcp.
Limitiamole ai soli server telnet autorizzati:
--> tlnSrv := 159.149.70.13
Usiamo ACK
1/0 quando IP Sorgente stabilisce la connessione verso l’IP Destinatario
1 quando IP Sorgente (passivo) risponde all’IP Destinatario
76
Direz. IP
Sorg
IP
Dest
Protoc. Porta
Sorg
Porta
Dest
Flag
ACK
Azione
OUT Internal tlnSrv TCP >1023 23 1/0 Permit
IN tlnSrv Internal TCP 23 >1023 1 Permit
Any Any Any Any Any Any ** Deny
Least privilege
Compatibilmente con le specifiche relative alla fornitura
dei servizi, la politica di un firewall deve essere la più
stringente possibile.
Dato un insieme di specifiche, è un errore definire
una politica più lasca dello stretto necessario
77
Esercizio
78
Pensiamo alle regole di filtraggio per SSH
Funziona su TCP porta 22 (a volte si cambia per ragioni di
sicurezza)
Più sicuro di Telnet perchè cripta i messaggi.
Direz. IP
Sorg
IP
Dest
Protoc. Porta
Sorg
Porta
Dest
Flag
ACK
Azione
Soluzione
79
Direz. IP
Sorg
IP
Dest
Protoc. Porta
Sorg
Porta
Dest
Flag
ACK
Azione
OUT Internal tlnSrv TCP >1023 22 1/0 Permit
IN tlnSrv Internal TCP 22 >1023 1 Permit
Any Any Any Any Any Any ** Deny
Filtering con applicazioni semplici Applicazioni come Telnet, SSH, rlogin, etc. sono
semplici da gestire con packet filtering:
• per loro natura implicano ruoli ben definiti: client e server
Il pattern di scambio di messaggi è un semplice request/reply
Altre applicazioni possono avere protocolli più elaborati, ad esempio perché prevedono ruoli client e server multipli o perché basate su pattern di scambio di messaggi più sofisticati.
80
Filtraggi con applicazioni complesse
Sicurezza nelle Reti81
Quando le applicazioni hanno uno scambio a livello di
trasporto più articolato, gestire il firewall diventa
complesso
studiare molto bene i protocolli applicative
verificare debolezze del livello di filtraggio considerate
essere consapevoli di cosa non si riesce a fare con il filtraggio
utilizzato
mantenere una politica di chiusura conservativa
SMTP (Simple mail transfer protocol)
Gestisce lo scambio di messaggi di posta
elettronica
La connessione tra i diversi server di posta
avviene attraverso una connessione TCP
(porta 25)
Ogni utente è identificato dall’indirizzo:
nomeutente@indirizzo_server_email
82
I comandi
I principali comandi SMTP:
HELO: Identifica il client SMTP al server SMTP;
EHLO: E' possibile usare anche questo comando per identificarsi, se il server
supporta le SMTP Service Extensions
MAIL FROM: <indirizzo mittente>: Indicata la mailbox del mittente del messaggio;
RCPT TO: <indirizzo destinatario> : Indica la mailbox del desinatario (Recipient). E'
possibile specificare attraverso molteplici RCPT TO diversi destinatari;
DATA: Indica al server che quanto digitato successivamente saranno i dati del
messaggio di posta;
RSET: Annulla i comandi (Reset) precedentemente inviati nella sessione SMTP
corrente;
VRFY <stringa>: Chiede al server se la stringa di testo immessa rappresenta un
nome utente presente ed in tal caso visualizza l'intero indirizzo;
HELP: Visualizza i comandi disponibili sul server;
NOOP: Non esegue nessuna operazione restituisce solo un messaggio 250 (Ok) se il
server risponde;
QUIT: Termina la sessione SMTP corrente;
83
Le fasi
Una sessione SMTP attraversa almeno sei fasi:
1. Il client SMTP contatta il server sulla porta TCP 25. Se questo è in ascolto e la connessione è
accettata risponde con un messaggio 220 (Ready);
2. Il client chiede di stabilire la sessione SMTP inviando il comando HELO seguito dal FQDN
(Fully Qualified Domani Name). Se il server accetta risponde con un messaggio 250 (Ok);
3. Il client indica il proprio indirizzo tramite il comando MAIL FROM: <indirizzo mittente>. Il
server risponde con 250 (Ok) per ogni destinatario accettato;
4. Il client indica al server i destinatari del messaggio tramite RCPT TO: <indirizzo destinatario> ed
il server risponde per ogni destinatario accettato un codice 250 (Ok);
5. Il client comunica al server l'intenzione di scrivere il corpo del messaggio con DATA. Il server
risponde con un codice 354 e indica come marcare il termine del messaggio. I campi come Date,
Subject, To, Cc, From vanno inseriti tra i dati della mail;
6. Completato il messaggio da scrivere tramite, il server memorizza la mail. A questo punto è
possibile, scrivere un nuovo messaggio oppure inviare il comando QUIT, dopo il quale il server
invia i messaggi e risponde con un codice 221 (Closing) e la connessione TCP viene terminata;
84
I codici di risposta (1)
Il server risponde ad ogni comando con un codice di tre cifre che
ha la seguente interpretazione:
1xx : messaggio informativo
2xx : comando eseguito e terminato con successo
Es:
<<>MAIL FROM: [email protected]
250 [email protected]… Sender ok
3xx: comando eseguito e terminato con successo che richiede di
essere seguito da altri comandi correlati
Es:
<<>DATA
354 Enter mail, end with "." on a line by itself
85
I codici di risposta (2)
4xx: errore temporaneo nell’esecuzione del
comando, ma il dialogo non è compromesso
5xx: errore grave e permanente. Il dialogo è
compromesso e dovrà essere ripreso
dall’inizio
Es:
MAIL TO: [email protected]
501 Syntax error in parameters scanning "to"
86
Cascate di protocolli
Generalmente nella applicazioni distribuite si
usano insiemi di protocolli a cascata
87
ESMTP
(Extended SMTP)
SMTPPOP3
Post office protocol
Packet Filtering : SMTP (1)
Politica: Nella rete aziendale un solo server SMTP è autorizzato a gestire la posta elettronica con l'esterno.
Condizioni: Funzionamento del protocollo SMTP: standard, semplice pattern request/reply
Client interni alla rete non passano per il firewall
Primo tentativo: Se funzionasse come Telnet basterebbe invertire interno con esterno.
Defizione variabili smtpSrv := 159.149.70.23
External := not(159.149.70.0/24)
88
Packet Filtering : SMTP (2)
E’ corretta?
89
Direz. IP
Sorg
IP
Dest
Protoc. Porta
Sorg
Porta
Dest
Flag
ACK
Azione
IN External smtpSrv TCP >1023 25 1/0 Permit
OUT smtpSrv External TCP 25 >1023 1 Permit
Any Any Any Any Any Any ** Deny
Packet Filtering : SMTP (3)
Che funzionalità viene gestita?
Come viene richiesto lo scambio di posta elettronica?
Quale è il client?
Quale è il server?
Quale è il contesto applicativo?
internet
SYN
3-way HANDSHAKE
90
Packet Filtering : SMTP (4)
Le TCP da gestire sono due non una
Scambiare posta elettronica: Un Mail Server riceve e invia posta “da” e “verso” altri Mail Server.
Ricevere posta elettronica: Altri Mail Server si connettono al Mail Server aziendale agendo da client.
Inviare posta elettronica: Il Mail Server aziendale si connette ad altri Mail Server agendo da client.
91
Packet Filtering : SMTP (5)
Nell’esempio considerato non compaiono i client di posta,
intesi come utenti finali con propri mailer
internet
3-way HANDSHAKE RICEZIONE
INVIO3-way HANDSHAKE
client
client
server
server
92
Packet Filtering : SMTP (6)
E’ corretta?
93
Direz. IP
Sorg
IP
Dest
Protoc. Porta
Sorg
Porta
Dest
Flag
ACK
Azione
IN External smtpSrv TCP Any Any 1/0 Permit
OUT smtpSrv External TCP Any Any 1/0 Permit
Any Any Any Any Any Any ** Deny
Packet Filtering : SMTP (6)
Ora è più precisa
94
Direz. IP
Sorg
IP
Dest
Protoc. Porta
Sorg
Porta
Dest
Flag
ACK
Azione
IN External smtpSrv TCP >1023 25 1/0 Permit
OUT smtpSrv External TCP 25 >1023 1 Permit
OUT smtpSrv External TCP >1023 >25 1/0 Permit
IN External smtpSrv TCP 25 >1023 1 Permit
Any Any Any Any Any Any ** Deny
FTP (File Transfer Protocol)
FTP (File Transfer Protocol) è il protocollo generalmente utilizzato
per trasferire dati tra due host.
Il protocollo di trasferimento dati FTP ha come obbiettivo il
trasferimento affidabile ed efficiente dei dati, per questo motivo si
basa TCP. In particolare un FTP Server rimane in attesa di
connessioni sulla porta 21.
FTP utilizza due processi distinti per compiere il proprio compito:
PI (Protocol Interpreter) attraverso cui il client invia i comandi e riceve le
risposte dal server;
DTP (Data Transfer Process) attraverso il quale il client ed il server si
scambiano i dati;
95
FTP
Il Data Transfer Process può essere di due tipi
Active MODE (default)
Passive MODE.
Nella modalità Active Mode il client contatta il server il
quale da inizio alla connessione (sulla porta 20) per
trasmettere i dati con il client.
In Passive MODE è prerogativa del client anche dare il via
alla connessione per il trasferimento dei dati.
96
Le fasi
Le fasi di una sessione FTP sono:
1. Il client contatta il server sulla porta 21 utilizzando il
processo PI;
2. Autenticazione del client;
3. Trasferimento dati tramite il DTP;
4. Termine della sessione TCP;
97
Connessioni FTP
In sostanza ci sono due connessioni TCP per ogni sessione
FTP:
Connessione di controllo: usata dal client per inviare i comandi e
dal server per comunicare i codici di risposta, viene aperta dal client
che si connette al server sulla porta TCP remota 21
Connessione dati: usata per il trasferimento dei file, viene aperta
dal server usando la porta TCP locale 20. Poiché il server non
conosce la porta remota usata dal client per la connessione dati è il
client stesso a comunicargliela attraverso la connessione di controllo
prima dell’apertura della connessione dati
98
Connessioni FTP
21
Comandi
20
Dati
>1023
Es. 1039
>1023
Es. 10381) 3-way HANDSHAKE
2) Porta 1038
3) OK
4) 3-way HANDSHAKE
Comandi/risposte
ACK
Dati
ACK
client Server FTP
99
SPF e FTP
due scelte possibili:
lasciare aperte tutte le porte dinamiche (>1024)
chiudere tutte tutte le porte dinamiche: difficile trade-off tra
sicurezza e supporto a FTP!!
100
SPF: FTP
Può portare ad un serio problema di sicurezza
101
Direz. IP
Sorg
IP
Dest
Protoc. Porta
Sorg
Porta
Dest
Flag
ACK
Azione
OUT Internal External TCP >1023 21 1/0 Permit
IN External Internal TCP 21 >1023 1 Permit
IN External Internal TCP 20 >1023 1/0 Permit
OUT Internal External TCP >1023 20 1 Permit
Any Any Any Any Any Any ** Deny
SPF: FTP
La seconda connessione, relativa al canale dati, viene aperta dal server verso il client:
ftpserver:20 ftpclient:XXXX (N.B: XXXX è la porta definita dinamicamente dal client).
La politica di gestione “connessione da interno a esterno” non è applicabile al caso in oggetto: connessione da esterno a interno
porta di destinazione della connessione non determinata a priori
Rischio
Intrusore:20 Vittima:XXXX
Le porte >1023 sono usate da servizi molto diffusi e da trojan.
102
SPF: FTP Passiva (1)
21
Comandi
20
Dati
>1023
Es. 1039
>1023
Es. 10381) 3-way HANDSHAKE
2) PASV
3) OK XXXX (porta random)
4) 3-way HANDSHAKE
Comandi/risposte
ACK
Dati
ACK
client Server FTP
XXXX
103
SPF: FTP Passiva (2)
La seconda connessione, relativa al canale dati, viene
aperta dal client verso il server:
ftpclient:YYYY ftpserver:XXXX
La politica di gestione “connessioni solo da interno a
esterno” torna ad essere applicabile.
Oggi tutti gli FTP supportano la modalità passiva e la
utilizzano di default (es. Web browser).
104
SPF: FTP Passiva (3)
105
Direz. IP
Sorg
IP
Dest
Protoc. Porta
Sorg
Porta
Dest
Flag
ACK
Azione
OUT Internal External TCP >1023 21 1/0 Permit
IN External Internal TCP 21 >1023 1 Permit
OUT Internal External TCP >1023 >1023 1/0 Permit
IN External Internal TCP >1023 >1023 1 Permit
Any Any Any Any Any Any ** Deny
FTP valutazioni
Con la modalità attiva devo per forza utilizzare uno
packet filtering che si ricordi delle connessioni
dovrei scrivere una regola che consenta il traffico entrante
iniziato dall’esterno con source port sport=20 e destination
port dport> 1023 (pericoloso, utilizzato dai port scanner per
fare il loro lavoro).
106
SPF: RPC
Attacco(1)
Descrizione tecnica del problema
Remote Procedure Call (RPC) è un protocollo che può essere utilizzato da un'applicazione per richiedere un servizio a un programma residente su un altro computer in rete. Microsoft ha riscontrato una vulnerabilità nel componente di RPC che gestisce lo scambio di messaggi tramite TCP/IP.
Questo particolare difetto interessa un'interfaccia DCOM (Distributed Component Object Model - protocollo che consente la comunicazione diretta fra sistemi software attraverso una rete), presente sulla porta TCP/IP 135 (porta utilizzata per stabilire una connessione RPC con un computer remoto).
Il problema è dovuto a modalità errate di gestione dei messaggi con formato non valido.
108
Attacco(2)
Un hacker potrebbe tentare di sfruttare questa vulnerabilità programmando un computer in grado di comunicare attraverso la porta TCP 135 con un server interessato dal problema, in modo da inviare un particolare tipo di messaggio RPC con formato errato.
Alla ricezione di tale messaggio il servizio RPC del computer, affetto dalla vulnerabilità, potrebbe generare un errore tale da consentire l'esecuzione di codice non autorizzato.
La porta TCP 135 è normalmente bloccata, non consentendo in questo modo la possibilità di accessi esterni non autorizzati sulla porta RPC.
109
SPF: RPC
110
Direz. IP
Sorg
IP
Dest
Prot
oc.
Porta
Sorg
Porta
Dest
Flag
ACK
Azione
IN External rpcSrv TCP
UDP
>1023 111(unix)
135(ms)
1/0(tcp)
**(udp)
Permit
OUT rpcSrv External TCP
UDP
111(unix)
135(ms)
>1023 1(tcp)
**(udp)
Permit
IN External rpcSrv TCP
UDP
>1023 any 1/0(tcp)
**(udp)
Permit
OUT rpcSrv External TCP
UDP
any >1023 1(tcp)
**(udp)
Permit
Any Any Any Any Any Any ** Deny
RPC
Problema : Non si conosce a priori la porta che il
server RPC assegnerà al servizio.
Rischio: Intrusore:YYYY ServerRPC-Vittima:XXXX
111
Protocolli firewall friendly
112
Quelli più semplici tipo ssh e Telnet
Non sono firewall friendly quelli che richiedono regole
complicate
FTP attivo
RPC