【OSPF】MD5認証設定

OSPF では、不正なルータとネイバーにならないよう、認証を設定できます。認証の方式には、平文のパスワードを使う認証(タイプ1)と、MD5 を使う認証(タイプ2)があります。MD5 認証では、パスワードそのものはパケットに載らず、パスワードから計算したダイジェスト(ハッシュ値)だけが送られます。この記事では、MD5 認証の有効化とキーの設定、設定が合わないときの動きを確かめます。

この記事でわかること
  1. MD5 認証の有効化(インターフェース単位とエリア単位)
  2. ip ospf message-digest-key でのキーの設定
  3. 認証の種類やキーが合わないときの debug の表示

検証構成

R2 と R3 を 192.168.23.0/24 でつなぎ、エリア0で OSPF のネイバーにします。このネイバーに MD5 認証を設定し、キーには CISCO を使います。

Area 0 R2R3 Lo0 2.2.2.2/32Lo0 3.3.3.3/32 .2.3 192.168.23.0/24
図1 検証構成

OSPF の基本設定

R2(config)# router ospf 1
R2(config-router)# network 192.168.23.0 0.0.0.255 area 0
R2(config-router)# network 2.2.2.2 0.0.0.0 area 0

R3(config)# router ospf 1
R3(config-router)# network 192.168.23.0 0.0.0.255 area 0
R3(config-router)# network 3.3.3.3 0.0.0.0 area 0

MD5 認証の有効化

MD5 認証は、インターフェース単位で有効にする方法と、エリア全体で有効にする方法の2つがあります。両方を設定した場合は、インターフェースの設定が優先されます。

インターフェース単位で有効にする

R2 のインターフェースで MD5 認証を有効にします。

R2

R2(config)# int fastEthernet 0/0.23
R2(config-subif)# ip ospf authentication message-digest

show ip ospf interface を見ると、MD5 認証(Message digest authentication)が有効になっています。まだキーを設定していないので、キー ID 0 の既定のキーを使っています。

R2# show ip ospf interface
Loopback0 is up, line protocol is up
  Internet Address 2.2.2.2/32, Area 0, Attached via Network Statement
  Process ID 1, Router ID 2.2.2.2, Network Type LOOPBACK, Cost: 1
  Topology-MTID    Cost    Disabled    Shutdown      Topology Name
        0           1         no          no            Base
  Loopback interface is treated as a stub Host
FastEthernet0/0.23 is up, line protocol is up
  Internet Address 192.168.23.2/24, Area 0, Attached via Network Statement
  Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1
  Topology-MTID    Cost    Disabled    Shutdown      Topology Name
        0           1         no          no            Base
  Transmit Delay is 1 sec, State DR, Priority 1
  Designated Router (ID) 2.2.2.2, Interface address 192.168.23.2
  No backup designated router on this network
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:06
  Supports Link-local Signaling (LLS)
  Cisco NSF helper support enabled
  IETF NSF helper support enabled
  Index 1/1, flood queue length 0
  Next 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 0, Adjacent neighbor count is 0
  Suppress hello for 0 neighbor(s)
  Message digest authentication enabled
      No key configured, using default key id 0

R2 の Hello をキャプチャすると、Auth Type が Cryptographic(2)になっています。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から見るポイントを抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

パケットキャプチャ(Wireshark):キー設定前の R2 の Hello画面イメージ
▸ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 224.0.0.5▾ Open Shortest Path First  ▾ OSPF Header      Version: 2      Message Type: Hello Packet (1)      Packet Length: 44      Source OSPF Router: 2.2.2.2      Area ID: 0.0.0.0 (Backbone)      Checksum: 0x0000 (None)1      Auth Type: Cryptographic (2)2      Auth Crypt Key id: 0      Auth Crypt Data Length: 16      Auth Crypt Sequence Number: 1592483692      Auth Crypt Data: 8e1175ae691afb55e1a5e65cd1de0ff5  ▸ OSPF Hello Packet  ▸ OSPF LLS Data Block
図2 MD5 認証を有効にした Hello(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1Auth Type: Cryptographic (2)認証の種類がタイプ2(MD5)。タイプ0は認証なし、タイプ1は平文
2Auth Crypt Key id: 0使っているキー ID。キーを設定していないので 0。その下の Auth Crypt Data が、キーから計算した 16 バイトのダイジェスト

R3 はまだ MD5 認証を設定していないので、しばらくすると Dead タイマーが切れてネイバーがダウンします。

*Jun 18 12:33:50.543: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23 
from FULL to DOWN, Neighbor Down: Dead timer expired

R2 で debug ip ospf adj を有効にすると、認証の種類が合っていないことがわかります。受け取ったパケットはタイプ1で、R2 はタイプ2を使っています。

R2#debug ip ospf adj
OSPF adjacency debugging is on

*Jun 18 12:40:25.367: OSPF-1 ADJ   Fa0/0.23: Rcv pkt from 192.168.23.3 : 
Mismatched Authentication type. Input packet specified type 1, we use type 2

R3 でも MD5 認証を有効にすると、ネイバーが FULL に戻ります。

R3

R3(config)# interface FastEthernet0/0.23
R3(config-subif)# ip ospf authentication message-digest
*Jun 18 12:41:40.495: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.23 
from LOADING to FULL, Loading Done

エリア単位で有効にする

OSPF のインターフェースが多いときは、エリア単位でまとめて MD5 認証を有効にできます。R2 のエリア0で MD5 認証を有効にします。

R2

R2(config)# router ospf 1
R2(config-router)# area 0 authentication message-digest

エリア0のインターフェースで、MD5 認証が有効になっています。

R2# show ip ospf interface
Loopback0 is up, line protocol is up
  Internet Address 2.2.2.2/32, Area 0, Attached via Network Statement
  Process ID 1, Router ID 2.2.2.2, Network Type LOOPBACK, Cost: 1
  Topology-MTID    Cost    Disabled    Shutdown      Topology Name
        0           1         no          no            Base
  Loopback interface is treated as a stub Host
FastEthernet0/0.23 is up, line protocol is up
  Internet Address 192.168.23.2/24, Area 0, Attached via Network Statement
  Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1
  Topology-MTID    Cost    Disabled    Shutdown      Topology Name
        0           1         no          no            Base
  Transmit Delay is 1 sec, State DR, Priority 1
  Designated Router (ID) 2.2.2.2, Interface address 192.168.23.2
  No backup designated router on this network
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:04
  Supports Link-local Signaling (LLS)
  Cisco NSF helper support enabled
  IETF NSF helper support enabled
  Index 1/1, flood queue length 0
  Next 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 0, Adjacent neighbor count is 0
  Suppress hello for 0 neighbor(s)
  Message digest authentication enabled
      No key configured, using default key id 0

しばらくすると、ネイバーがダウンします。

*Jun 18 12:44:52.615: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23 
from FULL to DOWN, Neighbor Down: Dead timer expired

R3 でもエリア0で MD5 認証を有効にすると、ネイバーが FULL に戻ります。

R3

R3(config)# router ospf 1
R3(config-router)# area 0 authentication message-digest
*Jun 18 12:48:19.027: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23 
from LOADING to FULL, Loading Done

MD5 認証キーの設定

R2 にキーを設定する

R2 で debug ip ospf adj を有効にし、インターフェースに MD5 認証キー(キー ID 1、文字列 CISCO)を設定します。

R2

R2# debug ip ospf adj
OSPF adjacency debugging is on

R2(config)# int fastEthernet 0/0.23
R2(config-subif)# ip ospf message-digest-key 1 md5 CISCO

R3 はまだキー ID 0 のまま送ってくるので、R2 には「インターフェースにキー ID 0 のキーがない」というログが出ます。

*Jun 18 12:50:05.039: OSPF-1 ADJ   Fa0/0.23: Rcv pkt from 192.168.23.3 : 
Mismatched Authentication Key - No message digest key 0 on interface

R3 にも同じキーを設定する

R3

R3(config)# int fastEthernet 0/0.23
R3(config-subif)# ip ospf message-digest-key 1 md5 CISCO

R2 の Hello をキャプチャすると、キー ID 1 で MD5 の認証情報が送られています。

パケットキャプチャ(Wireshark):キー設定後の R2 の Hello画面イメージ
▸ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 224.0.0.5▾ Open Shortest Path First  ▾ OSPF Header      Version: 2      Message Type: Hello Packet (1)      Packet Length: 48      Source OSPF Router: 2.2.2.2      Area ID: 0.0.0.0 (Backbone)      Checksum: 0x0000 (None)      Auth Type: Cryptographic (2)1      Auth Crypt Key id: 1      Auth Crypt Data Length: 16      Auth Crypt Sequence Number: 1592484732      Auth Crypt Data: b2fc1d5c87b05f4ad596dca09c93b78e
図3 キー ID 1 で送られる Hello(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1Auth Crypt Key id: 1設定したキー ID 1 で計算したダイジェストを送っている。キーの文字列(CISCO)はパケットに載らない

MD5 認証キーが合わない場合

キーの文字列を変える

R2 で debug ip ospf adj を有効にしておき、R3 のキーを CISCO1 に変えて、R2 とキーの文字列を合わなくします。

R2

R2# debug ip ospf adj 
OSPF adjacency debugging is on

R3

R3(config)# interface FastEthernet0/0.23
R3(config-subif)# no ip ospf message-digest-key 1 md5 CISCO
R3(config-subif)# ip ospf message-digest-key 1 md5 CISCO1

R2 に、キー(ダイジェスト)が合わないというログが出ます。

*Jun 18 12:59:36.579: OSPF-1 ADJ   Fa0/0.23: Rcv pkt from 192.168.23.3 : 
 Mismatched Authentication Key - Message Digest

しばらくすると、ネイバーがダウンします。

*Jun 18 12:59:39.063: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23 
from FULL to DOWN, Neighbor Down: Dead timer expired
R2R3 認証の種類Type 2(MD5)キー ID / キー1 / CISCO 認証の種類Type 2(MD5)キー ID / キー1 / CISCO 一致が必要 一致が必要 どれかが違うと、受け取った側が Hello を捨てる
図4 MD5 認証で一致が必要なもの

まとめ

debug のメッセージ原因
Mismatched Authentication type認証の種類(なし/平文/MD5)が合っていない
No message digest key N on interface相手が使っているキー ID N のキーが、自分のインターフェースにない
Mismatched Authentication Key - Message Digestキー ID は同じだが、キーの文字列が違う

MD5 認証では、認証の種類、キー ID、キーの文字列の3つを、ネイバーの両側でそろえます。

補足:MD5 より強い方式

MD5 はハッシュ関数としては古く、より強い方式として、OSPFv2 で SHA 系のハッシュ(HMAC-SHA)を使う認証が RFC 5709 で決められています。Cisco の新しい OS では、キーチェーンを使ってこの方式を設定できる機種があります。使える方式は、機種と OS のバージョンで確認してください。

コメント