今回はOSPFの認証機能ついて解説します。
座学
OSPFの認証機能
例えば、下図の様に、ネットワークに不正なルータを配置し、ルート情報を広報することで、管理管轄のルータのLSDBの内容を改ざんし、ルーティングテーブルを書き換えることが可能です。
上記の問題を回避するために、OSPFではパケットに認証情報を付加して広報することが可能です。受信側はパケットに付加されている認証情報を検証し、管理管轄以外のルータが広報したパケットは破棄します。
OSPFでは認証にはSimple AuthenticationとCryptographic Authenticationをサポートしています。以前はCryptographic AuthenticationではMD5のみサポートしていましたが、現在はHMAC-SHAもサポートしております。この記事は従来のMD5を基に記載しております。
Simple Authenticationの場合、OSPFパケットにパスワードをそのまま格納して送信します。OSPFパケットを受信したルータは、格納されているパスワードと自身に設定されたパスワードが等しい場合のみ、OSPFパケットを受け入れます。
注意点として、Clear Text認証の場合、OSPFパケットにそのままパスワードが格納されるため、第三者にパスワードが流出する可能性があります。
Cryptographic Authenticationの場合、OSPFパケットを送信する前に、送信するOSPFパケットと設定したパスワードを基にMD5のハッシュ値を計算します。そして、ハッシュ値と、ハッシュ値の計算に使用したパスワードに対応するKey IDをOSPFパケットに格納して送信します。
OSPFパケットを受信したルータは、受信したOSPFパケットに格納されているKey IDに対応したパスワードと受信したOSPFパケットを基に、MD5のハッシュ値を計算します。そして、計算したハッシュ値とOSPFパケットに格納されているハッシュ値を比較し、等しい場合、受信したOSPFパケットを受け入れます。
認証関連の情報はOSPFヘッダに格納されます。Authentication Typeには認証方式が格納されており、以下の3つの値がどれかが格納されます。
- 0 : Null Authentication
- 1 : Simple Authentication
- 2 : Cryptographic authentication
OSPFの認証はArea単位、インタフェース単位で有効化可能です。
Area単位とインタフェース単位の両方で認証を有効化した場合、インタフェース単位の設定が優先されます。
LLSの認証
こちらの記事でOSPFパケットの末尾にはLLSと呼ばれる拡張情報が付加されることを解説しました。
Cryptographic AuthenticationはLLSが登場する前の機能なため、OSPFヘッダのAuthentication Dataフィールドに格納されているハッシュ値ではLLSの改ざんを検出できません。
LLSの改善を検出するために、新たにCryptographic Authentication TLVが追加されました。LLS用のハッシュ値はこのCryptographic Authentication TLVに格納されます。
実機での動作確認
検証内容
R1のg2、R2のg2でOSPF Area 0を有効にします。
Network TypeにはPoint-to-Pointを使用します。
R1とR2でOSPFの認証を有効にし、状態を確認します。
初期設定
interface GigabitEthernet2
ip address 10.1.1.1 255.255.255.0
ip ospf network point-to-point
!
router ospf 1
router-id 1.1.1.1
network 10.1.1.0 0.0.0.255 area 0
interface GigabitEthernet2
ip address 10.1.1.2 255.255.255.0
ip ospf network point-to-point
!
router ospf 1
router-id 2.2.2.2
network 10.1.1.0 0.0.0.255 area 0
認証設定前
OSPFプロセスの状態確認
R1のArea 0で認証が無効なことが確認できます。
R1#show ip ospf
Routing Process "ospf 1" with ID 1.1.1.1
.
<一部省略>
.
Reference bandwidth unit is 100 mbps
Area BACKBONE(0)
Number of interfaces in this area is 1
Area has no authentication
SPF algorithm last executed 00:02:09.656 ago
SPF algorithm executed 17 times
Area ranges are
Number of LSA 2. Checksum Sum 0x012AA9
Number of opaque link LSA 0. Checksum Sum 0x000000
Number of DCbitless LSA 0
Number of indication LSA 0
Number of DoNotAge LSA 0
Flood list length 0
OSPFが動作しているインタフェースの状態確認
R1のg2で認証が無効なことが確認できます。
R1#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.1/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State POINT_TO_POINT
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:08
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 2.2.2.2
Suppress hello for 0 neighbor(s)
Helloパケットの確認
R1が送信したHelloパケットのAuthentication Typeが0(Null Authentication)であることが確認できます。
OSPFネイバーの状態確認
R1はR2とOSPFネイバーが確立できていることが確認できます。
R1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 0 FULL/ - 00:00:37 10.1.1.2 GigabitEthernet2
Area単位でSimple Authetnicationを有効
R1とR2のArea 0でSimple Authenticationを有効にします。認証のパスワードにはP@ssw0rdを使用します。
追加した設定
Area単位でのSimple Authenticationの有効化はarea <area-id> authenticationコマンドで可能です。認証用のパスワードはip ospf authentication-key <password>コマンドで設定可能です。
interface GigabitEthernet2
ip ospf authentication-key P@ssw0rd
!
router ospf 1
area 0 authentication
OSPFプロセスの状態確認
R1のArea 0でSimple Authetnicationが有効なことが確認できます。
R1#show ip ospf
Routing Process "ospf 1" with ID 1.1.1.1
.
<一部省略>
.
Reference bandwidth unit is 100 mbps
Area BACKBONE(0)
Number of interfaces in this area is 1
Area has simple password authentication
SPF algorithm last executed 00:04:00.498 ago
SPF algorithm executed 17 times
Area ranges are
Number of LSA 2. Checksum Sum 0x012AA9
Number of opaque link LSA 0. Checksum Sum 0x000000
Number of DCbitless LSA 0
Number of indication LSA 0
Number of DoNotAge LSA 0
Flood list length 0
OSPFが動作しているインタフェースの状態確認
R1のg2でSimple Authetnicationが有効なことが確認できます。
R1#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.1/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State POINT_TO_POINT
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:03
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 2.2.2.2
Suppress hello for 0 neighbor(s)
Simple password authentication enabled
Helloパケットの確認
R1が送信したHelloパケットのAuthentication Typeが1(Simple Authentication)であることが確認できます。
OSPFネイバーの状態確認
R1はR2とOSPFネイバーが確立できていることが確認できます。
R1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 0 FULL/ - 00:00:37 10.1.1.2 GigabitEthernet2
Area単位でCryptographic Authetnicationを有効
R1とR2のArea 0でMD5を使用したCryptographic Authenticationを有効にします。認証のKey IDには1、パスワードにはP@ssw0rdを使用します。
追加した設定
Area単位でのMD5を使用したCryptographic Authenticationの有効化はarea <area-id> authentication message-digestコマンドで可能です。認証用のKey IDとパスワードはip ospf message-digest-key <key-id> md5 <password>コマンドで設定可能です。
interface GigabitEthernet2
ip ospf message-digest-key 1 md5 P@ssw0rd
!
router ospf 1
area 0 authentication message-digest
OSPFプロセスの状態確認
R1のArea 0でCryptographic Authenticationが有効なことが確認できます。
R1#show ip ospf
Routing Process "ospf 1" with ID 1.1.1.1
.
<一部省略>
.
Reference bandwidth unit is 100 mbps
Area BACKBONE(0)
Number of interfaces in this area is 1
Area has message digest authentication
SPF algorithm last executed 00:02:31.222 ago
SPF algorithm executed 6 times
Area ranges are
Number of LSA 2. Checksum Sum 0x011CB0
Number of opaque link LSA 0. Checksum Sum 0x000000
Number of DCbitless LSA 0
Number of indication LSA 0
Number of DoNotAge LSA 0
Flood list length 0
OSPFが動作しているインタフェースの状態確認
R1のg2でCryptographic Authenticationが有効なことが確認できます。
R1#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.1/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State POINT_TO_POINT
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:02
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 2.2.2.2
Suppress hello for 0 neighbor(s)
Cryptographic authentication enabled
Youngest key id is 1
Helloパケットの確認
R1が送信したHelloパケットのAuthentication Typeが2(Cryptographic Authentication)であることが確認できます。また、LLSにCrypto Authentication TLVが追加されていることが確認できます。
OSPFネイバーの状態確認
R1はR2とOSPFネイバーが確立できていることが確認できます。
R1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 0 FULL/ - 00:00:37 10.1.1.2 GigabitEthernet2
インタフェース単位でSimple Authetnicationを有効
R1とR2のg2でSimple Authenticationを有効にします。認証のパスワードにはP@ssw0rdを使用します。
追加した設定
インタフェース単位でのSimple Authenticationの有効化はip ospf authenticationコマンドで可能です。
interface GigabitEthernet2
ip ospf authentication
ip ospf authentication-key P@ssw0rd
OSPFプロセスの状態確認
R1のArea 0で認証が無効なことが確認できます。
R1#show ip ospf
Routing Process "ospf 1" with ID 1.1.1.1
.
<一部省略>
.
Reference bandwidth unit is 100 mbps
Area BACKBONE(0)
Number of interfaces in this area is 1
Area has no authentication
SPF algorithm last executed 00:02:03.152 ago
SPF algorithm executed 3 times
Area ranges are
Number of LSA 2. Checksum Sum 0x0124AC
Number of opaque link LSA 0. Checksum Sum 0x000000
Number of DCbitless LSA 0
Number of indication LSA 0
Number of DoNotAge LSA 0
Flood list length 0
OSPFが動作しているインタフェースの状態確認
R1のg2でSimple Authetnicationが有効なことが確認できます。
R1#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.1/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State POINT_TO_POINT
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:03
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 2.2.2.2
Suppress hello for 0 neighbor(s)
Simple password authentication enabled
OSPFネイバーの状態確認
R1はR2とOSPFネイバーが確立できていることが確認できます。
R1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 0 FULL/ - 00:00:37 10.1.1.2 GigabitEthernet2
インタフェース単位でCryptographic Authetnicationを有効
R1とR2のg2でMD5を使用したCryptographic Authenticationを有効にします。認証のKey IDには1、パスワードにはP@ssw0rdを使用します。
追加した設定
インタフェース単位でのMD5を使用したCryptographic Authenticationの有効化はip ospf authentication message-digestコマンドで可能です。
interface GigabitEthernet2
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 P@ssw0rd
OSPFプロセスの状態確認
R1のArea 0で認証が無効なことが確認できます。
R1#show ip ospf
Routing Process "ospf 1" with ID 1.1.1.1
.
<一部省略>
.
Reference bandwidth unit is 100 mbps
Area BACKBONE(0)
Number of interfaces in this area is 1
Area has no authentication
SPF algorithm last executed 00:02:03.152 ago
SPF algorithm executed 3 times
Area ranges are
Number of LSA 2. Checksum Sum 0x0124AC
Number of opaque link LSA 0. Checksum Sum 0x000000
Number of DCbitless LSA 0
Number of indication LSA 0
Number of DoNotAge LSA 0
Flood list length 0
OSPFが動作しているインタフェースの状態確認
R1のg2でCryptographic Authenticationが有効なことが確認できます。
R1#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.1/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State POINT_TO_POINT
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:02
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 2.2.2.2
Suppress hello for 0 neighbor(s)
Cryptographic authentication enabled
Youngest key id is 1
認証関連の設定ミスの際のデバックログ
ルータ間でAuthentication Typeが異なる場合
R1#debug ip ospf adj
*Jun 19 04:06:35.297: OSPF-1 ADJ Gi2: Rcv pkt from 10.1.1.2 : Mismatched Authentication type. Input packet specified type 1, we use type 2
ルータ間でSimple Authenticationのパスワードが異なる場合
R1#debug ip ospf adj
*May 10 14:05:25.023: OSPF-1 ADJ Gi2: Rcv pkt from 10.1.1.2, : Mismatched Authentication Key - Clear Text
ルータ間でCryptographic Authenticationのパスワードが異なる場合
R1#debug ip ospf adj
*May 10 14:16:59.228: OSPF-1 ADJ Gi2: Rcv pkt from 10.1.1.2 : Mismatched Authentication key - ID 1
ルータ間でCryptographic AuthenticationのKey IDが異なる場合
R1#debug ip ospf adj
*May 10 14:17:27.420: OSPF-1 ADJ Gi2: Rcv pkt from 10.1.1.2 : Mismatched Authentication Key - Invalid cryptographic authentication Key ID 2 on interface
コメント