RADIUS-Unterstützung für Responder

Die Sprache von Citrix ADC Ausdrücken enthält Ausdrücke, die Informationen aus RADIUS-Anforderungen extrahieren und bearbeiten können. Mit diesen Ausdrücken können Sie die Funktion Responder verwenden, um auf RADIUS-Anforderungen zu antworten. Ihre Responderrichtlinien und -aktionen können jeden Ausdruck verwenden, der für eine RADIUS-Anforderung geeignet oder relevant ist. Die verfügbaren Ausdrücke ermöglichen es Ihnen, den RADIUS-Nachrichtentyp zu identifizieren, ein beliebiges Attributwertpaar (AVP) aus der Verbindung zu extrahieren und auf der Grundlage dieser Informationen unterschiedliche Antworten zu senden. Sie können auch Richtlinienbeschriftungen erstellen, die alle Responderrichtlinien für RADIUS-Verbindungen aufrufen.

Sie können RADIUS-Ausdrücke verwenden, um einfache Antworten zu erstellen, die keine Kommunikation mit dem RADIUS-Server erfordern, an den die Anforderung gesendet wurde. Wenn eine Responder-Richtlinie mit einer Verbindung übereinstimmt, erstellt und sendet Citrix ADC die entsprechende RADIUS-Antwort, ohne den RADIUS-Authentifizierungsserver zu kontaktieren. Wenn beispielsweise die Quell-IP-Adresse einer RADIUS-Anforderung aus einem Subnetz stammt, das in der Responderrichtlinie angegeben ist, kann Citrix ADC auf diese Anforderung mit einer Zugriffsablehnungsnachricht antworten oder die Anforderung einfach löschen.

Sie können auch Richtlinienbeschriftungen erstellen, um bestimmte Arten von RADIUS-Anforderungen durch eine Reihe von Richtlinien weiterzuleiten, die für diese Anforderungen geeignet sind.

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

Die Citrix ADC Dokumentation für Ausdrücke, die RADIUS unterstützen, setzt voraus, dass sie mit der grundlegenden Struktur und dem Zweck der RADIUS-Kommunikation vertraut sind. Wenn Sie weitere Informationen zu RADIUS benötigen, lesen Sie Ihre RADIUS-Serverdokumentation oder suchen Sie online nach einer Einführung in das RADIUS-Protokoll.

Konfigurieren von Responderrichtlinien für RADIUS

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

So konfigurieren Sie eine Responder-Aktion und -Richtlinie und binden Sie die Richtlinie:

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> wo <bindPoint> wobei einen der radius-spezifischen globalen Bindungspunkte darstellt.

RADIUS-Ausdrücke für Responder

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

Identifizieren des Verbindungstyps:

  • RADIUS.IS_CLIENT. Gibt TRUE zurück, wenn die Verbindung eine RADIUS-Client-Meldung (Anfrage) ist.

  • RADIUS.IS_SERVER. Gibt TRUE zurück, wenn die Verbindung eine RADIUS-Servermeldung (Antwort) ist.

Anforderungsausdrücke:

  • RADIUS.REQ.CODE. Gibt die Nummer zurück, die dem RADIUS-Anforderungstyp entspricht. Eine Ableitung der num_at-Klasse. Beispielsweise würde eine RADIUS-Zugriffsanforderung 1 (eins) zurückgeben. Eine RADIUS-Buchhaltungsanforderung würde 4 zurückgeben.
  • RADIUS.REQ.LENGTH. Gibt die Länge der RADIUS-Anforderung einschließlich des Headers zurück. Eine Ableitung der num_at-Klasse.
  • RADIUS.REQ.IDENTIFIER. Gibt die RADIUS-Anforderungskennung zurück, eine Nummer, die jeder Anforderung zugewiesen ist, die es ermöglicht, die Anforderung mit der entsprechenden Antwort abzugleichen. Eine Ableitung der num_at-Klasse.
  • RADIUS.REQ.AVP(<AVP Code No>).VALUE. Gibt den Wert des ersten Vorkommens 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 mehrmals in einer RADIUS-Meldung auftreten. INSTANCE (0) gibt die erste Instanz zurück, INSTANCE (1) gibt die zweite Instanz zurück usw. 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 Typ von AVP 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.

Typecasts von AVP-Werten:

Der ADC unterstützt Ausdrücke, um RADIUS-AVP-Werte für Text, Ganzzahl, Ganzzahl ohne Vorzeichen, lang, unsigned long, ipv4-Adresse, ipv6-Adresse, ipv6-Präfix und Zeitdatentypen zu typisieren. Die Syntax ist die gleiche wie bei anderen Citrix ADC -Typecast-Ausdrücken.

Beispiel:

Der ADC unterstützt Ausdrücke, um RADIUS-AVP-Werte für Text, Ganzzahl, Ganzzahl ohne Vorzeichen, lang, unsigned long, ipv4-Adresse, ipv6-Adresse, ipv6-Präfix und Zeitdatentypen zu typisieren. Die Syntax ist die gleiche wie bei anderen Citrix ADC -Typecast-Ausdrücken.

RADIUS.REQ.AVP(8).VALUE(0).typecast_ip_address_at

AVP-Typausdrücke:

Citrix ADC unterstützt Ausdrücke zum Extrahieren von RADIUS-AVP-Werten mit der zugewiesenen Ganzzahlcodes, die in RFC2865 und RFC2866 beschrieben sind. Sie können auch Textaliase verwenden, um dieselbe Aufgabe auszuführen. Einige Beispiele folgen.

  • 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 die gleiche Weise extrahiert werden.

RADIUS-Bindpunkte:

Für Richtlinien, die RADIUS-Ausdrücke enthalten, stehen vier globale Bindpunkte zur Verfügung.

  • RADIUS_REQ_OVERRIDE. Priorität/Überschreiben der Anforderungsrichtlinienwarteschlange.
  • RADIUS_REQ_DEFAULT. Standardanforderungsrichtlinienwarteschlange.
  • RADIUS_RES_OVERRIDE. Priorität/Überschreiben der Antwortrichtlinienwarteschlange.
  • RADIUS_RES_DEFAULT. Standardwarteschlange für Antwortrichtlinien.

RADIUS-Responder-spezifische Ausdrücke:

  • RADIUS_RESPONDWITH. Reagieren Sie mit der angegebenen RADIUS-Antwort. Die Antwort wird mit Citrix ADC Ausdrücken erstellt, sowohl RADIUS-Ausdrücken als auch anderen anwendbaren Ausdrücken.
  • RADIUS.NEW_ANSWER. Sendet eine neue RADIUS-Antwort an den Benutzer.
  • RADIUS.NEW_ACCESSREJECT. Weist die RADIUS-Anforderung zurück.
  • RADIUS.NEW_AVP. Fügt der Antwort den angegebenen neuen AVP hinzu.

Anwendungsfälle

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

Blockieren von RADIUS-Anforderungen aus einem bestimmten Netzwerk

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

  • Die Priorität
  • END als nextExpr-Wert, um sicherzustellen, dass die Richtlinienbewertung beendet wird, wenn diese Richtlinie übereinstimmt
  • RADIUS_REQ_OVERRIDE als Warteschlange, der Sie die Richtlinie zuweisen, so dass sie vor Richtlinien ausgewertet wird, die der Standardwarteschlange zugewiesen sind.

So konfigurieren Sie Responder, um Anmeldungen von einem bestimmten Netzwerk** zu blockieren

  • 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