VPN Wireguard
Pour limiter l’accès à notre serveur, il est possible d’y déployer un VPN, le rendant accessible uniquement à ceux autorisés.
Pour commencer, on installe Wireguard avec apt :
sudo apt update
sudo apt install wireguard –y
Ensuite, pour authentifier les clients, WirGuard a besoin d’une paire de clés publiquee/privée qu’on génère comme cela :
sudo mkdir -p /etc/wireguard
sudo sh -c "umask 077 && wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key"
Puis, on crée /etc/wireguard/wg0.conf, le fichier de configuration du serveur WireGuard :
Addressest la plage d’IPs données aux clients connectés au VPN ;ListenPortest le port utilisé par lees clients pour se connecter ;PrivateKeyest le contenu de/etc/wireguard/server_private.key;PostUpetPostDownsont les commandes à exécuter au démarrage et à l’arrêt de WireGuard.
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <contenu de /etc/wireguard/server_private.key>
PostUp = ufw route allow in on wg0 out on $(ip -o -f inet route show default | awk '{print $5}') ; iptables -t nat -A POSTROUTING -o $(ip -o -f inet route show default | awk '{print $5}') -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o $(ip -o -f inet route show default | awk '{print $5}') -j MASQUERADE
SaveConfig = true
Ici, l’interface réseau utilisée est celle par défaut, si ce n’est pas la bonne il faudra la remplacer par une des interfaces visibles avec
ip a.
Une fois le serveur WireGuard configuré, il faut :
- Autoriser notre port de connexion avec
sudo ufw allow 51820/udp; - Activer le routage IP en décommentant la ligne suivante dans
/etc/sysctl.conf;net.ipv4.ip_forward=1 - Appliquer ces changements en exécutant ces commandes.
$ sudo ufw reload $ sudo sysctl –p
Maintenant, il est temps d’autoriser un client à se connecter à notre serveur. On commence par générer une paire de clés que le client doit garder :
$ mkdir -p ~/.wireguard
$ umask 077 && wg genkey | tee ~/.wireguard/client_private.key | wg pubkey > ~/.wireguard/client_public.key
Il faut exécuter ces commandes côté client et donc installer
wg(WireGuard) côté client.
Une fois toutes les informations en notre possession, on crée /etc/wireguard/wg0.conf côté client :
[Interface]
PrivateKey = <contenu de ~/.wireguard/client_private.key>
Address = 10.8.0.2/24
DNS = 9.9.9.9
[Peer]
PublicKey = <contenu de /etc/wireguard/server_public.key>
Endpoint = <ip publique du serveur>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Maintenant, côté serveur, on autorise notre client en ajoutant ces lignes à /etc/wireguard/wg0.conf :
[Peer]
PublicKey = <contenu de ~/.wireguard/client_public.key>
AllowedIPs = 10.8.0.2/32
Enfin, toujours coté serveur, on active notre service WireGuard :
sudo systemctl enable --now wg-quick@wg0
Maintenant que tout est configuré, on peut se connecter à notre serveur :
$ sudo wg-quick up wg0 # Se connecter
$ sudo wg # Vérifier la connexion
$ sudo wg-quick down wg0 # Se déconnecter
Si le serveur est connecté à une box, il sera nécessaire de rediriger le port 51820 de la box vers le port 51280 du serveur.