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-pkisu entrambe le VM- Come sai che hai finito:
ipsec versionrisponde su entrambe
Task 2 — Configura la Security Policy su Ubuntu (responder)
/etc/ipsec.conf: tipotunnel,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 reloadsenza errori
Task 3 — Configura Kali (initiator)
- Stessa struttura di
/etc/ipsec.confconlefterightinvertiti - Come sai che hai finito:
ipsec reloadsenza errori
- Stessa struttura di
Task 4 — Avvia il tunnel e osserva IKE
- Su Ubuntu:
tcpdump -i eth0 udp port 500in 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
- Su Ubuntu:
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
- Su Ubuntu:
Task 6 — Verifica la Security Association
ipsec statussu 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=sha256al posto diesp= - Come sai che hai finito:
ipsec upriconnette;tcpdump proto 51mostra traffico AH
- Cambia in
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.
- Con AH attivo:
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.
- Riattiva ESP e ripeti il tcpdump con
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.
- Con ESP in tunnel mode attivo:
Task 11 — Cambia a Transport Mode
- In
/etc/ipsec.conf:type=transportinvece ditype=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
- In
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 xl2tpdsu 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 -Dparte senza errori
Task 14 — Dimostra il layering L2TP dentro IPsec
- Con il tunnel L2TP/IPsec attivo:
tcpdump -i eth0 proto 50mostra ESP (IPsec) tcpdump -i ppp0mostra 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
- Con il tunnel L2TP/IPsec attivo:
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+#
- 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?
- Un firewall deve far passare una VPN IPsec. Quali regole deve avere? Elenca i protocolli esatti.
- Tunnel mode vs transport mode: in quale scenario usi transport mode senza essere in una VPN?
- 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?
- 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)



