| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| configurer_un_vpn_wireguard_site-a-site [2023/07/20 21:30] – superadmin | configurer_un_vpn_wireguard_site-a-site [2023/09/11 16:50] (Version actuelle) – [Mise en place] superadmin |
|---|
| Plus précisément, on établira une liaison confidentielle entre deux machines distantes sous Alma Linux (qu'on nommera ici "les serveurs"), cachées derrière un NAT et ayant accès à un réseau WAN par le biais d'un routeur. Ce WAN simulera Internet ou un quelconque réseau public n'étant pas sous contrôle du propriétaire des deux LANs (donc potentiellement sujet aux attaques). | Plus précisément, on établira une liaison confidentielle entre deux machines distantes sous Alma Linux (qu'on nommera ici "les serveurs"), cachées derrière un NAT et ayant accès à un réseau WAN par le biais d'un routeur. Ce WAN simulera Internet ou un quelconque réseau public n'étant pas sous contrôle du propriétaire des deux LANs (donc potentiellement sujet aux attaques). |
| |
| La liaison Wireguard permettra aux serveurs d'être joignables sur un même réseau virtuel comme si elles étaient branchées physiquement l'une à l'autre, sauf qu'en réalité les paquets transiteront via le WAN de façon fiable et sécurisée. | La liaison Wireguard permettra aux serveurs d'être joignables sur un même réseau virtuel comme si elles étaient branchées physiquement l'une à l'autre, sauf qu'en réalité les paquets transiteront via le WAN de façon sécurisée. |
| |
| ===== Topologie du lab ===== | ===== Topologie du lab ===== |
| * 2 routeurs quelconques | * 2 routeurs quelconques |
| |
| ===== Mise en place ===== | ===== Instructions ===== |
| |
| <A refaire> | |
| ==== Installation de Wireguard ==== | ==== Installation de Wireguard ==== |
| |
| Pour les systèmes basés sur debian : | Pour les systèmes basés sur debian : |
| |
| <code>apt install wireguard </code> | <code>apt install wireguard</code> |
| |
| Pour les systèmes basés sur Redhat : | Pour les systèmes basés sur Redhat : |
| Pour les afficher : | Pour les afficher : |
| |
| <code>cat privatekey publickey </code> | <code>cat privatekey publickey</code> |
| |
| ==== Configuration côté serveur ==== | ==== Configuration côté serveur ==== |
| Address=10.8.0.65/30 #adresse du serveur dans le tunnel | Address=10.8.0.65/30 #adresse du serveur dans le tunnel |
| ListenPort = 51820 #port de connexion au VPN | ListenPort = 51820 #port de connexion au VPN |
| PrivateKey = 6GZQ4Xus5lrJK9UxRASMCwoRuXw9HHhya0KA771h2XI= | PrivateKey = 6GZQ4Xus5lrJK9UxRASMCwoRuXw9HHhya0KA771h2XI= #clé privée de la machine |
| | SaveConfig = true #Garde en mémoire et protège la configuration le temps que l'interface est active |
| | |
| | [Peer] |
| | PublicKey = sXFf8WX9sr8MwinKKotNgMSB44R2eooSfFFXi+XQeB4= #clé publique du client |
| | AllowedIPs = 10.8.0.66/32 #adresses IP autorisées à communiquer avec la machine (ici le client uniquement) |
| </code> | </code> |
| |
| Lancer le service Wireguard : | Activer l'interface décrite dans la configuration : |
| <code>systemctl start wg-quick@wg0</code> | <code>wg-quick up wg0</code> |
| |
| Vérifier l'état du service pour savoir si notre configuration fonctionne : | Pour désactiver l'interface : |
| <code>systemctl status wg-quick@wg0</code> | </code>wg-quick down wg0</code> |
| | |
| | Vérifier si l'interface réseau virtuelle a bien été créée : |
| | <code>ip a</code> |
| | |
| | {{ ::wg1.png?800 |L'interface wg0 parmi les interfaces réseau du système}} |
| | |
| | On peut aussi utiliser la commande suivante pour afficher des informations supplémentaires sur l'interface virtuelle : |
| | |
| | <code>wg show wg0</code> |
| | |
| | {{ ::wg2.png?800 |Informations sur l'interface wg0}} |
| |
| ==== Configuration côté client ==== | ==== Configuration côté client ==== |
| <code> | <code> |
| [Interface] | [Interface] |
| Address=10.8.0.66/30 #adresse du serveur dans le tunnel | Address=10.8.0.66/30 #adresse du client dans le tunnel |
| ListenPort = 51820 #port de connexion au VPN | ListenPort = 51820 #port de connexion au VPN |
| PrivateKey = eJ1bmItHSHONKRPYykaFsD/NtWC7fkpLM0kwe/OtcGc= | PrivateKey = eJ1bmItHSHONKRPYykaFsD/NtWC7fkpLM0kwe/OtcGc= #clé privée de la machine |
| | |
| | |
| | [pair] |
| | PublicKey = CE4ETuboYOxGdTehYES1NaN1Z32kRtdYAQn3glB34Xg= #clé publique du serveur |
| | AllowedIPs = 0.0.0.0/0,::/0 #adresses IP autorisées à communiquer avec la machine (ici le client uniquement) |
| | Endpoint = 172.16.10.1:51820 #adresse IP du serveur |
| </code> | </code> |
| |
| | :!: Ici la configuration restreint le client à communiquer avec l'IP du serveur, mais on aurait pu mettre ''0.0.0.0/0,::/0'' pour l'autoriser à communiquer avec n'importe quelle IPv4 ou IPv6 à travers le tunnel (à utiliser dans le cas où le serveur est également un routeur permettant l'accès à Internet). Cette directive permet de filtrer avec qui la machine peut communiquer à travers le tunnel, ce qui constitue une première sécurité. |
| | |
| | :!: La directive ''Endpoint'' est facultative. Elle est notamment utile lorsque le client peut-être amené à avoir une IP dynamique. Entre deux machines dont l'IP est statique, elle n'est pas nécessaire. |
| ===== Sources ===== | ===== Sources ===== |
| |
| 📕 Linux Pratique hors série n°56 | 📕 Linux Pratique hors série n°56 |
| | |
| | [[https://www.it-connect.fr/mise-en-place-de-wireguard-vpn-sur-debian-11/|IT-Connect : Mise en place de Wireguard]] |