近隣検索キャッシュ保護
NDPキャッシュ保護を使用すると、IPv6導入シナリオにおいて、特定のタイプのサービス拒否(DoS)攻撃からルーティングエンジンを保護できます。
近隣検索キャッシュ保護の概要
ルーティング エンジンは、IPv6 の導入シナリオにおいて、特定のサービス拒否(DoS)攻撃を受ける可能性があります。IPv6 サブネットは一般に非常に大きくなる傾向があり、たとえば、 /64 サブネットには未割り当てのアドレスが多数ある可能性があります。ルーティングエンジンのコントロールプレーンは、不明なアドレスのアドレス解決を行います。攻撃者は、この割り当てられていないアドレス空間に対して解決要求を生成することで、ルーティングエンジンのコントロールプレーンをすぐに圧倒し、キャッシュオーバーフローを引き起こす可能性があります。攻撃者は、生成されるリクエストの数とリクエストがキューに入れられる速度の両方に依存しています。このようなシナリオでは、ルーター リソースが占有され、ルーティングエンジンが有効なネイバー要請に応答して既存のネイバー キャッシュ エントリーを維持できなくなり、正当なユーザーに対する DoS 攻撃を受ける可能性があります。
このようなDoS攻撃を軽減するための戦略は次のとおりです。
未使用のアドレス空間をフィルタリングします。
サブネットのサイズを最小化します。
サブネットの破棄ルートを設定します。
ネイバー探索キャッシュ内のエントリーのサイズと解決速度に制限を適用します。
近隣探索キャッシュへの影響は、キャッシュに追加できる IPv6 ネイバーと新しい未解決のネクストホップ アドレスの数を制限することで最小限に抑えることができます。 nd6-max-cache および nd6-new-hold-limit 設定ステートメントを使用してインターフェイスごとに制限を設定したり、 nd-system-cache-limit 設定ステートメントを使用してシステム全体に対して制限を設定できます。
ACX、EX22XX、EX3200、EX33XX、SRXなどの小規模なプラットフォームの場合、デフォルトは20,000です。
EX4200、EX45XX、EX4300、EX62XX、QFX、MXなどの中規模プラットフォームの場合、デフォルトは75,000です。
その他のプラットフォームでは、既定値は 100,000 です。
近隣検索キャッシュ保護の設定
ルーティング エンジンは、IPv6 導入シナリオにおいて、特定のタイプのサービス拒否(DoS)攻撃を受けやすい場合があります。一般に、IPv6サブネットは非常に大きくなる傾向があります。例えば、 /64 サブネットには、未割り当てのアドレスが多数ある場合があります。ルーティングエンジンのコントロールプレーンは、不明なアドレスのアドレス解決を行います。攻撃者は、この割り当てられていないアドレス空間に対して解決要求を生成することで、ルーティングエンジンのコントロールプレーンをすぐに圧倒し、キャッシュオーバーフローを引き起こす可能性があります。攻撃者は、生成される要求の数と要求がキューに入れられる速度の両方に依存しています。
近隣検索プロセスは、近隣検索プロトコルを実装するコントロールプレーンの一部です。アドレス解決を実行し、ネイバーキャッシュ内のエントリーを維持する役割を担います。DoS 攻撃を軽減する方法の 1 つは、ネイバー探索キャッシュのサイズと新しいネクストホップ エントリーの解決率に制限を適用し、近隣探索トラフィックの特定のカテゴリに優先順位を付けることです。ネイバー探索キャッシュに対する制限は、インターフェイスごとおよびシステム全体で設定できます。
開始する前に、Junos OS リリース 15.1 以降を実行していることを確認してください。
ローカル制限は個々のインターフェイスに適用され、ネイバー探索キュー内の解決済みおよび未解決のエントリーに対して定義され、グローバル制限はシステム全体に適用されます。
インターフェイスで近隣探索キャッシュ保護を設定するには:
設定を検証するには、 show interfaces interface-name 運用コマンドを実行します。
近隣探索キャッシュ保護をシステム全体で設定するには:
ネイバー探索キャッシュのシステム全体の制限を設定します。
[edit] user@host# set system nd-system-cache-limit limit
設定されたシステム全体の制限を確認するには、 show system statistics icmp6 運用コマンドを実行します。
ACX、EX22XX、EX3200、EX33XX、SRXなどの小規模なプラットフォームの場合、デフォルトは20,000です。
EX4200、EX45XX、EX4300、EX62XX、QFX、MXなどの中規模プラットフォームの場合、デフォルトは75,000です。
その他のプラットフォームでは、既定値は 100,000 です。
例:サービス拒否攻撃を防止するための近隣探索キャッシュ保護の設定
この例では、ネイバー探索に追加できる IPv6 ネイバー エントリーの数に制限を設定する方法を示しています。キャッシュ内のエントリ数に制限を適用することで、サービス拒否 (DoS) 攻撃を緩和できます。近隣探索キャッシュ機能は、次の 2 種類の制限をサポートします。
ローカル—ローカル制限はインターフェイスごとに設定され、ネイバー探索キャッシュ内の解決済みおよび未解決のエントリに対して定義されます。
[グローバル(Global)]:グローバル制限がシステム全体に適用されます。グローバル制限は、パブリック インターフェイスと管理インターフェイスに対して個別にさらに定義されます(例:fxp0)。管理インターフェイスには、単一のグローバル制限があり、ローカル制限はありません。グローバル制限は、内部ルーティング インスタンスのループバック インターフェイス、管理インターフェイス、パブリック インターフェイスを含む、ネイバー探索キャッシュのエントリーにシステム全体の上限を適用します。
必要条件
この例では、Junos OS リリース 15.1 以降を実行する MXシリーズ ルーターが必要です。
概要
ルーティング エンジンは、IPv6 導入シナリオにおいて、特定のタイプの DoS 攻撃を受けやすい場合があります。IPv6 サブネットは一般に非常に大きくなる傾向があり、たとえば、 /64 サブネットには、DoS 攻撃の実行に使用できる未割り当てのアドレスが多数含まれている可能性があります。ルーティングエンジンのコントロールプレーンは、不明なアドレスのアドレス解決を行います。攻撃者は、この割り当てられていないアドレス空間に対して解決リクエストを生成することで、ルーティングエンジンのコントロールプレーンをすぐに圧倒し、キューをオーバーフローさせる可能性があります。攻撃者は、生成されるリクエストの数とリクエストがキューに入れられる速度の両方に依存しています。
近隣検索プロセスは、近隣検索プロトコルを実装するコントロールプレーンの一部です。アドレス解決を実行し、ネイバーキャッシュを維持する役割を担います。DoS 攻撃を軽減する 1 つの方法は、キュー サイズと解決レートを制限し、近隣探索トラフィックの特定のカテゴリに優先順位を付けることで実現できる、近隣探索キューの制限を適用することです。
構成
近隣検索キャッシュ保護を設定するには、以下のタスクを実行します。
CLIクイック構成
この例を迅速に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit] 階層レベルのCLIにコピーアンドペーストして、設定モードから commit を入力します。
set interfaces ge-0/3/0 unit 5 family inet6 nd6-max-cache 100 set interfaces ge-0/3/0 unit 5 family inet6 nd6-new-hold-limit 100
また、ネイバー探索キャッシュ内の IPv6 ネイバー エントリーの数にシステム全体の制限を設定することもできます。この制限には、ループバック インターフェイス、管理インターフェイス、およびパブリック インターフェイスも含まれます。
set system nd-system-cache-limit 100
異なるインターフェイスタイプに対する nd-system-cache-limit ステートメントからの制限分散は、特定の固定パーセンテージに従って実行されます。 nd-system-cache-limit が X として定義され、内部ルーティング インターフェイス近隣探索キャッシュ制限が Y (デフォルトは200)である場合、次のようになります。
公開最大キャッシュ制限、 Z = (X- Y) の 80%
管理インターフェイスの最大キャッシュ制限(fxp0 など)、 M = (X-Y)の 20%
近隣検索キャッシュ保護の設定
手順
次の例では、設定階層のいくつかのレベルに移動する必要があります。CLIのナビゲーションについては、CLIユーザー・ガイド の コンフィギュレーション・モードでのCLIエディタの使用を参照してください。
インターフェイスごとに近隣探索キャッシュ保護を設定するには:
nd6-max-cacheとnd6-new-hold-limitを設定します。[edit] user@host# set interfaces ge-0/3/0 unit 5 family inet6 nd6-max-cache 100 user@host# set interfaces ge-0/3/0 unit 5 family inet6 nd6-new-hold-limit 100
業績
近隣探索キャッシュ保護をローカルで確認するには、設定モードから show interfaces ge-0/3/0 を入力します。出力結果に意図した設定内容が表示されない場合は、この例の手順を繰り返して設定を修正します。
[edit]
user@host# show interfaces ge-0/3/0
unit 5{
family inet6 {
nd6-max-cache 100;
nd6-new-hold-limit 100;
}
}
検証
設定が正常に機能していることを確認します。
近隣検索キャッシュ保護をグローバルに検証する
目的
出力が、ネイバー探索キャッシュのシステム全体の制限を反映していることを確認します。
アクション
運用モードから、 show system statistics icmp6 コマンドを実行します。
user@host> show system statistics icmp6
icmp6:
79 Calls to icmp_error
0 Errors not generated because old message was icmp error
0 Errors not generated because rate limitation
Output histogram:
79 unreach
30 echo
163 multicast listener query
6 multicast listener report
940 neighbor solicitation
694184 neighbor advertisement
0 Messages with bad code fields
0 Messages < minimum length
0 Bad checksums
0 Messages with bad length
Input histogram:
10 echo reply
6 multicast listener report
693975 neighbor solicitation
Histogram of error messages to be generated:
0 No route
0 Administratively prohibited
0 Beyond scope
79 Address unreachable
0 Port unreachable
0 Time exceed transit
0 Time exceed reassembly
0 Erroneous header field
0 Unrecognized next header
0 Unrecognized option
0 Unknown
0 Message responses generated
0 Messages with too many ND options
100000 Max System ND nh cache limit
79840 Max Public ND nh cache limit
200 Max IRI ND nh cache limit
19960 Max Management intf ND nh cache limit
79840 Current Public ND nexthops present
4 Current IRI ND nexthops present
0 Current Management ND nexthops present
909266 Total ND nexthops creation failed as limit reached
909266 Public ND nexthops creation failed as public limit reached
0 IRI ND nexthops creation failed as iri limit reached
0 Management ND nexthops creation failed as mgt limit reached
意味
ネイバー探索キャッシュのエントリーに適用されるシステム全体の上限は 100000です。
Management ND nexthops creation failed as mgt limit reached システム全体の制限に達した場合の管理インターフェイスのドロップ カウントを示します。 Total ND nexthops creation failed as limit reached は、管理、パブリック、または内部ルーティング インスタンスインターフェイスの障害を示し、 Public ND nexthops creation failed as public limit reached は、エントリー数のシステム全体の制限に達した場合のパブリックインターフェイスのドロップカウントを示します。
近隣検索キャッシュ保護のローカルでの検証
目的
出力が設定されたインターフェイス制限を反映していることを確認します。
アクション
運用モードから、 show interfaces ge-0/3/0 コマンドを実行します。
user@host> show interfaces ge-0/3/0
Logical interface ge-0/2/0.8 (Index 348) (SNMP ifIndex 690)
Flags: Up SNMP-Traps 0x4000 VLAN-Tag [ 0x8100.8 ] Encapsulation: ENET2
Input packets : 181628
Output packets: 79872
Protocol inet6, MTU: 1500
Max nh cache: 100000, New hold nh limit: 100000, Curr nh cnt: 79840, Curr new hold cnt: 0, NH drop cnt: 0
Flags: Is-Primary
Addresses, Flags: Is-Preferred Is-Primary
Destination: 8001:1::/64, Local: 8001:1::1:1
Addresses, Flags: Is-Preferred
Destination: fe80::/64, Local: fe80::56e0:3200:8c6:e0a4
Protocol multiservice, MTU: Unlimited
意味
総エントリー数の最大数と、インターフェイス ge-0/3/0 に接続できる新しい未解決ネクストホップ アドレスのエントリーの最大数は 100000です。
NH drop cnt は、インターフェイスの最大キューサイズ制限に達したため、処理されなかった近隣探索要求の数を示します。