Wireguard
Introducció
Wireguard és aplicació que permet crear xarxes privades virtuals.
Crea tres màquines virtuals: box-1, box-2 i box-3 a Isard.
Les màquines han de ser “Ubuntu 24.04 Server” amb 2 CPU, 4 GB de RAM i una interfície de l’institut:

Connecta’t a la màquina box-1 amb ssh!
Activa les interfícies enp3s0 amb una IP fixa:
Fes el mateix amb box-2 (IP 10.0.0.102/24).
Verifica que pots fer ping des de box-1 a box-2:
) )
El primer pas és instal·lar WireGuard :
&& Interfície
Wireguard s’integra de manera completament transparent amb la resta d’elements del sistema perquè el que fa és crear interfícies virtuals que externament funcionen com qualsevol altra interfície física.
Afegeix una nova interfície mitjançant ip-link:
Pots veure que s’ha creat la interfície:
Xarxa
Una xarxa virtual funciona amb una xarxa IP privada.
Pots utilitzar la que vulguis, l’única condició és que no l’estigui fent servir una altra interfície.
Assigna una adreça IP privada a cada interfície amb ip-address:
Activa la interfície amb ip-link:
Verifica amb ping que la IP privada funciona:
) )
Nginx
A continuació prova amb nginx que la interfície wg0 funciona sense problemes.
| Verifica que le servidor nginx funciona a la IP 10.10.0.101:
Xarxa
Una xarxa té sentit si hi ha més d’un node connectat.
Identitat
Wireguard fa servir criptografia asimètrica Curve25519
La clau pública permet identificar els diferents nodes de la xarxa virtual.
Amb wg pots generar claus privades:
gKwwK1zIljwcuNlWCo0nv4GJ9seARMX8B9h9+7Ph134=Configura la interfície wg0 una la clau privada:
Amb wg pots veure que la interfície wg0:
- Està configurada amb una clau pública que és el seu identificador.
- Un port aleatori on està escoltant:
)
Com ja saps, wireguard no necessita que li diguis quina és la clau pública, perquè tenint la clau privada pots generar la pública:
XDx76G3NJ5vYzyi9SMge1z6lQV8Y+SWnKECidlThAi4=Amb la comanda wg showconf pots saber quina és la clau privada:
Peer
Una interfície wireguard fa servir UDP (no es pot atacar amd DDOS) i és indetectable amb Nmap.
Una interfície wireguard només respon a un paquet UDP si el remitent és un node de confiança.
Un node és de confiança si has registrat la seva clau pública com a un peer.
Per tant, configura la màquina box-2 amb una interfície wireguard:
La “id” d’un node és la seva clau pública.
Mira quina és la id de la interfície wg0 de box-2 i en quin port està escoltant:
)
Ja pots configurar a box-2 com a peer de box-1:
Fixa’t que has de dir a través de quina interfície real (endpoint) s’ha de crear la connexió virtual encriptada.
Pots veure que la interfície wg0 accepta connexions des de la IP 10.10.0.102.
)
Ara configura box-1 com a peer de box-2:

Ja pots fer ping de box-2 a box-1 a través de la interfície wg0:
) )
I al revés, de box-1 a box-2 a través de la interfície wg0.
L’ordre wg show et mostra que hi ha hagut tràfic en la interfície wg0:
)
Però com pots estar segur que el peer està ben configurat?
Aixeca un servidor nginx a box-1 que respongui amb el seu nom:
| Des de box-2 verifica que et pots connectar al servidor nginx de box-1 des de la interfície enp2s0 i enp3s0:
Continua
Netplan
Genera les claus privada i pública en el primer peer. Executa les següents comandes amb privilegis d’administrador:
Generate the private and public keys in the first peer. Run the following commands with administrator privileges:
Fes el mateix en el segon peer:
Utilitza la següent configuració en el primer peer (reemplaça les claus i les adreces IP segons sigui necessari):
En el fitxer YAML anterior, key és la clau privada del primer peer i public és la clau pública del segon peer. endpoint és l’adreça IP del segon peer.
Utilitza la següent configuració en el segon peer:
En el fitxer YAML anterior, key és la clau privada del segon peer i public és la clau pública del primer peer. endpoint és l’adreça IP del primer peer.
Debug
https://www.procustodibus.com/blog/2023/05/troubleshooting-wireguard-with-tcpdump/