ADC

RADIUS-Unterstützung für Responder

Die NetScaler-Ausdruckssprache enthält Ausdrücke, mit denen Informationen aus RADIUS-Anfragen extrahiert und bearbeitet werden können. Mit diesen Ausdrücken können Sie die Responder-Funktion verwenden, um auf RADIUS-Anfragen zu antworten. Ihre Responder-Richtlinien und -Aktionen können jeden Ausdruck verwenden, der für eine RADIUS-Anfrage angemessen oder relevant ist. Die verfügbaren Ausdrücke ermöglichen es Ihnen, den RADIUS-Nachrichtentyp zu identifizieren, jedes Attributwertpaar (AVP) aus der Verbindung zu extrahieren und auf der Grundlage dieser Informationen verschiedene Antworten zu senden. Sie können auch Richtlinienlabels erstellen, die alle Responder-Richtlinien für RADIUS-Verbindungen aufrufen.

Sie können RADIUS-Ausdrücke verwenden, um einfache Antworten zu erstellen, für die keine Kommunikation mit dem RADIUS-Server erforderlich ist, an den die Anfrage gesendet wurde. Wenn eine Responder-Richtlinie einer Verbindung entspricht, erstellt und sendet NetScaler die entsprechende RADIUS-Antwort, ohne den RADIUS-Authentifizierungsserver zu kontaktieren. Wenn die Quell-IP-Adresse einer RADIUS-Anfrage beispielsweise aus einem Subnetz stammt, das in der Responder-Richtlinie angegeben ist, kann der NetScaler auf diese Anfrage mit einer Meldung zur Zugriffsverweigerung antworten oder die Anfrage einfach verwerfen.

Sie können auch Richtlinienlabels erstellen, um bestimmte Arten von RADIUS-Anfragen anhand einer Reihe von Richtlinien weiterzuleiten, die für diese Anfragen geeignet sind.

Hinweis: Die aktuellen RADIUS-Ausdrücke funktionieren nicht mit RADIUS-IPv6-Attributen.

In der NetScaler-Dokumentation für Ausdrücke, die RADIUS unterstützen, wird davon ausgegangen, dass Sie mit der grundlegenden Struktur und dem Zweck der RADIUS-Kommunikation vertraut sind. Wenn Sie weitere Informationen zu RADIUS benötigen, lesen Sie in der RADIUS-Serverdokumentation nach oder suchen Sie online nach einer Einführung in das RADIUS-Protokoll.

Konfiguration von Responder-Richtlinien für RADIUS

Das folgende Verfahren verwendet die NetScaler-Befehlszeile, um eine Responder-Aktion und -Richtlinie zu konfigurieren und die Richtlinie an einen RADIUS-spezifischen globalen Bindungspunkt zu binden.

Gehen Sie wie folgt vor, um eine Responder-Aktion und -Richtlinie zu konfigurieren und die Richtlinie zu binden:

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein:

  • add responder action <actName> <actType>
  • add responder policy <polName> <rule> <actName>
  • bind responder policy <polName> <priority> <nextExpr> -type <bindPoint> wobei <bindPoint> steht für einen der RADIUS-spezifischen globalen Bindungspunkte.

RADIUS-Ausdrücke für Responder

In einer Responderkonfiguration können Sie die folgenden NetScaler-Ausdrücke verwenden, um auf verschiedene Teile einer RADIUS-Anfrage zu verweisen.

Identifizieren der Art der Verbindung:

  • RADIUS.IS_CLIENT. Gibt TRUE zurück, wenn es sich bei der Verbindung um eine RADIUS-Clientnachricht (Anfrage) handelt.

  • RADIUS.IS_SERVER. Gibt TRUE zurück, wenn es sich bei der Verbindung um eine RADIUS-Servernachricht (Antwort) handelt.

Ausdrücke anfordern:

  • RADIUS.REQ.CODE. Gibt die Zahl zurück, die dem RADIUS-Anforderungstyp entspricht. Eine Ableitung der Klasse num_at. Eine RADIUS-Zugriffsanfrage würde beispielsweise 1 (eins) zurückgeben. Eine RADIUS-Buchhaltungsanfrage würde 4 zurückgeben.
  • RADIUS.REQ.LENGTH. Gibt die Länge der RADIUS-Anfrage einschließlich des Headers zurück. Eine Ableitung der Klasse num_at.
  • RADIUS.REQ.IDENTIFIER. Gibt den RADIUS-Anforderungsbezeichner zurück, eine Nummer, die jeder Anfrage zugewiesen wird und die es ermöglicht, die Anfrage mit der entsprechenden Antwort abzugleichen. Eine Ableitung der Klasse num_at.
  • RADIUS.REQ.AVP(<AVP Code No>).VALUE. Gibt den Wert des ersten Auftretens dieses AVP als Zeichenfolge vom Typ text_t zurück.
  • RADIUS.REQ.AVP(<AVP code no>).INSTANCE(instance number). Gibt die angegebene Instanz des AVP als Zeichenfolge vom Typ raVP_T zurück. Ein bestimmter RADIUS-AVP kann in einer RADIUS-Nachricht mehrfach vorkommen. INSTANCE (0) gibt die erste Instanz zurück, INSTANCE (1) gibt die zweite Instanz zurück und so weiter, bis zu sechzehn Instanzen.
  • RADIUS.REQ.AVP(<AVP code no>).VALUE(instance number). Gibt den Wert der angegebenen Instanz des AVP als Zeichenfolge vom Typ text_t zurück.
  • RADIUS.REQ.AVP(<AVP code no>).COUNT. Gibt die Anzahl der Instanzen eines bestimmten AVP in einer RADIUS-Verbindung als Ganzzahl zurück.
  • RADIUS.REQ.AVP(<AVP code no>).EXISTS. Gibt TRUE zurück, wenn der angegebene AVP-Typ in der Nachricht vorhanden ist, oder FALSE, wenn dies nicht der Fall ist.

Antwortausdrücke:

RADIUS-Antwortausdrücke sind identisch mit RADIUS-Anforderungsausdrücken, mit der Ausnahme, dass RES REQ ersetzt.

Typumwandlungen von AVP-Werten:

Der ADC unterstützt Ausdrücke zur Typisierung von RADIUS-AVP-Werten in die Datentypen Text, Integer, unsigned Integer, Long, unsigned Long, IPv4-Adresse, IPv6-Adresse, IPv6-Adresse, IPv6-Präfix und Zeit. Die Syntax ist dieselbe wie bei anderen NetScaler-Typecast-Ausdrücken.

Beispiel:

Der ADC unterstützt Ausdrücke zur Typisierung von RADIUS-AVP-Werten in die Datentypen Text, Integer, unsigned Integer, Long, unsigned Long, IPv4-Adresse, IPv6-Adresse, IPv6-Adresse, IPv6-Präfix und Zeit. Die Syntax ist dieselbe wie bei anderen NetScaler-Typecast-Ausdrücken.

RADIUS.REQ.AVP(8).VALUE(0).typecast_ip_address_at
<!--NeedCopy-->

Ausdrücke vom Typ AVP:

Der NetScaler unterstützt Ausdrücke zum Extrahieren von RADIUS-AVP-Werten mithilfe der in RFC2865 und RFC2866 beschriebenen zugewiesenen Integer-Codes. Sie können auch Text-Aliase verwenden, um dieselbe Aufgabe zu erledigen. Es folgen einige Beispiele.

  • RADIUS.REQ.AVP (1) .VALUE oder RADIUS.REQ.USERNAME.VALUE. Extrahiert den RADIUS-Benutzernamenwert.
  • RADIUS.REQ.AVP (4). VALUE oder RADIUS.REQ. ACCT_SESSION_ID.value. Extrahiert die accT-Session-ID AVP (Code 44) aus der Nachricht.
  • RADIUS.REQ.AVP (26). VALUE oder RADIUS.REQ.VENDOR_SPECIFIC.VALUE. Extrahiert den herstellerspezifischen Wert.

Die Werte der am häufigsten verwendeten RADIUS-AVPs können auf dieselbe Weise extrahiert werden.

RADIUS-Bindungspunkte:

Vier globale Bindungspunkte sind für Richtlinien verfügbar, die RADIUS-Ausdrücke enthalten.

  • RADIUS_REQ_OVERRIDE. Warteschlange für Richtlinien zur Priorität/Außerkraftsetzung von Anfragen.
  • RADIUS_REQ_DEFAULT. Standardwarteschlange für Anforderungsrichtlinien.
  • RADIUS_RES_OVERRIDE. Warteschlange für Antwortrichtlinien zur Priorität/Außerkraftsetzung.
  • RADIUS_RES_DEFAULT. Standardwarteschlange für Antwortrichtlinien.

RADIUS-Responderspezifische Ausdrücke:

  • RADIUS_RESPONDWITH. Antworten Sie mit der angegebenen RADIUS-Antwort. Die Antwort wird mit NetScaler-Ausdrücken erstellt, sowohl mit RADIUS-Ausdrücken als auch mit allen anderen zutreffenden Ausdrücken.
  • RADIUS.NEUE_ANTWORT. Sendet eine neue RADIUS-Antwort an den Benutzer.
  • RADIUS.NEW_ACCESSREJECT. Lehnt die RADIUS-Anfrage ab.
  • RADIUS.NEW_AVP. Fügt der Antwort den angegebenen neuen AVP hinzu.

Anwendungsfälle

Im Folgenden finden Sie Anwendungsfälle für RADIUS mit Responder.

Sperren von RADIUS-Anfragen aus einem bestimmten Netzwerk

Um die Responder-Funktion so zu konfigurieren, dass Authentifizierungsanfragen von einem bestimmten Netzwerk blockiert werden, erstellen Sie zunächst eine Responder-Aktion, die Anfragen ablehnt. Verwenden Sie die Aktion in einer Richtlinie, die Anfragen aus den Netzwerken auswählt, die Sie blockieren möchten. Binden Sie die Responder-Richtlinie an einen RADIUS-spezifischen globalen Bindungspunkt und geben Sie Folgendes an:

  • Die Priorität
  • END als NextExpr-Wert, um sicherzustellen, dass die Bewertung der Richtlinie beendet wird, wenn diese Richtlinie eingehalten wird
  • RADIUS_REQ_OVERRIDE als die Warteschlange, der Sie die Richtlinie zuweisen, sodass sie vor den Richtlinien ausgewertet wird, die der Standardwarteschlange zugewiesen wurden

So konfigurieren Sie Responder so, dass Anmeldungen aus einem bestimmten Netzwerk blockiert werden**

  • add responder action <actName> <actType>
  • add responder policy <polName> <rule> <actName>
  • bind responder global <polName> <priority> <nextExpr> -type <bindPoint>

Beispiel:

> add responder action rspActRadiusReject respondwith radius.new_accessreject
Done

> add responder policy rspPolRadiusReject client.ip.src.in_subnet(10.224.85.0/24) rspActRadiusReject
Done

> bind responder global rspPolRadiusReject 1 END -type RADIUS_REQ_OVERRIDE
<!--NeedCopy-->
RADIUS-Unterstützung für Responder