Skip to main content
  1. Lab-blue/

[DONE] Lab - IPsec con StrongSwan (ESP, AH, IKE, L2TP)

Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cosa fa
#

Configura IPsec host-to-host tra Ubuntu e Kali usando StrongSwan. Rende visibili i componenti IPsec (IKE, ESP, AH) con tcpdump, mostra la differenza tra tunnel mode e transport mode, e opzionalmente aggiunge L2TP per capire perché L2TP/IPsec è L2TP dentro IPsec e non il contrario.

TL;DR
#

Ubuntu (192.168.64.3)   → StrongSwan responder (accetta connessioni IPsec)
Kali   (192.168.64.200) → StrongSwan initiator  (avvia il tunnel)

Questo lab copre la terminologia d'esame: ESP vs AH, IP protocol 50 vs 51, IKE UDP 500, tunnel mode vs transport mode.


Obiettivo finale
#

Come sai che hai finito tutto: tcpdump -i eth0 proto 50 su Ubuntu mostra traffico ESP durante una connessione tra le due VM; ipsec status mostra la Security Association attiva; sai spiegare perché proto 50 e non port 50.


Fase 1 — IPsec con ESP (Tunnel Mode)
#

  • Task 1 — Installa StrongSwan

    • apt install strongswan strongswan-pki su entrambe le VM
    • Come sai che hai finito: ipsec version risponde su entrambe
  • Task 2 — Configura la Security Policy su Ubuntu (responder)

    • /etc/ipsec.conf: tipo tunnel, left=192.168.64.3, right=192.168.64.200, esp=aes256-sha256, ikelifetime=1h
    • /etc/ipsec.secrets: shared secret tra le due VM
    • Come sai che hai finito: ipsec reload senza errori
  • Task 3 — Configura Kali (initiator)

    • Stessa struttura di /etc/ipsec.conf con left e right invertiti
    • Come sai che hai finito: ipsec reload senza errori
  • Task 4 — Avvia il tunnel e osserva IKE

    • Su Ubuntu: tcpdump -i eth0 udp port 500 in background
    • Da Kali: ipsec up mustache
    • Come sai che hai finito: tcpdump mostra traffico UDP 500 tra le due VM — questo è IKE che negozia le chiavi
  • Task 5 — Osserva ESP

    • Su Ubuntu: tcpdump -i eth0 proto 50
    • Da Kali: invia traffico (ping verso Ubuntu)
    • Come sai che hai finito: vedi pacchetti con protocollo ESP — nessun payload leggibile, solo header esterno
  • Task 6 — Verifica la Security Association

    • ipsec status su entrambe le VM
    • Come sai che hai finito: vedi la SA attiva con algoritmi concordati, SPI, e contatore di byte cifrati

Fase 2 — ESP vs AH
#

  • Task 7 — Riconfigura per usare AH invece di ESP

    • Cambia in /etc/ipsec.conf: ah=sha256 al posto di esp=
    • Come sai che hai finito: ipsec up riconnette; tcpdump proto 51 mostra traffico AH
  • Task 8 — Cerca di vedere il payload con AH

    • Con AH attivo: tcpdump -i eth0 proto 51 -X (mostra payload in hex)
    • Come sai che hai finito: con AH vedi il payload dell'ICMP in chiaro — AH autenticazione + integrità, ma NON cifra. Il contenuto del ping è leggibile.
  • Task 9 — Confronta ESP vs AH

    • Riattiva ESP e ripeti il tcpdump con -X
    • Come sai che hai finito: con ESP il payload è completamente opaco — nessun dato visibile. Con AH era leggibile.

Fase 3 — Tunnel Mode vs Transport Mode
#

  • Task 10 — Osserva il pacchetto in Tunnel Mode

    • Con ESP in tunnel mode attivo: tcpdump -i eth0 proto 50 -v (verbose)
    • Come sai che hai finito: vedi l'header esterno (192.168.64.200 → 192.168.64.3) + marker ESP. L'IP interno (se diverso) è cifrato e invisibile.
  • Task 11 — Cambia a Transport Mode

    • In /etc/ipsec.conf: type=transport invece di type=tunnel
    • Riconnetti e cattura di nuovo
    • Come sai che hai finito: l'header IP è lo stesso (non c'è header esterno aggiuntivo) — il payload è cifrato ma gli IP di sorgente/destinazione sono visibili
  • Task 12 — Misura l'overhead del tunnel

    • Confronta la dimensione dei pacchetti in tunnel mode vs transport mode per lo stesso ping
    • Come sai che hai finito: tunnel mode è più grande — l'header IP extra aggiunge overhead

Fase 4 — L2TP/IPsec (opzionale)
#

  • Task 13 — Installa xl2tpd

    • apt install xl2tpd su Ubuntu
    • Configura xl2tpd: listen-addr = 192.168.64.3, ppp range = 10.1.0.100-200, ipsec saref = yes
    • Come sai che hai finito: xl2tpd -D parte senza errori
  • Task 14 — Dimostra il layering L2TP dentro IPsec

    • Con il tunnel L2TP/IPsec attivo: tcpdump -i eth0 proto 50 mostra ESP (IPsec)
    • tcpdump -i ppp0 mostra il traffico L2TP già decifrato dentro
    • Come sai che hai finito: capisci la struttura: IPsec cifra il tunnel; L2TP trasporta le sessioni PPP dentro; PPP trasporta il traffico IP dell'utente
  • Task 15 — Risposta alla domanda d'esame

    • "L2TP da solo è sicuro per una VPN?" → NO, L2TP non cifra nulla
    • "Cosa aggiunge IPsec a L2TP?" → ESP cifra il contenuto del tunnel L2TP
    • Come sai che hai finito: sai spiegare il layering senza guardare gli appunti

Domande di verifica Security+
#

  1. IKE usa UDP 500. ESP usa IP protocol 50. AH usa IP protocol 51. Perché non diciamo "porta 50" o "porta 51" per ESP/AH?
  2. Un firewall deve far passare una VPN IPsec. Quali regole deve avere? Elenca i protocolli esatti.
  3. Tunnel mode vs transport mode: in quale scenario usi transport mode senza essere in una VPN?
  4. AH fornisce autenticazione e integrità. ESP fornisce anche confidenzialità. Se un'azienda vuole solo verificare che i pacchetti interni non siano stati manomessi (no cifratura), quale usa?
  5. L2TP/IPsec: se qualcuno intercetta il traffico e bypassa IPsec (forza bruta sulla chiave), cosa vede nel payload L2TP? Sarebbe leggibile?

Collegato a
#

  • [[[DONE] lab-vpn-wireguard-tunnels|lab-vpn-wireguard-tunnels]] — alternativa moderna a IPsec, più semplice
  • cap-04-securing-your-network — teoria IPsec, AH/ESP, tunnel/transport, L2TP
  • mustache-project Sprint 5 — TLS interno (complementare a IPsec)

Related