Table des matières

Wireguard

Wireguard est un logiciel de VPN. Configuration pour un serveur debian et un client Mageia.

Configuration Serveur

Configuration Wireguard

Première étape, installation sur le serveur :

[root@localhost ~]# apt-get install wireguard

Création des clés privé/publique :

[root@localhost /etc/wireguard/]# wg genkey | tee serveur-private.key | wg pubkey > serveur-public.key

Configuration coté serveur : Créer le fichier /etc/wireguard/wg0.conf il sera le fichier de config principal. C'est la qu'on déclarera aussi les clients autorisés à venir se connecter.

[root@localhost /etc/wireguard/]# vim wg0.conf

Celui ci devra comporter les lignes suivantes :

[Interface]
Address = 192.168.110.12/24
SaveConfig = true
ListenPort = 51820
PrivateKey = [Cle_prive_serveur]

# User 1
[Peer]
PublicKey = [Cle_publique_user_1]
AllowedIPs = 192.168.110.2/32

# User 2
[Peer]
PublicKey = [Cle_publique_user_2]
AllowedIPs = 192.168.110.42/32

Section [Interface]:

L'option SaveConfig impose d'arreter Wireguard si on veut modifier la configuration. Wireguard écrasera le fichier avec sa config actuelle lorsqu'on l'arrete.

Section [Peer]

Une section [Peer] est à déclarer pour chaque dispositif voulant se connecter au VPN.

Faire attention à ce que le fichier de conf ne soit accessible qu'a root :

[root@localhost /etc/wireguard/]# chmod 600 wg0.conf

Pour démarrer et arreter Wireguard on utilisera les commandes suivantes :

[root@localhost ~]# wg-quick up wg0
[root@localhost ~]# wg-wuick down wg0

Pour permettre au serveur de se lancer tout seul au démarrage du serveur utilisez le commande suivante :

[root@localhost ~]# systemctl enable wg-quick@wg0.service

Configuration Firewall

Il va falloir mettre en place le routage du tunnel VPN vers le réseau physique de la machine. Pour cela on va utiliser ufw.

Si ce n'est pas déjà fait installez ufw :

[root@localhost ~]# apt-get install ufw

Si vous utilisez ssh pour vous connecter au serveur, commencez par permettre à ssh de passer :

[root@localhost ~]# ufw allow 22/tcp

On permet ensuite au paquet du VPN de passer :

[root@localhost ~]# ufw allow 51820/udp

Puis on édite le fichier /etc/ufw/before.rules pour y ajouter à la fin le paragraphe suivant :

# NAT - IP masquerade
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o enp0s25 -j MASQUERADE

COMMIT

Remplacer enp0s25 par le nom de votre propre interface réseau physique. Pour la trouver vous pouvez utiliser la commande :

[root@localhost ~]# ifconfig

Ensuite on ajoute dans la table *filter les lignes suivantes :

-A ufw-before-forward -s 192.168.0.0/24 -j ACCEPT
-A ufw-before-forward -d 192.168.0.0/24 -j ACCEPT
-A ufw-before-forward -s 192.168.110.0/24 -j ACCEPT
-A ufw-before-forward -d 192.168.110.0/24 -j ACCEPT
Pour qu'elles soit bien prises en compte faire attention à ce que ces lignes soit entre la ligne *filter et la ligne COMMIT associée

On peut maintenant enregistrer et fermer /etc/ufw/before.rules puis on active le pare feu :

[root@localhost ~]# ufw enable
[root@localhost ~]# ufw reload

Configuration Client

Pour la configuration du client, on commence par générer un jeu de clé privé/publique :

[root@localhost /etc/wireguard/]# wg genkey | tee serveur-private.key | wg pubkey > serveur-public.key

Sur le client, créer le fichier /etc/wireguard/wg0.conf et y mettre les lignes suivantes :

[Interface]
Address = 192.168.110.43/24
PrivateKey = [Cle_prive_user_1]
DNS = 8.8.8.8

[Peer]
PublicKey = [Cle_publique_serveur]
AllowedIPs = 192.168.110.0/24
Endpoint = NomDeDomaineOuIpPubliqueDuServeur:51820
PersistentKeepalive = 25

Section [Interface]:

Section [Peer]

Faire attention à ce que le fichier de conf ne soit accessible qu'a root :

[root@localhost /etc/wireguard/]# chmod 600 wg0.conf

Pour démarrer et arreter Wireguard on utilisera les commandes suivantes :

[root@localhost ~]# wg-quick up wg0
[root@localhost ~]# wg-wuick down wg0

Ajoutez un alias dans le .bashrc de root si besoin.

Bien penser à ouvrir le port 51820 sur le routeur du réseau du serveur, et à rediriger le flux de ce port sur l'adresse ip de la carte physique du serveur.
La clé publique et l'adresse IP sont à déclarer dans le fichier de configuration du serveur dans la section [Peer]