Protection contre les Attaques
Auris inclut plusieurs couches de défense qui s’activent sur chaque requête d’authentification. Ces systèmes opèrent indépendamment mais sont superposés dans un pipeline spécifique — chaque vérification est exécutée en séquence pour que les vérifications suivantes, plus coûteuses, ne soient atteintes qu’après que les filtres initiaux plus économiques sont passés.
Limitation de Débit
Auris applique une limitation de débit à fenêtre glissante à tous les endpoints API. Les limites de débit sont appliquées en mémoire par instance et ne sont pas partagées entre les instances dans un déploiement multi-nœuds — si tu as besoin d’une limitation de débit distribuée, configure un store partagé supporté par Redis.
Niveaux
| Niveau | S’applique à | Limites par défaut |
|---|---|---|
| auth | Endpoints de connexion, inscription et déconnexion | Limites strictes pour prévenir le credential stuffing |
| sensitive | Réinitialisation mot de passe, enrôlement 2FA, vérification 2FA | Limites strictes, buckets séparés par utilisateur et par IP |
| api | Endpoints API authentifiés généraux | Limites modérées par utilisateur authentifié |
| public | Endpoints ouverts (pages de statut, SCIM, checkout public) | Limites généreuses, par IP uniquement |
Les valeurs exactes des limites sont configurables par niveau via des variables d’environnement ou la Console (Console → Sécurité → Limitation de Débit).
Headers de Réponse
Toutes les réponses API depuis les endpoints avec limitation de débit incluent des headers standard :
| Header | Signification |
|---|---|
X-RateLimit-Limit | Nombre maximum de requêtes autorisées dans la fenêtre courante |
X-RateLimit-Remaining | Requêtes restantes dans la fenêtre courante |
X-RateLimit-Reset | Timestamp Unix quand la fenêtre courante se réinitialise |
Retry-After | Secondes avant que le client puisse réessayer (présent uniquement dans les réponses 429) |
Quand une limite de débit est dépassée, Auris retourne HTTP 429 Too Many Requests avec le header Retry-After. Les clients doivent respecter ce header et effectuer un backoff en conséquence.
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1718016000
Retry-After: 47
Content-Type: application/json
{
"ok": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Trop de requêtes. Réessaie dans 47 secondes."
}
}Protection Brute-Force
Auris trace les tentatives de connexion échouées par compte utilisateur et par adresse IP. Après un nombre configurable d’échecs consécutifs, le compte ou l’IP est bloqué pour une durée croissante.
Comment Fonctionne le Blocage
- Chaque tentative de connexion échouée crée un enregistrement
LoginAttemptavec timestamp, IP et user agent. - Quand le compteur d’échecs pour un compte ou IP dépasse le seuil configuré dans la fenêtre d’observation, un enregistrement
AccountLockoutest créé. - Pendant un blocage, toutes les tentatives de connexion pour le compte affecté retournent
HTTP 423 Lockedimmédiatement — aucune authentification Keycloak n’est tentée. - La durée du blocage s’intensifie avec les blocages répétés : premier blocage = 5 minutes, deuxième = 30 minutes, troisième = 24 heures (configurable).
Configuration
Configure via Console → Sécurité → Protection Brute-Force :
| Paramètre | Défaut | Notes |
|---|---|---|
| Tentatives échouées avant blocage | 5 | Le compteur se réinitialise après une connexion réussie |
| Fenêtre d’observation | 15 minutes | Seules les tentatives dans cette fenêtre comptent vers le seuil |
| Durée initiale du blocage | 5 minutes | |
| Multiplicateur d’escalade | 6x | Chaque blocage suivant dure 6× plus longtemps |
| Durée maximale du blocage | 24 heures | |
| Blocage par IP | Activé | Bloque l’IP après des échecs sur plusieurs comptes |
Déblocage Manuel
Les administrateurs peuvent débloquer manuellement les comptes via la Console (Détail utilisateur → Sécurité → Débloquer le Compte) ou l’API :
/api/admin/lockouts/[userId]Requires: manage:usersEfface tous les blocages actifs pour l’utilisateur spécifié et réinitialise le compteur de tentatives échouées.
/api/admin/lockoutsRequires: manage:usersListe les comptes actuellement bloqués avec la raison du blocage, l’heure de début et l’expiration.
Sécurité des Mots de Passe
Intégration HaveIBeenPwned
Quand un utilisateur définit ou change un mot de passe, Auris le vérifie contre la base de données Pwned Passwords de HaveIBeenPwned (HIBP) en utilisant l’API k-Anonymity. Seuls les 5 premiers caractères du hash SHA-1 sont envoyés à HIBP — le mot de passe en clair ne quitte jamais Auris.
Si le mot de passe apparaît dans les datasets de violations connues, Auris le rejette et demande à l’utilisateur d’en choisir un différent. Cette vérification s’applique à :
- L’inscription utilisateur
- Les demandes de changement de mot de passe
- Les mots de passe créés par l’administrateur via l’API
La vérification HIBP est activée par défaut. Pour la désactiver (non recommandé), définis HIBP_CHECK_ENABLED=false dans l’environnement. La vérification peut ajouter jusqu’à 200ms de latence sur les opérations avec mots de passe en raison de l’appel API externe.
Exigences de Complexité
Configure les exigences minimales pour le mot de passe dans Console → Sécurité → Politique de Mot de Passe :
| Exigence | Défaut |
|---|---|
| Longueur minimale | 8 caractères |
| Exiger une lettre majuscule | Non |
| Exiger une lettre minuscule | Non |
| Exiger un chiffre | Non |
| Exiger un caractère spécial | Non |
| Rejeter les mots de passe courants (HIBP) | Oui |
Les exigences sont appliquées aux mots de passe gérés par Auris. Les utilisateurs SSO s’authentifient via leur IdP d’entreprise et ne sont pas soumis aux politiques de mots de passe d’Auris.
Détection de Connexions Suspectes
Auris analyse chaque connexion pour des anomalies comportementales. La détection est exécutée après une authentification Keycloak réussie — si les credentials de connexion sont corrects mais le contexte est suspect, Auris peut notifier l’utilisateur, bloquer la connexion ou déclencher une MFA step-up.
Méthodes de Détection
1. Nouvel appareil
Auris calcule une empreinte hash depuis une combinaison de user agent du navigateur, résolution d’écran et autres signaux stables. Si l’empreinte n’a jamais été vue pour cet utilisateur auparavant, la connexion est signalée comme “nouvel appareil”. L’enregistrement de l’appareil est stocké dans DeviceFingerprint après la première connexion réussie depuis ce contexte.
2. Nouvelle adresse IP
Auris trace les adresses IP depuis lesquelles un utilisateur a précédemment effectué une connexion. Une connexion depuis une IP qui n’a jamais été vue pour ce compte est signalée.
3. Nouveau pays
La recherche GeoIP détermine le pays de l’IP de connexion. Si le pays diffère de l’historique de connexions de l’utilisateur, la connexion est signalée. La détection du pays utilise ip-api.com (défaut) ou une base de données locale MaxMind GeoLite2 (configurable pour les déploiements hors ligne ou sensibles à la confidentialité).
4. Voyage impossible
Auris calcule la distance géographique (formule de Haversine) entre la position de connexion courante et celle de la connexion la plus récente, puis la divise par le temps écoulé pour dériver une vitesse de déplacement implicite. Si la vitesse dépasse un seuil configurable (défaut : 800 km/h — plus rapide que l’aviation commerciale), la connexion est signalée comme voyage impossible.
5. Détection VPN / proxy / datacenter
La recherche GeoIP inclut des métadonnées indiquant si l’IP appartient à un fournisseur VPN connu, proxy ou datacenter cloud. Les connexions depuis ces IP sont signalées par défaut mais peuvent être autorisées si tes utilisateurs accèdent communément au service via VPN.
Actions Configurées
Chaque méthode de détection peut déclencher des actions indépendantes :
| Action | Comportement |
|---|---|
log | Enregistre l’événement de connexion suspecte uniquement dans les logs d’audit. Aucun impact sur l’utilisateur. |
notify | Envoie un e-mail de notification à l’utilisateur l’informant de la connexion suspecte. |
block | Refuse complètement la connexion avec un message d’erreur. |
require_mfa | Autorise la connexion mais exige la complétion MFA même si la MFA n’est pas normalement requise. |
Configuration du Fournisseur GeoIP
| Fournisseur | Paramètre | Notes |
|---|---|---|
| ip-api.com | Défaut | Niveau gratuit, appel API externe par connexion |
| MaxMind GeoLite2 | GEO_IP_PROVIDER=maxmind, MAXMIND_DB_PATH=/chemin/vers/GeoLite2-City.mmdb | Recherche locale, aucun appel externe, nécessite un compte MaxMind gratuit pour télécharger la DB |
Révision des Événements de Connexions Suspectes
/api/admin/suspicious-loginsRequires: manage:usersListe les événements de connexions suspectes pour tous les utilisateurs, filtrable par gravité, raison, utilisateur et plage de dates.
/api/admin/suspicious-logins/[id]/reviewRequires: manage:usersMarque un événement de connexion suspecte comme révisé par un administrateur.
Intégration CAPTCHA
Auris supporte trois fournisseurs CAPTCHA sur les pages de connexion, inscription et réinitialisation de mot de passe. Le CAPTCHA peut être configuré pour s’activer toujours, uniquement quand le risque est élevé, ou uniquement après un nombre de tentatives échouées.
Fournisseurs Supportés
| Fournisseur | Type | Notes |
|---|---|---|
| Cloudflare Turnstile | Preuve de travail, préserve la confidentialité | Recommandé. Aucun défi d’images. Niveau gratuit disponible. |
| hCaptcha | Défi basé sur des images | Alternative orientée confidentialité à reCAPTCHA |
| reCAPTCHA v3 | Basé sur un score, invisible | Aucune interaction utilisateur, retourne un score de risque |
Modes d’Activation
| Mode | Comportement |
|---|---|
ALWAYS | Le CAPTCHA apparaît sur chaque tentative de connexion/inscription |
ON_SUSPICIOUS | Le CAPTCHA est déclenché quand le score de risque (depuis la MFA adaptative) dépasse le seuil configuré |
AFTER_FAILURES | Le CAPTCHA apparaît après N tentatives de connexion consécutives échouées depuis le même IP |
Configuration
Configure via Console → Sécurité → CAPTCHA :
- Sélectionne le fournisseur CAPTCHA.
- Saisis la Site Key (utilisée dans le navigateur) et la Secret Key (utilisée côté serveur pour la vérification).
- Définis le mode d’activation et (pour
AFTER_FAILURES) le seuil de tentatives. - Pour reCAPTCHA v3, définis le score minimum (0.0–1.0) en dessous duquel une connexion est bloquée.
La vérification CAPTCHA est effectuée côté serveur sur l’API Auris avant que les credentials soient vérifiés. Même si un client contourne l’interface CAPTCHA, la connexion échouera sans token de vérification valide.
Listes d’IP Autorisées/Bloquées
Auris supporte des règles IP basées sur CIDR au niveau tenant et par application. Les règles sont évaluées avant toute tentative d’authentification.
Types de Règles
| Type | Comportement |
|---|---|
ALLOW | Autorise explicitement le trafic depuis cette IP ou plage |
BLOCK | Refuse toutes les requêtes depuis cette IP ou plage avec HTTP 403 Forbidden |
Priorité : Les règles BLOCK ont toujours la priorité sur les règles ALLOW dans le même scope.
Scope : Les règles peuvent être scopées à l’ensemble du tenant (scope: TENANT) ou à une application spécifique (scope: APPLICATION, applicationId: ...).
Règles temporaires : Définis isTemporary: true et fournis expiresAt pour créer des règles qui expirent automatiquement. Utile pour des bans temporaires après une attaque détectée.
Gestion des Règles IP
/api/ip-rulesRequires: manage:usersListe toutes les règles IP pour le tenant. Supporte le filtrage par type (ALLOW/BLOCK), scope et statut.
/api/ip-rulesRequires: manage:usersCrée une nouvelle règle IP.
{
"cidr": "203.0.113.0/24",
"type": "BLOCK",
"scope": "TENANT",
"label": "ASN suspect",
"note": "Bloqué suite à une attaque de credential stuffing le 01/06/2025",
"isTemporary": true,
"expiresAt": "2025-07-01T00:00:00Z"
}/api/ip-rules/[id]Requires: manage:usersMet à jour une règle — prolonge l’expiration, change le libellé ou active/désactive.
/api/ip-rules/[id]Requires: manage:usersSupprime une règle IP.
Notation CIDR
Auris supporte la notation CIDR IPv4 et IPv6 :
- IP unique :
203.0.113.42/32 - Sous-réseau :
203.0.113.0/24(256 adresses) - Plage complète :
10.0.0.0/8(16,7 millions d’adresses) - IPv6 unique :
2001:db8::1/128 - Plage IPv6 :
2001:db8::/32
Le Pipeline de Sécurité de Connexion
Chaque requête de connexion passe par les vérifications suivantes dans l’ordre. Chaque vérification peut court-circuiter le pipeline en retournant une erreur :
Requête de connexion entrante
|
v
1. Vérification IP Allow/Block
Règle BLOCK correspondante ? → HTTP 403, arrêt
Règle ALLOW présente ? → continuer
|
v
2. Vérification CAPTCHA
Mode = ALWAYS ? → exiger un token valide
Mode = ON_SUSPICIOUS ? → évaluer score risque, exiger si élevé
Mode = AFTER_FAILURES ? → vérifier compteur d'échecs IP
Token invalide/manquant ? → HTTP 400, arrêt
|
v
3. Limitation de Débit
Limite par IP dépassée ? → HTTP 429, arrêt
Limite par utilisateur dépassée ? → HTTP 429, arrêt
|
v
4. Vérification Brute-Force / Blocage
Compte ou IP actuellement bloqué ? → HTTP 423, arrêt
|
v
5. Authentification Keycloak
Credentials invalides ? → enregistrer tentative échouée, HTTP 401, arrêt
Credentials valides ? → continuer
|
v
6. Analyse de Connexions Suspectes
(non bloquant — exécuté de façon asynchrone, enregistre les événements)
Détection haute gravité ? → déclencher l'action configurée (notify/block/require MFA)
|
v
7. Calcul du Score de Risque MFA Adaptative
Score calculé depuis 5 facteurs
Score au-dessus du seuil ? → exiger MFA step-up
|
v
8. Émission de Token
Claims ACR et AMR définis selon les méthodes d'authentification complétées
Retourne access token et refresh tokenLes étapes 1–4 sont synchrones et bloquantes. Les étapes 6–7 peuvent ajouter de la latence si les recherches GeoIP sont activées. Pour minimiser l’impact sur la latence, utilise la base de données locale MaxMind plutôt que ip-api.com pour la résolution GeoIP.
Permissions Requises
| Opération | Permission |
|---|---|
| Voir / gérer les règles IP | manage:users |
| Voir les événements de connexions suspectes | manage:users |
| Réviser les événements suspects | manage:users |
| Voir / gérer les blocages | manage:users |
| Configurer les paramètres de sécurité (Console) | OWNER ou ADMIN du tenant uniquement |
Pages Associées
- Authentification Multi-Facteur — TOTP, SMS OTP, WebAuthn et MFA adaptative
- Console : Paramètres de Sécurité — Guide complet de la Console pour toutes les fonctionnalités de sécurité
- Concepts : Flux de Connexion — Analyse détaillée du pipeline d’authentification
- Référence API : Sécurité — Documentation complète des endpoints pour règles IP, blocages et connexions suspectes