Passa al contenuto principale

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:

  1. 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.
  2. 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.
  3. 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:

    1. Generare hash MD5 utilizzando il segreto condiviso e il vettore casuale.
    2. Eseguire XOR del valore hash con il valore AVP.
    3. 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:

  1. Riservatezza:

    • Fornita tramite crittografia ESP (Encapsulating Security Payload).
    • Supporta più algoritmi di crittografia: AES, 3DES, ChaCha20, ecc.
  2. Integrità:

    • Fornita tramite AH (Authentication Header) o autenticazione ESP.
    • Utilizza HMAC (ad es., HMAC-SHA256) per verificare l'integrità dei dati.
  3. Autenticazione della sorgente:

    • Verifica l'autenticità delle sorgenti dei pacchetti.
    • Previene attacchi di spoofing IP.
  4. 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:

  1. 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.).
  2. 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
  3. 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:

  1. 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.
  2. 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.
  3. 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:

  1. Evitare l'autenticazione PAP proxy:

    • Le password PAP sono vulnerabili agli attacchi anche quando occultate.
    • Se deve essere utilizzato, assicurare la protezione IPsec.
  2. 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.
  3. Limitare i casi d'uso dell'autenticazione proxy:

    • Utilizzare solo quando necessario (ad es., stabilimento rapido della chiamata).
    • Utilizzare in ambienti di rete fidati.
  4. 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