ルーティングプロトコルの認証
BGP、IS-IS、OSPF、RIP、RSVP を含む多くのルーティング プロトコルのルーティング プロトコル メッセージの認証方法とパスワードを設定できます。認証されていないパケットや偽造されたパケットの交換を防止するために、ルーターは、信頼できるピアとルーティングプロトコルの関係(ピアリングまたは隣接関係)を形成していることを確認する必要があります。これを行う方法の 1 つは、ルーティング プロトコル メッセージを認証することです。隣接ルーターは、パスワードを使用して、プロトコルによってルーターまたはルーターインターフェイスから送信されたパケットの信頼性を検証します。
このトピックでは、ルーティングプロトコルを認証するための大まかな概要と基本的な例をいくつか紹介します。特定のルーティングプロトコルの認証を設定する方法の詳細については、そのプロトコルのユーザーガイドを参照してください。
ルーティング プロトコルの認証方法
一部のルーティング プロトコル(BGP、IS-IS、OSPF、RIP、RSVP)では、認証方法とパスワードを設定できます。隣接ルーターは、パスワードを使用して、プロトコルがルーターまたはルーターインターフェイスから送信するパケットの信頼性を検証します。次の認証方法がサポートされています。
-
簡易認証(IS-IS、OSPF、RIP)- 簡易テキスト パスワードを使用します。受信側ルーターは、認証キー(パスワード)を使用してパケットを検証します。パスワードは送信されるパケットに含まれているため、この認証方法は比較的安全ではありません。この認証方法は 使用しない ことをお勧めします。
-
MD5 および HMAC-MD5(BGP、IS-IS、OSPF、RIP、RSVP)-MD5 は、送信されたパケットに含まれるエンコードされたチェックサムを作成します。HMAC 認証と MD5 を組み合わせた HMAC-MD5 では、反復された暗号化ハッシュ関数の使用が追加されています。どちらの認証タイプでも、受信ルーターは認証キー(パスワード)を使用してパケットを検証します。HMAC-MD5 認証は、RFC 2104 HMAC: で定義されています。メッセージ認証のためのキー付きハッシュ.
一般に、認証パスワードは、最大文字数と桁数で構成されるテキスト文字列です。パスワードには任意のASCII文字を含めることができます。パスワードにスペースを含める場合は、すべての文字を引用符(" ")で囲んでください。
Junos-FIPSには、特別なパスワード要件があります。FIPSパスワードの長さは、10~20文字とします。パスワードには、定義された5種類の文字セット(大文字、小文字、数字、句読点、その他の特殊文字)のうち3種類以上を使用する必要があります。ルーターにJunos-FIPSがインストールされている場合、この規格を満たさないパスワードは設定できません。
例:BGPおよびIS-ISルーティングプロトコルの認証キーを設定する
ルーターの主なタスクは、ルーティングテーブルと転送テーブルを使用して、ユーザーを目的の宛先に転送することです。攻撃者は、偽造されたルーティングプロトコルパケットをルーターに送信して、ルーティングテーブルやその他のデータベースの内容を変更または破壊し、ルーターとネットワークの機能を低下させる可能性があります。このような攻撃を防ぐために、ルーターは信頼できるピアとルーティングプロトコルの関係(ピアリングまたは隣接関係)を形成するようにする必要があります。これを行う方法の 1 つは、ルーティング プロトコル メッセージを認証することです。ルーティング プロトコルを設定する際には、認証を使用することを強くお勧めします。
Junos OS BGP、IS-IS、OSPF、RIP、RSVP の HMAC-MD5 認証をサポートします。HMAC-MD5 は、送信されるデータと組み合わせて秘密キーを使用してハッシュを計算します。計算されたハッシュは、データとともに送信されます。受信側は、一致するキーを使用して、メッセージ ハッシュを再計算および検証します。攻撃者がメッセージを偽造または変更した場合、ハッシュは一致せず、データは破棄されます。
次の例では、BGPを外部ゲートウェイプロトコル(EGP)として設定し、IS-ISを内部ゲートウェイプロトコル(IGP)として設定しています。OSPF を使用する場合は、表示されている IS-IS 設定と同様に設定します。
BGP を設定する
以下の例では、異なる BGP ピアグループに対する単一の認証キーの設定を示しています。また、BGP認証は、ネイバーレベルまたはルーティングインスタンスレベル、あるいはすべてのBGPセッションに対して設定することもできます。他のセキュリティ構成と同様に、粒度 (およびある程度はセキュリティの程度) と、システムの保守に必要な管理の量との間にはトレードオフがあります。
この例では、ルーティング プロトコル イベントとエラーのトレース オプションも多数設定しています。これは、ルーティング プロトコルに対する攻撃を示す優れた指標となり得ます。これらのイベントには、攻撃者を示す可能性のあるプロトコル認証エラーが含まれます。攻撃者は、特定の動作を引き出すために、なりすましまたはその他の不正な形式のルーティングパケットをルーターに送信している可能性があります。
[edit]
protocols {
bgp {
group ibgp {
type internal;
traceoptions {
file bgp-trace size 1m files 10;
flag state;
flag general;
}
local-address 10.10.5.1;
log-updown;
neighbor 10.2.1.1;
authentication-key "$9$aH1j8gqQ1gjyjgjhgjgiiiii";
}
group ebgp {
type external;
traceoptions {
file ebgp-trace size 10m files 10;
flag state;
flag general;
}
local-address 10.10.5.1;
log-updown;
peer-as 2;
neighbor 10.2.1.2;
authentication-key "$9$aH1j8gqQ1gjyjgjhgjgiiiii";
}
}
}
IS-IS を設定する
Junos OSはすべてのIGPの認証をサポートしていますが、一部のIGPは他のIGPよりも本質的に安全です。ほとんどのサービス プロバイダは、OSPF または IS-IS を使用して、高速な内部コンバージェンスと拡張性を実現し、MPLS でトラフィック制御機能を使用します。IS-ISはネットワーク層で動作しないため、OSPFよりもなりすましが困難です。OSPFはIPにカプセル化されているため、リモートスプーフィングやDoS(サービス拒否)攻撃を受けます。
次に、IS-IS の認証を設定する例を示します。また、ルーティング プロトコルのイベントとエラーに関する多数のトレース オプションも設定します。これは、ルーティング プロトコルに対する攻撃を示す優れた指標となります。これらのイベントには、攻撃者を示す可能性のあるプロトコル認証エラーが含まれます。攻撃者は、特定の動作を引き出すために、なりすましまたはその他の不正な形式のルーティングパケットをルーターに送信している可能性があります。
[edit]
protocols {
isis {
level 1 {
authentication-key "$9$aH1j8gqQ1gjyjgjhgjgiiiii"; # SECRET-DATA
authentication-type md5;
}
interface at-0/0/0.131 {
lsp-interval 50;
level 2 disable;
level 1 {
metric 3;
hello-interval 5;
hold-time 60;
}
}
interface lo0.0 {
passive;
}
traceoptions {
file isis-trace size 10m files 10;
flag normal;
flag error;
}
}
}
ルーティングプロトコルの認証キー更新メカニズムを設定する
BGP、LDP、およびIS-ISルーティングプロトコルの認証キー更新メカニズムを設定できます。このメカニズムにより、OSPF や RSVP などの関連するルーティングやシグナリング プロトコルを中断することなく、認証キーを更新することができます。
この機能を設定するには、[edit security]階層レベルで authentication-key-chains ステートメントを含めます。キーチェーンを適用するには、プロトコルの適切な階層レベルでキーチェーン識別子とキーチェーンアルゴリズムを設定する必要があります。
以下のセクションでは、ルーティング プロトコルの認証キー更新の設定について詳しく説明します。特定のルーティングプロトコルの認証キーアップデートの設定の詳細については、そのプロトコルのユーザーガイドを参照してください。
認証キーの更新を構成する
認証キー更新メカニズムを設定するには、[edit security authentication-key-chains]階層レベルでkey-chainのステートメントをインクルードし、複数の認証キーで構成されるキーチェーンを作成するkeyオプションを指定します。
[edit security authentication-key-chains]
key-chain key-chain-name {
key key {
algorithm (hmac-sha-1 | md5)
options (basic | isis-enhanced)
secret secret-data;
start-time yyyy-mm-dd.hh:mm:ss;
}
}
key-chain- キーチェーンメカニズムに名前を割り当てます。この名前は、プロトコルが固有の認証 key-chain 属性を関連付けるための適切な階層レベルで参照します。これは、以下のオプションを使用して指定します。
-
algorithm- IS-IS の認証アルゴリズム。 -
key- キーチェーン内の各キーを一意に識別する整数値。範囲は 0 から 63 からです。 -
options—(IS-ISのみ)ルーティングプロトコルパケット内のメッセージ認証コードをエンコードするためのプロトコル送信エンコード形式。 -
secret- 暗号化されたテキストまたはプレーン テキスト形式のパスワード。シークレットデータをプレーンテキスト形式で入力した場合でも、シークレットは常に暗号化された形式で表示されます。 -
start-time- UTC で指定された認証キー送信の開始時刻。開始時刻はキーチェーン内で一意である必要があります。
認証キーの更新用にBGPとLDPを設定する
BGP および LDP ルーティングプロトコルの認証キー更新メカニズムを設定するには、[edit protocols (bgp | ldp)]階層レベル内に authentication-key-chain ステートメントを含めます。authentication-key-chain ステートメントを含めると、各ルーティングプロトコルが[edit security authentication-key-chains]認証キーに関連付けられます。また、 authentication-algorithm ステートメントを設定し、アルゴリズムを指定する必要があります。以下はその一例です。
[edit protocols]
bgp {
group group-name {
neighbor address {
authentication-algorithm algorithm;
authentication-key-chain key-chain-name;
}
}
}
ldp {
session session-addr {
authentication-algorithm algorithm;
authentication-key-chain key-chain-name;
}
}
BGP の認証キー更新メカニズムを設定する場合、認証キーまたはキーチェーンを使用して 0.0.0.0/allow ステートメントをコミットすることはできません。このアクションを試行すると、CLI から警告が発行され、コミットが失敗します。