= 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]:
* Address : l'adresse ip du serveur dans le tunnel VPN.
* SaveConfig : permet d'enregistrer le configuration du serveur à la fermeture de celui ci.
* ListenPort : C'est le port sur lequel Wireguard écoute les connexions entrantes.
* PrivateKey : La clé privé du serveur est à mettre ici.
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]
* PublicKey : La clé publique du client est à mettre ici.
* AllowedIPs : C'est l'IP avec laquelle le client va se déclarer en se connectant. Elle doit faire partie du tunnel VPN.
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]:
* Address : c'est l'adresse que va prendre le client sur le tunnel VPN. Cette adresse doit etre déclaré sur le serveur dans la section [Peer].
* PrivateKey : C'est la clé privé du client.
* DNS : c'est l'adresse du serveur DNS qui servira à résoudre les noms de domaines.
Section [Peer]
* PublicKey : C'est la clé publique du serveur.
* AllowedIPs : C'est l'adresse du réseau VPN qu'on cherche à joindre.
* Endpoint : Il faut mettre ici le nom de domaine ou l'adresse IP publique du réseau dans lequel le serveur se trouve.
* PersistentKeepalive : permet de contacter régulièrement le serveur pour maintenir le tunnel ouvert. Ici toutes les 25 secondes.
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]