= 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]