Ratenbegrenzung für NetScaler Gateway
Mit der Ratenbegrenzungsfunktion für NetScaler Gateway können Sie die maximale Last für eine bestimmte Netzwerkeinheit oder virtuelle Entität auf der NetScaler Gateway-Appliance definieren. Da das NetScaler Gateway-Gerät den gesamten nicht authentifizierten Datenverkehr verbraucht, ist das Gerät häufig Prozessanforderungen mit hoher Geschwindigkeit ausgesetzt. Mit der Ratenbegrenzungsfunktion können Sie das NetScaler Gateway Gerät so konfigurieren, dass die Datenverkehrsrate einer Entität überwacht und basierend auf dem Datenverkehr in Echtzeit vorbeugende Maßnahmen ergriffen werden. Weitere Informationen zur Funktionsweise der Ratenbegrenzung in einer NetScaler-Appliance finden Sie unter Ratenbegrenzung.
NetScaler verfügt über die Funktion zur Begrenzung der Rate, die Back-End-Server mit einer unvorhergesehenen Geschwindigkeit schützt. Da die Funktion für NetScaler den nicht authentifizierten Datenverkehr, den NetScaler Gateway verarbeitet, nicht bereitstellte, benötigte NetScaler Gateway seine eigenen ratenbegrenzenden Funktionen. Dies ist erforderlich, um eine unvorhergesehene Rate von Anfragen aus verschiedenen Quellen zu überprüfen, denen das NetScaler Gateway-Gerät ausgesetzt ist. Zum Beispiel nicht authentifizierte/Anmelde-/Steuerungsanfragen und bestimmte APIs, die für Endbenutzer- oder Gerätevalidierungen offengelegt wurden.
Häufige Anwendungsfälle für die Tarifbegrenzung
-
Beschränken Sie die Anzahl der Anfragen pro Sekunde von einer URL.
-
Trennen Sie eine Verbindung basierend auf Cookies, die auf Anfrage von einem bestimmten Host empfangen wurden, wenn die Anfrage das Ratenlimit überschreitet.
-
Beschränken Sie die Anzahl der HTTP-Anfragen, die von demselben Host (mit einer bestimmten Subnetzmaske) eingehen und dieselbe Ziel-IP-Adresse haben.
Konfigurieren der Ratenbegrenzung für NetScaler Gateway
Voraussetzungen
Ein konfigurierter virtueller Authentifizierungsserver.
Wichtige Hinweise
-
In den Konfigurationsschritten wird ein Sample-Limit Identifier konfiguriert. Dasselbe kann mit allen unterstützten Parametern wie Stream-Selektor, Modus konfiguriert werden. Eine erschöpfende Beschreibung der Ratenbegrenzungsfunktionen finden Sie unter Ratenbegrenzung.
-
Die Richtlinie kann auch wie folgt an einen virtuellen VPN-Server gebunden werden. Sie benötigen einen konfigurierten virtuellen VPN-Server, um die Richtlinien mit dem folgenden Befehl zu binden.
bind vpn vserver -policy denylogin –pri 1 –type aaa_request <!--NeedCopy-->
-
AAA_REQUEST ist ein neu eingeführter Bindepunkt für Responder-Richtlinien. Die an diesem Bindepunkt konfigurierten Richtlinien werden auf alle eingehenden Anforderungen auf dem angegebenen virtuellen Server angewendet. Die Richtlinien werden für den nicht authentifizierten/kontrollierten Verkehr zuerst vor jeder anderen Verarbeitung verarbeitet.
-
Das Binden der Richtlinie an den virtuellen NetScaler Gateway-Server ermöglicht die Ratenbegrenzung am AAA_REQUEST-Bindpunkt für den gesamten von NetScaler Gateway verbrauchten Datenverkehr, einschließlich nicht authentifizierter Anforderungen.
-
Durch das Binden der Richtlinie an einen virtuellen Authentifizierungsserver werden die nicht authentifizierten/kontrollierten Anforderungen begrenzt, die den virtuellen Authentifizierungsserver treffen.
Um die Ratenbegrenzung über die Befehlszeile zu konfigurieren, geben Sie an der Eingabeaufforderung die folgenden Befehle ein:
add limitIdentifier <limitIdentifier name> -threshold <positive_integer> -timeslice <positive_integer> -mode <mode type>
<!--NeedCopy-->
Beispiel:
add limitIdentifier limit_one_login -threshold 10 -timeslice 4294967290 -mode REQUEST_RATE
<!--NeedCopy-->
add responderaction denylogin respondwith ‘“HTTP/1.1 200 OK\r\n\r\n” + “Request is denied due to unusual rate”’
<!--NeedCopy-->
add responder policy denylogin 'sys.check_limit("limit_one_login")' denylogin
<!--NeedCopy-->
bind authentication vserver <vserver name> -policy denylogin –pri 1 –type aaa_request
<!--NeedCopy-->
Beispiel:
bind authentication vserver authvserver -policy denylogin –pri 1 –type aaa_request
<!--NeedCopy-->
Beschreibung des Parameters
-
limitIdentifier - Name für eine Ratenbegrenzungs-ID. Muss mit einem ASCII-Buchstaben oder Unterstrich (_) beginnen und darf nur aus alphanumerischen ASCII-Zeichen oder Unterstrichen bestehen. Reservierte Wörter dürfen nicht verwendet werden. Dies ist ein obligatorisches Argument. Maximale Länge: 31
-
Schwellenwert - Eine maximale Anzahl von Anforderungen, die in der angegebenen Zeitleiste zulässig sind, wenn Anfragen (Modus ist als REQUEST_RATE festgelegt) pro Timeslice verfolgt werden. Wenn Verbindungen (Modus ist als CONNECTION eingestellt) verfolgt werden, ist dies die Gesamtzahl der Verbindungen, die durchgelassen würden. Standardwert: 1 Minimalwert: 1 Maximalwert: 4294967295
-
timeSlice - Zeitintervall in Millisekunden, angegeben in Vielfachen von 10, in dem Anfragen verfolgt werden, um zu überprüfen, ob sie den Schwellenwert überschreiten. Das Argument wird nur benötigt, wenn der Modus auf REQUEST_RATE gesetzt ist. Standardwert: 1000 Mindestwert: 10 Maximalwert: 4294967295
-
mode - Definiert die Art des Traffics, der verfolgt werden soll.
- REQUEST_RATE - Verfolgt Anforderungen/Timeslice.
- CONNECTION - Verfolgt aktive Transaktionen.
So konfigurieren Sie die Ratenbegrenzung über die NetScaler-GUI:
-
Navigieren Sie zu AppExpert > Ratenbegrenzung > Limitkennungen, klicken Sie auf Hinzufügen, und geben Sie die entsprechenden Details an, wie im CLI-Abschnitt angegeben.
-
Navigieren Sie zu AppExpert>Responder>Richtlinien. Klicken Sie auf der Seite Responder-Richtlinien auf Hinzufügen.
-
Erstellen Sie auf der Seite Responder Policy erstellen eine Responder-Richtlinie mit einer Responder Action, die über die Limit-ID verfügt.
-
Um eine Responder-Aktion zu erstellen, klicken Sie neben Aktion auf Hinzufügen.
-
Geben Sie auf der Seite Responder-Aktion erstellen einen Namen für die Responder-Aktion ein.
-
Wählen Sie im Dropdownmenü den Typ Antworten mit aus.
-
Konfigurieren Sie im Ausdruckseditor die Antwortnachricht. Beispiel:
"HTTP/1.1 200 OK\r\n\r\n"+ "Request is denied due to unusual rate"
. -
Klicken Sie auf Erstellen.
-
Um eine Responder-Richtlinie zu erstellen, geben Sie auf der Seite Responder-Richtlinie erstellen einen Namen für die Responder-Richtlinie ein.
-
Konfigurieren Sie im Ausdruckseditor die Bedingung für die Responder-Richtlinie. Beispiel:
'sys.check_limit("limit_one_login")'
. -
Klicken Sie auf Erstellen.
-
Binden Sie die Responder Policy an den virtuellen Authentifizierungsserver.
- Gehen Sie zu Sicherheit> AAA-Anwendungsverkehr> Virtueller Server.
- Wählen Sie den virtuellen Server aus.
- Fügen Sie eine Richtlinie hinzu.
- Wählen Sie die Responder Policy aus, die Sie an den Server binden möchten, und legen Sie die Priorität fest.
- Wählen Sie den Typ als AAA-REQUEST und klicken Sie auf Weiter.
Hinweis:
Sie können die Ratenbegrenzung auch am AAA_REQUEST-Bindpunkt für den virtuellen VPN-Server aktivieren.
Konfiguration für die gängigen Anwendungsfälle zum Anwenden von Ratenbegrenzung auf NetScaler Gateway
Im Folgenden sind die Beispiele für Befehle zum Konfigurieren allgemeiner Anwendungsfälle aufgeführt.
-
Beschränken Sie die Anzahl der Anfragen pro Sekunde von einer URL.
add stream selector ipStreamSelector http.req.url “client.ip.src” add ns limitIdentifier ipLimitIdentifier –threshold 4 –timeslice 1000 –mode request_rate –limitType smooth –selectorName ip StreamSelector add responder policy ipLimitResponderPolicy “http.req.url.contains(\”myasp.asp\”) && sys.check_limit(\”ipLimitIdentifier\”)” myWebSiteRedirectAction bind authentication virtual server authvserver -policy denylogin –pri 1 –type aaa_request <!--NeedCopy-->
-
Trennen Sie eine Verbindung basierend auf Cookies, die auf Anfrage von
www.yourcompany.com
erhalten wurden, wenn die Anfrage das Tariflimit überschreitet.add stream selector cacheStreamSelector “http.req.cookie.value(\”mycookie\”)” “client.ip.src.subnet(24)” add ns limitIdentifier myLimitIdentifier –Threshold 2 –timeSlice 3000 –selectorName reqCookieStreamSelector add responder action sendRedirectURL redirect `"http://www.mycompany.com"` + http.req.url' add responder policy rateLimitCookiePolicy “http.req.url.contains(\www.yourcompany.com) && sys.check_limit(\”myLimitIdentifier\”)” sendRedirectUrl <!--NeedCopy-->
-
Beschränken Sie die Anzahl der HTTP-Anfragen, die vom selben Host (mit einer Subnetzmaske von 32) eingehen und dieselbe Ziel-IP-Adresse haben.
add stream selector ipv6_sel “CLIENT.IPv6.src.subnet(32)”CLIENT.IPv6.dst add ns limitIdentifier ipv6_id –imeSlice 20000 –selectorName ipv6_sel add lb vserver ipv6_vip HTTP 3ffe:: 209 80 –persistenceType NONE –cltTime add responder action redirect_page redirect “\”`http://redirectpage.com/\”"` add responder policy ipv6_resp_pol “SYS.CHECK_LIMIT(\”ipv6_id\”)” redirect_page bind responder global ipv6_resp_pol 5 END –type DEFAULT <!--NeedCopy-->
Bind-Responder-Richtlinie für Authentifizierungs-, Autorisierungs- und Audit-Endpunkte
Damit die Paket-Engine die Anfragen verarbeiten kann, binden Sie die Responder-Richtlinie mit dem Bindpoint AAA_REQUEST
an den virtuellen Authentifizierungsserver oder den virtuellen VPN-Server.
-
Beispiel für einen virtuellen VPN-Server:
bind vpn vserver vpnVs -policy resp_pol -priority 6 -type AAA_REQUEST
-
Beispiel für einen virtuellen Authentifizierungsserver:
bind authentication vserver av_vs -policy resp_pol -priority 6 -type AAA_REQUEST
Damit der Apache HTTP-Server die Anfragen verarbeiten kann, binden Sie die Responder-Richtlinie mit dem Bindpoint REQUEST
an den virtuellen Authentifizierungsserver oder den virtuellen VPN-Server.
Beispiel:
-
Beispiel für einen virtuellen VPN-Server:
bind vpn vserver vpnVs -policy resp_pol -priority 6 -type REQUEST
-
Beispiel für einen virtuellen Authentifizierungsserver:
bind authentication vserver av_vs -policy resp_pol -priority 6 -type REQUEST
Einzelheiten zum Binden von Responder-Richtlinien finden Sie unter Binden einer Responder-Richtlinie.