このページの内容
BGPルート認証
BGPのルーター認証について
ルーターとルート認証およびルート整合性を使用すると、誤ったルーティング情報を別のルーターと共有するように設定されたマシンまたはルーターによる攻撃を受けるリスクを大幅に軽減できます。この種の攻撃では、攻撃されたルーターをだましてルーティングループを作成したり、攻撃されたルーターのルーティングテーブルを大幅に増加させてパフォーマンスに影響を与えたり、ルーティング情報をネットワーク内の場所にリダイレクトして攻撃者が分析したりする可能性があります。偽のルートアドバタイズメントがセグメントに送信される可能性があります。ルートのソースを検証するための認証メカニズムが導入されていない限り、これらの更新はネイバールーターのルーティングテーブルで受け入れることができます。
ルーターとルートの認証では、パスワード(キー)に基づいて、信頼できるソースと通信していることを確認できる場合にのみ、ルーターが情報を共有できます。この方法では、ハッシュ化された鍵が、別のルーターに送信されるルートとともに送信されます。受信側のルーターは、送信されたキーと自分で設定したキーを比較します。それらが同じ場合は、ルートを受け入れます。ハッシュ アルゴリズムを使用すると、鍵がプレーン テキストでネットワーク経由で送信されることはありません。代わりに、設定されたキーを使用してハッシュが計算されます。ルーティングの更新は、キーとともに、ハッシュ関数への入力テキストとして使用されます。このハッシュは、ルート更新とともに受信ルーターに送信されます。受信側のルーターは、受信したハッシュと、設定された事前共有キーを使用してルート更新時に生成されたハッシュを比較します。2つのハッシュが同じ場合、ルートは信頼できる送信元からのものと見なされます。鍵は、送信ルーターと受信ルーターのみが知っています。
セキュリティをさらに強化するために、一連の認証キー( キーチェーン)を設定できます。キーチェーン内の各キーには一意の開始時刻があります。キーチェーン認証により、ピアリングセッションを停止させることなく、パスワード情報を定期的に変更できます。このキーチェーン認証方法は、ピアリングセッションをリセットしたりルーティングプロトコルを中断したりすることなく、キーがロールオーバーするため、 ヒットレス と呼ばれます。
送信ピアは、以下のルールを使用してアクティブな認証キーを識別します。
開始時刻が現在の時刻以下(つまり、将来ではない)です。
開始時刻は、開始時刻が現在の時刻より短い(つまり、現在の時刻に最も近い)チェーン内の他のすべてのキーの開始時刻よりも長くなります。
受信ピアは、受信キー識別子に基づいて認証に使用するキーを決定します。
送信ピアは、設定された開始時刻に基づいて現在の認証キーを識別し、現在のキーを使用してハッシュ値を生成します。次に、送信ピアは、TCP拡張認証オプションオブジェクトをBGP更新メッセージに挿入します。オブジェクトには、オブジェクトID(IANAによって割り当てられ)、オブジェクト長、現在のキー、およびハッシュ値が含まれます。
受信ピアは、受信したTCP拡張認証オプションを調べ、受信した認証キーを検索して、開始時刻、システム時間、および許容パラメーターに基づいてキーが許容可能かどうかを判断します。鍵が受け入れられると、受信ピアがハッシュを計算し、更新メッセージを認証します。
TCPセッションにキーチェーンを最初に適用すると、セッションがリセットされます。ただし、キーチェーンが適用されると、キーチェーンにパスワードを追加または削除しても、TCPセッションはリセットされません。また、キーチェーンが認証アルゴリズムから別のアルゴリズムに変更されても、TCPセッションはリセットされません。
Junos OSは、BGPルート認証に対して、静的認証キーとキーチェーンの2つの認証方法をサポートしています。どちらのアプローチも、BGPピアがルーティング情報を安全に交換するのに役立ちます。
-
静的認証鍵の方法では、BGP設定内で固定鍵を直接指定します。この方法は、鍵管理が簡単な環境ではより簡単です。
-
キーチェーン方式は柔軟性が高く、キーのローテーションをサポートしてセキュリティを強化します。
詳細な設定と例については、次を参照してください。
-
静的認証の主な例: ルーティングプロトコルの認証方法
-
キーチェーンの設定例: 例:BGPのルーター認証の設定 (このページの後半)を参照してください。
関連項目
BGP認証方法
すべてのBGP認証情報は、TCPパケットヘッダーに保存されます。BGP認証方法は2種類あります。TCP MD5認証とTCP認証オプション(TCP-AO)。同じセッションに対して、両方ではなく、どちらか一方を同時に設定できます。
TCP MD5認証(RFC 2385) は、TCPセグメントに適用されるMD5アルゴリズムを使用してキー付きハッシュを採用する、広く使用されている方法です。両方のピアには共有の秘密鍵が必要です。シンプルではありますが、セキュリティに関しては制限があります。
ジュニパーデバイス上のルーティングプロトコルにMD5認証を設定する場合、キーチェーン認証方法を別途設定する必要はありません。代わりに、MD5キーを直接設定するか、MD5キーを含む認証キーチェーンを使用します。MD5認証には、両端で同じMD5キー設定が必要です。認証方法はMD5で、キーチェーンを使用してキーを管理します。MD5とは別に「キーチェーン認証方法」を設定しません。
TCP認証オプション(TCP-AO)(RFC 5925) は、MD5よりも堅牢なオプションで、マスターキーを利用してセッションキーを生成し、定期的に変更します。通常はAESを使用します。より強力な保護を提供し、ヒットレスキーのロールオーバーをサポートします。
TCP-AO は、TCP MD5 の拡張または拡張です。事前定義されたスケジュールでローテーションされる複数のパスフレーズを許可することで、認証を強化します。また、MD5よりも多くの認証方法を使用できるようにすることで、TCP MD5を強化します。
TCP認証
通常、TCP認証は以下の階層レベルで設定します。
-
[edit protocols bgp] -
[edit protocols bgp group group-name] -
[edit protocols bgp group group-name neighbor address]
TCP認証とプレフィックスサブネット
Junosデバイスは、BGPグループに設定された許可されたプレフィックスサブネットを介して検出されたピアをBGPするためのTCP認証をサポートします。
BGPセッションのTCP-AOまたはTCP MD5のプレフィックスベースの認証を設定するには、以下の階層で allow (all | prefix-list) ステートメントを設定します。
-
[edit protocols bgp group group-name] -
[edit protocols bgp group group-name dynamic-neighbor dyn-name]
TCP認証の詳細については、 TCPを参照してください。
例:BGPのルーター認証の設定
すべてのBGPプロトコル交換を認証することで、信頼できるルーティングデバイスのみが自律システム(AS)ルーティング更新に参加することを保証できます。デフォルトでは、認証は無効になっています。
要件
始める前に:
ルーター インターフェイスを設定します。
内部ゲートウェイプロトコル(IGP)を設定します。
概要
認証を設定すると、アルゴリズムによってエンコードされたチェックサムが作成され、送信されたパケットに含まれます。受信側のルーティングデバイスは、認証キー(パスワード)を使用してパケットのチェックサムを検証します。
この例では、キーチェーンの設定と適用に関する以下のステートメントが含まれています。
key—キーチェーンには複数のキーを含めることができます。キーチェーン内の各キーは、一意の整数値で識別する必要があります。有効な識別子値の範囲は0から 63です 。キーの長さは最大126 文字です。文字には任意のASCII文字列を含めることができます。スペースを含む場合は、すべての文字を引用符(" ")で囲みます。
tolerance—(オプション)キーチェーンごとに、秒単位でクロックスキュー許容値を設定できます。クロックスキュー許容範囲は、BGP更新用のキーを受け入れる受信側に適用されます。設定可能な範囲は0〜999,999,999秒です。許容期間中は、現在のパスワードまたは以前のパスワードのいずれかが許容されます。key-chain—キーチェーンごとに名前を指定する必要があります。この例では、1 つのキーチェーンbgp-authを定義します。ルーティングデバイスには複数のキーチェーンを使用できます。例えば、BGP のキーチェーン、OSPF のキーチェーン、LDP のキーチェーンを使用できます。secret—キーチェーン内の各キーに対して、秘密のパスワードを設定する必要があります。このパスワードは、secretステートメントに暗号化形式またはプレーンテキスト形式で入力できます。常に暗号化形式で表示されます。start-time—各キーは、UTC形式で開始時刻を指定する必要があります。制御は、あるキーから次のキーに渡されます。設定された開始時刻(ルーティングデバイスのクロックに基づいて)が到達すると、その開始時刻のキーがアクティブになります。開始時刻は、ルーティングデバイスのローカルタイムゾーンで指定され、キーチェーン内で一意である必要があります。authentication-key-chain—すべてのピア、グループ、またはネイバーに対して、グローバルBGPレベルでキーチェーンを適用できます。この例では、extと呼ばれる外部BGP(EBGP)グループで定義されたピアにキーチェーンを適用します。authentication-algorithm—各キーチェーンに対して、ハッシュアルゴリズムを指定できます。アルゴリズムは、AES-128、MD5、またはSHA-1です。キーチェーンと認証アルゴリズムを、BGPネイバーセッションに関連付けます。
この例では、 bgp-authという名前のキーチェーンを設定します。キー0は2011-6-23.20:19:33 -0700から送信および受け入れられ、キーチェーン内の次のキー(キー1)がアクティブになると送信および受け入れが停止されます。キー1は、1年後の2012-6-23.20:19:33 -0700にアクティブになり、キー1の開始時刻より後の開始時間で別のキーが設定されない限り、送信と受け入れが停止することはありません。30秒のクロックスキュー許容範囲は、鍵を受け入れる受信側に適用されます。許容期間中は、現在のキーまたは以前のキーのいずれかが許容されます。キーは共有秘密のパスワードです。つまり、認証されたルーティングの更新を受信するネイバーは、同じキー(パスワード)を含め、同じ認証キーチェーン設定を持っている必要があります。そのため、ルーターR0とルーターR1がピアとして設定されている場合、同じ認証キーチェーン設定が必要です。この例では、一方のルーティングデバイスのみでの設定を示しています。
設定
CLIクイックコンフィグレーション
この例をすばやく設定するには、以下のコマンドをコピーしてテキスト ファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、 [edit] 階層レベルのCLIにコマンドをコピー アンド ペーストします。
set protocols bgp group ext type external set protocols bgp group ext peer-as 65530 set protocols bgp group ext neighbor 172.16.2.1 set routing-options autonomous-system 65533 set protocols bgp group ext authentication-key-chain bgp-auth set protocols bgp group ext authentication-algorithm md5 set security authentication-key-chains key-chain bgp-auth tolerance 30 set security authentication-key-chains key-chain bgp-auth key 0 secret this-is-the-secret-password set security authentication-key-chains key-chain bgp-auth key 0 start-time 2011-6-23.20:19:33-0700 set security authentication-key-chains key-chain bgp-auth key 1 secret this-is-another-secret-password set security authentication-key-chains key-chain bgp-auth key 1 start-time 2012-6-23.20:19:33-0700
手順
ステップバイステップの手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「設定モードでのCLIエディターの使用」を参照してください。
ルーターR1がデバイスCE1からのルート・フィルターを受信し、受信したフィルターを使用してアウトバウンド・ルート・フィルタリングを実行するように設定するには:
ローカルの自律システムを設定します。
[edit routing-options] user@R1# set autonomous-system 65533
1つ以上のBGPグループを設定します。
[edit protocols bgp group ext] user@R1# set type external user@R1# set peer-as 65530 user@R1# set neighbor 172.16.2.1
複数のキーで認証を設定します。
[edit security authentication-key-chains key-chain bgp-auth] user@R1# set key 0 secret this-is-the-secret-password user@R1# set key 0 start-time 2011-6-23.20:19:33-0700 user@R1# set key 1 secret this-is-another-secret-password user@R1# set key 1 start-time 2012-6-23.20:19:33-0700
各キーの開始時刻は、キーチェーン内で一意である必要があります。
認証キーチェーンをBGPに適用し、ハッシュアルゴリズムを設定します。
[edit protocols bgp group ext] user@R1# set authentication-key-chain bgp-auth user@R1# set authentication-algorithm md5
(オプション)秒単位でクロックスキュー許容値を適用します。
[edit security authentication-key-chains key-chain bgp-auth] user@R1# set tolerance 30
結果
設定モードから、 show protocols、 show routing-options、 show security コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。
user@R1# show protocols
bgp {
group ext {
type external;
peer-as 65530;
neighbor 172.16.2.1;
authentication-key-chain bgp-auth;
authentication-algorithm md5;
}
}
user@R1# show routing-options autonomous-system 65533;
user@R1# show security
authentication-key-chains {
key-chain bgp-auth {
tolerance 30;
key 0 {
secret $ABC123$ABC123
start-time “2011-6-23.20:19:33 -0700”;
}
key 1 {
secret $ABC123$ABC123
start-time “2012-6-23.20:19:33 -0700”;
}
}
}
デバイスの設定が完了したら、設定モードから commit を入力します。
各 BGP 対応デバイスに適切なインターフェイス名とアドレスを使用して、ネットワーク内のすべての BGP 対応デバイスに対してこの手順を繰り返します。
検証
設定が正常に機能していることを確認します。
ネイバーの認証の検証
目的
show bgp neighborコマンドの出力にAutheKeyChainオプションが表示されていることを確認します。
アクション
動作モードから、 show bgp neighbor コマンドを入力します。
user@R1> show bgp neighbor
Peer: 172.16.2.1+179 AS 65530 Local: 172.16.2.2+1222 AS 65533
Type: External State: Established Flags: <Sync>
Last State: OpenConfirm Last Event: RecvKeepAlive
Last Error: None
Export: [ direct-lo0 ]
Options: <Preference PeerAS Refresh>
Options: <AutheKeyChain>
Authentication key is configured
Authentication key chain: jni
Holdtime: 90 Preference: 170
Number of flaps: 0
Peer ID: 172.16.2.1 Local ID: 10.255.124.35 Active Holdtime: 90
Keepalive Interval: 30 Peer index: 0
Local Interface: fe-0/0/1.0
NLRI advertised by peer: inet-unicast
NLRI for this session: inet-unicast
Peer supports Refresh capability (2)
Table inet.0 Bit: 10000
RIB State: BGP restart is complete
Send state: in sync
Active prefixes: 2
Received prefixes: 2
Suppressed due to damping: 0
Advertised prefixes: 1
Last traffic (seconds): Received 2 Sent 2 Checked 2
Input messages: Total 21 Updates 2 Refreshes 0 Octets 477
Output messages: Total 22 Updates 1 Refreshes 0 Octets 471
Output Queue[0]: 0
認証メッセージが送信されたことの確認
目的
BGPに拡張認証オプションがあることを確認します。
アクション
動作モードから、 monitor traffic interface fe-0/0/1 コマンドを入力します。
user@R1> monitor traffic interface fe-0/0/1 verbose output suppressed, use <detail> or <extensive> for full protocol decode Listening on fe-0/0/1, capture size 96 bytes 13:08:00.618402 In arp who-has 172.16.2.66 tell 172.16.2.69 13:08:02.408249 Out IP 172.16.2.2.1122 > 172.16.2.1.646: P 1889289217:1889289235(18) ack 2215740969 win 58486 <nop,nop,timestamp 167557 1465469,nop,Enhanced Auth keyid 0 diglen 12 digest: fe3366001f45767165f17037>: 13:08:02.418396 In IP 172.16.2.1.646 > 172.16.2.2.1122: P 1:19(18) ack 18 win 57100 <nop,nop,timestamp 1466460 167557,nop,Enhanced Auth keyid 0 diglen 12 digest: a18c31eda1b14b2900921675>: 13:08:02.518146 Out IP 172.16.2.2.1122 > 172.16.2.1.646: . ack 19 win 58468 <nop,nop,timestamp 167568 1466460,nop,Enhanced Auth keyid 0 diglen 12 digest: c3b6422eb6bd3fd9cf79742b> 13:08:28.199557 Out IP 172.16.2.2.nerv > 172.16.2.1.bgp: P 286842489:286842508(19) ack 931203976 win 57200 <nop,Enhanced Auth keyid 0 diglen 12 digest: fc0e42900a73736bcc07c1a4>: BGP, length: 19 13:08:28.209661 In IP 172.16.2.1.bgp > 172.16.2.2.nerv: P 1:20(19) ack 19 win 56835 <nop,Enhanced Auth keyid 0 diglen 12 digest: 0fc8578c489fabce63aeb2c3>: BGP, length: 19 13:08:28.309525 Out IP 172.16.2.2.nerv > 172.16.2.1.bgp: . ack 20 win 57181 <nop,Enhanced Auth keyid 0 diglen 12 digest: ef03f282fb2ece0039491df8> 13:08:32.439708 Out IP 172.16.2.2.1122 > 172.16.2.1.646: P 54:72(18) ack 55 win 58432 <nop,nop,timestamp 170560 1468472,nop,Enhanced Auth keyid 0 diglen 12 digest: 76e0cf926f348b726c631944>: 13:08:32.449795 In IP 172.16.2.1.646 > 172.16.2.2.1122: P 55:73(18) ack 72 win 57046 <nop,nop,timestamp 1469463 170560,nop,Enhanced Auth keyid 0 diglen 12 digest: dae3eec390d18a114431f4d8>: 13:08:32.549726 Out IP 172.16.2.2.1122 > 172.16.2.1.646: . ack 73 win 58414 <nop,nop,timestamp 170571 1469463,nop,Enhanced Auth keyid 0 diglen 12 digest: 851df771aee2ea7a43a0c46c> 13:08:33.719880 In arp who-has 172.16.2.66 tell 172.16.2.69 ^C 35 packets received by filter 0 packets dropped by kernel
認証エラーのチェック
目的
認証エラーによりTCPによってドロップされたパケット数を確認します。
アクション
動作モードから、 show system statistics tcp | match auth コマンドを入力します。
user@R1> show system statistics tcp | match auth
0 send packets dropped by TCP due to auth errors
58 rcv packets dropped by TCP due to auth errors
キーチェーンの動作の検証
目的
認証エラーによりTCPによってドロップされたパケット数を確認します。
アクション
動作モードから、 show security keychain detail コマンドを入力します。
user@R1> show security keychain detail
keychain Active-ID Next-ID Transition Tolerance
Send Receive Send Receive
bgp-auth 3 3 1 1 1d 23:58 30
Id 3, Algorithm hmac-md5, State send-receive, Option basic
Start-time Wed Aug 11 16:28:00 2010, Mode send-receive
Id 1, Algorithm hmac-md5, State inactive, Option basic
Start-time Fri Aug 20 11:30:57 2010, Mode send-receive
変更履歴テーブル
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がお使いのプラットフォームでサポートされているかどうかを確認します。
