9. Security Considerations (Considerazioni sulla sicurezza)
Il protocollo L2TP stesso non fornisce servizi di crittografia o autenticazione forte. Questo capitolo discute le considerazioni sulla sicurezza nelle distribuzioni L2TP e i meccanismi di sicurezza disponibili.
9.1 Tunnel Endpoint Security (Sicurezza degli endpoint del tunnel)
La relazione di fiducia tra gli endpoint del tunnel è fondamentale per la sicurezza L2TP.
Autenticazione degli endpoint:
LAC e LNS devono essere in grado di verificare reciprocamente l'identità. L2TP fornisce un meccanismo di autenticazione del tunnel opzionale:
- Challenge AVP: L'iniziatore invia un valore di sfida casuale nello SCCRQ (Start-Control-Connection-Request).
- Challenge Response AVP: Il risponditore calcola una risposta basata su un segreto condiviso e la restituisce nello SCCRP (Start-Control-Connection-Reply).
- Calcolo della risposta: Utilizza la funzione hash MD5:
MD5(Tipo di messaggio + segreto_condiviso + Sfida + ID_Sessione)
Gestione dei segreti condivisi:
- I segreti condivisi dovrebbero avere un'entropia sufficiente (almeno 128 bit raccomandati).
- I segreti condivisi dovrebbero essere memorizzati in modo sicuro (memorizzazione crittografata).
- I segreti condivisi dovrebbero essere rinnovati periodicamente.
- Coppie di tunnel diverse dovrebbero utilizzare segreti condivisi diversi.
Autorizzazione del tunnel:
Oltre all'autenticazione, dovrebbero essere implementati meccanismi di autorizzazione:
- Verificare che il peer sia autorizzato a stabilire un tunnel.
- Controllare se il peer ha il permesso di accedere a risorse o servizi specifici.
- Utilizzare Access Control List (ACL) per limitare quali peer possono stabilire tunnel.
Vulnerabilità e mitigazioni:
-
Attacco Man-in-the-Middle:
- Rischio: L'autenticazione del tunnel L2TP basata su segreti condivisi è vulnerabile agli attacchi MITM.
- Mitigazione: Utilizzare IPsec per fornire crittografia e autenticazione end-to-end.
-
Attacco di replay:
- Rischio: Gli attaccanti possono riprodurre messaggi di controllo catturati.
- Mitigazione: Utilizzare numeri di sequenza e meccanismi ZLB ACK per rilevare e prevenire attacchi di replay.
-
Attacco Denial of Service:
- Rischio: Gli attaccanti possono inviare grandi quantità di richieste di stabilimento tunnel.
- Mitigazione:
- Limitare il numero di tunnel simultanei per indirizzo sorgente.
- Implementare la limitazione della velocità.
- Utilizzare meccanismi Cookie (simili ai cookie TCP SYN).
9.2 Packet Level Security (Sicurezza a livello di pacchetto)
L2TP stesso non fornisce crittografia dei pacchetti o protezione dell'integrità.
Rischi della trasmissione in chiaro:
- Intercettazione: Gli attaccanti possono intercettare e leggere il contenuto dei pacchetti PPP, incluse le credenziali utente e i dati dell'applicazione.
- Manomissione: Gli attaccanti possono modificare i pacchetti in transito.
- Iniezione: Gli attaccanti possono iniettare pacchetti dannosi nel tunnel.
Meccanismo di occultamento AVP:
L2TP fornisce un meccanismo di occultamento AVP per proteggere le informazioni di controllo sensibili:
-
Processo di occultamento:
- Generare hash MD5 utilizzando il segreto condiviso e il vettore casuale.
- Eseguire XOR del valore hash con il valore AVP.
- Ripetere il processo se il valore AVP supera i 16 byte.
-
Limitazioni:
- L'occultamento AVP è offuscamento, non vera crittografia.
- Non protegge il canale dati, solo AVP specifici nel canale di controllo.
- Vulnerabile ad attacchi dizionario (se il segreto condiviso è debole).
Raccomandazioni:
- Non fare affidamento sull'occultamento AVP come unico meccanismo di sicurezza.
- Utilizzare IPsec o altre tecnologie di crittografia a livello tunnel.
9.3 End to End Security (Sicurezza end-to-end)
Anche quando il tunnel L2TP stesso è protetto, la sicurezza end-to-end rimane importante.
Autenticazione a livello PPP:
L'autenticazione indipendente dovrebbe avvenire tra il sistema remoto e l'LNS:
-
PAP (Password Authentication Protocol):
- Autenticazione tramite password in chiaro semplice.
- Non raccomandato, poiché le password vengono trasmesse in chiaro (dovrebbe essere evitato anche all'interno di tunnel L2TP crittografati).
-
CHAP (Challenge Handshake Authentication Protocol):
- Meccanismo di autenticazione sfida-risposta.
- Le password non vengono trasmesse in chiaro.
- Riautenticazione periodica per prevenire attacchi di replay.
-
EAP (Extensible Authentication Protocol):
- Supporta vari metodi di autenticazione (EAP-TLS, EAP-TTLS, PEAP, ecc.).
- Può fornire autenticazione reciproca e negoziazione delle chiavi.
- EAP-TLS è raccomandato per la sicurezza più forte.
Crittografia end-to-end:
La crittografia a livello applicazione fornisce un ulteriore livello di sicurezza:
- TLS/SSL: Utilizzato per proteggere i dati dell'applicazione (ad es., HTTPS).
- Software client VPN: Fornisce un ulteriore livello di crittografia sopra PPP.
Strategia di difesa in profondità:
Sistema remoto <--Auth/Crittog PPP--> LNS
| |
+--<Tunnel L2TP>--LAC----------------+
|
<Protezione IPsec>
- Livello 1: Autenticazione a livello PPP (CHAP/EAP)
- Livello 2: Autenticazione del tunnel L2TP
- Livello 3: Crittografia e autenticazione IPsec
- Livello 4: Crittografia a livello applicazione (TLS/SSL)
9.4 L2TP and IPsec (L2TP e IPsec)
Si raccomanda vivamente di utilizzare L2TP in combinazione con IPsec, comunemente indicato come L2TP/IPsec.
Servizi di sicurezza forniti da IPsec:
-
Riservatezza:
- Fornita tramite crittografia ESP (Encapsulating Security Payload).
- Supporta più algoritmi di crittografia: AES, 3DES, ChaCha20, ecc.
-
Integrità:
- Fornita tramite AH (Authentication Header) o autenticazione ESP.
- Utilizza HMAC (ad es., HMAC-SHA256) per verificare l'integrità dei dati.
-
Autenticazione della sorgente:
- Verifica l'autenticità delle sorgenti dei pacchetti.
- Previene attacchi di spoofing IP.
-
Anti-replay:
- Utilizza numeri di sequenza per prevenire attacchi di replay.
Architettura L2TP/IPsec:
+-------------------+
| Payload PPP |
+-------------------+
| Intestazione L2TP|
+-------------------+
| Intestazione UDP |
+-------------------+
| Intestazione ESP | <-- Crittografia e autenticazione IPsec
+-------------------+
| Intestazione IP |
+-------------------+
Opzioni di configurazione IPsec:
-
Modalità trasporto:
- Crittografa e autentica solo il payload IP.
- Adatto per comunicazione end-to-end.
- Raccomandato per L2TP/IPsec.
-
Modalità tunnel:
- Crittografa e autentica l'intero pacchetto IP.
- Aggiunge una nuova intestazione IP esterna.
- Adatto per comunicazione gateway-to-gateway.
Gestione delle chiavi:
-
IKE (Internet Key Exchange):
- IKEv1: Versione originale, negoziazione in due fasi.
- IKEv2: Versione migliorata, più snella ed efficiente.
- IKEv2 è raccomandato per la negoziazione delle chiavi.
-
Chiave pre-condivisa vs Certificati:
- Chiave pre-condivisa (PSK): Semplice da configurare, ma difficile distribuire le chiavi.
- Certificati: Più sicuri, supportano distribuzioni su larga scala, fortemente raccomandati.
Attraversamento NAT (NAT-T):
Quando L2TP/IPsec deve attraversare dispositivi NAT:
- Utilizzare incapsulamento UDP di ESP (porta UDP 4500).
- Inviare periodicamente pacchetti di keepalive NAT.
- IKEv2 ha supporto NAT-T integrato.
Considerazioni sulle prestazioni:
- La crittografia IPsec aggiunge overhead CPU.
- Considerare l'utilizzo dell'accelerazione hardware (AES-NI, ecc.).
- La riduzione MTU deve essere considerata (intestazione ESP + trailer ESP + dati di autenticazione).
9.5 Proxy PPP Authentication (Autenticazione PPP proxy)
L2TP consente al LAC di eseguire l'autenticazione PPP iniziale per conto dell'LNS.
Meccanismo di autenticazione proxy:
Il LAC può negoziare LCP ed eseguire l'autenticazione con il sistema remoto prima di inoltrare la chiamata all'LNS:
-
LAC esegue l'autenticazione PPP:
- LAC negozia LCP con il sistema remoto.
- LAC esegue l'autenticazione PAP o CHAP.
- LAC raccoglie informazioni di autenticazione (nome utente, hash password, ecc.).
-
LAC inoltra le informazioni di autenticazione all'LNS:
- Utilizza AVP proxy per passare le informazioni di autenticazione:
- Proxy Authen Type AVP (29): Tipo di autenticazione (PAP, CHAP, ecc.)
- Proxy Authen Name AVP (30): Nome utente
- Proxy Authen Challenge AVP (31): Valore di sfida CHAP
- Proxy Authen Response AVP (33): Risposta di autenticazione
- Utilizza AVP proxy per passare le informazioni di autenticazione:
-
LNS verifica le informazioni di autenticazione:
- LNS verifica l'utente in base alle informazioni fornite dal LAC.
- LNS può accettare o rifiutare la sessione.
Rischi per la sicurezza:
-
Compromissione LAC:
- Se il LAC viene compromesso, gli attaccanti possono ottenere le credenziali utente.
- Mitigazione: Utilizzare IPsec per proteggere la comunicazione tra LAC e LNS.
-
Trasmissione password in chiaro:
- Le password PAP vengono trasmesse in chiaro dal LAC all'LNS (negli AVP).
- Mitigazione: Utilizzare il meccanismo di occultamento AVP o la crittografia IPsec.
-
Confine di fiducia:
- L'LNS deve fidarsi completamente delle informazioni di autenticazione fornite dal LAC.
- Un LAC malevolo può falsificare le informazioni di autenticazione.
- Mitigazione:
- Utilizzare l'autenticazione proxy solo tra domini di gestione fidati.
- Considerare di richiedere la riautenticazione end-to-end.
Migliori pratiche:
-
Evitare l'autenticazione PAP proxy:
- Le password PAP sono vulnerabili agli attacchi anche quando occultate.
- Se deve essere utilizzato, assicurare la protezione IPsec.
-
Preferire l'autenticazione end-to-end:
- Consentire al sistema remoto di autenticarsi direttamente con l'LNS (senza proxy).
- Utilizzare metodi EAP per una sicurezza più forte.
-
Limitare i casi d'uso dell'autenticazione proxy:
- Utilizzare solo quando necessario (ad es., stabilimento rapido della chiamata).
- Utilizzare in ambienti di rete fidati.
-
Combinare più metodi di autenticazione:
- LAC esegue l'autenticazione preliminare (per filtraggio rapido).
- LNS esegue l'autenticazione secondaria (verifica end-to-end).
Integrazione dell'autenticazione proxy con RADIUS:
Sistema remoto <--PAP/CHAP--> LAC <--RADIUS--> Server RADIUS
|
|
v
(Inoltra info auth)
|
v
LNS <--RADIUS--> Server RADIUS
- LAC può utilizzare RADIUS per verificare le credenziali utente.
- LNS può anche verificare indipendentemente utilizzando RADIUS.
- La doppia verifica fornisce un ulteriore livello di sicurezza.
Lista di controllo configurazione sicurezza:
- Utilizzare IPsec tra LAC e LNS
- Utilizzare segreti condivisi forti o certificati per l'autenticazione del tunnel
- Utilizzare segreti condivisi unici per ogni coppia di tunnel
- Abilitare l'autenticazione a livello PPP (CHAP o EAP)
- Evitare l'uso dell'autenticazione PAP
- Ruotare periodicamente i segreti condivisi
- Implementare liste di controllo accessi per limitare lo stabilimento del tunnel
- Abilitare la registrazione e il monitoraggio
- Distribuire sistemi di rilevamento delle intrusioni (IDS)
- Condurre audit di sicurezza regolari e test di penetrazione