기본
Encapsulation
터널링 기술의 핵심!!!
터널링이 구성 되면 Original Packet 은 캡슐화가 되기 때문에 내용은 중요하지 않다.
캡슐화 후 전송된 목적지에서 디캡슐화 되는 전체 과정을 터널링이라 부른다.
Tunneling
VPN 구현의 핵심 기술!!
데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달 시키는 기술이다.
- 패킷 내에 터널링할 대상을 캡슐화시켜 목적지까지 전송
- 하나의 프로토콜이 다른 프로토콜을 감싸는 캡슐화 기능을 통해 운반
두 노드 또는 두 네트워크 간에 **가상의 링크(VPN 등)**를 형성하는 기법이다.
일반적으로 터널링 기법은
- 암호화 기법 적용 가능
- 오버레이 네트워크로 구성 가능
VPN
가상사설망(Virtual Private Network)은 인터넷과 같이 여러 사람이 공용으로 사용하는 공중망(Public Network)을 특정인이나 조직이 단독으로 사용하는 사설망(Private Network)처럼 동작시키는 것
대표적으로 아래 2가지
- 전용선으로 구축하는 것에 비해 훨씬 적은 비용으로 유지가 가능하다.
- 전용선의 장애에 대비하여 VPN을 이용한 이중화를 구현할 수 있다.
특별한 1가지
- 전용선 환경에서도 데이터의 보안을 위해 구현한다.
- Tunneling + Security
VPN Tunneling Protocol
IPSec
- IP Network 환경에서 VPN을 보호하는 방법을 정의하는 표준
- 다양한 프로토콜과 알고리즘을 내장한 프레임워크
- 암호화(기밀성) , 무결성 , 인증 및 재생 방지와 같은 필수 보안 기능 제공
- 출발지와 목적지 간의 IP 패킷을 보호하고 인증
- 프레임워크의 유연성 덕분에 새로운 보안 기술을 쉽게 통합 가능
GRE
- Cisco가 개발한 비보안 사이트 간 VPN 터널링 프로토콜
💡 IPSec는 일반적으로 Unicast 트래픽에 사용되는 보안 프로토콜이지만
GRE(Generic Routing Encapsulation)는 여러 종류의 트래픽을 캡슐화하고 전송하기 위해 사용된다.
SSL VPN (Secure Sockets Layer)
- 웹 브라우저와 웹 서버 간의 트래픽을 암호화하는데 사용한다.
- SSL로 언급 하지만 실제로는 표준화된 TSL 를 사용
- HTTPS를 사용하기 때문에 거의 모든 곳에서 사용이 가능하다.
- 대부분 SSL VPN은 브라우저를 통해 포털을 제공 하므로 별도 Client Software 불필요
- 일부 고급기능이 필요한 경우 Client Software 필요
VPN Tunneling Type
Site-to-Site VPN
- 사이트 간 VPN을 사용하면 각 사이트에 네트워크 장치가 있으며 이 두 네트워크 장치 사이에 VPN 터널을 구축
- VPN 터널의 각 끝은 내부 IP 패킷을 암호화하고 VPN 헤더, 새 IP 헤더를 추가한 다음 암호화된 패킷을 터널의 다른 끝으로 전달
Client-to-Site VPN (=Remote user VPN)
- 사용자는 자신의 장치에 VPN 클라이언트 설치
- 사용자의 장치와 원격 VPN 장비 사이에 VPN 터널 구축
Site-to-Site VPN
- H1은 데이터에 SrcIP 와 DestIP 설정해 패킷 전송
- R1은 IP 패킷을 암호화 하고 VPN 헤더를 추가 후 SrcIP(Tunnel Start) 와 DestIP(Tunnel End)가 Public IP로 설정된 새로운 IP 헤더를 붙여 패킷을 Internet에 전달
- Internet 통해 패킷을 전달 받은 R2는 패킷이 정말 R1에서 왔는지 확인 하고, 복호화 해서 데이터를 H2로 전달
Client-to-Site VPN (Remote user)
사용자는 VPN 클라이언트와 R1 사이에 VPN 터널을 설정하여 원격 서버에 접속하는 방식이다.
암호화 / 복호화 , Encap / Decap 위치만 다를 뿐 동작은 Site-to-Site 와 동일하다.
GRE
GRE(Generic Routing Encapsulation) 동작 방식
GRE는 IP,IPv6,IPX,IPsec 등과 같은 여러 가지 패킷을 IP 패킷에 실어 전송할 때 사용하는 터널링 프로토콜
터널링은 패킷이 특정 네트워크를 통해 전송될 수 있도록 패킷에 넣는 개념
- 캡슐화라고도 부름
HQ와 지사를 두고 RIP, OSPF 또는 EIGRP와 같은 라우팅 프로토콜을 실행하고자 하는 경우 라우팅 프로토콜을 터널링하여 본사와 지점 라우터가 라우팅 정보를 교환할 수 있습니다.
터널을 구성할 때는 두 장치 간에 포인트 투 포인트 연결을 생성하는 것과 같다.
💡 GRE(Generic Routing Encapsulation)는 이러한 것을 할 수 있는 간단한 Cisco 전용 터널링 기술!!
GRE는 원래의 패킷에 GRE를 위한 GRE헤더와 Tunnel IP를 추가한다.
추가 헤더를 사용하여 다른 Layer 3 프로토콜을 페이로드로 지원한다. (e.g., IP, IPX, AppleTalk)
4바이트 길이의 GRE 헤더에는 GRE 내부의 패킷 정보가 표시된다.
기본적으로 24바이트의 Overhead 가 발생한다. (20-IP, 4-GRE, Tunnel MTU=1476)
데이터 암호화 기능은 제공하지 않는다. (암호화를 위해서는 IPsec 필요)
GRE over IPsec 동작 방식
보안이 취약한 GRE 패킷을 IPsec으로 보호한다
지사에서는 GRE 터널과 IPsec 터널의 시작 장비가 동일 하지만, 본사에서는 두 장비를 다르게 운용이 가능하다.
GRE 특징
- 동적인 라우팅 프로토콜을 사용할 수 있음
- 멀티캐스트 패킷을 전송할 수 있음
- 동적인 라우팅 프로토콜을 이용하여 이중화 구성이 용이
- 포인트-투-포인트 , 멀티포인트 구성 가능
- GRE는 보안에 취약 (IPsec 필요)
- GRE는 아래의 요구사항을 수용할 수 없음
- 기밀성
- 데이터 원본 인증
- 데이터 무결성
💡 라우팅 설정 시 터널의 Source IP 주소는 반드시 제외시켜야 한다.
터널의 Destination 경로가 터널을 통해 학습되면 ‘재귀적 라우팅 (recursive routing)’이라고 하여, 이 경우 구성된 터널이 다운된다.
%TUN-5-RECURDOWN: Tunnel0 temporarily disabled due to recursive routing
GRE Configuration Example
- Tunnel Destination 이 라우팅 테이블에 있어야 함
- 기본 터널 모드는 pGRE (point-to-point)
- (optional) keepalive 10 3 = 10초 주기의 keepalive, 3회 재전송
- HQ 와 Branch 사이에 Dynamic Routing Protocol 운영할 때 주로 사용
- Interface 설정
ISP(config)#interface fastEthernet 0/0 ISP(config-if)#ip address 192.168.12.2 255.255.255.0 ISP(config)#interface fastEthernet 1/0 ISP(config-if)#ip address 192.168.23.2 255.255.255.0
HQ(config)#interface fastEthernet 0/0 HQ(config-if)#ip address 192.168.12.1 255.255.255.0 HQ(config)#interface loopback0 HQ(config-if)#ip address 172.16.1.1 255.255.255.0 HQ(config)#ip route 192.168.23.3 255.255.255.255 192.168.12.2
Branch(config)#interface fastEthernet 0/0 Branch(config-if)#ip address 192.168.23.3 255.255.255.0 Branch(config)#interface loopback 0 Branch(config-if)#ip address 172.16.3.3 255.255.255.0 Branch(config)#ip route 192.168.12.1 255.255.255.255 192.168.23.2
- Tunnel 생성
HQ(config)#interface tunnel 1 HQ(config-if)#tunnel source fastEthernet 0/0 HQ(config-if)#tunnel destination 192.168.23.3 HQ(config-if)#ip address 192.168.13.1 255.255.255.0
Branch(config)#interface tunnel 1 Branch(config-if)#tunnel source fastEthernet 0/0 Branch(config-if)#tunnel destination 192.168.12.1 Branch(config-if)#ip address 192.168.13.3 255.255.255.0
- 확인
HQ#show interfaces tunnel 1 Tunnel1 is up, line protocol is up Hardware is Tunnel Internet address is 192.168.13.1/24 MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation TUNNEL, loopback not set Keepalive not set Tunnel source 192.168.12.1 (FastEthernet0/0), destination 192.168.23.3 Tunnel protocol/transport GRE/IP
Branch#show interfaces tunnel 1 Tunnel1 is up, line protocol is up Hardware is Tunnel Internet address is 192.168.13.3/24 MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation TUNNEL, loopback not set Keepalive not set Tunnel source 192.168.23.3 (FastEthernet0/0), destination 192.168.12.1 Tunnel protocol/transport GRE/IP
Branch#ping 192.168.13.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.13.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/7/12 ms
- IGP 구성
HQ(config)#router ospf 1 HQ(config-router)#network 172.16.1.0 0.0.0.255 area 0 HQ(config-router)#network 192.168.13.0 0.0.0.255 area 0
Branch(config)#router ospf 1 Branch(config-router)#network 172.16.3.0 0.0.0.255 a 0 Branch(config-router)#network 192.168.13.0 0.0.0.255 a 0
- IGP 확인
HQ#sh ip ospf nei Neighbor ID Pri State Dead Time Address Interface 172.16.3.3 0 FULL/ - 00:00:38 192.168.13.3 Tunnel1
Branch#sh ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 172.16.1.1 0 FULL/ - 00:00:39 192.168.13.1 Tunnel1
HQ#sh ip route ospf 172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks O 172.16.3.3/32 [110/1001] via 192.168.13.3, 00:01:04, Tunnel1
Branch#sh ip route os Gateway of last resort is not set 172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks O 172.16.1.1/32 [110/1001] via 192.168.13.1, 00:01:22, Tunnel1
Branch#ping 172.16.1.1 source lo 0 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds: Packet sent with a source address of 172.16.3.3 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
GRE Recursive Routing Error
Tunnel 목적지 IP를 Tunnel 통해 학습 하는 경우 (NH : Next Hop)
- 데이터의 목적지 IP Routing Lookup → NH Tunnel 확인 (IGP 학습)
- Tunnel 목적지 IP Routing Lookup → NH Default 또는 Static , BGP 통해 ISP 방향 확인
- New IP Header로 Encapsulation 후 Public Network 통해 전달
✓ 만약 2. 단계에서 구성 오류로 Tunnel 통해 Tunnel 목적지 IP를 학습 하게 되면 NH이 Tunnel 이 됨
%TUN-5-RECURDOWN: Tunnel0 temporarily disabled due to recursive routing
💡 Tunnel Source IP는 IGP로 광고 금지 = Tunnel Destination IP는 IGP로 학습 금지
Tunnel Destination 에 대한 NH을 Tunnel로 학습 하게 됨
만약 광고를 해야 하는 상황 이라면 IGP 보다 더 좋은 AD값의 Tunnel Destination 경로 필요 (Static)
1. Interface 설정
ISP(config)#interface fastEthernet 0/0
ISP(config-if)#ip address 192.168.12.2 255.255.255.0
ISP(config)#interface fastEthernet 1/0
ISP(config-if)#ip address 192.168.23.2 255.255.255.0
HQ(config)#interface fastEthernet 0/0
HQ(config-if)#ip address 192.168.12.1 255.255.255.0
HQ(config)#interface loopback0
HQ(config-if)#ip address 172.16.1.1 255.255.255.255
HQ(config)#ip route 192.168.23.3 255.255.255.255 192.168.12.2
Branch(config)#interface fastEthernet 0/0
Branch(config-if)#ip address 192.168.23.3 255.255.255.0
Branch(config)#interface loopback 0
Branch(config-if)#ip address 172.16.3.3 255.255.255.255
Branch(config)#ip route 192.168.12.1 255.255.255.255 192.168.23.2
2. Tunnel 생성
HQ(config)#interface tunnel 1
HQ(config-if)#tunnel source fastEthernet 0/0
HQ(config-if)#tunnel destination 192.168.23.3
HQ(config-if)#ip address 192.168.13.1 255.255.255.0
Branch(config)#interface tunnel 1
Branch(config-if)#tunnel source fastEthernet 0/0
Branch(config-if)#tunnel destination 192.168.12.1
Branch(config-if)#ip address 192.168.13.3 255.255.255.0
3. IGP 구성
- Tunnel Source 광고
HQ(config)#router ospf 1
HQ(config-router)#network 172.16.1.0 0.0.0.255 area 0
HQ(config-router)#network 192.168.13.0 0.0.0.255 area 0
HQ(config-router)#network 192.168.12.0 0.0.0.255 area 0
Branch(config)#router ospf 1
Branch(config-router)#network 172.16.3.0 0.0.0.255 a 0
Branch(config-router)#network 192.168.13.0 0.0.0.255 a 0
Branch(config-router)#network 192.168.23.0 0.0.0.255 a 0
4. 확인
HQ(config-if)#do show ip route ospf
172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
O 172.16.3.3/32 [110/1001] via 192.168.13.3, 00:00:19, Tunnel1
192.168.23.0/24 is variably subnetted, 2 subnets, 2 masks
O 192.168.23.0/24 [110/1010] via 192.168.13.3, 00:04:48, Tunnel1
Branch(config-if)#do show ip route ospf
172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
O 172.16.1.1/32 [110/1001] via 192.168.13.1, 00:00:45, Tunnel1
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
O 192.168.12.0/24 [110/1010] via 192.168.13.1, 00:05:03, Tunnel1
HQ#
*Apr 21 : %TUN-5-RECURDOWN: Tunnel1 temporarily disabled due to recursive routing
*Apr 21 : %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel1, changed state to down
*Apr 21 : %OSPF-5-ADJCHG: Process 1, Nbr 172.16.3.100 on Tunnel1 from FULL to DOWN, Neighbor Down: Interface
down or detached
Branch#
*Apr 21 : %TUN-5-RECURDOWN: Tunnel1 temporarily disabled due to recursive routing
*Apr 21 : %LINEPROTO-5-UPDOWN: Line protocol on Interface Tunnel1, changed state to down
*Apr 21 : %OSPF-5-ADJCHG: Process 1, Nbr 172.16.1.100 on Tunnel1 from FULL to DOWN, Neighbor Down: Interface
down or detached
IPsec
IPsec Framework
IPsec Protocol Encapsulation
- AH (Authentication Header)
- 데이터 인증 및 무결성 제공 (데이터 암호화 X)
- Cisco ASA 미지원
- ESP (Encapsulation Security Protocol)
- 데이터 암호화 , 인증 , 무결성 제공
IPsec은 다음과 같은 필수 보안 기능을 제공한다.
Authentication (인증)
- 처음 통신을 시작할 때 IKE를 사용해 상대방에 대한 사용자 및 디바이스 인증 기능
- 미리 양측에 동일한 암호를 지정하는 방식 (PSK)
- 디지털 인증서를 사용하는 방식
Confidentiality (기밀성)
- 송수신하는 데이터의 내용을 다른 사람이 알지 못하게 암호화 시키는 것.
- DES , 3DES , AES , RC4 등...
Integrity (무결성)
- 송수신하는 데이터를 도중의 공격자가 변조하는 것을 방지하는 기능
- MD5 , SHA
- 해시코드(MAC) : DATA 와 KEY를 이용하여 무결성 알고리즘 적용해 만든 코드
Anti-Replay (재생방지)
- 공격자가 자신의 패킷을 도중에 끼워 넣는 것을 방지하는 기능.
- 패킷의 순서번호, 도착시간을 확인
💡 일반적으로 VPN을 언급 하면 암호화 , 인증 등을 연관 지어서 생각 하지만 항상 그런 것은 아닙니다. VLAN과 같은 단순한 기술도 “VPN” 으로 간주할 수 있습니다. VLAN은 L2 기반 가상 기술 (Virtual)로 VLAN 내의 장치들만 서로 통신 가능 (Private) 기능을 제공 합니다. 그리고 인증 또는 암호화를 제공하지 않는 MPLS VPN도 좋은 예 입니다
IPsec VPN 개요
IPsec VPN은 본사 / 지사 사이의 보안통신에 가장 많이 사용.
IPsec Tunneling 설정하기 위한 IKE 와 ISAKMP
- IKE(Internal Key Exchange)
- ISAKMP(Internet Security Association and Key Management Protocol)
- 보안정책 집합인 SA (Security Association) 결정
- 보안통신을 위해 필요한 여러 가지 알고리즘 및 정책의 집합
- 처음 통신 당사자(Peer) 인증
- 보안통신에 필요한 여러 가지 키(암호)를 결정
- UDP 500 사용
- 보안정책 집합인 SA (Security Association) 결정
IPsec VPN 터널 구축
1단계 (Phase 1):
- 현재의 단계에서 사용할 보안정책인 ISAKMP SA 결정
- 각 보안 알고리즘에서 사용할 임시 키를 생성하며, 상대 장비를 인증
- Main mode / Aggressive mode
2단계 (Phase 2):
- 실제 데이터 송수신을 위해서 필요한 보안정책인 IPsec SA를 결정
메인 모드 (Main Mode) – IKE 1단계
- R1에서 ISAKMP SA를 제안 한다.
- Phase1 단계에서 필요한 Peer 인증방식, 암호화 방식, 해싱 방식, 디피-헬먼 그룹, 라이프타임
- 이를 수신한 R2는 자신에게 설정된 ISAKMP SA 세트와 비교하여 일치하는 SA 세트가 있으면 상대가 제안 한 것과 동일한 SA를 전송하여 상대의 제안을 선택했다고 알려줌.
- R1이 자신의 공개키와 R1이 nonce 를 R2에게 전송 한다.
- nonce : 자신의 공개키와 개인키를 이용하여 임시로 만든 수
- R2도 자신의 공개키와 R2 nonce를 R1에게 전송 한다.
- R1,R2는 자신의 개인키와 상대에게서 수신한 공개키 및 nonce를 이용해 양측에서 동일한 대칭키를 디피-헬먼 알고리즘을 이용해 계산 해내고 이것을 암호화 및 해시코드 계산용 키로 사용한다.
- 1번&2번 단계에서 결정된 암호화/해싱 알고리즘, 3번&4번 단계에서 계산한 대칭키를 사용해 패킷을 암호화 시키고 무결성 확인용 해시코드를 만들어 첨부한다.
- R1과R2는 서로 자신의 ID와 인증정보를 암호화하여 해시코드와 함께 전송한다.
어그레시브 모드 (Aggressive Mode) – IKE 1단계
- R1에서 첫번째 패킷에 ISAKMP SA 제안, 디피-헬먼 키 계산에 필요한 정보 등을 담아 보낸다.
- R2의 응답패킷에 선택된 ISAKMP SA, 디피-헬먼 키 계산에 필요한 정보 등과 함께 R1을 인증한다는 메시지가 포함된다.
- R1에서 인증 메시지 전송
퀵 모드(Quick Mode) – IKE 2단계
- R1에서 실제 데이터를 보호하기 위한 보안정책 즉, IPsec SA를 제안한다.
- IPsec 프로토콜(AH/ESP) , 캡슐화 , 암호화 알고리즘 , 패킷 인증 해시 알고리즘 , lifetime
- DH 교환 (PFS 사용시)
- R2는 자신이 지원가능한 IPsec SA 세트를 선택해 R1에게 알려준다.
- R1은 R2가 동의한 IPsec SA에 대해 수신확인 메시지를 보낸다.
참고:
DH 그룹 번호 1, 2 또는 5는 취약하다고 간주
가능한 경우 그룹 19, 20 또는 24와 같은 ECC(Elliptic Curve Cryptography)가 있는 DH 그룹 사용
AES(Advanced Encryption Standard)는 DES(Data Encryption Standard)/3DES 보다 뛰어난 것으로 간주
SHA256(Secure Hash Algorithm 256)는 MD5(Message Digest 5)/SHA1보다 뛰어난 것으로 간주
IKE 와 ISAKMP 요약
IKE Phase 1, ISAKMP SA :
- VPN간 안전한 Phase2 SA 교환을 위한 Phase1 터널 생성과 상대방(Peer) 인증
IKE Phase 2, IPSec SA :
- 패킷(데이터)의 암호화 알고리즘 결정과 암호화 키 교환
- Phase1에서 생성된 터널을 기반으로 패킷을 암호화/인증할 실질적인 SA을 협의하고 패킷을 암호화하여 전송할 터널을 생성
IKE 와 ISAKMP Summary
1~6 : ISAKMP SA (Main Mode)
7~9 : IPsec SA (Quick Mode)
ISAKMP&IPSEC Capture
1~10 : ESP (암호화 데이터)
ESP Capture
IPsec Example
IPsec VPN Example
- STEP 1 : ISAKMP SA (Phase1)
- STEP 2 : IPsec SA (Phase2)
- STEP 3 : Crypto MAP (보호대상 네트워크 , 보안 알고리즘 종류 등을 하나로 묶음)
- STEP 4 : Apply Config to Interface
STEP 1. ISAKMP SA : Phase 1
R1(config)#crypto isakmp policy 1
R1(config-isakmp)#encryption aes
R1(config-isakmp)#hash sha
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#group 2
R1(config)#crypto isakmp key 0 MYPASSWORD address 192.168.23.3
STEP 2. IPsec SA : Phase 2
R1(config)#crypto ipsec transform-set MYTRANSFORMSET esp-aes esp-sha-hmac
STEP 3. Crypto map : Phase 3
R1(config)#crypto map CRYPTOMAP 10 ipsec-isakmp
R1(config-crypto-map)#set peer 192.168.23.3
R1(config-crypto-map)#set transform-set MYTRANSFORMSET
R1(config-crypto-map)#match address 100
R1(config)#access-list 100 permit ip host 1.1.1.1 host 3.3.3.3
STEP 4. Reachability 제공
R1(config)#ip route 192.168.23.0 255.255.255.0 192.168.12.2
R1(config)#ip route 3.3.3.3 255.255.255.255 192.168.23.3
STEP 5. 적용
R1(config)#interface gi0/1
R1(config-if)#crypto map CRYPTOMAP
R3 도 적용
R3(config)#crypto isakmp policy 1
R3(config-isakmp)#encryption aes
R3(config-isakmp)#authentication pre-share
R3(config-isakmp)#group 2
R3(config)#crypto isakmp key 0 MYPASSWORD address 192.168.12.1
R3(config)#crypto ipsec transform-set MYTRANSFORMSET esp-aes esp-sha-hmac
R3(config)#crypto map CRYPTOMAP 10 ipsec-isakmp
R3(config-crypto-map)#set peer 192.168.12.1
R3(config-crypto-map)#set transform-set MYTRANSFORMSET
R3(config-crypto-map)#match address 100
R3(config)#access-list 100 permit ip host 3.3.3.3 host 1.1.1.1
R3(config)#ip route 192.168.12.0 255.255.255.0 192.168.23.2
R3(config)#ip route 1.1.1.1 255.255.255.255 192.168.12.1
R3(config)#interface GigabitEthernet 0/1
R3(config-if)#crypto map CRYPTOMAP
확인
R1#ping 3.3.3.3 source loopback 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/8/12 ms
Encapsulation, Encryption, Digest: 보안 연관성을 통해 보호된 패킷의 수
Decapsulation, Decryption, Verify: 보안 연관성을 통해 복호화되고 확인된 패킷의 수
PING 테스트 했을 때를 보면 Ping 인지 뭔지 모르고 ESP 로 표시된다.
ESP 란 IPsec(인터넷 프로토콜 보안) 프로토콜 스위트의 한 부분으로, IP 패킷을 안전하게 전송하기 위한 메커니즘 중 하나
Dynamic Crypto Map
Dynamic Crypto MAP은 본사에서 먼저 터널 구성을 할 수 없다.
Dynamic Crypto MAP을 사용하면 각 Peer에 대해 미리 Crypto MAP을 만들 필요가 없어 편리하다.
원격 Peer가 xDSL 혹은 케이블 같은 유동 IP 주소를 사용하는 경우
- 인증과정을 거친 후 원격 Peer가 전송하는 IP 주소 등을 이용하여 본사에 일시적 Crypto MAP 생성
원격 Peer가 구성한 터널이 끊어지지 않도록 IP SLA, NTP 등과 같이 주기적으로 트래픽을 발생시키는 기능이나 프로토콜 사용이 필요하다.
Dynamic Crypto Map Example
DHCP
R3(config)# ip dhcp pool POOL-34
R3(dhcp-config)# default-router 1.1.34.3
R3(dhcp-config)# network 1.1.34.0 255.255.255.0
R3(dhcp-config)# exit
R3(config)# ip dhcp pool POOL-35
R3(dhcp-config)# default-router 1.1.35.5
R3(dhcp-config)# network 1.1.35.0 255.255.255.0
R3(dhcp-config)# exit
R4(config)# interface e0/2
R4(config-if)# ip address dhcp
R5(config)# interface e0/3
R5(cnfig-if)# ip address dhcp
ISAKMP SA – Phase1
R2(config)# crypto isakmp policy 10
R2(config-isakmp)# encryption 3des
R2(config-isakmp)# authentication pre-share
R2(config-isakmp)# hash md5
R2(config-isakmp)# group 2
R2(config-isakmp)# exit
R2(config)# crypto isakmp key cisco address 0.0.0.0 0.0.0.0
IPsec SA – Phase2
R2(config)# ip access-list extended ACL-VPN-TRAFFIC
R2(config-ext-nacl)# permit ip 10.1.0.0 0.0.255.255 10.1.40.0 0.0.0.255
R2(config-ext-nacl)# permit ip 10.1.0.0 0.0.255.255 10.1.50.0 0.0.0.255
R2(config-ext-nacl)# exit
R2(config)# crypto ipsec transform-set PHASE2 esp-aes esp-sha-hmac
Crypto MAP & Dynamic MAP– Phase3
R2(config)# crypto dynamic-map DMAP 10
R2(config-crypto-map)# match address ACL-VPN-TRAFFIC
R2(config-crypto-map)# set transform-set PHASE2
R2(config-crypto-map)# exit
R2(config)# crypto map VPN 10 ipsec-isakmp dynamic DMAP
R2(config)# interface e0/1
R2(config-subif)# crypto map VPN
GRE over IPsec Mode
GRE over IPsec 도 IPsec와 마찬가지로 두가지 Mode로 동작 가능.
GRE는 Layer 3 프로토콜 페이로드를 캡슐화 합니다.
IPsec은 GRE 패킷을 캡슐화 합니다.
Tunnel Mode(Default): IPsec에서 새 터널 IP 패킷을 생성합니다.
Transport Mode: IPsec은 GRE의 IP 헤더를 재사용합니다(20바이트의 오버헤드 감소).
GRE over IPsec Configuration Example
Interface 설정
HQ(config)#interface fastEthernet 0/0
HQ(config-if)#ip address 192.168.12.1 255.255.255.0
HQ(config)#interface loopback0
HQ(config-if)#ip address 172.16.1.1 255.255.255.0
HQ(config)#ip route 192.168.23.3 255.255.255.255 192.168.12.2
ISP(config)#interface fastEthernet 0/0
ISP(config-if)#ip address 192.168.12.2 255.255.255.0
ISP(config)#interface fastEthernet 1/0
ISP(config-if)#ip address 192.168.23.2 255.255.255.0
Branch(config)#interface fastEthernet 0/0
Branch(config-if)#ip address 192.168.23.3 255.255.255.0
Branch(config)#interface loopback 0
Branch(config-if)#ip address 172.16.3.3 255.255.255.0
Branch(config)#ip route 192.168.12.1 255.255.255.255 192.168.23.2
IPsec VPN VTI(Virtual Tunnel Interface)
IPsec VTI는 p2p GRE IPsec VPN과 유사하지만 설정이 편리하다.
라우팅 프로토콜에 의해 터널 인터페이스로 향하는 모든 DATA를 IPsec으로 보호한다.
- 별도의 보호대상 ACL 설정이 필요 없음!
Cisco에서 VPN 한 가지 목적으로만 개발되었기에 GRE와 다르게 오직 VPN의 용도로만 사용이 가능하다.
- GRE + IPsec = GRE over IPsec
- IPsec + GRE(VTI) = IPsec/VTI VPN
순수 IPsec VPN 이나 GRE over IPsecVPN 대신 사용이 가능하다.
IPsec VTI Example
ISAKMP SA – Phase1
R2(config)# crypto isakmp policy 10
R2(config-isakmp)# encryption aes
R2(config-isakmp)# authentication pre-share
R2(config-isakmp)# hash md5
R2(config-isakmp)# group 2
R2(config-isakmp)# exit
R2(config)# crypto isakmp key cisco address 0.0.0.0 0.0.0.0
IPsec SA – Phase2
R2(config)# crypto ipsec transform-set PHASE2 esp-aes esp-sha-hmac
IPsec Profile
R2(config)# crypto ipsec profile VTI-PROFILE
R2(ipsec-profile)# set transform-set PHASE2
VTI Tunnel
R2(config)# interface tunnel 24
R2(config-if)# ip address 10.1.24.2 255.255.255.0
R2(config-if)# tunnel source 1.1.23.2
R2(config-if)# tunnel destination 1.1.34.4 (생략가능)
R2(config-if)# tunnel mode ipsec ipv4
R2(config-if)# tunnel protection ipsec profile VTI-PROFILE
R2(config)# interface tunnel 25
R2(config-if)# ip address 10.1.25.2 255.255.255.0
R2(config-if)# tunnel source 1.1.23.2
R2(config-if)# tunnel destination 1.1.35.5 (생략가능)
R2(config-if)# tunnel mode ipsec ipv4
R2(config-if)# tunnel protection ipsec profile VTI-PROFILE
IPsec with ASA
ASA IPsec VPN Example
1. ISAKMP SA 설정 – Phase1
ASA1(config)# crypto ikev1 policy 10
ASA1(config-ikev1-policy)# authentication pre-share
ASA1(config-ikev1-policy)# encryption aes
ASA1(config-ikev1-policy)# hash sha
ASA1(config-ikev1-policy)# group 2
ASA1(config-ikev1-policy)# lifetime 3600
ASA1(config)# crypto ikev1 enable OUTSIDE
ASA1(config)# crypto isakmp identity address
ASA1(config)# tunnel-group 10.10.10.2 type ipsec-l2l
ASA1(config)# tunnel-group 10.10.10.2 ipsec-attributes
ASA1(config-tunnel-ipsec)# ikev1 pre-shared-key MY_SHARED_KEY
2. IPsec SA 설정 – Phase2
ASA1(config)# crypto ipsec ikev1 transform-set MY_TRANSFORM_SET esp-aes-256 esp-sha-hmac
ASA1(config)# access-list LAN1_LAN2 extended permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0
3. Crypto MAP 설정 – Phase3
ASA1(config)# crypto map MY_CRYPTO_MAP 10 match address LAN1_LAN2
ASA1(config)# crypto map MY_CRYPTO_MAP 10 set peer 10.10.10.2
ASA1(config)# crypto map MY_CRYPTO_MAP 10 set ikev1 transform-set MY_TRANSFORM_SET
ASA1(config)# crypto map MY_CRYPTO_MAP 10 set security-association lifetime seconds 3600
ASA1(config)# crypto map MY_CRYPTO_MAP interface OUTSIDE
4. ASA2 에도 적용
ASA2(config)# crypto ikev1 policy 10
ASA2(config-ikev1-policy)# authentication pre-share
ASA2(config-ikev1-policy)# encryption aes
ASA2(config-ikev1-policy)# hash sha
ASA2(config-ikev1-policy)# group 2
ASA2(config-ikev1-policy)# lifetime 3600
ASA2(config)# crypto ikev1 enable outside
ASA2(config)# crypto isakmp identity address
ASA2(config)# tunnel-group 10.10.10.1 type ipsec-l2l
ASA2(config)# tunnel-group 10.10.10.1 ipsec-attributes
ASA2(config-tunnel-ipsec)# ikev1 pre-shared-key MY_SHARED_KEY
ASA2(config)# crypto ipsec ikev1 transform-set MY_TRANSFORM_SET esp-aes-256 esp-sha-hmac
ASA2(config)# access-list LAN1_LAN2 extended permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0
ASA2(config)# crypto map MY_CRYPTO_MAP 10 match address LAN2_LAN1
ASA2(config)# crypto map MY_CRYPTO_MAP 10 set peer 10.10.10.1
ASA2(config)# crypto map MY_CRYPTO_MAP 10 set ikev1 transform-set MY_TRANSFORM_SET
ASA2(config)# crypto map MY_CRYPTO_MAP 10 set security-association lifetime seconds 3600
ASA2(config)# crypto map MY_CRYPTO_MAP interface OUTSIDE
5. Reachability 제공
ASA1(config)# route OUTSIDE 192.168.2.0 255.255.255.0 10.10.10.2
또는 ASA1(config)# route OUTSIDE 0 0 10.10.10.2
ASA2(config)# route OUTSIDE 192.168.1.0 255.255.255.0 10.10.10.1
또는 ASA2(config)# route OUTSIDE 0 0 10.10.10.1
6. 확인
R1#ping 192.168.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
ASA1# show crypto isakmp sa
IKEv1 SAs:
Active SA: 1
Rekey SA: 0 (A tunnel will report 1 Active and 1 Rekey SA during rekey)
Total IKE SA: 1
1 IKE Peer: 10.10.10.2
Type : L2L Role : initiator
Rekey : no State : MM_ACTIVE
There are no IKEv2 SAs
ASA1# show crypto ipsec sa
interface: OUTSIDE
Crypto map tag: MY_CRYPTO_MAP, seq num: 10, local addr: 10.10.10.1
access-list LAN1_LAN2 extended permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0
local ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (192.168.2.0/255.255.255.0/0/0)
current_peer: 10.10.10.2
#pkts encaps: 1697, #pkts encrypt: 1697, #pkts digest: 1697
#pkts decaps: 1696, #pkts decrypt: 1696, #pkts verify: 1696
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 1697, #pkts comp failed: 0, #pkts decomp failed: 0
#pre-frag successes: 0, #pre-frag failures: 0, #fragments created: 0
#PMTUs sent: 0, #PMTUs rcvd: 0, #decapsulated frgs needing reassembly: 0
#TFC rcvd: 0, #TFC sent: 0
#Valid ICMP Errors rcvd: 0, #Invalid ICMP Errors rcvd: 0
#send errors: 0, #recv errors: 0
inbound esp sas:
spi: 0xF74C0050 (4148953168)
transform: esp-aes-256 esp-sha-hmac no compression
in use settings ={L2L, Tunnel, IKEv1, }
slot: 0, conn_id: 4096, crypto-map: MY_CRYPTO_MAP
sa timing: remaining key lifetime (kB/sec): (3914834/3423)
IV size: 16 bytes
replay detection support: Y
Anti replay bitmap:
0xFFFFFFFF 0xFFFFFFFF
outbound esp sas:
spi: 0xEECD69E6 (4006439398)
transform: esp-aes-256 esp-sha-hmac no compression
in use settings ={L2L, Tunnel, IKEv1, }
slot: 0, conn_id: 4096, crypto-map: MY_CRYPTO_MAP
sa timing: remaining key lifetime (kB/sec): (3914834/3423)
IV size: 16 bytes
replay detection support: Y
Anti replay bitmap:
0x00000000 0x00000001