Skip to Content

Angriffsschutz

Auris wird mit mehreren Verteidigungsebenen ausgeliefert, die bei jeder Authentifizierungsanfrage aktiviert werden. Diese Systeme arbeiten unabhängig voneinander, sind aber in einer bestimmten Pipeline geschichtet — jede Prüfung läuft in Reihenfolge, so dass spätere, teurere Prüfungen nur erreicht werden, nachdem günstigere Anfangsfilter bestanden wurden.


Rate Limiting

Auris wendet Sliding-Window-Rate-Limiting auf alle API-Endpunkte an. Rate Limits werden im Arbeitsspeicher pro Instanz durchgesetzt und werden nicht über Instanzen in einer Multi-Node-Bereitstellung hinweg geteilt — wenn du verteiltes Rate Limiting benötigst, konfiguriere einen Redis-unterstützten gemeinsamen Speicher.

Stufen

StufeGilt fürStandardlimits
authLogin-, Signup- und Logout-EndpunkteStrenge Limits zur Verhinderung von Credential Stuffing
sensitivePasswort-Reset, 2FA-Einschreibung, 2FA-VerifizierungStrenge Limits, separate Buckets pro Benutzer und pro IP
apiAllgemeine authentifizierte API-EndpunkteModerate Limits pro authentifiziertem Benutzer
publicOffene Endpunkte (Status-Seiten, SCIM, öffentlicher Checkout)Liberale Limits, nur IP-basiert

Genaue Limitwerte sind pro Stufe über Umgebungsvariablen oder die Console konfigurierbar (Console → Sicherheit → Rate Limiting).

Antwort-Header

Alle API-Antworten von rate-begrenzten Endpunkten enthalten Standard-Header:

HeaderBedeutung
X-RateLimit-LimitMaximal erlaubte Anfragen im aktuellen Fenster
X-RateLimit-RemainingVerbleibende Anfragen im aktuellen Fenster
X-RateLimit-ResetUnix-Zeitstempel, wann das aktuelle Fenster zurückgesetzt wird
Retry-AfterSekunden bis der Client es erneut versuchen darf (nur bei 429-Antworten vorhanden)

Wenn ein Rate Limit überschritten wird, gibt Auris HTTP 429 Too Many Requests mit dem Retry-After-Header zurück. Clients sollten diesen Header respektieren und entsprechend zurückweichen.

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": "Zu viele Anfragen. Bitte versuche es in 47 Sekunden erneut." } }

Brute-Force-Schutz

Auris verfolgt fehlgeschlagene Login-Versuche pro Benutzerkonto und pro IP-Adresse. Nach einer konfigurierbaren Anzahl aufeinanderfolgender Fehlschläge wird das Konto oder die IP für eine eskalierende Dauer gesperrt.

Wie die Sperrung funktioniert

  1. Jeder fehlgeschlagene Login-Versuch erstellt einen LoginAttempt-Datensatz mit Zeitstempel, IP und User-Agent.
  2. Wenn die Fehleranzahl für ein Konto oder eine IP den konfigurierten Schwellenwert innerhalb des Beobachtungsfensters überschreitet, wird ein AccountLockout-Datensatz erstellt.
  3. Während einer Sperrung geben alle Login-Versuche für das betroffene Konto sofort HTTP 423 Locked zurück — Keycloak-Authentifizierung wird nicht versucht.
  4. Die Sperrdauer eskaliert mit wiederholten Sperren: Erste Sperrung = 5 Minuten, zweite = 30 Minuten, dritte = 24 Stunden (konfigurierbar).

Konfiguration

Konfigurieren über Console → Sicherheit → Brute-Force-Schutz:

EinstellungStandardHinweise
Fehlversuche vor Sperrung5Zähler wird nach einem erfolgreichen Login zurückgesetzt
Beobachtungsfenster15 MinutenNur Versuche innerhalb dieses Fensters zählen zum Schwellenwert
Anfängliche Sperrdauer5 Minuten
Eskalations-Multiplikator6xJede nachfolgende Sperrung ist 6× länger
Maximale Sperrdauer24 Stunden
IP-basierte SperrungAktiviertIP nach Fehlern über mehrere Konten hinweg sperren

Manuelle Entsperrung

Administratoren können Konten manuell über die Console entsperren (Benutzer-Detail → Sicherheit → Konto entsperren) oder per API:

DELETE/api/admin/lockouts/[userId]Requires: manage:users

Löscht alle aktiven Sperren für den angegebenen Benutzer und setzt den Fehlversuchzähler zurück.

GET/api/admin/lockoutsRequires: manage:users

Listet aktuell gesperrte Konten mit Sperrgrund, Startzeit und Ablaufzeit auf.


Passwortsicherheit

HaveIBeenPwned-Integration

Wenn ein Benutzer ein Passwort setzt oder ändert, prüft Auris es gegen die HaveIBeenPwned (HIBP) Pwned Passwords-Datenbank mithilfe der k-Anonymity-API. Nur die ersten 5 Zeichen des SHA-1-Hashes werden an HIBP gesendet — das Klartext-Passwort verlässt Auris nie.

Wenn das Passwort in bekannten Datenleck-Datensätzen erscheint, lehnt Auris es ab und fordert den Benutzer auf, ein anderes Passwort zu wählen. Diese Prüfung gilt für:

  • Benutzerregistrierung
  • Passwort-Änderungsanfragen
  • Vom Admin erstellte Passwörter über die API

Die HIBP-Prüfung ist standardmäßig aktiviert. Um sie zu deaktivieren (nicht empfohlen), setze HIBP_CHECK_ENABLED=false in der Umgebung. Die Prüfung kann aufgrund des externen API-Aufrufs bis zu 200ms Latenz bei Passwortoperationen verursachen.

Komplexitätsanforderungen

Minimale Passwortanforderungen in Console → Sicherheit → Passwortrichtlinie konfigurieren:

AnforderungStandard
Mindestlänge8 Zeichen
Großbuchstabe erforderlichNein
Kleinbuchstabe erforderlichNein
Zahl erforderlichNein
Sonderzeichen erforderlichNein
Häufige Passwörter ablehnen (HIBP)Ja

Anforderungen werden auf von Auris verwaltete Passwörter angewendet. SSO-Benutzer authentifizieren sich über ihren Corporate-IdP und unterliegen nicht den Auris-Passwortrichtlinien.


Erkennung verdächtiger Logins

Auris analysiert jeden Login auf Verhaltensanomalien. Die Erkennung läuft nach erfolgreicher Keycloak-Authentifizierung — wenn die Login-Anmeldedaten korrekt sind, der Kontext aber verdächtig ist, kann Auris den Benutzer benachrichtigen, den Login blockieren oder MFA-Step-up auslösen.

Erkennungsmethoden

1. Neues Gerät

Auris berechnet einen Fingerabdruck-Hash aus einer Kombination von Browser-User-Agent, Bildschirmauflösung und anderen stabilen Signalen. Wenn der Fingerabdruck für diesen Benutzer noch nicht gesehen wurde, wird der Login als “neues Gerät” markiert. Der Geräte-Datensatz wird nach dem ersten erfolgreichen Login aus diesem Kontext in DeviceFingerprint gespeichert.

2. Neue IP-Adresse

Auris verfolgt, von welchen IP-Adressen sich ein Benutzer zuvor angemeldet hat. Ein Login von einer IP, die noch nie für dieses Konto gesehen wurde, wird markiert.

3. Neues Land

GeoIP-Lookup bestimmt das Land der Login-IP. Wenn das Land von der Login-Historie des Benutzers abweicht, wird der Login markiert. Ländererkennung verwendet ip-api.com (Standard) oder eine lokale MaxMind GeoLite2-Datenbank (konfigurierbar für Offline/datenschutzempfindliche Bereitstellungen).

4. Unmögliche Reise

Auris berechnet die geografische Entfernung (Haversine-Formel) zwischen dem aktuellen Login-Ort und dem jüngsten Login-Ort, dann dividiert durch die verstrichene Zeit, um eine implizierte Reisegeschwindigkeit abzuleiten. Wenn die Geschwindigkeit einen konfigurierbaren Schwellenwert überschreitet (Standard: 800 km/h — schneller als die kommerzielle Luftfahrt), wird der Login als unmögliche Reise markiert.

5. VPN / Proxy / Rechenzentrum-Erkennung

GeoIP-Lookup enthält Metadaten, die angeben, ob die IP zu einem bekannten VPN-Anbieter, Proxy oder Cloud-Rechenzentrum gehört. Logins von solchen IPs werden standardmäßig markiert, können aber erlaubt werden, wenn deine Benutzer häufig über VPN auf den Dienst zugreifen.

Konfigurierte Aktionen

Jede Erkennungsmethode kann unabhängige Aktionen auslösen:

AktionVerhalten
logVerdächtiges Login-Ereignis nur im Audit-Log aufzeichnen. Kein Benutzereinfluss.
notifyEine Benachrichtigungs-E-Mail an den Benutzer senden, um ihn über den verdächtigen Login zu informieren.
blockDen Login vollständig mit einer Fehlermeldung ablehnen.
require_mfaDen Login erlauben, aber MFA-Abschluss verlangen, auch wenn MFA normalerweise nicht erforderlich ist.

GeoIP-Provider-Konfiguration

ProviderEinstellungHinweise
ip-api.comStandardKostenloser Tarif, externer API-Aufruf pro Login
MaxMind GeoLite2GEO_IP_PROVIDER=maxmind, MAXMIND_DB_PATH=/pfad/zu/GeoLite2-City.mmdbLokale Suche, kein externer Aufruf, erfordert kostenloses MaxMind-Konto für DB-Download

Verdächtige Login-Ereignisse überprüfen

GET/api/admin/suspicious-loginsRequires: manage:users

Listet verdächtige Login-Ereignisse über alle Benutzer auf, filterbar nach Schweregrad, Grund, Benutzer und Datumsbereich.

PATCH/api/admin/suspicious-logins/[id]/reviewRequires: manage:users

Markiert ein verdächtiges Login-Ereignis als von einem Administrator überprüft.


CAPTCHA-Integration

Auris unterstützt drei CAPTCHA-Provider auf den Login-, Signup- und Passwort-Reset-Seiten. CAPTCHA kann so eingestellt werden, dass es immer ausgelöst wird, nur wenn das Risiko erhöht ist, oder nur nach einer Anzahl fehlgeschlagener Versuche.

Unterstützte Provider

ProviderTypHinweise
Cloudflare TurnstileProof-of-Work, datenschutzwahrendEmpfohlen. Keine Bild-Challenges. Kostenloser Tarif verfügbar.
hCaptchaBildbasierte ChallengeDatenschutzorientierte Alternative zu reCAPTCHA
reCAPTCHA v3Score-basiert, unsichtbarKeine Benutzerinteraktion, gibt Risikoscore zurück

Auslösemodi

ModusVerhalten
ALWAYSCAPTCHA erscheint bei jedem Login/Signup-Versuch
ON_SUSPICIOUSCAPTCHA wird ausgelöst, wenn der Risikoscore (vom adaptiven MFA) den konfigurierten Schwellenwert überschreitet
AFTER_FAILURESCAPTCHA erscheint nach N aufeinanderfolgenden fehlgeschlagenen Login-Versuchen von derselben IP

Konfiguration

Konfigurieren über Console → Sicherheit → CAPTCHA:

  1. CAPTCHA-Provider auswählen.
  2. Den Site-Key (im Browser verwendet) und Secret-Key (serverseitig für die Verifizierung verwendet) aus dem Dashboard des Providers eingeben.
  3. Auslösemodus und (für AFTER_FAILURES) Versuchsschwellenwert festlegen.
  4. Für reCAPTCHA v3 den Mindest-Score-Schwellenwert (0,0–1,0) festlegen, unter dem ein Login blockiert wird.

Die CAPTCHA-Verifizierung wird serverseitig auf der Auris-API durchgeführt, bevor Anmeldedaten geprüft werden. Auch wenn ein Client die CAPTCHA-UI umgeht, schlägt der Login ohne gültiges Verifizierungs-Token fehl.


IP-Allow/Block-Listen

Auris unterstützt CIDR-basierte IP-Regeln auf Tenant-Ebene und pro Anwendung. Regeln werden vor jedem Authentifizierungsversuch ausgewertet.

Regeltypen

TypVerhalten
ALLOWDatenverkehr von dieser IP oder diesem Bereich explizit erlauben
BLOCKAlle Anfragen von dieser IP oder diesem Bereich mit HTTP 403 Forbidden ablehnen

Vorrang: BLOCK-Regeln haben immer Vorrang vor ALLOW-Regeln innerhalb desselben Geltungsbereichs.

Geltungsbereich: Regeln können auf den gesamten Tenant (scope: TENANT) oder eine bestimmte Anwendung (scope: APPLICATION, applicationId: ...) beschränkt werden.

Temporäre Regeln: isTemporary: true setzen und expiresAt angeben, um Regeln zu erstellen, die automatisch ablaufen. Nützlich für temporäre Sperren nach einem erkannten Angriff.

IP-Regeln verwalten

GET/api/ip-rulesRequires: manage:users

Alle IP-Regeln für den Tenant auflisten. Unterstützt Filterung nach Typ (ALLOW/BLOCK), Geltungsbereich und Status.

POST/api/ip-rulesRequires: manage:users

Eine neue IP-Regel erstellen.

{ "cidr": "203.0.113.0/24", "type": "BLOCK", "scope": "TENANT", "label": "Verdächtiges ASN", "note": "Gesperrt nach Credential-Stuffing-Angriff am 01.06.2025", "isTemporary": true, "expiresAt": "2025-07-01T00:00:00Z" }
PATCH/api/ip-rules/[id]Requires: manage:users

Eine Regel aktualisieren — Ablaufzeit verlängern, Beschriftung ändern oder aktiven Status umschalten.

DELETE/api/ip-rules/[id]Requires: manage:users

Eine IP-Regel löschen.

CIDR-Notation

Auris unterstützt sowohl IPv4- als auch IPv6-CIDR-Notation:

  • Einzelne IP: 203.0.113.42/32
  • Subnetz: 203.0.113.0/24 (256 Adressen)
  • Gesamter Bereich: 10.0.0.0/8 (16,7 Millionen Adressen)
  • IPv6 einzeln: 2001:db8::1/128
  • IPv6 Bereich: 2001:db8::/32

Die Login-Sicherheits-Pipeline

Jede Login-Anfrage durchläuft die folgenden Prüfungen in dieser Reihenfolge. Jede Prüfung kann die Pipeline durch Rückgabe eines Fehlers kurzschließen:

Eingehende Login-Anfrage | v 1. IP-Allow/Block-Prüfung BLOCK-Regel übereinstimmend? → HTTP 403, Stopp ALLOW-Regel vorhanden? → weiter | v 2. CAPTCHA-Verifizierung Modus = ALWAYS? → gültiges Token erforderlich Modus = ON_SUSPICIOUS? → Risikoscore auswerten, bei hoch erforderlich Modus = AFTER_FAILURES? → IP-Fehleranzahl prüfen Ungültiges/fehlendes Token? → HTTP 400, Stopp | v 3. Rate Limiting Pro-IP-Limit überschritten? → HTTP 429, Stopp Pro-Benutzer-Limit überschritten? → HTTP 429, Stopp | v 4. Brute-Force / Sperr-Prüfung Konto oder IP aktuell gesperrt? → HTTP 423, Stopp | v 5. Keycloak-Authentifizierung Ungültige Anmeldedaten? → Fehlversuch aufzeichnen, HTTP 401, Stopp Gültige Anmeldedaten? → weiter | v 6. Analyse verdächtiger Logins (nicht-blockierend — läuft asynchron, zeichnet Ereignisse auf) Hochgradige Erkennung? → konfigurierte Aktion auslösen (benachrichtigen/blockieren/MFA erfordern) | v 7. Adaptives MFA-Risikoscoring Risikoscore aus 5 Faktoren berechnet Score über Schwellenwert? → MFA-Step-up erforderlich | v 8. Token-Ausstellung ACR- und AMR-Claims basierend auf abgeschlossenen Auth-Methoden setzen Access Token und Refresh Token zurückgeben

Schritte 1–4 sind synchron und blockierend. Schritte 6–7 können Latenz verursachen, wenn GeoIP-Lookups aktiviert sind. Um die Latenzauswirkung zu minimieren, verwende die lokale MaxMind-Datenbank anstelle von ip-api.com für die GeoIP-Auflösung.


Erforderliche Berechtigungen

OperationBerechtigung
IP-Regeln anzeigen / verwaltenmanage:users
Verdächtige Login-Ereignisse anzeigenmanage:users
Verdächtige Ereignisse überprüfenmanage:users
Sperren anzeigen / verwaltenmanage:users
Sicherheitseinstellungen konfigurieren (Console)Nur Tenant OWNER oder ADMIN

Verwandte Seiten