v0.7.0 : instance unique, handshake ré-affiché, sudoers fiabilisé, À propos refaite
- Instance unique : un second lancement réveille l'instance active. - Autostart et reconnexion auto activés par défaut (nouvelle installation). - Page « À propos » refaite en 5 onglets (contenu séparé dans app_info.py). - Corrige le handshake/RX-TX qui ne s'affichaient plus (wg show sans élévation). - Corrige le diagnostic sudo trompeur (sondes qui ne matchaient jamais les règles). - Corrige make setup-sudoers bloqué hors session graphique (pkexec -> sudo), idempotent. - Corrige le README : Kill Switch inexistant retiré, ordre d'élévation réel documenté.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 🛡️ WGSecure (WGS)
|
||||
|
||||
🚀 v0.6.0 · 🐍 · 🪟🐧 · 🔐 MFA TOTP · 🛡️ WireGuard
|
||||
🚀 v0.7.0 · 🐍 · 🪟🐧 · 🔐 MFA TOTP · 🛡️ WireGuard
|
||||
|
||||
**WGSecure** est une interface graphique multiplateforme (Windows & Linux) pour gérer une connexion WireGuard avec une surcouche MFA (authentification à deux facteurs TOTP).
|
||||
|
||||
@@ -20,11 +20,12 @@
|
||||
| 👤 | **Multi-profils** | Sauvegarde / bascule entre profils, import/export `.conf` |
|
||||
| 🛡️ | **Configuration WireGuard** | Serveur, port UDP, DNS, IP client, keepalive |
|
||||
| 🔐 | **MFA TOTP** | Compatible Bitwarden + QR Code |
|
||||
| 🔒 | **Kill Switch** | Bloque tout trafic hors tunnel via iptables (Linux) |
|
||||
| 🔍 | **Test DNS leak** | Vérifie que le DNS passe bien par le tunnel |
|
||||
| 🏓 | **Ping en temps réel** | Badge de latence dans l'interface principale |
|
||||
| 🔄 | **Auto-reconnexion** | Surveillance et reconnexion automatique si le tunnel tombe |
|
||||
| 📡 | **Test de connexion** | Vérification UDP du serveur avant établissement du tunnel |
|
||||
| 🔄 | **Auto-reconnexion** | Surveillance et reconnexion automatique si le tunnel tombe — activée par défaut (15 s) |
|
||||
| 📡 | **Test de connexion** | Handshake WireGuard réel, sans monter le tunnel, avec détection du filtrage sur port source |
|
||||
| 🚀 | **Démarrage automatique** | Lancement au démarrage du système — activé par défaut |
|
||||
| 1️⃣ | **Instance unique** | Un second lancement réveille l'instance déjà active plutôt que d'en ouvrir une seconde |
|
||||
| 🪟🐧 | **Cross-platform** | Windows 10+ et Linux (wg-quick) |
|
||||
|
||||
---
|
||||
@@ -110,30 +111,47 @@ python main.py --no-tray
|
||||
|
||||
## 🐧 Élévation de privilèges Linux
|
||||
|
||||
`wg-quick` nécessite les droits root pour monter/démonter le tunnel.
|
||||
WGSecure tente dans l'ordre :
|
||||
`wg-quick`, la lecture de l'état du tunnel (`wg show`) et le nettoyage réseau
|
||||
(interface orpheline, DNS) nécessitent les droits root. WGSecure tente dans
|
||||
l'ordre :
|
||||
|
||||
1. **pkexec** (polkit) — dialogue graphique GNOME/KDE, aucune configuration requise
|
||||
1. **sudo -n** — silencieux, fonctionne si une règle NOPASSWD est en place
|
||||
(voir ci-dessous)
|
||||
2. **sudo -A** avec programme askpass graphique (`ssh-askpass`, etc.)
|
||||
3. **sudo -n** — fonctionne si une règle NOPASSWD est en place
|
||||
3. **pkexec** (polkit) — dialogue graphique GNOME/KDE ; nécessite un agent
|
||||
d'authentification actif, absent d'un simple terminal (SSH, tmux)
|
||||
|
||||
### Supprimer la demande de mot de passe (optionnel)
|
||||
Le sondage périodique de l'état du tunnel (toutes les 3 s) ne tente que
|
||||
l'étape 1 : sans règle NOPASSWD, aucun dialogue n'apparaît, le handshake et
|
||||
les compteurs RX/TX restent simplement vides.
|
||||
|
||||
Pour éviter toute invite à chaque connexion, créer une règle sudoers dédiée :
|
||||
### Supprimer la demande de mot de passe (recommandé)
|
||||
|
||||
```bash
|
||||
make setup-sudoers
|
||||
```
|
||||
|
||||
Invite le mot de passe une fois dans le terminal (via `sudo`, plus fiable que
|
||||
`pkexec` hors session graphique), puis installe une règle NOPASSWD limitée à
|
||||
`wg-quick`, `wg`, et au nettoyage d'une interface/DNS orpheline — jamais un
|
||||
accès root généralisé. Idempotent : une relance ne redemande le mot de passe
|
||||
que si le contenu a changé. `make check-privileges` affiche l'état courant.
|
||||
|
||||
Pour le faire à la main :
|
||||
|
||||
```bash
|
||||
sudo visudo -f /etc/sudoers.d/wgsecure
|
||||
```
|
||||
|
||||
Ajouter la ligne suivante (remplacer `<utilisateur>` par votre login) :
|
||||
|
||||
```
|
||||
<utilisateur> ALL=(ALL) NOPASSWD: /usr/bin/wg-quick
|
||||
<utilisateur> ALL=(ALL) NOPASSWD: /usr/bin/wg
|
||||
<utilisateur> ALL=(ALL) NOPASSWD: /usr/sbin/ip link delete dev *
|
||||
<utilisateur> ALL=(ALL) NOPASSWD: /usr/sbin/resolvconf -d *
|
||||
<utilisateur> ALL=(ALL) NOPASSWD: /usr/bin/resolvectl revert *
|
||||
<utilisateur> ALL=(ALL) NOPASSWD: /usr/bin/install -D -m 600 -o root -g root * /etc/wireguard/*
|
||||
```
|
||||
|
||||
> ⚠️ Cette règle accorde l'exécution de `wg-quick` sans mot de passe uniquement,
|
||||
> et non un accès root général.
|
||||
|
||||
### Réinitialiser le mot de passe admin oublié
|
||||
|
||||
```bash
|
||||
@@ -151,9 +169,12 @@ WGSecure/
|
||||
├── Makefile
|
||||
├── app/
|
||||
│ ├── __init__.py # Version
|
||||
│ ├── app_info.py # ℹ️ Contenu de la page « À propos »
|
||||
│ ├── core/
|
||||
│ │ ├── config.py # 💾 Configuration JSON persistante + bcrypt
|
||||
│ │ ├── wireguard.py # 🛡️ Clés, tunnel, statut, kill switch, DNS leak
|
||||
│ │ ├── wireguard.py # 🛡️ Clés, tunnel, statut, DNS leak
|
||||
│ │ ├── wg_handshake.py # 🤝 Sonde de handshake réel, sans monter le tunnel
|
||||
│ │ ├── single_instance.py # 1️⃣ Garde une seule instance active
|
||||
│ │ ├── history.py # 🕘 Historique des sessions (sessions.json)
|
||||
│ │ ├── log.py # 📋 Journal d'événements (events.json)
|
||||
│ │ └── mfa.py # 🔐 TOTP / QR Code
|
||||
@@ -179,7 +200,6 @@ WGSecure/
|
||||
| 🗝️ Clé privée WireGuard | `~/.wgsecure/config.json` (Linux) / `%APPDATA%\WGSecure\` (Windows) |
|
||||
| 🔐 Secret MFA TOTP | Stocké dans le fichier de configuration local |
|
||||
| 📄 Fichier `.conf` WireGuard | Permissions `0600` (lecture propriétaire uniquement) |
|
||||
| 🔒 Kill Switch | Chaîne iptables dédiée `WGS_KILLSWITCH` — isolée du pare-feu système |
|
||||
|
||||
> ⚠️ **Recommandation** : chiffrez votre disque pour protéger le fichier de configuration.
|
||||
|
||||
@@ -188,4 +208,4 @@ WGSecure/
|
||||
## 👤 Auteur
|
||||
|
||||
Développé par **Johnny** — [JT-Tools](https://github.com/JT-Tools)
|
||||
Version :  — Septembre 2026
|
||||
Version :  — Septembre 2026
|
||||
|
||||
Reference in New Issue
Block a user