12. Rate Limiting#
Nubus bietet für seine APIs und Dienste kein Rate Limiting. Wenn Sie eine API oder einen Dienst für ein Netzwerk außerhalb des Nubus Deployments freigeben, sind Sie dafür verantwortlich, einen Reverse Proxy, ein API-Gateway oder eine vergleichbare Komponente vorzuschalten, die Rate Limiting durchsetzt.
12.1. Wogegen Rate Limiting schützt#
Rate Limiting vor einer freigegebenen API ist eine Sicherheitsmaßnahme zur Härtung, die das Risiko einer unbefugten automatisierten Nutzung senkt, zum Beispiel:
- Credential Stuffing und das Erraten von Passwörtern
Automatisierte Anmeldeversuche mit hohem Volumen, zum Beispiel gegen den Keycloak Token-Endpunkt oder eine Anmeldeseite.
- Scraping und das Sammeln von Daten
Automatisierte Lesezugriffe mit hohem Volumen auf APIs, die Verzeichnis- oder Portaldaten zurückgeben.
- Denial of Service durch Ressourcenerschöpfung
Ein hohes Anfragevolumen, ob legitim oder nicht, das den Service für andere Benutzer beeinträchtigt.
12.2. Generische Anleitung zur Implementierung#
Implementieren Sie Rate Limiting auf der Ebene des HTTP-Proxys oder Gateways vor der Nubus-Komponente. Dadurch bleibt der Durchsetzungspunkt von der Anwendung unabhängig. Außerdem können Sie denselben Mechanismus für freigegebene APIs einheitlich anwenden.
Berücksichtigen Sie die folgenden Aspekte beim Entwurf Ihres Rate Limitings:
- Den Client identifizieren
Begrenzen Sie die Rate für anonymen Datenverkehr oder Datenverkehr vor der Authentifizierung pro Client-IP-Adresse. Beispiele sind Anfragen an einen Token- oder Anmeldeendpunkt. Ziehen Sie für authentifizierten Datenverkehr zusätzlich zur oder anstelle der Client-IP-Adresse ein Rate Limiting pro authentifizierter Identität in Betracht, beispielsweise pro API-Client oder Subskriptionsname. Eine Begrenzung pro Identität verhindert, dass eine gemeinsam genutzte IP-Adresse, beispielsweise hinter einem NAT-Gateway, alle Benutzer dahinter benachteiligt.
- Teure und sensible Endpunkte von günstigen unterscheiden
Wenden Sie strengere Grenzwerte auf Endpunkte an, die authentifizieren, den Zustand ändern, oder rechenintensiv sind, wie zum Beispiel einen Token-Endpunkt, ein Anmeldeformular, oder eine Anfrage zum Zurücksetzen des Passworts. Wenden Sie großzügigere Grenzwerte auf günstige, lesende Endpunkte an.
- Legitime Lastspitzen zulassen
Ein Grenzwert, der nur auf einer langfristigen durchschnittlichen Anfragerate basiert, kann dennoch eine schädliche kurze Anfragespitze zulassen. Ein für kurze Anfragespitzen zu strenger Grenzwert kann legitime Nutzungsmuster ablehnen. Beispielsweise kann ein Client nach einer Netzwerkunterbrechung erneut versuchen, liegen gebliebene Anfrage aufzuholen. Bei den meisten Reverse Proxys können Sie sowohl eine dauerhafte Rate als auch eine Toleranz für Lastspitzen konfigurieren.
- Konsistent antworten
Wenn Sie eine Anfrage ablehnen, weil sie den Grenzwert überschreitet, antworten Sie mit dem HTTP-Statuscode
429 Too Many Requests, und, sofern Ihr Proxy dies unterstützt, einemRetry-After-Header, der dem Client mitteilt, wann er es erneut versuchen soll. Das lässt sich korrekt verhaltende Clients angemessen zurückhalten, statt sofort erneut anzufragen und die Last zu erhöhen.- Vertrauenswürdigen, internen Datenverkehr, wo angemessen, ausnehmen
Einige Nubus-Komponenten unterscheiden für ihre integrierten Schutzmaßnahmen bereits zwischen vertrauenswürdigen internen und externen Aufrufenden. Details finden Sie unter Management UI. Wenden Sie dasselbe Prinzip auf Ihren Proxy an. Verwenden Sie für Datenverkehr aus Ihrer Infrastruktur eine andere Richtlinie als für Datenverkehr aus dem Internet.
- Rate Limiting mit Kontosperrung kombinieren
Rate Limiting drosselt das Anfragevolumen. Es ersetzt keine Kontosperrung nach wiederholten fehlgeschlagenen Anmeldeversuchen.
Nubus unterstützt die Kontosperrung als separaten, optionalen Mechanismus. Für Anmeldungen über Keycloak, siehe Keycloak APIs zur Authentifizierung. Für den Verzeichnisdienst in beiden Deployments verwenden Sie den Ansatz für OpenLDAP, siehe Verzeichnisdienst.
12.3. Drosselung überwachen und alarmieren#
Konfigurieren Sie Ihren Reverse Proxy oder Ihr API-Gateway so, dass er abgelehnte Anfragen protokolliert. Überwachen Sie die resultierenden 429-Antworten. Konfigurieren Sie einen Alarm für einen plötzlichen Anstieg gedrosselter Anfragen an eine bestimmte API. Ein solcher Anstieg kann auf einen automatisierten Missbrauchsversuch hinweisen, auch wenn das Rate Limiting den zugrunde liegenden Dienst schützt. Untersuchen Sie den Versuch und reagieren Sie darauf.
12.4. Rate Limiting konfigurieren#
Konfigurationsanweisungen für Ihre Bereitstellung finden Sie unter:
Für Nubus für Kubernetes: Rate limit externally exposed services in Univention Nubus for Kubernetes - Operation Manual [1].
Für Nubus für UCS: Ansätze für Rate Limiting für extern bereitgestellte Dienste in Univention Nubus for Kubernetes - Operation Manual [1].
12.5. Zu berücksichtigende Nubus APIs für Rate Limiting#
Dieser Abschnitt gibt einen Überblick über die betreffenden APIs und Dienste, darüber, ob Nubus sie standardmäßig extern freigibt, und darüber, wie sie jeweils Anfragen authentifizieren.
12.5.1. Keycloak APIs zur Authentifizierung#
Keycloak ist ein Identity Provider. Er stellt Endpunkte für OpenID Connect (OIDC) und Security Assertion Markup Language (SAML) bereit. Andere Komponenten und Drittanbieteranwendungen verwenden diese Endpunkte zur Anmeldung und zum Abrufen von Token.
Der Endpunkt /realms/REALM_NAME/protocol/openid-connect/token stellt Token bereit. Ersetzen Sie REALM_NAME durch den Namen des Keycloak-Realms.
Wo Keycloak verwendet wird, ist sein Token-Endpunkt absichtlich ohne bestehende Sitzung erreichbar. Aufrufende authentifizieren sich direkt mit Client-Anmeldedaten oder mit einem Benutzernamen und Passwort. Dies macht den Token-Endpunkt bei hohem Anfragevolumen zu einem Ziel für Credential Stuffing und das Erraten von Passwörtern.
Übersicht
- Authentifizierung
Identity Provider für OpenID Connect (OIDC) oder Security Assertion Markup Language (SAML). Der Token-Endpunkt selbst akzeptiert Client-Anmeldedaten oder das Passwort eines Ressourcenbesitzers ohne vorherige Sitzung.
- Integrierter Schutz vor Missbrauch
Standardmäßig kein Schutz.
- Standardmäßig freigegeben
Ja, standardmäßig freigegeben.
Nubus für Kubernetes stellt Keycloak standardmäßig als Identity Provider der Domäne bereit und gibt ihn standardmäßig extern frei.
Wichtig
Nubus für Kubernetes wird mit standardmäßig deaktivierten, optionalen Keycloak Extensions bereitgestellt. Ohne sie hat Keycloak über einen einfachen, rein benutzernamenbasierten Sperrzähler hinaus keinerlei Brute-Force-Schutz. Sind sie aktiviert, deckt der Brute-Force-Schutz weiterhin nur die interaktive Anmeldeseite ab, nicht direkte Anfragen an den Token-Endpunkt.
Standardmäßig nicht freigegeben. In Nubus für UCS ist Single Sign-On standardmäßig deaktiviert.
Wenn Sie die optionale Keycloak-App installieren, aktiviert sie Single Sign-On.
Siehe auch
- Single Sign-On
in Nubus for UCS - Operation Manual [2] für Informationen über Single Sign-On und die Keycloak App in Nubus für UCS.
- Brute force protection
in Univention Nubus for Kubernetes - Architecture Manual [8] für Informationen über den Brute-Force-Schutz für die Keycloak-Anmeldeseite, und warum er keine direkten Anfragen an den Token-Endpunkt abdeckt.
- Keycloak Extensions
in Univention Nubus for Kubernetes - Operation Manual [1] dazu, wie Sie die Keycloak Extensions aktivieren.
12.5.2. UDM HTTP REST API#
Eine vollständige Beschreibung der UDM HTTP REST API finden Sie unter UDM HTTP REST API in Nubus - Customization and Modification Manual [5].
Informationen zur API-Freigabe und zu den Anforderungen an das Rate Limiting finden Sie unter UDM HTTP REST API in Nubus - Customization and Modification Manual [5].
Übersicht
- Authentifizierung
HTTP-Basic-Authentifizierung gegen ein Konto im Directory.
- Integrierter Schutz vor Missbrauch
Keiner.
- Standardmäßig freigegeben
Standardmäßig nicht freigegeben. Sie können sie über
nubusUdmRestApi.ingress.enabledaktivieren.Folgt der Freigabe des Primary Directory Node.
12.5.3. Provisioning API#
Eine vollständige Beschreibung der Provisioning API finden Sie unter Provisioning API in Nubus - Customization and Modification Manual [5].
Informationen zum API-Zugriff und zu den Anforderungen an das Rate Limiting finden Sie unter Access to Provisioning API endpoint in Nubus - Customization and Modification Manual [5].
Übersicht
- Authentifizierung
HTTP-Basic-Authentifizierung mit Subscription- oder Administrator-Anmeldedaten.
- Integrierter Schutz vor Missbrauch
Keiner.
- Standardmäßig freigegeben
Standardmäßig nicht freigegeben, weil Ingress deaktiviert ist.
Standardmäßig nicht freigegeben. Nach der Installation der Provisioning API App richtet sich die Freigabe nach der Freigabe des Directory Node, auf dem die App installiert ist.
12.5.4. Verzeichnisdienst#
Nubus stellt den Verzeichniszugriff über LDAP bereit, bedient durch OpenLDAP. Es ist keine HTTP-API, daher gilt die generische Anleitung zum Rate Limiting über HTTP-Proxys in Generische Anleitung zur Implementierung nicht direkt dafür.
Übersicht
- Authentifizierung
LDAP Simple Bind.
- Integrierter Schutz vor Missbrauch
Standardmäßig keiner. Optional sperrt eine OpenLDAP-Passwortrichtlinie ein Konto nach wiederholten fehlgeschlagenen Bind-Versuchen.
- Standardmäßig freigegeben
Standardmäßig nicht freigegeben. Standardmäßig ist der Dienst ein clusterinterner
ClusterIP-Dienst.Univention empfiehlt, dass sich Drittanbieterdienste über die Instanzen des LDAP-Proxys und nicht direkt mit den primären LDAP-Instanzen verbinden. Siehe Directory service high availability and scalability in Univention Nubus for Kubernetes - Operation Manual [1].
Folgt der Freigabe des Directory Node, der den Verzeichnisdienst bereitstellt.
Nubus für UCS unterstützt optional eine Kontosperrung nach wiederholten fehlgeschlagenen LDAP-Bind-Versuchen über eine OpenLDAP-Passwortrichtlinie. Dies ist eine Sperrung, kein Rate Limiting: Sie sperrt ein Konto nach einer bestimmten Anzahl von Fehlversuchen, statt das Anfragevolumen zu drosseln, und ist standardmäßig deaktiviert.
Wichtig
Wenn Sie LDAP für ein Netzwerk außerhalb von Nubus freigeben müssen, beispielsweise für eine externe Verzeichnissynchronisierung, verwenden Sie anstelle eines HTTP-Proxys Kontrollen auf Netzwerkebene. Verwenden Sie eine der folgenden Kontrollen:
Firewall-Regeln, die nur eine begrenzte Anzahl entfernter Netzwerke zulassen.
Ein virtuelles privates Netzwerk (VPN).
Begrenzung der Verbindungsanzahl und Rate Limiting am Load Balancer oder an einem LDAP-fähigen Proxy.
Siehe auch
- Kontosperrung für OpenLDAP konfigurieren
in Nubus for UCS - Operation Manual [2] dazu, wie Sie die Sperrung über die OpenLDAP-Passwortrichtlinie konfigurieren.
12.5.5. Management UI#
Die Management UI ist die zentrale Verwaltungsoberfläche von Nubus. Nubus gibt die Management UI sowohl in Nubus für Kubernetes als auch in Nubus für UCS standardmäßig extern frei.
Übersicht
- Authentifizierung
OIDC-Anmeldung über Keycloak, danach eine serverseitige Sitzung.
Standardmäßig lokale Anmeldung, oder SAML über Keycloak, wenn Sie es installieren und aktivieren.
- Integrierter Schutz vor Missbrauch
Das Self Service Verwaltungsmodul, das für Aktionen wie das Zurücksetzen von Passwörtern und die Kontaktverifizierung verwendet wird, verfügt bereits über ein durch Memcached unterstütztes integriertes Rate Limiting für wiederholte Anfragen desselben Clients. Siehe Restrict users or groups from capabilities in End User Self Service in Univention Nubus for Kubernetes - Operation Manual [1].
Anmeldung: Standardmäßig kein Schutz. Optional eine PAM-Kontosperrung.
- Standardmäßig freigegeben
Ja, standardmäßig freigegeben.
Nubus für Kubernetes authentifiziert UMC-Benutzer über Keycloak, gefolgt von einer serverseitigen Sitzung.
Ja, standardmäßig freigegeben. Die Management UI ist die zentrale Verwaltungsoberfläche von UCS.
Nubus für UCS meldet Benutzer standardmäßig lokal oder über Keycloak an, wenn Sie Single Sign-On installieren und aktivieren. Siehe Keycloak APIs zur Authentifizierung.
Nubus für UCS unterstützt optional eine Kontosperrung nach wiederholten fehlgeschlagenen Anmeldeversuchen durch den PAM-Stack, gegen den sich die UMC authentifiziert. Wie bei der OpenLDAP-Sperrung sperrt diese ein Konto nach einer bestimmten Anzahl von Fehlversuchen, anstatt das Anfragevolumen zu drosseln, und sie ist standardmäßig deaktiviert.
Wichtig
Das Rate Limiting des Self-Service deckt nur das Verwaltungsmodul selbst ab. Der Rest der UMC-API, einschließlich ihrer Anmelde- und Sitzungs-Endpunkte, hat kein eigenes Rate Limiting.
Siehe auch
- Benutzerkonto-Sperrung nach fehlgeschlagenen Anmeldeversuchen
in Nubus for UCS - Operation Manual [2] dazu, wie Sie die Kontosperrung nach fehlgeschlagenen Anmeldeversuchen konfigurieren, einschließlich für den PAM-Stack, den UMC verwendet.
12.5.6. Portal#
Das Portal ist die Einstiegsseite der Domäne in Nubus. Es stellt anonyme, statische Inhalte und Endpunkte bereit, die die Sitzung des angemeldeten Benutzers widerspiegeln, beispielsweise die personalisierte Navigation.
Übersicht
- Authentifizierung
Sitzungs-Cookie für personalisierte Inhalte. Die meisten statischen Inhalte sind anonym.
- Integrierter Schutz vor Missbrauch
Keiner.
- Standardmäßig freigegeben
Ja, standardmäßig freigegeben.
Ja, standardmäßig freigegeben. Das Portal ist die Standard-Einstiegsseite der Domäne.
Berücksichtigen Sie Rate Limiting für das Univention Portal aus folgenden Gründen:
Schützen Sie authentifizierte, sitzungsgebundene Endpunkte vor Missbrauch.
Schützen Sie anonyme, statische Endpunkte vor Scraping und automatisierten Anfragen mit hohem Volumen.
12.5.7. Guardian#
Der Guardian ist die Engine zur Autorisierung für Nubus. Er betreibt Cerbos als Policy Decision Point, und Nubus gibt ihn standardmäßig nicht extern frei.
Übersicht
- Authentifizierung
Keine eigene Authentifizierung.
- Integrierter Schutz vor Missbrauch
Keiner.
- Standardmäßig freigegeben
Standardmäßig nicht freigegeben.
Nein, standardmäßig freigegeben.
Wichtig
Cerbos vertraut jedem Aufrufenden, der es erreichen kann, und verfügt über keine eigene Authentifizierung. Wenn Sie eigene Infrastruktur aufbauen, um den Guardian außerhalb seines vertrauenswürdigen Netzwerks freizugeben, ergänzen Sie sowohl Authentifizierung als auch Rate Limiting davor.