ADC

レスポンダーの RADIUS サポート

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

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

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

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

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

RADIUS のレスポンダポリシーの設定

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

レスポンダーアクションとポリシーを設定し、ポリシーをバインドするには:

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

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

レスポンダ用の RADIUS エクスプレッション

レスポンダー構成では、次のNetScaler表現を使用して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 リクエスト識別子を返します。これは、リクエストを対応するレスポンスと一致させるために各リクエストに割り当てられる番号です。num_at クラスの派生関数です。
  • RADIUS.REQ.AVP(<AVP Code No>).VALUE。この AVP が最初に出現したときの値を text_t 型の文字列で返します。
  • RADIUS.REQ.AVP(<AVP code no>).INSTANCE(instance number)。AVP の指定されたインスタンスを RAVP_t 型の文字列として返します。特定の RADIUS AVP が 1 つの 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 レスポンス式は RADIUS リクエスト表現と同じですが、REQ が REQ に置き換わっている点が異なります。

AVP 値のタイプキャスト:

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

例:

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

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

AVP タイプの表現:

NetScalerは、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。メッセージから ACCT セッション 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式とその他の該当する式の両方を含むNetScaler式で作成されます。
  • RADIUS.NEW_ANSWER。新しい RADIUS 応答をユーザに送信します。
  • RADIUS.NEW_ACCESSREJECT。RADIUS 要求を拒否します。
  • RADIUS.NEW_AVP。指定された新しい AVP をレスポンスに追加します。

使用例

レスポンダ付きの RADIUS の使用例は次のとおりです。

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

特定のネットワークからの認証リクエストをブロックするようにレスポンダー機能を設定するには、まずリクエストを拒否するレスポンダーアクションを作成します。ブロックするネットワークからのリクエストを選択するポリシーでアクションを使用してください。以下を指定して、レスポンダポリシーを RADIUS 固有のグローバルバインドポイントにバインドします。

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

特定のネットワークからのログオンをブロックするようにレスポンダーを設定するには**

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