Cosa fa#
Configura un tunnel WireGuard tra Ubuntu (VPN concentrator) e Kali (client remoto). Dimostra la differenza tra split tunnel e full tunnel osservando le routing table di Kali e catturando il traffico cifrato su Ubuntu.
TL;DR#
Ubuntu (192.168.64.3) → VPN concentrator (wg0: 10.0.0.1/24)
Kali (192.168.64.200) → VPN client (wg0: 10.0.0.2/24)
Mac (192.168.64.1) → gateway host-onlyWireGuard è il VPN protocol che "scegli quando puoi scegliere" — non usa IPsec/AH/ESP ma UDP 51820. Perfetto per capire split vs full tunnel. Per IPsec specifico → [[[DONE] lab-ipsec-strongswan|lab-ipsec-strongswan]].
Obiettivo finale#
Come sai che hai finito tutto:
- Split tunnel:
ip routesu Kali mostra solo10.0.0.0/24via wg0;traceroute 8.8.8.8da Kali NON passa per Ubuntu - Full tunnel:
ip routesu Kali mostra0.0.0.0/0via wg0;traceroute 8.8.8.8da Kali passa per Ubuntu (192.168.64.3)
Fase 1 — Setup WireGuard#
Task 1 — Installa WireGuard su Ubuntu e Kali
apt install wireguardsu entrambe- Come sai che hai finito:
wg --versionfunziona su entrambe le VM
Task 2 — Genera le coppie di chiavi
- Su Ubuntu: genera privatekey + publickey per il server
- Su Kali: genera privatekey + publickey per il client
- Come sai che hai finito: hai 4 file:
server_private,server_public,client_private,client_public
Task 3 — Configura il server (Ubuntu)
- Crea
/etc/wireguard/wg0.confconAddress = 10.0.0.1/24,ListenPort = 51820,PrivateKey = [server_private] - Aggiungi il peer Kali con
PublicKey = [client_public],AllowedIPs = 10.0.0.2/32 - Come sai che hai finito:
wg-quick up wg0parte senza errori;ip addr show wg0mostra10.0.0.1
- Crea
Task 4 — Configura il client (Kali)
- Crea
/etc/wireguard/wg0.confconAddress = 10.0.0.2/24,PrivateKey = [client_private] - Peer Ubuntu:
PublicKey = [server_public],Endpoint = 192.168.64.3:51820 - Per ora:
AllowedIPs = 10.0.0.0/24(split tunnel — solo la LAN interna) - Come sai che hai finito:
wg-quick up wg0su Kali;ping 10.0.0.1funziona
- Crea
Fase 2 — Split Tunnel#
Task 5 — Verifica le route con split tunnel
- Su Kali:
ip routedopo aver avviato il tunnel - Come sai che hai finito: vedi
10.0.0.0/24 dev wg0madefault via 192.168.64.1rimane — il traffico verso internet NON passa per il tunnel
- Su Kali:
Task 6 — Dimostra che il traffico internet bypassa il tunnel
traceroute 8.8.8.8da Kali- Come sai che hai finito: il primo hop è
192.168.64.1(Mac gateway), non Ubuntu — la ricerca Google di Lisa va dritta a internet
Task 7 — Cattura il traffico tunnel su Ubuntu
- Su Ubuntu:
tcpdump -i eth0 udp port 51820mentre pinghi da Kali verso10.0.0.1 - Come sai che hai finito: vedi pacchetti UDP tra
192.168.64.200e192.168.64.3— il payload è cifrato, non si vede nulla dentro
- Su Ubuntu:
Fase 3 — Full Tunnel#
Task 8 — Modifica il client per full tunnel
- Su Kali: in
/etc/wireguard/wg0.confcambiaAllowedIPs = 0.0.0.0/0, ::/0 - Su Ubuntu: abilita IP forwarding (
echo 1 > /proc/sys/net/ipv4/ip_forward) + regola NAT (iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE) - Come sai che hai finito: dopo
wg-quick down wg0 && wg-quick up wg0su Kali,ip routemostradefault via 10.0.0.1
- Su Kali: in
Task 9 — Verifica che TUTTO il traffico passi per Ubuntu
traceroute 8.8.8.8da Kali- Come sai che hai finito: il primo hop è
10.0.0.1(Ubuntu) — la ricerca Google di Lisa passa per il VPN server aziendale
Task 10 — Confronta le due modalità
- Ripeti
traceroute 8.8.8.8sia in split che in full tunnel - Come sai che hai finito: output diverso tra le due modalità — documenta la differenza in un commento nel config file
- Ripeti
Fase 4 — Cattura e analisi avanzata#
Task 11 — Confronta traffico cifrato vs decifrato
- Su Ubuntu:
tcpdump -i wg0(interfaccia tunnel, decifrata) — vedi il traffico interno - Su Ubuntu:
tcpdump -i eth0 udp port 51820(interfaccia fisica) — vedi solo UDP cifrato - Come sai che hai finito: su
wg0vedi ICMP; sueth0vedi solo UDP opaco con dimensioni diverse
- Su Ubuntu:
Task 12 — Misura l'overhead del tunnel
- Confronta la dimensione di un ping normale su
eth0vs un ping tunnelato sueth0in full tunnel - Come sai che hai finito: il ping tunnelato è più grande del ping diretto — questo è l'overhead IPsec/WireGuard
- Confronta la dimensione di un ping normale su
Domande di verifica Security+#
- In split tunnel, Lisa cerca "saxophones" su Google. Il traffico passa per il VPN server aziendale? Spiega.
- In full tunnel, quale IP vede Google quando Lisa fa la ricerca? L'IP di casa di Lisa o l'IP aziendale?
- Perché un amministratore di sicurezza preferisce il full tunnel anche se è più lento?
- Il VPN concentrator è Ubuntu in questo lab. Cosa farebbe un hardware dedicato (Cisco ASA) di diverso/migliore?
- WireGuard usa UDP 51820. IPsec usa IP protocol 50/51 + UDP 500. Qual è il vantaggio di WireGuard in ambienti con NAT?
Collegato a#
- [[[DONE] lab-ipsec-strongswan|lab-ipsec-strongswan]] — variante con IPsec reale (ESP, AH, IKE, tunnel vs transport mode)
- [[[TODO] lab-freeradius-samba|lab-freeradius-samba]] — autenticazione RADIUS che precede l'apertura del tunnel
- cap-04-securing-your-network — teoria split/full tunnel, concentrator, IPsec
- mustache-project — WireGuard potrebbe diventare l'accesso admin sicuro al lab



