ADC

Prise en charge de RADIUS pour Responder

Le langage d’expressions NetScaler contient des expressions permettant d’extraire des informations à partir de requêtes RADIUS et de les manipuler. Ces expressions vous permettent d’utiliser la fonctionnalité Répondeur 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 attribut-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 des 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, le NetScaler 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 demande RADIUS provient d’un sous-réseau spécifié dans la stratégie de réponse, NetScaler peut répondre à cette demande par 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 IPv6 de RADIUS.

La documentation de NetScaler relative aux expressions qui prennent en charge RADIUS suppose une connaissance de la structure et de l’objectif de base des communications RADIUS. Si vous avez besoin de plus amples 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 NetScaler 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, procédez comme suit :

À 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 Responder

Dans une configuration de répondeur, vous pouvez utiliser les expressions NetScaler suivantes pour faire référence à différentes parties d’une demande 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 serveur RADIUS (réponse).

Expressions de requête :

  • RADIUS.REQ.CODE. Renvoie le numéro qui correspond au type de demande RADIUS. Un dérivé de la classe num_at. Par exemple, une demande d’accès RADIUS renverrait 1 (un). Une demande de comptabilité RADIUS renverrait 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’identifiant 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 apparaître 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 forme de 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 dans le cas contraire.

Expressions de réponse :

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

Typecasts des valeurs AVP :

L’ADC prend en charge les expressions permettant de convertir les valeurs RADIUS AVP sous forme de texte, d’entier, d’entier non signé, de type long, de type long non signé, d’adresse ipv4, d’adresse ipv6, de préfixe ipv6 et de types de données temporelles. La syntaxe est la même que pour les autres expressions NetScaler typecast.

Exemple :

L’ADC prend en charge les expressions permettant de convertir les valeurs RADIUS AVP sous forme de texte, d’entier, d’entier non signé, de type long, de type long non signé, d’adresse ipv4, d’adresse ipv6, de préfixe ipv6 et de types de données temporelles. La syntaxe est la même que pour les autres expressions NetScaler typecast.

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

Expressions de type AVP :

NetScaler prend en charge les expressions permettant d’extraire les valeurs RADIUS AVP à l’aide des codes entiers assignés décrits dans les RFC2865 et RFC2866. Vous pouvez également utiliser des alias de texte pour effectuer 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 le 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ées 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 règles 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 à l’aide d’expressions NetScaler, à la fois des expressions RADIUS et toute autre expression applicable.
  • 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

Vous trouverez ci-dessous des cas d’utilisation de RADIUS avec répondeur.

Blocage des requêtes RADIUS provenant d’un réseau spécifique

Pour configurer la fonction de répondeur afin de bloquer les demandes d’authentification provenant 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 Responder afin de bloquer les connexions à 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
<!--NeedCopy-->
Prise en charge de RADIUS pour Responder