네트워크, 보안

라우팅 - RIPv2 인증 (Authentication)

daengsik 2022. 4. 5. 22:36

1. RIPv2 Authentication

시작하기에 앞서 본문은 다음 내용에 대한 기본적인 이해를 필요로 합니다. 

 LINK  라우팅 - RIPv1, RIPv2

 

RIPv2 는 라우팅 정보 갱신시 인증을 통하여 보안을 강화할 수 있습니다. 이 인증정보가 일치하지 않는다면 라우터는 라우팅 정보를 폐기하여 잘못된 라우팅 정보의 수신하거나 변조된 라우팅 정보를 반영하는 것을 방지할 수 있습니다.

 

 

여기서 인증이란 일종의 비밀번호와 같은 것으로, 각 라우터에서 설정한 이 비밀번호가 일치하지 않는다면 라우팅 정보를 업데이트 하지 않는 방법입니다.

 

이 인증에는 [Text / MD5] 두가지 방식이 존재합니다. Text 는 패스워드를 평문 그대로 전송하는 방식이고, MD5 는 해시함수를 사용하여 암호화하는 방법입니다. 

 

보안을 위해 이 인증기능을 사용하는데 평문으로 보내면 별 의미가 없을 뿐더러 간단하게 key를 알아낼수 있습니다. 현재 Cisco에서는 RIPv2 인증을 사용할 때 MD5를 사용할 것을 권장하고 있습니다. 위 예시와 같은 구성에서, debug 또는 패킷 캡쳐를 사용하여 갱신 인증 과정을 확인 가능합니다.

 

 

2. Authentication Key

용어가 혼용되어 헷갈릴 수 있는 부분이니 주의깊게 살피셔야 합니다. RIPv2 인증에서 사용되는 비밀번호는 key라고 하는데, 이 key를 구성할 때에는 몇몇 절차를 지켜야만 합니다. 

 

 

열쇠뭉치를 떠올렸을 때 구성요소는 위 사진과 같이 열쇠고리, 열쇠번호, 열쇠의 3가지가 있을텐데 이 모든 요소를 아래의 순서대로 정의해야 key를 사용가능합니다.

 

  1. 열쇠고리의 이름 지정 (Key Chain)
  2. 사용할 열쇠의 번호 지정 (Key Number)
  3. 해당 열쇠의 형태 지정 (Key String)

 

각 라우터에서 이 3가지 요소를 정의할 때, key chain의 이름은 다를 수 있지만 key number와 key string은 동일해야만 합니다. 이후, RIP를 전파하하는 인터페이스에서 사용할 key chain을 지정해주면 되겠습니다.

 

 

3. Authentication Mode Text

Router1# debug ip rip
RIP protocol debugging is on
*Apr  5 04:52:04.306: RIP: sending v2 update to 224.0.0.9 via Loopback1 (10.10.10.10)
*Apr  5 04:52:04.306: RIP: build update entries
*Apr  5 04:52:04.306:   141.108.0.8/30 via 0.0.0.0, metric 1, tag 0
*Apr  5 04:52:04.309: RIP: ignored v2 packet from 10.10.10.10 (sourced from one of our addresses)
*Apr  5 04:52:06.306: RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/1 (141.108.0.10)
*Apr  5 04:52:06.306: RIP: build update entries
*Apr  5 04:52:06.307:   10.10.10.0/24 via 0.0.0.0, metric 1, tag 0
*Apr  5 04:52:07.780: RIP: received packet with text authentication Router
*Apr  5 04:52:07.780: RIP: ignored v2 packet from 141.108.0.9 (invalid authentication)

 

* RIP: received packet with text authentication Router

* RIP: ignored v2 packet from 141.108.0.9 (invalid authentication)

각 라우터의 key가 일치하지 않으므로 라우팅 업데이트가 무시된 모습입니다.

 

Router1# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.10.10.0/24 is directly connected, Loopback1
L        10.10.10.10/32 is directly connected, Loopback1
      141.108.0.0/16 is variably subnetted, 2 subnets, 2 masks
C        141.108.0.8/30 is directly connected, GigabitEthernet0/1
L        141.108.0.10/32 is directly connected, GigabitEthernet0/1

 

라우팅 테이블에도 반영되지 않았습니다. 

 

 

와이어샤크를 사용해서 주고받는 패킷을 확인해보면, 암호화되지 않아서 평문 그대로 주고받는 모습을 확인 가능합니다. 목적지의 224.0.0.9 는 RIPv2 전용 멀티캐스트 IP 주소입니다.

 

 

4. Authentication Mode MD5

MD5 암호화 방식은 기본적으로 복호화가 불가능합니다. 문자열을 128비트 길이로 치환하는데, 입력값이 같다면 출력값 역시 동일하게끔 설계되어 있는 함수입니다.

 

MD5 방식을 사용하여 key 값을 Cisco로 통일하여 라우팅 테이블이 업데이트 되는것을 확인해 보겠습니다.

 

Router# debug ip rip
RIP protocol debugging is on
*Apr  5 06:15:26.274: RIP: sending v2 update to 224.0.0.9 via Loopback1 (10.10.10.10)
*Apr  5 06:15:26.275: RIP: build update entries
*Apr  5 06:15:26.275:   20.20.20.0/24 via 0.0.0.0, metric 2, tag 0
*Apr  5 06:15:26.275:   141.108.0.8/30 via 0.0.0.0, metric 1, tag 0
*Apr  5 06:15:26.278: RIP: ignored v2 packet from 10.10.10.10 (sourced from one of our addresses)
*Apr  5 06:15:29.279: RIP: received packet with MD5 authentication
*Apr  5 06:15:29.280: RIP: received v2 update from 141.108.0.9 on GigabitEthernet0/1
*Apr  5 06:15:29.280:      20.20.20.0/24 via 0.0.0.0 in 1 hops
*Apr  5 06:15:40.832: RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/1 (141.108.0.10)
*Apr  5 06:15:40.832: RIP: build update entries
*Apr  5 06:15:40.832:   10.10.10.0/24 via 0.0.0.0, metric 1, tag 0

 

* RIP: received packt with MD5 authentication

* RIP: recieved v2 update from 141.108.0.9 on GigabitEthernet0/1 

20.20.20.0/24 via 0.0.0.0 in 1 hops

인증모드와 라우팅 테이블 갱신이 정상적으로 이뤄진 것을 확인할 수 있습니다.

 

Router#sh ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.10.10.0/24 is directly connected, Loopback1
L        10.10.10.10/32 is directly connected, Loopback1
      20.0.0.0/24 is subnetted, 1 subnets
R        20.20.20.0 [120/1] via 141.108.0.9, 00:00:15, GigabitEthernet0/1
      141.108.0.0/16 is variably subnetted, 2 subnets, 2 masks
C        141.108.0.8/30 is directly connected, GigabitEthernet0/1
L        141.108.0.10/32 is directly connected, GigabitEthernet0/1

 

 

인증 키의 필드가 암호화 된 것을 확인 가능합니다.

 

 

Command

Router(config)# key chain [WORD]					//키 체인 생성
Router(config-keychain)# key <0-2147483647>				//키 번호 지정
Router(config-keychain-key)# key-string [WORD - max 80 characters]	//키 설정
Router(config-keychain-key)# cryptographic-algorithm [sha/md5]		//키 암호화 알고리즘

Router(config-if)# ip rip authentication key-chain [key chain]		//사용할 키 체인
Router(config-if)# ip rip authentication mode [text/md5]		//사용할 인증 모드