2014년 1월 21일 화요일

GRE IPsec VPN을 이용한 원격지간 OSPF Area 연결 - 7. Tunnel 보안 / IPSec VPN


GRE Tunnel만 사용할 경우, 네트워크간 연결 자체에는 문제가 없으나 Tunneling을 위해서 Encapsulation되었을 뿐인 원본데이타 그대로가 외부 경로(이 경우에는 BGP로 연결된 구간이 해당된다.)를 지나가게 된다. 이는 중간단계에서 얼마든지 내용을 확인할 수 있고, 이를 변조시킬 수도 있다. 즉, Encapsulation만 되어 있어서 그 내용에 대한 보안에 문제가 있을 뿐더러, 그렇게 받은 내용을 신뢰할 수도 없다. VPN이 필요한 이유는 이러한 신뢰성과 보안성을 위해서이다.

IPSec VPN (여기서는 GRE Tunnel 동반)은 VPN(Virtual Private Networks : 가상 사설 네트워크)의 한 종류로, IP기반의 3계층 보안형식이다.

여기서는 GRE Tunnel과 함께 사용한다. 볼드 처리한 부분은 변수/옵션/이름지정을 해야하는 부분들이다.

1. 먼저 ISAKMP정책을 설정한다.

A00A(config)# crypto isakmp policy 10  / 정책이 여러개면 숫자가 낮을 수록 우선시됨.
A00A(config-isakmp)# encryption aes  / 암호화 방식을 설정
A00A(config-isakmp)# authentication pre-share / 인증은 사전에 설정한 키로 함.
A00A(config-isakmp)# hash sha  
A00A(config-isakmp)# group 5  Diffie Hellman groups 중 몇번을 사용할지 설정.
A00A(config-isakmp)# exit

encryption에서 사용 가능한 옵션은 아래의 세가지중 하나.
  3des  Three key triple DES
  aes   AES - Advanced Encryption Standard.
  des   DES - Data Encryption Standard (56 bit keys).

자세한 내용은 대칭키 암호화 - AES/DES/3DES 를 참조. 가장 최근것이 AES다.

authentication 항목에서 사용가능한 옵션을 다음과 같다.
  pre-share  Pre-Shared Key
  rsa-encr   Rivest-Shamir-Adleman Encryption
  rsa-sig    Rivest-Shamir-Adleman Signature

아래의 두 항목 관련 자료는 RSA (Rivest-Shamir-Adleman)를 참조.

lifetime 항목은 기본값으로 진행하였기에 별도로 설정하지 않았다.
(짧게 설정하면 보안에 좋지만... router 부하가 커진다.=GNS기동중인 컴퓨터 부하가 크다.)

2. 각 대상(여기서는 해당 Peer IP)에 대한 key값(Pre-Shared Key : PSK)을 입력하고

A00A(config)# crypto isakmp key 6 pword address 204.172.100.161
A00A(config)# crypto isakmp key 6 pword address 206.172.100.161

연결상태 유지 확인용 DPD(Dead Peer Detection) 설정.

A00A(config)# crypto isakmp keepalive 30

3. IPsec으로 보호할 대상 트래픽 지정.
ACL에서 GRE 대신 IP로 변경해도 됨.

A00A(config)# ip access-list extended vpn12  / Tunnel 12와 연동할 ACL이라 12
A00A(config-ext-nacl)# permit gre host 203.172.100.129 host 204.172.100.161
A00A(config-ext-nacl)# exit

A00A(config)# ip access-list extended vpn13   / Tunnel 13과 연동할 ACL이라 13
A00A(config-ext-nacl)# permit gre host 203.172.100.129 host 206.172.100.161
A00A(config-ext-nacl)# exit

4. IPsec SA를 지정한다. (여기서는 ts10번으로)

A00A(config)# crypto ipsec transform-set ts10 esp-aes esp-md5-hmac
A00A(cfg-crypto-trans)# exit

뒤의 보라색과 파란색 부분에  지정 가능한 옵션은 아래와 같다.

  ah-md5-hmac   AH-HMAC-MD5 transform
  ah-sha-hmac   AH-HMAC-SHA transform
  comp-lzs      IP Compression using the LZS compression algorithm
  esp-3des      ESP transform using 3DES(EDE) cipher (168 bits)
  esp-aes       ESP transform using AES cipher
  esp-des       ESP transform using DES cipher (56 bits)
  esp-md5-hmac  ESP transform using HMAC-MD5 auth
  esp-null      ESP transform w/o cipher
  esp-seal      ESP transform using SEAL cipher (160 bits)
  esp-sha-hmac  ESP transform using HMAC-SHA auth

6. Cryto Map을 설정한다.

먼저 Cryto Map의 Peer 지정을 Loopback Interface로 하기 때문에 이를 선언.

A00A(config)# crypto map GREVPN local-address loopback 0

그리고 Cryto Map의 새부설정을 지정.

A00A(config)# crypto map GREVPN 10 ipsec-isakmp
A00A(config-crypto-map)# match address vpn12 
A00A(config-crypto-map)# set peer 204.172.100.161  / Tunnel 12의 Dst
A00A(config-crypto-map)# set transform-set ts10  / 연결할 IPsec SA를 지정
A00A(config-crypto-map)# exit

A00A(config)# crypto map GREVPN 20 ipsec-isakmp
A00A(config-crypto-map)# match address vpn13
A00A(config-crypto-map)# set peer 206.172.100.161  / Tunnel 13의 Dst
A00A(config-crypto-map)# set transform-set ts10
A00A(config-crypto-map)# exit

6. Cryto Map을 해당 인터페이스에 지정.

A00A(config)# int s1/0  / 외부에서 직접 오는 경로
A00A(config-if)# crypto map GREVPN

A00A(config)# int f2/0  / 네트워크 구조상 우회할 수 있는 경로
A00A(config-if)# crypto map GREVPN


작업을 마치고 상태 확인은 아래의 명령어로 진행하면 된다.

clear ip access-list counters   / ACL 기록 초기화
show ip access-list  / ACL 적용 내역 조회 (초기화 후 좀 기다렸다 하는게 좋음.)

clear crypto session  / VPN 세션 초기화
show crypto isakmp sa  / 현재 VPN 관련 SA(Security Association) 정보


show crypto ipsec sa  / IPsec SA상태 조회


show crypto session detail  / 세션의 암호화/복호화 내역






관련 링크

설정방법(단, 실제 설정 자체는 이 내용보다는 피터전의 책을 더 참고하였다.)
Configuring VPNs Using an IPSec Tunnel and Generic Routing Encapsulation


관련 이론이나 자료, 정보
rfc 2408 isakmp

실제 진행하다 문제생긴 경우 참고할 곳.
IPsec Troubleshooting: Understanding and Using debug Commands
Proposal with ESP is missing cipher



실제 설정에서 각 라우터별 공통 부분은 아래와 같다.

conf t
crypto isakmp policy 10
encryption aes
authentication pre-share
hash sha
group 5
exit

각 라우터별 변동되는 부분은 아래와 같다.

#A00A
crypto isakmp key 6 pword address 204.172.100.161
crypto isakmp key 6 pword address 206.172.100.161

crypto isakmp keepalive 30

ip access-list extended vpn12
permit gre host 203.172.100.129 host 204.172.100.161
exit

ip access-list extended vpn13
permit gre host 203.172.100.129 host 206.172.100.161
exit

crypto ipsec transform-set ts10 esp-aes esp-md5-hmac
exit

crypto map GREVPN local-address loopback 0

crypto map GREVPN 10 ipsec-isakmp
match address vpn12
set peer 204.172.100.161
set transform-set ts10
exit

crypto map GREVPN 20 ipsec-isakmp
match address vpn13
set peer 206.172.100.161
set transform-set ts10
exit

int s1/0
crypto map GREVPN
exit

int f2/0
crypto map GREVPN
exit


#A00B
crypto isakmp key 6 pword address 204.172.100.161
crypto isakmp key 6 pword address 206.172.100.161

crypto isakmp keepalive 30

ip access-list extended vpn22
permit gre host 205.172.100.129 host 204.172.100.161
exit

ip access-list extended vpn23
permit gre host 205.172.100.129 host 206.172.100.161
exit

crypto ipsec transform-set ts10 esp-aes esp-md5-hmac
exit

crypto map GREVPN local-address loopback 0

crypto map GREVPN 10 ipsec-isakmp
match address vpn22
set peer 204.172.100.161
set transform-set ts10

crypto map GREVPN 20 ipsec-isakmp
match address vpn23
set peer 206.172.100.161
set transform-set ts10

int s1/0
crypto map GREVPN
int f2/0
crypto map GREVPN


#A10A
crypto isakmp key 6 pword address 203.172.100.129
crypto isakmp key 6 pword address 205.172.100.129

crypto isakmp keepalive 30

ip access-list extended vpn12
permit gre host 204.172.100.161 host 203.172.100.129
exit

ip access-list extended vpn22
permit gre host 204.172.100.161 host 205.172.100.129
exit

crypto ipsec transform-set ts20 esp-aes esp-md5-hmac
exit

crypto map GREVPN local-address loopback 0

crypto map GREVPN 10 ipsec-isakmp
match address vpn12
set peer 203.172.100.129
set transform-set ts20

crypto map GREVPN 20 ipsec-isakmp
match address vpn22
set peer 205.172.100.129
set transform-set ts20

int s1/1
crypto map GREVPN



#A20A
crypto isakmp key 6 pword address 203.172.100.129
crypto isakmp key 6 pword address 205.172.100.129

crypto isakmp keepalive 30

ip access-list extended vpn13
permit gre host 206.172.100.161 host 203.172.100.129
exit

ip access-list extended vpn23
permit gre host 206.172.100.161 host 205.172.100.129
exit

crypto ipsec transform-set ts30 esp-aes esp-md5-hmac
exit

crypto map GREVPN local-address loopback 0

crypto map GREVPN 10 ipsec-isakmp
match address vpn13
set peer 203.172.100.129
set transform-set ts30

crypto map GREVPN 20 ipsec-isakmp
match address vpn23
set peer 205.172.100.129
set transform-set ts30

int s1/1
crypto map GREVPN

댓글 없음:

댓글 쓰기