GTP インスペクション ポリシー マップの設定
GTP トラフィックで追加のパラメーターを実行する際にデフォルト マップがニーズを満たさない場合は、GTP マップを作成し、設定します。
はじめる前に
一部のトラフィック照合オプションでは、照合のために正規表現を使用します。これらのテクニックの 1 つを使用する場合は、最初に正規表現または正規表現のクラス マップを作成します。
手順
ステップ 1 GTP インスペクション ポリシー マップの作成
hostname(config)# policy-map type inspect gtp policy_map_name
policy_map_name には、ポリシー マップの名前を指定します。CLI はポリシー マップ コンフィギュレーション モードに入ります。
ステップ 2 (任意)このポリシー マップに説明を追加するには、次のコマンドを使用します。
hostname(config-pmap)# description string
ステップ 3 一致したトラフィックにアクションを適用するには、次の手順を実行します。
a. 次のいずれかの match コマンドを使用して、アクションを実行するトラフィックを指定します。 match not コマンドを使用すると、 match not コマンドの基準に一致しないすべてのトラフィックにアクションが適用されます。
• match [ not ] apn regex { regex_name | class class_name }:指定した正規表現または正規表現クラスに対する Access Point Name (APN) に一致します。
• match [ not ] message id { message_id | range message_id_1 message_id_2 }:1 ~ 255 のいずれかのメッセージ ID に一致します。1 つの ID または ID の範囲を指定できます。
• match [ not ] message length min bytes max bytes :UDP ペイロード(GTP ヘッダーと残りのメッセージ)の長さが最小値と最大値の間である、1 ~ 65536 のメッセージに一致します。
• match [ not ] version { version_id | range version_id_1 version_id_2 }:0 ~ 255 のいずれかの GTP バージョンに一致します。1 つのバージョンまたはバージョンの範囲を指定できます。
b. 次のコマンドを入力して、一致したトラフィックに対して実行するアクションを指定します。
hostname(config-pmap-c)# {drop [log]| log | rate-limit message_rate}
各 match コマンドですべてのオプションを使用できるわけではありません。
• drop キーワードはパケットをドロップします。
• 単独または drop と一緒に使用できる log キーワードからシステム ログ メッセージが送信されます。
• rate-limit message_rate 引数では、メッセージのレートを制限します。このオプションでは、 message id のみ使用できます。
ポリシー マップでは、複数の match コマンドを指定できます。 match コマンドの順序については、「インスペクション ポリシー マップのアクションの定義」を参照してください。
ステップ 4 インスペクション エンジンに影響のあるパラメータを設定するには、次の手順を実行します。
a. パラメータ コンフィギュレーション モードに入るには、次のコマンドを入力します。
hostname(config-pmap)# parameters
b. 1 つまたは複数のパラメータを設定します。次のオプションを設定できます。オプションをディセーブルにするには、コマンドの no 形式を使用してください。
• permit errors :無効な GTP パケットや別の方法で解析されるとドロップされるパケットを許可します。
• request-queue max_requests :キューで応答待ちができる GTP 要求数の最大値を設定します。デフォルトは 200 です。この上限に達した後に新しい要求が到着すると、最も長い時間キューに入っていた要求が削除されます。「Error Indication」、「Version Not Supported」および「SGSN Context Acknowledge」というメッセージは、要求と見なされないため、応答待ち要求のキューに入れられません。
• tunnel-limit max_tunnels :ASA 上でアクティブになることができる GTP トンネルの最大数を設定します。デフォルト値は 500 です。このコマンドで指定したトンネル数に達すると、新しい要求はドロップされます。
• timeout { gsn | pdp-context | request | signaling | tunnel } time :指定したサービスのアイドル タイムアウトを設定します(hh: mm: ss 形式)。タイムアウトを設定しない場合は、番号に 0 を指定します。このコマンドは、タイムアウトごとに別々に入力します。
gsn キーワードで指定した時間、非アクティブ状態が続くと、GSN が削除されます。
pdp-context キーワードでは、PDP コンテキストの受信を開始するまでの最大許容時間を指定します。
request キーワードでは、GTP メッセージの受信を開始するまでの最大許容時間を指定します。
signaling キーワードで指定した時間、非アクティブ状態が続くと、GTP シグナリングが削除されます。
tunnel キーワードで指定した時間、非アクティブ状態が続くと、GTP トンネルが切断されます。
ステップ 5 必要に応じて、パラメータ コンフィギュレーション モードに入っている間に、IMSI プレフィックス フィルタリングを設定します。
hostname(config-pmap-p)# mcc country_code mnc network_code
デフォルトでは、セキュリティ アプライアンスは、有効なモバイル カントリ コード(MCC)とモバイル ネットワーク コード(MNC)の組み合わせをチェックしません。IMSI プレフィックス フィルタリングを設定すると、受信パケットの IMSI の MCC と MNC が、設定された MCC と MNC の組み合わせと比較され、一致しないものはドロップされます。
モバイル カントリ コードは 0 以外の 3 桁の数字で、1 桁または 2 桁の値のプレフィックスとして 0 が追加されます。モバイル ネットワーク コードは 2 桁または 3 桁の数字です。
割り当てられたすべての MCC と MNC の組み合わせを追加します。デフォルトでは、ASA は MNC と MCC の組み合わせが有効であるかどうかをチェックしないため、設定した組み合わせが有効であるかどうかを確認する必要があります。MCC および MNC コードの詳細については、ITU E.212 勧告『 Identification Plan for Land Mobile Stations 』を参照してください。
ステップ 6 必要に応じて、パラメータ コンフィギュレーション モードに入っている間に、GSN プーリングを設定します。
hostname(config-pmap-p)# permit response to-object-group SGSN_name
from-object-group GSN_pool
ASA が GTP インスペクションを実行する場合、デフォルトで ASA は、GTP 要求で指定されていない GSN からの GTP 応答をドロップします。これは、GSN のプール間でロードバランシングを使用して、GPRS の効率とスケーラビリティを高めているときに発生します。
GSN プーリングを設定し、ロード バランシングをサポートするために、GSN を指定するネットワーク オブジェクト グループを作成し、これを from-object-group パラメータで指定します。同様に、SGSN のためにネットワーク オブジェクト グループを作成し、 to-object-group パラメータとして選択します。応答している GSN が GTP 要求の送信先の GSN と同じオブジェクト グループに属している場合、および応答している GSN による GTP 応答の送信が許可されている先のオブジェクト グループに SGSN がある場合、ASA はその応答を許可します。
ネットワーク オブジェクト グループは、GSN または SGSN をホスト アドレスまたは GSN や SGSN を含むサブネットから識別できます。
例
次の例では、GSN プールと SGSN のネットワーク オブジェクトを定義して GSN プーリングをサポートする方法を示します。クラス C ネットワーク全体が GSN プールとして定義されていますが、ネットワーク全体を指定する代わりに、複数の個別の IP アドレスを network-object コマンドで 1 つずつ指定できます。この例では、次に、GSN プールから SGSN への応答を許可するように、GTP インスペクション マップを変更します。
hostname(config)# object-group network gsnpool32
hostname(config-network)# network-object 192.168.100.0 255.255.255.0
hostname(config)# object-group network sgsn32
hostname(config-network)# network-object host 192.168.50.100
hostname(config)# policy-map type inspect gtp gtp-policy
hostname(config)# gtp-map gtp-policy
hostname(config-pmap)# parameters
hostname(config-pmap-p)# permit response to-object-group sgsn32
from-object-group gsnpool32
例
次の例は、ネットワークのトンネル数を制限する方法を示しています。
hostname(config)# policy-map type inspect gtp gmap
hostname(config-pmap)# parameters
hostname(config-pmap-p)# tunnel-limit 3000
hostname(config)# policy-map global_policy
hostname(config-pmap)# class inspection_default
hostname(config-pmap-c)# inspect gtp gmap
hostname(config)# service-policy global_policy global
GTP インスペクションのサービス ポリシーの設定
デフォルトのインスペクション ポリシーでは、GTP インスペクションがイネーブルにされていないため、この検査が必要な場合はイネーブルにします。デフォルトのグローバル インスペクション ポリシーを編集するだけで、GTP インスペクションを追加できます。または、たとえばインターフェイス固有のポリシーなど、必要に応じて新しいサービス ポリシーを作成することもできます。
手順
ステップ 1 必要な場合は、L3/L4 クラス マップを作成して、インスペクションを適用するトラフィックを識別します。
例:
hostname(config)# class-map gtp_class_map
hostname(config-cmap)# match access-list gtp
デフォルト グローバル ポリシーの inspection_default クラス マップは、すべてのインスペクション タイプのデフォルト ポートを含む特別なクラス マップです( match default-inspection-traffic )。このマップをデフォルト ポリシーまたは新しいサービス ポリシーで使用する場合は、このステップを省略できます。
照合ステートメントについては、「トラフィックの特定(レイヤ 3/4 クラス マップ)」を参照してください。
ステップ 2 クラス マップ トラフィックで実行するアクションを設定するポリシー マップを追加または編集します。
例:
hostname(config)# policy-map global_policy
デフォルト設定では、global_policy ポリシー マップはすべてのインターフェイスにグローバルに割り当てられます。global_policy を編集する場合は、ポリシー名として global_policy を入力します。
ステップ 3 GTP インスペクションに使用する L3/L4 クラス マップを指定します。
例:
hostname(config-pmap)# class inspection_default
デフォルト ポリシーを編集する場合、または新しいポリシーで特別な inspection_default クラス マップを使用する場合は、 name として inspection_default を指定します。それ以外の場合は、この手順ですでに作成したクラスを指定します。
ステップ 4 GTP インスペクションの設定
inspect gtp [gtp_policy_map]
gtp_policy_map は任意の GTP インスペクション ポリシー マップです。デフォルト以外のインスペクション処理が必要な場合にのみマップが必要です。インスペクション ポリシー マップの作成の詳細については、「GTP インスペクション ポリシー マップの設定」を参照してください。
例:
hostname(config-class)# no inspect gtp
hostname(config-class)# inspect gtp gtp-map
(注) 別のインスペクション ポリシー マップを使用するためにデフォルト グローバル ポリシー(または使用中のポリシー)を編集する場合は、 no inspect gtp コマンドで GTP インスペクションを削除してから、新しいインスペクション ポリシー マップの名前で再追加します。
ステップ 5 既存のサービス ポリシー(たとえば、global_policy という名前のデフォルト グローバル ポリシー)を編集している場合は、以上で終了です。それ以外の場合は、1 つまたは複数のインターフェイスでポリシー マップをアクティブにします。
service-policy policymap_name {global | interface interface_name}
例:
hostname(config)# service-policy global_policy global
global キーワードはポリシー マップをすべてのインターフェイスに適用し、 interface は 1 つのインターフェイスに適用します。グローバル ポリシーは 1 つしか適用できません。インターフェイスのグローバル ポリシーは、そのインターフェイスにサービス ポリシーを適用することで上書きできます。各インターフェイスには、ポリシー マップを 1 つだけ適用できます。