commit bb46ceececfc0455e1f5c1530c5a5ab62154513d Author: GregLebreton Date: Sat Jul 16 21:10:06 2022 +0200 push diff --git a/README.md b/README.md new file mode 100644 index 0000000..34635eb --- /dev/null +++ b/README.md @@ -0,0 +1,268 @@ +# WIREGUARD-VPN + +## INSTALLATION ET CONFIGURATION SERVEUR (Linux): + +### Update et installation: + +```bash +sudo apt update +sudo apt install wireguard +``` + +### Création des clefs: + +```bash +wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey +``` + +### Création de la configuration serveur: + +```bash +sudo nano /etc/wireguard/wg0.conf +``` + +Dans ce fichier de configuration, CLEF_PRIVEE_SERVEUR et INTERFACE_RESEAU sont à renseigner (remplacer): + +```bash +[Interface] +# Adresse interne du serveur +Address = 10.0.0.1/24 +ListenPort = 51820 +# Clef privée du serveur +PrivateKey = 'CLEF_PRIVEE_SERVEUR' + +# Routing vers l'interface réseau +PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o 'INTERFACE_RESEAU' -j MASQUERADE +PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o 'INTERFACE_RESEAU' -j MASQUERADE + +[Peer] +# Ajouter les clients +PublicKey = 'CLE_PUBLIQUE_CLIENT_1' +AllowedIPs = 10.0.0.2/32 + +[Peer] +# Ajouter les clients +PublicKey = 'CLE_PUBLIQUE_CLIENT_2' +AllowedIPs = 10.0.0.3/32 +``` + +La 'CLEF_PRIVEE_SERVEUR' s'obtient avec la commande: + +```bash +cat /etc/wireguard/privatekey +``` + +L' 'INTERFACE_RESEAU' s'obtient avec la commande: + +```bash +ip -o -4 route show to default | awk '{print $5}' +``` + +Enfin, on protège l'accès aux fichiers sensibles: + +```bash +sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf} +``` + +Configuration de "l'IP forwarding": + +```bash +sudo nano /etc/sysctl.conf +``` + +```bash +net.ipv4.ip_forward=1 +``` + +Vérifier que le fichier /proc/sys/net/ipv4/ip_forward contienne le chiffre 1: + +```bash +cat /proc/sys/net/ipv4/ip_forward +1 +``` + + +### Démarrer le serveur: + +```bash +sudo wg-quick up wg0 +``` + +Pour activer le serveur au démarrage du système: + +```bash +sudo systemctl enable wg-quick@wg0.service +``` + +**NOTE: +* Si le serveur se trouve dérrière un routeur ou box internet, ne pas oublier de faire la redirection de port (ici dans l'exemple, le 51820) de la box vers l-IP du serveur (sur le réseau interne) +- L'adresse publique du serveur devient alors celle du routeur/box dans la configuration client: + Endpoint = SERVER_IP_ADDRESS:51820 + + +## INSTALLATION ET CONFIGURATION CLIENT: + +### LINUX: + +#### Update et installation: + +```bash +sudo apt update +sudo apt install wireguard +``` + +#### Création des clefs: + +```bash +wg genkey | sudo tee /etc/wireguard/clients/clientprivatekey | wg pubkey | sudo tee /etc/wireguard/clients/clientpublickey +``` + +#### création de la configuration: + +```bash +nano /etc/wireguard/client.conf +``` + + +```bash +/etc/wireguard/client.conf + +[Interface] +# Clef privée du client +PrivateKey = 'CLIENT_PRIVATE_KEY' +# Adresse interne du client (en cohérence avec l'IP interne du serveur) +Address = 10.0.0.2/24 +DNS = 8.8.8.8 + +[Peer] +# Clef publique du serveur +PublicKey = 'SERVER_PUBLIC_KEY' +# Adresse IP publique du serveur +Endpoint = 'SERVER_IP_ADDRESS':51820 +AllowedIPs = 0.0.0.0/0 +``` + +#### Configuration de "l'IP forwarding": + +```bash +sudo nano /etc/sysctl.conf +``` + +```bash +/etc/sysctl.conf + +net.ipv4.ip_forward=1 +``` + +#### Sécurisation des fichiers sensibles: +```bash +sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf} +``` + +#### Pour démarrer la connection: +```bash +sudo wg-quick up wg0 +``` + +#### Installation d'un plugin pour Gnome + +- Installer l'extension [Wireguard Indicator, by Gregos-Winus](https://extensions.gnome.org/extension/3160/wireguard-indicator/) +- Suivez les indications données en cliquant sur l'applet en haut à droite. + +### WINDOWS: + +#### Télécharger l'application à l'adresse: + +https://download.wireguard.com/windows-client/wireguard-installer.exe + +#### Créer une nouvelle config: + +![image](docs/win1.png) + +![image](docs/win2.png) + +#### Configuration: + +Appliquer la configuration suivante en renseignant CLEF-PRIVEE_CLIENT, IP_PUBLIQUE_SERVEUR et CLEF_PUBLIQUE_SERVEUR: + +```bash +/etc/wireguard/clients/client.conf + +[Interface] +PrivateKey = 'CLIENT_PRIVATE_KEY' +Address = 10.0.0.2/24 + +[Peer] +PublicKey = 'SERVER_PUBLIC_KEY' +Endpoint = 'SERVER_IP_ADDRESS':51820 +AllowedIPs = 0.0.0.0/0 +``` + +* Note: La port et les adresses IP internes au réseau peuvent également être modifiées (en cohérence avec la configuration du serveur) + +### Ajouter un client: + +Commande à effectuer SUR LE SERVEUR: + +```bash +sudo wg set wg0 peer 'CLEF_PUBLIQUE_CLIENT' allowed-ips 'IP_INTERNE_CLIENT' +``` + +* NOTE: Après l'arret du serveur, l'ajout du client est réinitialisé. Privilégier l'ajout du client dans la configuration du serveur au niveau de "[Peer]" + +La CLEF_PUBLIQUE_CLIENT s'obtient SUR LE CLIENT avec la commande: + +```bash +sudo cat /etc/wireguard/publickey +``` + +Pour l'IP interne, elle doit être cohérente avec l'adresse IP interne du serveur. +Dans cet exemple, le serveur a pour IP interne 10.0.0.1 et le client 10.0.0.2 + +Après l'ajout d'un client redémarrer le serveur: + +```bash +sudo wg-quick down wg0 +sudo wg-quick up wg0 +``` + +#### Connection client Android via QRcode: + +- Commande à éffectuer sur le serveur pour afficher le QRcode: +```bash +sudo apt install qrencode +qrencode -t ansiutf8 < /etc/wireguard/clients/client.conf +``` + +![image](docs/QRcode.png) + +### Accès partage SAMBA: + +Pour accéder au partage samba d'une machine sur le même réseaux que le serveur: + +#### A) pour un client Windows: + +* Dans le barre d'adresse de l'explorateur windows, entrer l'adresse de la machine partageant du contenu via samba: + +```bash +\\ADRESSEIP.LOCALE.MACHINE.SAMBA\ +``` + +![image](docs/win3.png) + +* Entrer les acréditations (nom d'utilisateur et mot de passe de la session utilisateur) de la machine partageant le contenu samba lors de l'apparition de la fenêtre contextuelle. + + + +#### B) pour un client Linux: +* Dans l'explorateur de fichiers, choisir autre emplacements; en bas de la fenêtre, un champs de connexion serveur attend une URL, y entrer l'adresse de la machine partageant du contenu via samba: + +```bash +smb://ADRESSEIP.LOCALE.MACHINE.SAMBA/ +``` + +![image](docs/lin1.png) + +* Enfin, appuyer sur "se connecter" + +**Attention, sur Linux les slashs sont inversés par rapport à Windows.** diff --git a/docs/QRcode.png b/docs/QRcode.png new file mode 100644 index 0000000..abb7ab1 Binary files /dev/null and b/docs/QRcode.png differ diff --git a/docs/lin1.png b/docs/lin1.png new file mode 100644 index 0000000..a5cfd20 Binary files /dev/null and b/docs/lin1.png differ diff --git a/docs/win1.png b/docs/win1.png new file mode 100644 index 0000000..7e169a7 Binary files /dev/null and b/docs/win1.png differ diff --git a/docs/win2.png b/docs/win2.png new file mode 100644 index 0000000..0cd04a1 Binary files /dev/null and b/docs/win2.png differ diff --git a/docs/win3.png b/docs/win3.png new file mode 100644 index 0000000..937c40d Binary files /dev/null and b/docs/win3.png differ