Citrix ADC

Prise en charge de RADIUS pour le répondeur

Le langage des expressions Citrix ADC contient des expressions qui peuvent extraire des informations des requêtes RADIUS et les manipuler. Ces expressions vous permettent d’utiliser la fonction Responder pour répondre aux demandes RADIUS. Vos stratégies et actions de répondeur peuvent utiliser n’importe quelle expression appropriée ou pertinente à une requête RADIUS. Les expressions disponibles vous permettent d’identifier le type de message RADIUS, d’extraire toute paire attribute-valeur (AVP) de la connexion et d’envoyer différentes réponses sur la base de ces informations. Vous pouvez également créer des étiquettes de stratégie qui appellent toutes les stratégies de répondeur pour les connexions RADIUS.

Vous pouvez utiliser les expressions RADIUS pour créer des réponses simples qui ne nécessitent pas de communication avec le serveur RADIUS auquel la demande a été envoyée. Lorsqu’une stratégie de répondeur correspond à une connexion, Citrix ADC construit et envoie la réponse RADIUS appropriée sans contacter le serveur d’authentification RADIUS. Par exemple, si l’adresse IP source d’une requête RADIUS provient d’un sous-réseau spécifié dans la stratégie de répondeur, Citrix ADC peut répondre à cette demande avec un message de rejet d’accès ou peut simplement supprimer la demande.

Vous pouvez également créer des étiquettes de stratégie pour acheminer des types spécifiques de demandes RADIUS via une série de stratégies appropriées à ces demandes.

Remarque : Les expressions RADIUS actuelles ne fonctionnent pas avec les attributs RADIUS IPv6.

La documentation Citrix ADC pour les expressions prenant en charge RADIUS suppose une familiarité avec la structure de base et le but des communications RADIUS. Si vous avez besoin de plus d’informations sur RADIUS, consultez la documentation de votre serveur RADIUS ou recherchez en ligne une introduction au protocole RADIUS.

Configuration des stratégies de répondeur pour RADIUS

La procédure suivante utilise la ligne de commande Citrix ADC pour configurer une action et une stratégie de répondeur et lier la stratégie à un point de liaison global spécifique à RADIUS.

Pour configurer une action et une stratégie de répondeur et lier la stratégie :

À l’invite de commandes, tapez les commandes suivantes :

  • add responder action <actName> <actType>
  • add responder policy <polName> <rule> <actName>
  • bind responder policy <polName> <priority> <nextExpr> -type <bindPoint><bindPoint> représente l’un des points de liaison globaux spécifiques à Radius.

Expressions RADIUS pour le répondeur

Dans une configuration de répondeur, vous pouvez utiliser les expressions Citrix ADC suivantes pour faire référence à diverses parties d’une requête RADIUS.

Identification du type de connexion :

  • RADIUS.IS_CLIENT. Renvoie TRUE si la connexion est un message client RADIUS (demande).

  • RADIUS.IS_SERVER. Renvoie TRUE si la connexion est un message de réponse du serveur RADIUS.

Expressions de demande :

  • RADIUS.REQ.CODE. Renvoie le nombre correspondant au type de requête RADIUS. Un dérivé de la classe num_at. Par exemple, une demande d’accès RADIUS renvoie 1 (un). Une demande de comptabilité RADIUS retournerait 4.
  • RADIUS.REQ.LENGTH. Renvoie la longueur de la requête RADIUS, y compris l’en-tête. Un dérivé de la classe num_at.
  • RADIUS.REQ.IDENTIFIER. Renvoie l’identificateur de demande RADIUS, un numéro attribué à chaque demande qui permet de faire correspondre la demande à la réponse correspondante. Un dérivé de la classe num_at.
  • RADIUS.REQ.AVP(<AVP Code No>).VALUE. Renvoie la valeur de la première occurrence de cet AVP sous la forme d’une chaîne de type text_t.
  • RADIUS.REQ.AVP(<AVP code no>).INSTANCE(instance number). Renvoie l’instance spécifiée de l’AVP sous la forme d’une chaîne de type RAVP_t. Un AVP RADIUS spécifique peut se produire plusieurs fois dans un message RADIUS. INSTANCE (0) renvoie la première instance, INSTANCE (1) renvoie la deuxième instance, et ainsi de suite, jusqu’à seize instances.
  • RADIUS.REQ.AVP(<AVP code no>).VALUE(instance number). Renvoie la valeur de l’instance spécifiée de l’AVP sous la forme d’une chaîne de type text_t.
  • RADIUS.REQ.AVP(<AVP code no>).COUNT. Renvoie le nombre d’instances d’un AVP spécifique dans une connexion RADIUS, sous forme d’entier.
  • RADIUS.REQ.AVP(<AVP code no>).EXISTS. Renvoie TRUE si le type d’AVP spécifié existe dans le message, ou FALSE si ce n’est pas le cas.

Expressions de réponse :

Les expressions de réponse RADIUS sont identiques aux expressions de demande RADIUS, sauf que RES remplace REQ.

Types de valeurs AVP :

L’ADC prend en charge les expressions permettant de taper les valeurs AVP RADIUS dans les types de données texte, entier, entier non signé, long, adresse ipv4, adresse ipv6, préfixe ipv6 et heure. La syntaxe est la même que pour les autres expressions de typecast Citrix ADC.

Exemple :

L’ADC prend en charge les expressions permettant de taper les valeurs AVP RADIUS dans les types de données texte, entier, entier non signé, long, adresse ipv4, adresse ipv6, préfixe ipv6 et heure. La syntaxe est la même que pour les autres expressions de typecast Citrix ADC.

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

Expressions de type AVP :

Citrix ADC prend en charge les expressions pour extraire les valeurs RADIUS AVP à l’aide des codes entiers assignés décrits dans RFC2865 et RFC2866. Vous pouvez également utiliser des alias de texte pour accomplir la même tâche. Voici quelques exemples.

  • RADIUS.REQ.AVP (1) .VALUE ou Radius.req.username.value. Extrait la valeur du nom d’utilisateur RADIUS.
  • RADIUS.REQ.AVP (4). VALUE ou RADIUS.REQ. ACCT_SESSION_ID.Value. Extrait Acct-Session-ID AVP (code 44) du message.
  • RADIUS.REQ.AVP (26). VALUE ou RADIUS.REQ.VENDOR_SPECIFIC.VALUE. Extrait la valeur spécifique au fournisseur.

Les valeurs des AVP RADIUS les plus couramment utilisés peuvent être extraites de la même manière.

Points de liaison RADIUS :

Quatre points de liaison globaux sont disponibles pour les stratégies qui contiennent des expressions RADIUS.

  • RADIUS_REQ_OVERRIDE. Priorité/Remplacer la file d’attente de stratégie de demande.
  • RADIUS_REQ_DEFAULT. File d’attente de stratégie de demande standard.
  • RADIUS_RES_OVERRIDE. Priorité/Remplacer la file d’attente de stratégie de réponse.
  • RADIUS_RES_DEFAULT. File d’attente de stratégie de réponse standard.

Expressions spécifiques au répondeur RADIUS :

  • RADIUS_RESPONDWITH. Répondez avec la réponse RADIUS spécifiée. La réponse est créée avec les expressions Citrix ADC, à la fois les expressions RADIUS et toutes les autres expressions applicables.
  • RADIUS.NEW_ANSWER. Envoie une nouvelle réponse RADIUS à l’utilisateur.
  • RADIUS.NEW_ACCESSREJECT. Rejette la demande RADIUS.
  • RADIUS.NEW_AVP. Ajoute le nouvel AVP spécifié à la réponse.

Cas d’utilisation

Voici des cas d’utilisation pour RADIUS avec répondeur.

Blocage des demandes RADIUS à partir d’un réseau spécifique

Pour configurer la fonctionnalité de répondeur pour bloquer les demandes d’authentification à partir d’un réseau spécifique, commencez par créer une action de répondeur qui rejette les demandes. Utilisez l’action d’une stratégie qui sélectionne les demandes des réseaux que vous souhaitez bloquer. Liez la stratégie de répondeur à un point de liaison global spécifique à RADIUS, en spécifiant :

  • La priorité
  • END comme valeur NextExpr, pour s’assurer que l’évaluation de la stratégie s’arrête lorsque cette stratégie est appariée
  • RADIUS_REQ_OVERRIDE en tant que file d’attente à laquelle vous affectez la stratégie, de sorte qu’elle soit évaluée avant que les stratégies ne soient affectées à la file d’attente par défaut

Pour configurer Répondeur pour bloquer les ouvertures de session à partir d’un réseau spécifique**

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

Exemple :

> 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

Prise en charge de RADIUS pour le répondeur