Skip to content

Repository files navigation

Securitor - Travel Mode Security

🔒 Protection réseau automatique pour développeurs en déplacement

Securitor est une application système tray qui bascule automatiquement votre machine Linux en mode sécurisé lorsque vous vous connectez à un réseau WiFi public.

✨ Fonctionnalités

  • 🛡️ Mode Voyage automatique : Détection des réseaux WiFi publics et activation automatique des protections
  • 🔥 Firewall intelligent : Bascule automatique entre zones firewalld (home/public)
  • 🐳 Docker sécurisé : Isole les containers Docker en localhost uniquement
  • 🔐 Intégration VPN : Support ProtonVPN et WireGuard via NetworkManager
  • 🚫 Protection DNS/IPv6 : Prévention des fuites DNS et IPv6
  • 👻 Invisibilité LAN : Désactive Avahi pour rendre votre machine invisible
  • 🔔 Alertes persistantes : Notifications visuelles si VPN non actif en Mode Voyage
  • 🛠️ Récupération automatique : Watchdog intégré en cas de crash

📦 Installation

Prérequis

  • Ubuntu 22.04+ ou 24.04 LTS (ou dérivés : Pop!_OS, Linux Mint)
  • Architecture : amd64
  • Go 1.21+ (pour compiler depuis les sources)

Installation rapide des prérequis

Un script est fourni pour installer automatiquement tous les prérequis :

cd securitor
chmod +x install_prerequisites.sh
./install_prerequisites.sh

Ce script installe :

  • Go 1.21+
  • firewalld
  • NetworkManager
  • policykit-1, libnotify-bin, zenity

Installation depuis le .deb

# Télécharger le package
wget https://github.com/Root-SKB/Securitor/releases/latest/download/securitor_1.0.0_amd64.deb

# Installer
sudo dpkg -i securitor_1.0.0_amd64.deb

# Installer les dépendances manquantes (si nécessaire)
sudo apt-get install -f

Compilation depuis les sources

# Cloner le dépôt
git clone https://github.com/Root-SKB/Securitor.git
cd securitor

# Installer les dépendances Go
make deps

# Compiler
make build

# Créer le package .deb
make package

# Installer
sudo dpkg -i build/securitor_1.0.0_amd64.deb

🚀 Utilisation

Lancement

L'application se lance automatiquement au démarrage (optionnel).

Pour lancer manuellement :

securitor

Ou depuis le menu Applications → Securitor

Interface

Une icône apparaît dans la barre système avec 3 états visuels :

  • 🔓 Vert : Mode Normal (réseau de confiance)
  • 🔒 Vert : Mode Voyage + VPN actif (protégé)
  • ⚠️ Orange/Rouge : Mode Voyage SANS VPN (alerte)

Menu Systray

┌─────────────────────────────────────┐
│ Securitor                           │
├─────────────────────────────────────┤
│ État: Mode Voyage ACTIF             │
│ VPN: ⚠️ NON ACTIF                   │
│ Réseau: Starbucks_WiFi              │
├─────────────────────────────────────┤
│ ▶ Activer VPN (ProtonVPN)           │
│ ◀ Retour Mode Normal                │
├─────────────────────────────────────┤
│ ⚙️ Paramètres                        │
│ ℹ️ À propos                          │
│ 🚨 Récupération d'urgence           │
│ ❌ Quitter                           │
└─────────────────────────────────────┘

Scénarios d'utilisation

Scénario 1 : Au café ☕

  1. Vous vous connectez au WiFi "Cafe_Public"
  2. Popup : "⚠️ Réseau non fiable détecté"
  3. Vous cliquez "Activer Mode Voyage"
  4. Popup : "🔒 Voulez-vous activer votre VPN ?"
  5. Vous cliquez "Oui, activer"
  6. ✅ Vous êtes protégé !

Scénario 2 : Réseau lent 🐢

  1. Vous êtes en Mode Voyage
  2. Le réseau est très lent
  3. Vous cliquez "Désactiver VPN" dans le menu
  4. ⚠️ Icône devient orange + notification persistante
  5. Vous êtes conscient du risque mais le firewall reste actif

Scénario 3 : Retour à la maison 🏠

  1. Vous vous connectez à votre WiFi maison
  2. L'app détecte un réseau de confiance
  3. Reste automatiquement en Mode Normal
  4. Pas de popup

🔧 Configuration

Fichiers de configuration

  • /etc/securitor/securitor.conf : Configuration générale
  • /etc/securitor/trusted_networks.conf : Liste des réseaux de confiance

Ajouter un réseau de confiance

# Via l'interface (recommandé)
# Menu → "Marquer comme réseau de confiance"

# Manuellement - réseaux système (tous les utilisateurs)
echo "MonWiFi_Bureau" | sudo tee -a /etc/securitor/trusted_networks.conf

# Manuellement - réseaux utilisateur (courant uniquement)
echo "MonWiFi_Bureau" >> ~/.config/securitor/trusted_networks.conf

Configuration VPN

Par défaut, Securitor cherche :

  1. ProtonVPN CLI (protonvpn)
  2. Connexion NetworkManager nommée "ProtonVPN"

Pour configurer ProtonVPN :

# Installer ProtonVPN CLI
# https://protonvpn.com/support/linux-vpn-setup

# Ou configurer WireGuard via NetworkManager
nmcli connection import type wireguard file protonvpn.conf
nmcli connection modify protonvpn-config connection.id ProtonVPN

🧪 Tests

Tester les protections

# Script de test intégré
sudo /usr/lib/securitor/test.sh

Tests manuels

Test 1 : Invisibilité sur LAN

# Depuis une autre machine sur le même réseau :
nmap -sn 192.168.1.0/24

# Votre machine NE DOIT PAS apparaître en Mode Voyage

Test 2 : Docker localhost only

# Lancer un container exposé
docker run -d -p 8080:80 nginx

# Depuis autre machine :
curl http://[VOTRE_IP]:8080  # DOIT échouer

# Depuis localhost :
curl http://localhost:8080  # DOIT fonctionner

Test 3 : VPN leak

# Sans VPN
curl ifconfig.me  # Noter l'IP

# Avec VPN
curl ifconfig.me  # IP doit être différente (serveur VPN)

🚨 En cas de problème

Récupération d'urgence

Si l'application crash ou que vous êtes bloqué :

# Commande rapide
sudo securitor-reset

Logs

# Logs application
journalctl -t securitor -f

# Logs watchdog
journalctl -u securitor-watchdog -f

# Logs système
journalctl -xe

Problèmes courants

L'icône systray n'apparaît pas

# Vérifier que l'app tourne
pgrep securitor

# Relancer
killall securitor
securitor &

Firewalld n'est pas actif

sudo systemctl start firewalld
sudo systemctl enable firewalld

VPN ne se connecte pas

# Vérifier les connexions disponibles
nmcli connection show

# Tester manuellement
nmcli connection up ProtonVPN

📚 Documentation complète

🔗 Architecture

Stack technique

  • Language : Go 1.21+
  • GUI : getlantern/systray
  • Firewall : firewalld (zones automatiques)
  • Network : NetworkManager (D-Bus)
  • VPN : ProtonVPN CLI / WireGuard
  • Notifications : libnotify

Composants

securitor/
├── cmd/securitor/          # Application principale
├── internal/
│   ├── firewall/          # Gestion firewalld + Docker
│   ├── network/           # Détection WiFi (D-Bus)
│   ├── vpn/               # Monitoring VPN
│   ├── ui/                # Systray + notifications
│   └── state/             # Gestion état global
├── scripts/               # Scripts Bash privilégiés
├── systemd/               # Services systemd
└── polkit/                # Actions PolicyKit

🤝 Contribution

Les contributions sont les bienvenues !

  1. Fork le projet
  2. Créer une branche (git checkout -b feature/AmazingFeature)
  3. Commit (git commit -m 'Add some AmazingFeature')
  4. Push (git push origin feature/AmazingFeature)
  5. Ouvrir une Pull Request

📄 Licence

MIT License - voir LICENSE

🙏 Remerciements

📞 Support


Développé avec ❤️ pour les développeurs nomades

About

🔒 Travel mode security app for Linux - Auto-protects your machine on untrusted WiFi networks

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages