SysWarden réduit très vite l'exposition d'un serveur Linux connecté à Internet. La version 2 est un WAF host-based (pare-feu applicatif) réécrit en Go : il combine un pare-feu nftables, un moteur de détection L7 natif, des blocklists, du blocage ASN, du géoblocage, WireGuard pour masquer l'administration et une synchronisation haute disponibilité. Ce n'est pas un SIEM ni un IDS complet, c'est un bouclier périmétrique qui filtre tôt le bruit d'Internet.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Comprendre à quoi sert SysWarden v2 et ce qu'il ne fait pas
- Installer SysWarden via son paquet
.debou.rpm - Configurer les options clés avec
syswarden config: whitelist, blocklists, ASN, géoblocage, WireGuard, HA - Gérer les IP au quotidien avec le CLI unifié
- Vérifier le déploiement et choisir un profil adapté : VPS, bastion, hôte Docker
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »Sur un serveur exposé, une grande partie du trafic reçu n'a aucune valeur :
- Scans automatisés sur tous les ports, toutes les minutes
- Tentatives de brute force SSH par centaines chaque heure
- Bots opportunistes qui cherchent des failles connues
- Trafic issu d'infrastructures déjà connues pour des activités hostiles
SysWarden cherche à bloquer ce trafic avant qu'il n'atteigne vos services. L'intérêt est simple : moins de bruit dans les logs, moins de surface d'exposition, une mise en place plus rapide qu'un empilement manuel de scripts.
Ce que fait SysWarden v2
Section intitulée « Ce que fait SysWarden v2 »SysWarden (v2.01, licence GPL-3.0) se présente comme un « Next-Gen Host-based WAF and Security Orchestrator ». Il s'articule autour de trois binaires Go :
| Composant | Rôle |
|---|---|
syswarden (CLI) | Orchestration : installation, configuration, gestion des IP, audit |
syswarden-core | Moteur WAF L7 (algorithme Aho-Corasick), tourne en daemon systemd |
syswarden-tui | Tableau de bord terminal temps réel (zéro CPU à l'idle) |
Il agrège plusieurs mécanismes :
| Mécanisme | Rôle |
|---|---|
| Pare-feu nftables | Filtrage kernel, backend détecté automatiquement |
| Moteur WAF natif | Détection L7 et brute force en Go, remplace Fail2ban |
| Blocklists | Dizaines de milliers d'IP malveillantes injectées dans le kernel |
| Blocage GeoIP | Filtrage par pays (activé par défaut, liste paramétrable) |
| Blocage ASN | Listes d'AS à risque, Spamhaus ASN-DROP en option |
| WireGuard | Tunnel VPN pour isoler l'administration |
| Haute disponibilité | Synchronisation chiffrée de la blocklist entre nœuds |
| Durcissement CIS | Hardening kernel/OS niveau CIS Benchmark L2 (optionnel) |
| TUI | Dashboard et alertes en temps réel dans le terminal |
Le backend pare-feu est détecté selon la distribution :
| Distribution | Backend firewall |
|---|---|
| Debian / Ubuntu | nftables (transactions atomiques) |
| RHEL / AlmaLinux / Rocky | Firewalld ou nftables selon SYSWARDEN_FIREWALL_BACKEND |
| Alpine (OpenRC) | nftables |
Quand l'utiliser
Section intitulée « Quand l'utiliser »SysWarden est surtout pertinent pour :
- un VPS public qui reçoit du trafic non sollicité en permanence
- un bastion dont l'accès doit être restreint au maximum
- un petit serveur web que vous ne pouvez pas mettre derrière un WAF cloud
- un hôte Docker exposé (SysWarden injecte les règles dans la chaîne
DOCKER-USER) - un cluster de deux nœuds où il faut synchroniser les bannissements
Quand ne pas en attendre trop
Section intitulée « Quand ne pas en attendre trop »SysWarden ne remplace pas :
- une supervision centralisée (Wazuh, Grafana, Prometheus)
- un moteur de détection comportementale avancée multi-sources
- une stratégie IAM solide
- la gestion des vulnérabilités et des correctifs
- la sécurisation applicative (authentification, injection, chiffrement)
Il faut le voir comme une première couche réseau et L7, pas comme une réponse complète à tous les risques.
Prérequis
Section intitulée « Prérequis »- Un serveur Ubuntu 24.04+, Debian 13+, RHEL/AlmaLinux/Rocky 9+ ou Alpine
- Accès root (ou
sudo) - La commande
wget(oucurl) pour récupérer le paquet - Connaître l'IP publique autorisée à administrer le serveur
- Prévoir une fenêtre de test pour éviter de se bloquer soi-même
Installer SysWarden
Section intitulée « Installer SysWarden »SysWarden v2 est exclusivement distribué par paquets .deb et .rpm. La compilation Go et les dépendances sont placées dans /opt/syswarden/bin/.
-
Télécharger le paquet et sa somme de contrôle
Récupérez le paquet correspondant à votre distribution depuis la page des releases, ainsi que le fichier
SHA256SUMS.Fenêtre de terminal wget https://github.com/duggytuxy/syswarden/releases/download/v2.01.11/syswarden_2.01.11_all.debwget https://github.com/duggytuxy/syswarden/releases/download/v2.01.11/SHA256SUMS.txt -
Vérifier l'intégrité
Fenêtre de terminal sha256sum -c SHA256SUMS.txt --ignore-missingsyswarden_2.01.11_all.deb: OKN'installez jamais un paquet dont la somme ne correspond pas.
-
Installer le paquet
Fenêtre de terminal sudo apt-get install -y ./syswarden_2.01.11_all.debFenêtre de terminal sudo dnf install -y ./syswarden-2.01.11-1.noarch.rpmLe paquet dépose le CLI et la configuration par défaut, sans encore modifier le pare-feu.
-
Adapter la configuration
La configuration est embarquée. Ouvrez l'éditeur interactif pour la personnaliser :
Fenêtre de terminal sudo syswarden configRenseignez au minimum votre IP d'administration dans
SYSWARDEN_WHITELIST_IPS. -
Appliquer les politiques
Fenêtre de terminal sudo syswarden installCette commande exécute le pipeline complet : pare-feu, blocklists, moteur WAF, durcissement et, si activé, WireGuard et HA.
Vérifier l'installation
Section intitulée « Vérifier l'installation »sudo nft list tablestable inet syswarden_tableVérifiez ensuite le daemon du moteur WAF :
systemctl status syswarden-core.serviceSi vous voyez syswarden_table dans nftables et syswarden-core.service actif, le déploiement est fonctionnel.
Configurer SysWarden
Section intitulée « Configurer SysWarden »La configuration vit dans /opt/syswarden/syswarden-auto.conf. Deux manières de l'éditer :
- Interactive :
sudo syswarden config(ouvre votre$EDITOR, nano ou vi en repli). - Non interactive (CI/CD, Ansible, cloud-init) : éditer directement le fichier puis lancer
sudo syswarden install.
Paramètres importants
Section intitulée « Paramètres importants »| Paramètre | Description |
|---|---|
SYSWARDEN_WHITELIST_IPS | IP à ne jamais bloquer, le plus important |
SYSWARDEN_WHITELIST_INFRA | Auto-whitelist de l'IP d'admin détectée (anti-lockout), y par défaut |
SYSWARDEN_SSH_PORT | Port SSH de votre serveur |
SYSWARDEN_FIREWALL_BACKEND | nftables, iptables ou keep (ne pas toucher Firewalld) |
SYSWARDEN_ENABLE_WG | Activer WireGuard pour masquer SSH |
SYSWARDEN_LIST_CHOICE | Niveau de blocklist : 1 Standard, 2 Critical, 3 Custom |
SYSWARDEN_ENABLE_GEO / SYSWARDEN_GEO_CODES | Blocage par pays et liste des codes |
SYSWARDEN_ENABLE_ASN / SYSWARDEN_ASN_LIST | Blocage par numéro d'AS |
SYSWARDEN_HARDENING | Durcissement CIS Benchmark L2 du système |
SYSWARDEN_HA_ENABLED / SYSWARDEN_HA_PEER_IP | Haute disponibilité entre deux nœuds |
SYSWARDEN_SIEM_ENABLED / SYSWARDEN_SIEM_IP | Export des événements vers un SIEM (syslog TLS) |
SYSWARDEN_ENTERPRISE_MODE | y désactive toute télémétrie tierce (conformité interne) |
Gérer les IP au quotidien
Section intitulée « Gérer les IP au quotidien »Tout passe désormais par le CLI syswarden, qui agit sur les trois couches : fichiers de persistance, sets kernel et moteur WAF.
Diagnostiquer une IP
Section intitulée « Diagnostiquer une IP »sudo syswarden check 1.0.164.165La commande renvoie un diagnostic global : présence en whitelist, en blocklist kernel, et statut côté moteur WAF.
Bloquer, débloquer, whitelister
Section intitulée « Bloquer, débloquer, whitelister »Les commandes acceptent plusieurs IP à la fois :
# Bloquer une ou plusieurs IP (kernel + persistance)sudo syswarden block 203.0.113.66 203.0.113.67
# Débloquersudo syswarden unblock 203.0.113.66
# Whitelister (bypass global, port optionnel)sudo syswarden whitelist 10.0.0.42
# Lister les IP gérées manuellementsudo syswarden listCommandes disponibles
Section intitulée « Commandes disponibles »| Commande | Action |
|---|---|
check <IP> | Diagnostic complet (kernel + WAF + persistance) |
block <IP>... | Blocage kernel + fichier persistant |
unblock <IP>... | Suppression de toutes les couches |
whitelist <IP>... [PORT] | Bypass global (accès VIP) |
unwhitelist <IP> | Révoque le bypass global |
allow-ssh <IP> | Exemption SSH (contourne WireGuard) |
revoke-ssh <IP> | Révoque l'exemption SSH |
whitelist-infra | Auto-détecte et whiteliste les IP d'infrastructure |
list | Affiche toutes les IP gérées |
reload | Resynchronisation complète |
Le moteur WAF et la détection brute force
Section intitulée « Le moteur WAF et la détection brute force »En v2, c'est syswarden-core qui détecte les comportements hostiles, sans Fail2ban. Il lit les journaux des services (sshd, nginx, apache2) et applique l'algorithme Aho-Corasick pour la mitigation L7 en temps réel. Le seuil de brute force se règle dans la configuration :
| Paramètre | Description |
|---|---|
SYSWARDEN_BRUTEFORCE_THRESHOLD | Nombre d'échecs avant bannissement (défaut 5) |
SYSWARDEN_BRUTEFORCE_WINDOW | Fenêtre d'observation en secondes (défaut 60) |
SYSWARDEN_BRUTEFORCE_LOGS | Journaux supplémentaires à surveiller |
SYSWARDEN_MODSEC_LOGS | Logs ModSecurity à corréler |
Visualiser en temps réel : le TUI
Section intitulée « Visualiser en temps réel : le TUI »SysWarden v2 embarque un tableau de bord terminal :
sudo syswarden tuiPour suivre uniquement les alertes en flux continu :
sudo syswarden alertsCes interfaces sont compilées en Go (raw terminal mode) et consomment zéro CPU à l'idle, contrairement à un dashboard web permanent.
Haute disponibilité
Section intitulée « Haute disponibilité »Sur un cluster de deux nœuds, SysWarden synchronise la blocklist de façon chiffrée. Activez SYSWARDEN_HA_ENABLED et renseignez SYSWARDEN_HA_PEER_IP, puis forcez une synchronisation :
sudo syswarden ha-syncLa synchronisation passe par un canal chiffré (port 62026 par défaut) et garantit qu'un bannissement décidé sur un nœud s'applique aussi sur l'autre, sans doublon.
Vérifier le déploiement
Section intitulée « Vérifier le déploiement »L'audit intégré remplace l'ancien script syswarden-audit.sh :
sudo syswarden auditIl analyse en plusieurs phases le durcissement OS, le bouclier kernel, le moteur WAF, la télémétrie, l'accès distant et la cartographie des services exposés.
Mettre à jour
Section intitulée « Mettre à jour »# Mettre à jour SysWarden (binaires + politiques)sudo syswarden update
# Rafraîchir uniquement les flux de Threat Intelligencesudo syswarden update-feedsUn cron natif (géré en Go) rafraîchit automatiquement les blocklists en arrière-plan. La mise à jour des paquets relance syswarden reload pour réparer au besoin les tâches planifiées.
Ce que je configure chez moi
Section intitulée « Ce que je configure chez moi »Voici les profils que je recommande selon le cas d'usage.
Profil VPS public (premier déploiement)
Section intitulée « Profil VPS public (premier déploiement) »Le but : réduire le bruit sans prendre de risques.
SYSWARDEN_WHITELIST_IPS="<votre-IP>"SYSWARDEN_WHITELIST_INFRA="y"SYSWARDEN_LIST_CHOICE="1" # StandardSYSWARDEN_ENABLE_ASN="y"SYSWARDEN_ENABLE_GEO="n" # désactivé au départ, audience largeSYSWARDEN_ENABLE_WG="y" # WireGuard si possibleSYSWARDEN_HARDENING="y"Après syswarden install, je lance syswarden audit et j'observe les alertes (syswarden alerts) quelques jours avant de durcir.
Profil bastion (accès restreint)
Section intitulée « Profil bastion (accès restreint) »Le but : exposer le strict minimum.
SYSWARDEN_WHITELIST_IPS="<IP-admin>"SYSWARDEN_LIST_CHOICE="1"SYSWARDEN_ENABLE_ASN="y"SYSWARDEN_ENABLE_GEO="y"SYSWARDEN_ENABLE_WG="y"SYSWARDEN_SSH_PORT="<port-non-standard>"SYSWARDEN_HARDENING="y"SSH n'est pas exposé publiquement, tout passe par WireGuard, le géoblocage est actif et le durcissement CIS est en place.
Profil cluster (haute disponibilité)
Section intitulée « Profil cluster (haute disponibilité) »SYSWARDEN_WHITELIST_IPS="<IP-admin>"SYSWARDEN_HA_ENABLED="y"SYSWARDEN_HA_PEER_IP="<IP-du-second-noeud>"SYSWARDEN_HA_STRICT_HOST_KEY="y"Chaque bannissement décidé sur un nœud est propagé à l'autre, ce qui évite qu'une IP bloquée d'un côté reste joignable de l'autre.
Fichiers importants
Section intitulée « Fichiers importants »| Chemin | Rôle |
|---|---|
/opt/syswarden/bin/ | Binaires Go (CLI, core, TUI) |
/opt/syswarden/syswarden-auto.conf | Configuration principale |
syswarden-core.service | Daemon systemd du moteur WAF |
Désinstallation
Section intitulée « Désinstallation »sudo syswarden uninstallDépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
| Impossible de se connecter en SSH | Votre IP n'est pas whitelistée | Console KVM/IPMI → syswarden whitelist <IP> |
| Le moteur ne démarre pas | syswarden-core.service en échec | systemctl status syswarden-core puis journalctl -u syswarden-core |
nft list tables ne montre pas syswarden_table | syswarden install non exécuté | Relancer sudo syswarden install |
| Faux positif sur une IP légitime | Blocklist, ASN ou géoblocage trop larges | syswarden whitelist <IP> et relire SYSWARDEN_GEO_CODES |
| Vrais visiteurs bloqués | Géoblocage actif par défaut | Désactiver SYSWARDEN_ENABLE_GEO ou ajuster la liste |
| HA non synchronisée | SYSWARDEN_HA_PEER_IP vide ou pare-feu | Vérifier le port 62026 et syswarden ha-sync |
À retenir
Section intitulée « À retenir »- SysWarden v2 est un WAF host-based réécrit en Go : il filtre tôt, il ne protège pas tout
- Il orchestre nftables, un moteur WAF natif (qui remplace Fail2ban), blocklists, ASN, GeoIP, WireGuard et la haute disponibilité
- L'installation se fait par paquet
.deb/.rpm, puissyswarden configetsyswarden install - Le CLI
syswardenest l'outil du quotidien :check,block,whitelist,audit,tui SYSWARDEN_WHITELIST_INFRAlimite l'auto-blocage, mais gardez toujours un accès console- Le géoblocage est actif par défaut : relisez la liste de pays avant de l'appliquer