AAGuard est le bouclier de défense autonome de la plateforme DalonCorp : un service Go qui détecte les attaques et bannit les offensants, de la première requête malveillante au ban nftables en ~6 millisecondes. N'appelez pas le SOC : il a déjà réagi.
Les chiffres en production
| KPI | Valeur |
|---|---|
| Détection → ban | ~6 ms (parse → corrélation → NATS → nftables) |
| IPs bannies | 1 351 (1 272 IPv4 + 79 IPv6) |
| Vhosts protégés | 80 (30+ domaines, extraction du header Host) |
| Durée de ban | 7 jours (TTL kernel, auto-expiration) |
Ce que c'est
AAGuard surveille n'importe quelle application exposée, serveur web, API, SSH, passerelle NATS, et transforme chaque signal faible en bannissement kernel. Sa force : il ne dépend pas d'un produit précis.

- Détection applicative : tail temps réel des logs applicatifs (Apache aujourd'hui, extensible à tout service qui journalise), corrélés avec sshd et les logs du serveur NATS
- Détection kernel : lecture de
/proc/net/nf_conntrack, port scans, SYN floods, connection floods, DDoS, les attaques avant même d'atteindre l'application - Corrélation croisée : une IP détectée à la fois par l'application et par le firewall obtient une détection combinée à confiance renforcée
- Bannissement nftables : timeouts kernel-natifs, auto-expiration, sets IPv4 + IPv6, reboot-safe (persistence nftables + replay JetStream)
- Publications NATS : chaque détection passe par le bus de la plateforme, architecture event-driven de bout en bout
La mécanique de confiance, zéro faux positif
Chaque signal a un poids (critical → 1.0, high → 0.9, medium → 0.7). Le corrélateur additionne les poids par IP :
- confiance ≥ 0.5 → détection publiée (un seul pattern
highsuffit) - poids 1.0 → ban immédiat, dès la première requête
- cooldown 30 s par IP, pas de double comptage
- allowlist IPv4/IPv6, vos IP de monitoring et partenaires ne sont jamais détectées, quel que soit le trafic
Résultat : un scanner naïf (chemin de sonde seul, 0.9) est banni à la première sonde ; un trafic ambigu accumule des preuves avant détection. Les faux positifs n'ont pas d'espace de survie.
Une intelligence de détection à plusieurs signaux
Niveau applicatif, 9 familles de signaux :
| Signal | Exemple |
|---|---|
| Chemins de sonde connus | .env, .git/config, wp-login.php (100+ patterns) |
| Seuil de rate | IP dépassant N req/min avec >70 % d'erreurs 4xx/5xx |
| Flood de chemins distincts | IP frappant beaucoup de chemins en 404 |
| User-agent de scanner | python-requests, masscan, nuclei, nmap |
| Nuclei CVE templates | ~500 templates → des milliers de patterns CVE auto-chargés |
| CVE IoT/caméras | CVE-2021-36260, CVE-2017-7921, CVE-2021-33044 |
| Énumération webmail | /webmail/, /roundcube/, /rainloop/ |
| Énumération répertoires | /backup/, /wp/, /phpmyadmin/, /admin/ |
| Corrélation error log | entrées Apache error log pour chemins de sonde |
Niveau firewall (conntrack) :
- Port scan (>N ports distincts), SYN flood (ratio SYN:ACK), connection flood, détection DDoS multi-IP
Niveau SSH (sshd) :
- Brute-force, énumération d'utilisateurs invalides, flood pre-auth, depuis
auth.logou journald
Niveau serveur NATS :
- Handshake flood (scanners WSS), auth brute-force (credential stuffing), abus de protocole
L'intégration Nuclei : des milliers de patterns CVE
aaguard charge automatiquement les templates Nuclei (CVE HTTP) et en extrait des patterns de détection, avec une intelligence supplémentaire :
- Corrélation par produit :
domain_productsassocie chaque domaine au produit qui tourne dessus, les templates d'autres produits sont ignorés (pas de faux positifs Drupal sur Gitea, ni PaperCut sur Meteor) - Wildcards :
"dalon.."couvre tous vos sous-domaines - Mise à jour quotidienne automatique : systemd timer + hot reload (SIGHUP), tous les matins à 3h, les nouveaux CVE sont intégrés sans redémarrage
- Filtrage par sévérité : critical/high/medium, uniquement les templates vérifiés
- Exclusions ciblées : les templates générant des faux positifs sont blacklistés par ID de CVE
Le cycle de réponse
Détection (HTTP / kernel / SSH / NATS)
→ publication NATS (aaguard.abuse.ip.detected)
→ consumer nftables → bannissement kernel-native (TTL auto)
→ rapports automatiques : RDAP/WHOIS → SMTP à l'abuse contact
+ AbuseIPDB API (signal mondial)
+ webhook Slack/JSON
→ journal SQLite local (tout est conservé)
Ce que ça change pour vous
- 6 ms du premier sondage au ban : le temps d'une requête HTTP, l'attaquant ne voit jamais son scan aboutir.
- Autonomie complète : détection → signalement → bannissement, en boucle fermée, 24/7, reboot-safe.
- Deux niveaux de détection : les attaques qui ne touchent même pas l'application (scans, floods) sont vues au niveau kernel.
- Signal mondial : chaque abuseur signalé à AbuseIPDB et à l'abuse desk de son FAI, la communauté vous protège en retour.
- Pilotage par NATS : le même bus que le reste de la plateforme, une seule connectique, un seul modèle d'identification NSC.
- Observabilité intégrée : métriques Prometheus (
aaguard_*), dashboard Grafana fourni, endpoints healthz. - CLI à distance :
aaguard-clipermet list/ban/unban/stats/watch depuis n'importe quel hôte, via micro service NATS.
Pour qui ?
- Opérateurs de plateforme Voice AI : la couche de défense qui protège vos GPU et vos quotas avant que le trafic malveillant ne consomme votre billing.
- Hébergeurs & intégrateurs : un service à déployer en edge (mode
network_host + NET_ADMIN) ou centralisé. - Tout SI exposé : Apache, SSH et NATS sont des cibles universelles, aaguard est générique.
Pour aller plus loin
- Le NLP Border Controller, la frontière IA protégée par NSC
- La proposition de valeur DalonCorp (PDF)
- Le dépôt open source : gitea.osef.cloud/Dalon/aaguard