ADC

レスポンダーに対する RADIUS のサポート

Citrix ADC の式言語には、RADIUS 要求から情報を抽出して操作できる式が含まれています。これらの式を使用すると、レスポンダー機能を使用して RADIUS 要求に応答できます。レスポンダのポリシーとアクションは、RADIUS 要求に適切または関連する任意の式を使用できます。使用可能な式を使用すると、RADIUS メッセージタイプを識別し、接続から任意の属性値ペア(AVP)を抽出し、その情報に基づいて異なる応答を送信できます。RADIUS 接続のすべての応答側ポリシーを呼び出すポリシーラベルを作成することもできます。

RADIUS 式を使用すると、要求の送信先の RADIUS サーバとの通信を必要としない単純な応答を作成できます。レスポンダーポリシーが接続と一致すると、Citrix ADCはRADIUS認証サーバーに接続せずに適切なRADIUSレスポンスを構築して送信します。たとえば、RADIUS要求の送信元IPアドレスがレスポンダーポリシーで指定されたサブネットからのものである場合、Citrix ADCはその要求に対してアクセス拒否メッセージで応答するか、単に要求をドロップできます。

ポリシーラベルを作成して、特定のタイプの RADIUS 要求を、それらの要求に適した一連のポリシーを通してルーティングすることもできます。

注: 現在の RADIUS 式は、RADIUS IPv6 属性では機能しません。

RADIUSをサポートする式に関するCitrix ADC マニュアルでは、RADIUS通信の基本構造と目的を理解していることを前提としています。RADIUS の詳細については、RADIUS サーバのマニュアルを参照するか、RADIUS プロトコルの概要をオンラインで検索してください。

RADIUS のレスポンダーポリシーの構成

以下の手順では、Citrix ADCコマンドラインを使用してレスポンダーのアクションとポリシーを構成し、RADIUS固有のグローバルバインドポイントにポリシーをバインドします。

レスポンダーのアクションとポリシーを構成し、ポリシーをバインドするには、次の手順に従います。

コマンドプロンプトで、次のコマンドを入力します。

  • add responder action <actName> <actType>
  • add responder policy <polName> <rule> <actName>
  • bind responder policy <polName> <priority> <nextExpr> -type <bindPoint> ここで、<bindPoint>は RADIUS 固有のグローバルバインドポイントの 1 つを表します。

レスポンダの RADIUS 式

レスポンダーの構成では、次の Citrix ADC 式を使用して、RADIUS 要求のさまざまな部分を参照できます。

接続タイプの識別:

  • RADIUS.IS_CLIENT。接続が RADIUS クライアント (要求) メッセージである場合は TRUE を返します。

  • RADIUS.IS_SERVER 接続が RADIUS サーバー (応答) メッセージである場合は TRUE を返します。

リクエスト式:

  • RADIUS.REQ.CODE。RADIUS 要求タイプに対応する番号を返します。num_at クラスの導関数です。たとえば、RADIUS アクセス要求は 1 を返します。RADIUS アカウンティング要求は 4 を返します。
  • RADIUS.REQ.LENGTH。ヘッダーを含む RADIUS 要求の長さを返します。num_at クラスの導関数です。
  • RADIUS.REQ.IDENTIFIER。RADIUS 要求 ID を返します。この番号は、各要求に割り当てられた番号で、要求を対応する応答に一致させることができます。num_at クラスの導関数です。
  • RADIUS.REQ.AVP(<AVP Code No>).VALUE。型text_tの文字列として、このAVPの最初の出現の値を返します。
  • RADIUS.REQ.AVP(<AVP code no>).INSTANCE(instance number)。AVP の指定されたインスタンスを RAVP_t 型の文字列として返します。特定の RADIUS AVP は、RADIUS メッセージ内で複数回発生する可能性があります。INSTANCE (0) は最初のインスタンスを返し、INSTANCE (1) は 2 番目のインスタンスを返します。以下同様に最大 16 個のインスタンスを返します。
  • RADIUS.REQ.AVP(<AVP code no>).VALUE(instance number)。AVP の指定されたインスタンスの値を text_t 型の文字列として返します。
  • RADIUS.REQ.AVP(<AVP code no>).COUNT。RADIUS 接続内の特定の AVP のインスタンス数を整数で返します。
  • RADIUS.REQ.AVP(<AVP code no>).EXISTS。指定されたタイプの AVP がメッセージ内に存在する場合は TRUE、存在しない場合は FALSE を返します。

レスポンス式:

RADIUS 応答式は、REQ を置き換える点を除いて、RADIUS 要求式と同じです。

AVP 値の型キャスト:

ADC は、RADIUS AVP 値をテキスト、整数、符号なし整数、ロング、符号なしロング、ipv4 アドレス、ipv6 アドレス、ipv6 プレフィクス、時刻の各データ型にタイプキャストする式をサポートしています。構文は、他のCitrix ADC型キャスト式と同じです。

例:

ADC は、RADIUS AVP 値をテキスト、整数、符号なし整数、ロング、符号なしロング、ipv4 アドレス、ipv6 アドレス、ipv6 プレフィクス、時刻の各データ型にタイプキャストする式をサポートしています。構文は、他のCitrix ADC型キャスト式と同じです。

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

AVP タイプ式:

Citrix ADCは、RFC2865およびRFC2866に記載されている割り当てられた整数コードを使用して、RADIUS AVP値を抽出する式をサポートしています。テキストエイリアスを使用して、同じタスクを実行することもできます。次に、いくつかの例を示します。

  • RADIUS.REQ.AVP (1).VALUE or RADIUS.REQ.USERNAME.value. RADIUS ユーザ名の値を抽出します。
  • RADIUS.REQ.AVP (4)。VALUE or RADIUS.REQ. ACCT_SESSION_ID.value. メッセージからアカウントセッション ID AVP(コード 44)を抽出します。
  • RADIUS.REQ.AVP (26)。VALUE or RADIUS.REQ.VENDOR_SPECIFIC.VALUE. ベンダー固有の値を抽出します。

最も一般的に使用される RADIUS AVP の値は、同じ方法で抽出できます。

RADIUS バインドポイント:

RADIUS 式を含むポリシーには、4 つのグローバルバインドポイントを使用できます。

  • RADIUS_REQ_OVERRIDE. 優先度/優先要求ポリシーキュー。
  • RADIUS_REQ_DEFAULT. 標準要求ポリシーキュー。
  • RADIUS_RES_OVERRIDE. 優先度/優先応答ポリシーキュー。
  • RADIUS_RES_DEFAULT. 標準応答ポリシーキュー。

RADIUS 応答固有の式:

  • RADIUS_RESPONDWITH. 指定された RADIUS 応答で応答します。応答は、RADIUS式と適用可能なその他の式の両方で、Citrix ADC式を使用して作成されます。
  • RADIUS.NEW_ANSWER. 新しい RADIUS 応答をユーザに送信します。
  • RADIUS.NEW_ACCESSREJECT. RADIUS 要求を拒否します。
  • RADIUS.NEW_AVP. 指定された新しい AVP を応答に追加します。

使用例

次に、レスポンダを使用した RADIUS の使用例を示します。

特定のネットワークからの RADIUS 要求のブロック

特定のネットワークからの認証要求をブロックするように応答側機能を設定するには、まず要求を拒否する応答側アクションを作成します。ブロックするネットワークからの要求を選択するポリシーでアクションを使用します。次のように指定して、応答側ポリシーを RADIUS 固有のグローバルバインドポイントにバインドします。

  • 優先度
  • nextExpr 値として END を指定すると、このポリシーが一致したときにポリシー評価が停止します。
  • RADIUS_REQ_OVERRIDE は、ポリシーを割り当てるキューです。これにより、デフォルト・キューに割り当てられたポリシーの前に評価されます。

特定のネットワーク**からのログオンをブロックするように Responder を構成するには

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

例:

> 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 のサポート