Kit de dépannage
Configuration d'un Accès Sécurisé à un Réseau Local via WireGuard
Ce guide explique comment configurer un accès sécurisé à des machines sur un réseau local (RL1) en utilisant WireGuard, avec un serveur intermédiaire pour relayer la connexion.
Prérequis
- Trois machines : M1 (sur RL1), M2 (sur RL2), et un serveur intermédiaire accessible depuis Internet.
- WireGuard installé sur toutes les machines.
- Accès administrateur sur toutes les machines.
Étape 1 : Configuration du Serveur Intermédiaire
- Installez WireGuard sur le serveur intermédiaire.
- Générez les clés WireGuard :
wg genkey | tee privatekey | wg pubkey > publickey
- Créez le fichier de configuration WireGuard (/etc/wireguard/wg0.conf):
[Interface] PrivateKey = <contenu du fichier privatekey> Address = 10.0.0.1/24 ListenPort = 51820 [Peer] PublicKey = <clé publique de M1> AllowedIPs = 10.0.0.2/32 [Peer] PublicKey = <clé publique de M2> AllowedIPs = 10.0.0.3/32
- Activez WireGuard :
sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0
Étape 2 : Configuration de M1
- Installez WireGuard sur M1.
- Générez les clés WireGuard :
wg genkey | tee privatekey | wg pubkey > publickey
- Créez le fichier de configuration WireGuard (/etc/wireguard/wg0.conf):
[Interface] PrivateKey = <contenu du fichier privatekey> Address = 10.0.0.2/24 [Peer] PublicKey = <clé publique du serveur intermédiaire> Endpoint = <adresse publique du serveur intermédiaire>:51820 AllowedIPs = 10.0.0.0/24 PersistentKeepalive = 25
- Activez WireGuard :
sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0
- Activez l'IP forwarding :
sudo sysctl -w net.ipv4.ip_forward=1
- Configurez les règles NAT :
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT sudo iptables -A FORWARD -i eth0 -o wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Étape 3 : Configuration de M2
- Installez WireGuard sur M2.
- Générez les clés WireGuard :
wg genkey | tee privatekey | wg pubkey > publickey
- Créez le fichier de configuration WireGuard (/etc/wireguard/wg0.conf):
[Interface] PrivateKey = <contenu du fichier privatekey> Address = 10.0.0.3/24 [Peer] PublicKey = <clé publique du serveur intermédiaire> Endpoint = <adresse publique du serveur intermédiaire>:51820 AllowedIPs = 10.0.0.0/24 PersistentKeepalive = 25
- Activez WireGuard :
sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0
- Ajoutez une route temporaire pour accéder à M1a :
sudo ip route add 192.168.1.0/24 via 10.0.0.2
Étape 4 : Application Flask pour lister les Machines Connectées
- créer une application Flask qui exécute ce script et affiche les résultats dans une interface web. Voici un exemple :
from flask import Flask, render_template_string from scapy.all import ARP, Ether, srp import socket app = Flask(__name__) def scan_network(ip_range): arp = ARP(pdst=ip_range) ether = Ether(dst="ff:ff:ff:ff:ff:ff") packet = ether/arp result = srp(packet, timeout=3, verbose=0)[0] devices = [] for sent, received in result: devices.append({'ip': received.psrc, 'mac': received.hwsrc}) return devices def get_hostname(ip): try: return socket.gethostbyaddr(ip)[0] except socket.herror: return "N/A" @app.route('/') def index(): ip_range = "192.168.1.0/24" # Remplacez par votre plage IP devices = scan_network(ip_range) html = "<h1>Machines connectées au réseau</h1><ul>" for device in devices: hostname = get_hostname(device['ip']) html += f"<li>IP: {device['ip']}, MAC: {device['mac']}, Hostname: {hostname}</li>" html += "</ul>" return render_template_string(html) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
Conclusion
Ce guide vous permet de configurer un accès sécurisé à des machines sur un réseau local via WireGuard, en utilisant un serveur intermédiaire pour relayer la connexion. Vous pouvez également lister les machines connectées en utilisant un script Python.