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

KPIValeur
Détection → ban~6 ms (parse → corrélation → NATS → nftables)
IPs bannies1 351 (1 272 IPv4 + 79 IPv6)
Vhosts protégés80 (30+ domaines, extraction du header Host)
Durée de ban7 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.

Architecture AAGuard, détection sur 2 hôtes, corrélation croisée, ban nftables en 6ms

  • 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 high suffit)
  • 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 :

SignalExemple
Chemins de sonde connus.env, .git/config, wp-login.php (100+ patterns)
Seuil de rateIP dépassant N req/min avec >70 % d'erreurs 4xx/5xx
Flood de chemins distinctsIP frappant beaucoup de chemins en 404
User-agent de scannerpython-requests, masscan, nuclei, nmap
Nuclei CVE templates~500 templates → des milliers de patterns CVE auto-chargés
CVE IoT/camérasCVE-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 logentré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.log ou 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_products associe 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-cli permet 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