Citrix ADC

Ratenbegrenzung für Citrix Gateway

Mit der Ratenbegrenzungsfunktion für Citrix Gateway können Sie die maximale Last für eine bestimmte Netzwerkeinheit oder virtuelle Entität auf der Citrix Gateway-Appliance definieren. Da das Citrix 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 Citrix 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 Citrix ADC-Appliance finden Sie unter Ratenbegrenzung.

Citrix ADC verfügt über die Ratenbegrenzungsfunktion, die Back-End-Servern gegen unvorhergesehene Rate schützt. Da die Funktion für Citrix ADC den nicht authentifizierten Datenverkehr, den Citrix Gateway verarbeitet, nicht bereitstellte, benötigte Citrix Gateway seine eigenen ratenbegrenzenden Funktionen. Dies ist erforderlich, um eine unvorhergesehene Rate von Anfragen aus verschiedenen Quellen zu überprüfen, denen das Citrix 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.

  • Lösen Sie eine Verbindung basierend auf Cookies, die auf Anfrage von einem bestimmten Host erhalten wurden, wenn die Anfrage das Tariflimit ü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 Citrix Gateway

Voraussetzungen

Ein konfigurierter virtueller Authentifizierungsserver.

Beachtenswerte Punkte

  • 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 Zinsbegrenzungsfunktionen finden Sie unter Zinsbegrenzung.

  • 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 Citrix Gateway-Server ermöglicht die Ratenbegrenzung am AAA_REQUEST-Bindpunkt für den gesamten von Citrix 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-->
Example: 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-->
Example: 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 Citrix ADC GUI:

  1. Navigieren Sie zu AppExpert > Ratenbegrenzung > Limitkennungen, klicken Sie auf Hinzufügen, und geben Sie die entsprechenden Details an, wie im CLI-Abschnitt angegeben.

    Erstellen Sie eine Limit-ID.

  2. Navigieren Sie zu AppExpert>Responder>Richtlinien. Klicken Sie auf der Seite Responder-Richtlinien auf Hinzufügen.

  3. Erstellen Sie auf der Seite Responder Policy erstellen eine Responder-Richtlinie mit einer Responder Action, die über die Limit-ID verfügt.

  4. Um eine Responder Action zu erstellen, klicken Sie neben Aktion auf Hinzufügen und geben Sie einen Namen für die Responder Action ein.

  5. Wählen Sie im Dropdown-Menü den Typ als Antworten mit aus, geben Sie den folgenden Ausdruck an: “HTTP/1.1 200 OK\ r\ n\ r\ n”+ “Anforderung wird aufgrund ungewöhnlicher Rate verweigert”, und klicken Sie auf Erstellen.

    Responder Action erstellen

  6. Um eine Responder Policy zu erstellen, geben Sie auf der Seite Responder Policy erstellen einen Namen für die Responder-Richtlinie ein, geben Sie den folgenden Ausdruck an: ‘sys.check_limit (“limit_one_login”) ‘, und klicken Sie auf Erstellen.

    Responder Policy erstellen

  7. Binden Sie die Responder Policy an den virtuellen Authentifizierungsserver.

    • a. Gehen Sie zu Sicherheit> AAA-Anwendungsverkehr> Virtueller Server.
    • b. Wählen Sie den virtuellen Server aus.
    • c. Fügen Sie eine Richtlinie hinzu.
    • d. Wählen Sie die Responder Policy aus, die Sie an den Server binden möchten, und legen Sie die Priorität fest.
    • e. Wählen Sie den Typ als AAA-REQUEST und klicken Sie auf Weiter.

    Binden Sie die Richtlinie

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 Citrix 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-->
    
  • Lösen 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 Q.URL
    
     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-->