Skip to content

Commit cfc8435

Browse files
BLOG: article sur les VPN + tuto Wireguard
1 parent 09a5544 commit cfc8435

File tree

3 files changed

+366
-1
lines changed

3 files changed

+366
-1
lines changed
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# 🔐 Fonctionnement d’un VPN & Utilité en Infrastructure Réseau
2+
3+
## 🧠 Qu’est-ce qu’un VPN (Virtual Private Network) ?
4+
5+
Un VPN est une **connexion chiffrée** entre deux points (par exemple, un poste client et un réseau privé d’entreprise), qui permet de **transporter des données en toute sécurité via un réseau public comme Internet**.
6+
7+
> 🎯 Objectif principal : créer un tunnel sécurisé entre deux entités réseau.
8+
9+
---
10+
11+
## 🧩 Composants principaux
12+
13+
- **Client VPN** : logiciel installé sur un poste.
14+
- **Serveur VPN** : équipement ou service qui reçoit et déchiffre le trafic.
15+
- **Tunnel VPN** : canal chiffré entre le client et le serveur.
16+
- **Protocole VPN** : OpenVPN, IPSec, WireGuard...
17+
18+
---
19+
20+
## 🛡️ Utilité dans une infrastructure
21+
22+
### 🏢 Pour une entreprise :
23+
- Accès sécurisé aux ressources internes depuis l'extérieur
24+
- Connexion entre plusieurs sites (VPN site-à-site)
25+
- Sécurisation des données en transit
26+
27+
### ☁️ Cloud / Hybride :
28+
- Relier un réseau on-premise à un VPC cloud
29+
- Accès sécurisé aux ressources cloud privées
30+
31+
---
32+
33+
## 📈 Exemple 1 : VPN client → entreprise
34+
35+
🔍 Flux :
36+
37+
1. Le client VPN s’authentifie.
38+
1. Un tunnel chiffré est établi.
39+
1. Le trafic est redirigé via le tunnel.
40+
1. L’utilisateur accède au réseau interne.
41+
42+
```mermaid
43+
flowchart TD
44+
A[Ordinateur distant] --> B[Client VPN]
45+
B -- Tunnel chiffré --> C[Internet]
46+
C --> D[Pare-feu / Routeur VPN]
47+
D --> E[Serveur interne]
48+
```
49+
50+
## 📈 Exemple 2 : VPN site-à-site (entre 2 sites)
51+
52+
🔍 Flux :
53+
54+
1. Tunnel IPSec entre les routeurs.
55+
1. Accès direct entre les réseaux internes.
56+
57+
```mermaid
58+
flowchart TD
59+
subgraph SiteA [Site A - Siège]
60+
A1[LAN 192.168.1.0/24]
61+
A2[Routeur VPN A]
62+
A1 --> A2
63+
end
64+
65+
subgraph Internet
66+
I1
67+
end
68+
69+
subgraph SiteB [Site B - Filiale]
70+
B1[LAN 192.168.2.0/24]
71+
B2[Routeur VPN B]
72+
B1 --> B2
73+
end
74+
75+
A2 -- Tunnel IPSec --> I1
76+
B2 -- Tunnel IPSec --> I1
77+
```
78+
79+
## 🔒 Protocoles VPN courants
80+
81+
| Protocole | Type | Avantages |
82+
|---------------|----------------|--------------------------------------|
83+
| IPSec | Site-to-site | Standard, sécurisé, matériel supporté |
84+
| OpenVPN | Remote access | Sécurisé, open-source, flexible |
85+
| WireGuard | Remote access | Léger, rapide, moderne |
86+
| SSL VPN | Remote access | Utilisable dans navigateur |
87+
88+
---
89+
90+
## 🔧 Exemple : Télétravail
91+
92+
```mermaid
93+
flowchart TD
94+
A[Utilisateur à domicile] --> B[Client OpenVPN]
95+
B -- Tunnel SSL --> C[Internet]
96+
C --> D[Pare-feu VPN]
97+
D --> E[Intranet / NAS / Apps internes]
98+
```
99+
100+
### 🔍 Fonctionnement :
101+
- Authentification du client
102+
- Tunnel SSL sécurisé
103+
- Accès aux ressources internes
104+
105+
---
106+
107+
## ⚠️ Points de vigilance
108+
109+
- **Performance** : latence induite par le chiffrement.
110+
- **Sécurité** : bien définir les règles d’accès.
111+
- **Maintenance** : surveillance des certificats et connexions.
112+
113+
---
114+
115+
## 🛠️ Outils VPN
116+
117+
### Logiciels :
118+
- pfSense / OPNsense
119+
- OpenVPN Access Server
120+
- StrongSwan (IPSec)
121+
- WireGuard
122+
123+
### Cloud :
124+
- AWS VPN Gateway
125+
- Azure VPN Gateway
126+
- GCP Cloud VPN
127+

MyWebSite/docs/blog/posts/00_vision_and_objectives.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
draft: false
3-
date: 2024-07-11
3+
date: 2025-07-11
44
categories:
55
- Divers
66
comments: true
Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
2+
---
3+
draft: true
4+
date: 2025-08-01
5+
categories:
6+
- INFRASTRUCTURE
7+
- CYBER
8+
comments: true
9+
---
10+
11+
# 🚀 Déploiement complet d’un VPN WireGuard (avec automatisation & Docker)
12+
13+
Ce tutoriel vous guide étape par étape pour déployer un **VPN WireGuard sécurisé** avec :
14+
15+
- Scripts d’installation en **Bash et Python**
16+
- Génération automatique des clés
17+
- Configuration serveur et client
18+
- Génération de QR code pour mobile
19+
- 🚀 Bonus : déploiement avec Docker
20+
21+
---
22+
23+
## 📦 Prérequis
24+
25+
- Serveur Linux (Ubuntu/Debian/CentOS)
26+
- Accès root (`sudo`)
27+
- Port UDP 51820 ouvert
28+
- Python 3, Bash
29+
- Docker (pour partie Docker)
30+
31+
---
32+
33+
## 1. 🔧 Installation de WireGuard (Bash)
34+
35+
```bash
36+
#!/bin/bash
37+
set -e
38+
sudo apt update && sudo apt upgrade -y
39+
sudo apt install -y wireguard qrencode
40+
sudo mkdir -p /etc/wireguard
41+
sudo chmod 700 /etc/wireguard
42+
```
43+
44+
---
45+
46+
## 2. 🔑 Génération des clés serveur et client
47+
48+
```bash
49+
#!/bin/bash
50+
set -e
51+
cd /etc/wireguard
52+
umask 077
53+
54+
wg genkey | tee privatekey | wg pubkey > publickey
55+
mkdir -p clients
56+
CLIENT="client1"
57+
wg genkey | tee clients/$CLIENT-privatekey | wg pubkey > clients/$CLIENT-publickey
58+
```
59+
60+
---
61+
62+
## 3. ⚙️ Configuration serveur `wg0.conf`
63+
64+
```bash
65+
#!/bin/bash
66+
cd /etc/wireguard
67+
cat <<EOF | sudo tee wg0.conf
68+
[Interface]
69+
PrivateKey = $(cat privatekey)
70+
Address = 10.10.10.1/24
71+
ListenPort = 51820
72+
SaveConfig = true
73+
74+
[Peer]
75+
PublicKey = $(cat clients/client1-publickey)
76+
AllowedIPs = 10.10.10.2/32
77+
EOF
78+
79+
chmod 600 wg0.conf
80+
```
81+
82+
---
83+
84+
## 4. 📜 Génération configuration client (Python)
85+
86+
```python
87+
import os
88+
89+
client = "client1"
90+
client_dir = "/etc/wireguard/clients"
91+
priv = open(f"{client_dir}/{client}-privatekey").read().strip()
92+
server_pub = open("/etc/wireguard/publickey").read().strip()
93+
server_ip = "YOUR.SERVER.IP"
94+
95+
conf = f"""[Interface]
96+
PrivateKey = {priv}
97+
Address = 10.10.10.2/24
98+
DNS = 1.1.1.1
99+
100+
[Peer]
101+
PublicKey = {server_pub}
102+
Endpoint = {server_ip}:51820
103+
AllowedIPs = 0.0.0.0/0
104+
PersistentKeepalive = 25
105+
"""
106+
107+
with open(f"{client_dir}/{client}.conf", "w") as f:
108+
f.write(conf)
109+
```
110+
111+
---
112+
113+
## 5. ✅ Activer et démarrer WireGuard
114+
115+
```bash
116+
sudo systemctl enable wg-quick@wg0
117+
sudo systemctl start wg-quick@wg0
118+
```
119+
120+
---
121+
122+
## 6. 📲 Génération QR Code client
123+
124+
```bash
125+
qrencode -t ansiutf8 < /etc/wireguard/clients/client1.conf
126+
```
127+
128+
---
129+
130+
## 7. 🔁 Script tout-en-un `deploy_wireguard.sh`
131+
132+
```bash
133+
#!/bin/bash
134+
set -e
135+
WG_DIR="/etc/wireguard"
136+
CLIENT="client1"
137+
apt update && apt install -y wireguard qrencode
138+
139+
mkdir -p $WG_DIR/clients && cd $WG_DIR && umask 077
140+
wg genkey | tee privatekey | wg pubkey > publickey
141+
wg genkey | tee clients/$CLIENT-privatekey | wg pubkey > clients/$CLIENT-publickey
142+
143+
cat <<EOF > $WG_DIR/wg0.conf
144+
[Interface]
145+
PrivateKey = $(cat privatekey)
146+
Address = 10.10.10.1/24
147+
ListenPort = 51820
148+
SaveConfig = true
149+
150+
[Peer]
151+
PublicKey = $(cat clients/$CLIENT-publickey)
152+
AllowedIPs = 10.10.10.2/32
153+
EOF
154+
155+
cat <<EOF > $WG_DIR/clients/$CLIENT.conf
156+
[Interface]
157+
PrivateKey = $(cat clients/$CLIENT-privatekey)
158+
Address = 10.10.10.2/24
159+
DNS = 1.1.1.1
160+
161+
[Peer]
162+
PublicKey = $(cat publickey)
163+
Endpoint = YOUR.SERVER.IP:51820
164+
AllowedIPs = 0.0.0.0/0
165+
PersistentKeepalive = 25
166+
EOF
167+
168+
qrencode -t ansiutf8 < $WG_DIR/clients/$CLIENT.conf
169+
systemctl enable wg-quick@wg0
170+
systemctl start wg-quick@wg0
171+
```
172+
173+
---
174+
175+
## 🐳 Déploiement avec Docker (optionnel)
176+
177+
### 📁 Structure du projet
178+
179+
```
180+
wireguard-docker/
181+
├── docker-compose.yml
182+
├── config/
183+
│ └── wg0.conf
184+
├── entrypoint.sh
185+
```
186+
187+
### 📜 `docker-compose.yml`
188+
189+
```yaml
190+
version: "3.8"
191+
services:
192+
wireguard:
193+
image: linuxserver/wireguard
194+
container_name: wireguard
195+
cap_add:
196+
- NET_ADMIN
197+
- SYS_MODULE
198+
environment:
199+
- PUID=1000
200+
- PGID=1000
201+
- SERVERURL=YOUR.SERVER.IP
202+
- SERVERPORT=51820
203+
- PEERS=client1
204+
- PEERDNS=1.1.1.1
205+
- INTERNAL_SUBNET=10.10.10.0
206+
volumes:
207+
- ./config:/config
208+
- /lib/modules:/lib/modules
209+
ports:
210+
- 51820:51820/udp
211+
restart: unless-stopped
212+
```
213+
214+
### 📝 `entrypoint.sh` (optionnel si génération custom)
215+
216+
```bash
217+
#!/bin/bash
218+
docker-compose up -d
219+
```
220+
221+
---
222+
223+
## ✅ Vérification
224+
225+
```bash
226+
sudo wg show
227+
```
228+
229+
---
230+
231+
## 🎯 Résultat
232+
233+
- Serveur WireGuard actif sur port UDP 51820
234+
- Client prêt à se connecter avec fichier `.conf` ou QR code
235+
- Déploiement automatisé en Bash et Python
236+
237+
---
238+

0 commit comments

Comments
 (0)