« Kit de dépannage » : différence entre les versions

De Wiki de Mémoire Vive
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 6 : Ligne 6 :


- Trois machines : M1 (sur RL1), M2 (sur RL2), et un serveur intermédiaire accessible depuis Internet.
- Trois machines : M1 (sur RL1), M2 (sur RL2), et un serveur intermédiaire accessible depuis Internet.
- WireGuard installé sur toutes les machines.
- WireGuard installé sur toutes les machines.
- Accès administrateur sur toutes les machines.
- Accès administrateur sur toutes les machines.


Ligne 28 : Ligne 26 :
[Peer]
[Peer]
PublicKey = <clé publique de M1>
PublicKey = <clé publique de M1>
AllowedIPs = 10.0.0.2/32
AllowedIPs = 10.0.0.2/32, 192.168.1.0/24


[Peer]
[Peer]
Ligne 58 : Ligne 56 :
PublicKey = <clé publique du serveur intermédiaire>
PublicKey = <clé publique du serveur intermédiaire>
Endpoint = <adresse publique du serveur intermédiaire>:51820
Endpoint = <adresse publique du serveur intermédiaire>:51820
AllowedIPs = 10.0.0.0/24
AllowedIPs = 10.0.0.0/24, 192.168.1.0/24
PersistentKeepalive = 25
PersistentKeepalive = 25
</pre>
</pre>
Ligne 66 : Ligne 64 :
sudo wg-quick up wg0
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
sudo systemctl enable wg-quick@wg0
</pre>
# Activez l'IP forwarding :
<pre>
sudo sysctl -w net.ipv4.ip_forward=1
</pre>
# Configurez les règles NAT :
<pre>
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
</pre>
</pre>


Ligne 112 : Ligne 98 :
</pre>
</pre>


== Étape 4 : Application Flask pour lister les Machines Connectées ==
== É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 :
# Créez une application Flask pour scanner le réseau et lister les machines connectées :
<pre>
<pre>
from flask import Flask, render_template_string
from flask import Flask, render_template_string
Ligne 142 : Ligne 128 :
@app.route('/')
@app.route('/')
def index():
def index():
     ip_range = "192.168.1.0/24" # Remplacez par votre plage IP
     ip_range = "192.168.1.0/24"
     devices = scan_network(ip_range)
     devices = scan_network(ip_range)


Ligne 155 : Ligne 141 :
if __name__ == '__main__':
if __name__ == '__main__':
     app.run(host='0.0.0.0', port=5000)
     app.run(host='0.0.0.0', port=5000)
</pre>


# Instructions :
- Installez les dépendances :
<pre>
pip install flask scapy
</pre>
- Exécutez l'application Flask :
<pre>
python app.py
</pre>
- Accédez à l'interface web via ''http://<adresse_de_M1>:5000''.
== Étape 5 : Configuration de l'IP Forwarding et des Règles NAT sur M1 ==
# Activez l'IP forwarding :
<pre>
sudo sysctl -w net.ipv4.ip_forward=1
</pre>
# Pour rendre cette configuration permanente, ajoutez ou modifiez la ligne suivante dans ''/etc/sysctl.conf'' :
<pre>
net.ipv4.ip_forward = 1
</pre>
# Configurez les règles NAT :
<pre>
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
</pre>
</pre>


== Conclusion ==
== 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.
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 une application Flask.

Version du 12 février 2025 à 15:36

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

  1. Installez WireGuard sur le serveur intermédiaire.
  2. Générez les clés WireGuard :
wg genkey | tee privatekey | wg pubkey > publickey
  1. 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, 192.168.1.0/24

[Peer]
PublicKey = <clé publique de M2>
AllowedIPs = 10.0.0.3/32
  1. Activez WireGuard :
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

Étape 2 : Configuration de M1

  1. Installez WireGuard sur M1.
  2. Générez les clés WireGuard :
wg genkey | tee privatekey | wg pubkey > publickey
  1. 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, 192.168.1.0/24
PersistentKeepalive = 25
  1. Activez WireGuard :
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

Étape 3 : Configuration de M2

  1. Installez WireGuard sur M2.
  2. Générez les clés WireGuard :
wg genkey | tee privatekey | wg pubkey > publickey
  1. 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, 192.168.1.0/24
PersistentKeepalive = 25
  1. Activez WireGuard :
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
  1. 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

  1. Créez une application Flask pour scanner le réseau et lister les machines connectées :
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"
    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)
  1. Instructions :

- Installez les dépendances :

pip install flask scapy

- Exécutez l'application Flask :

python app.py

- Accédez à l'interface web via http://<adresse_de_M1>:5000.

Étape 5 : Configuration de l'IP Forwarding et des Règles NAT sur M1

  1. Activez l'IP forwarding :
sudo sysctl -w net.ipv4.ip_forward=1
  1. Pour rendre cette configuration permanente, ajoutez ou modifiez la ligne suivante dans /etc/sysctl.conf :
net.ipv4.ip_forward = 1
  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

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 une application Flask.