VPN 1일차
VPN (Virtual Private Network)
- Public Network를 Private Network처럼 사용하는 것을 의미한다.
- 공중망의 저렴한 비용과 사설망의 안정성이라는 특징을 동시에 갖는다.
- 공중망을 통해서 Data를 안전하게 전송하기 위해서는 다음과 같은 부분들이 지원되어야 한다.
- 기밀성(암호화)
- 무결성(Hash)
- 인증(Authentication)
- 재생방지 (Sequence Number)
VPN의 종류
VPN Protocol에 따른 분류
-
IPsec VPN(IP Security)
-
SSL VPN
-
PPTP
-
L2TP
-
MPLS VPN
VPN 구성 방식에 따른 분류
1) Site-to Site VPN (= LAN to LAN VPN)
- 본사 - 지사와 같이 고정된 사이트에서 지속적으로 연결되어 사용되는 VPN을 의미한다.
2) Remote Access VPN
-
고정된 사이트가 아닌 동적으로 장소가 변경되는 경우 적합한 방식이다. (출장, 재택 근무 등)
-
노트북, 모바일 디바이스 등에 VPN 접속, Application을 설치하여 회사 내부 망에 접속할 수 있는 방식
-
Easy VPN(IPSec 사용) / SSL VPN / PPTP / L2TP
암호화 알고리즘
1) Pre-Shared Key(PSK)
-
공개키, 대칭키, 관용키라고 표현하기도 한다.
-
암호화 키와 복호화 키가 서로 동일하다.
[종류]
1. DES : 미국 1977년, AES 개발 전 널리 사용, 평문.
2. 3DES : DES의 56비트 키 두 개로 DES를 세번 적용하여 짧은 키 길이로 인한 안정성 문제를 해결하였다. 대신 DES 보다 세 배 느리다.
3. AES : Advanced Encryption Standard, DES를 대신하는 표준 대칭키. 평문 128비트, 키->128, 192, 256비트 중 택1 암호문-> 128비트
2) Public Key
-
공개키, 비 대칭키 라고도 한다.
-
Diffie-Hellman algorism : 스탠포드 대학교의 디피와 헬만이 공개키 개념 도입
-
RSA : MIT의 리베스트(Riverst), 샤미르(Shamir), 에이들맨(Adleman)이 개발한 소인수분해 기반 알고리즘
- 어떤 두 정수의 곱은 빨리 셈할 수 있으나 임의의 양의 정수가 소인수분해는 매우 어렵다는 인수분해 문제에 기반을 두었다.
-
암호화 키와 복호화 키가 서로 다르고, Public key(공개키)와 Private Key(사설키)가 한 쌍으로 구성된다.
-
키의 개수가 줄어들어 키의 관리가 쉬워졌으며 복잡한 키의 분배 문제도 해결되었다.
[종류] RSA : 소인수분해 기반 알고리즘 Diffe-Hellman, DSA, KCDSA : 이산대수 기반 알고리즘 EC-DSA, EC-KCDSA : 타원곡선 이산대수 기반 알고리즘
3) Hash 함수
-
임의의 길이의 메세지(variable-lengh message)를 입력받아, 128비트짜리 고정 길이의 출력 값을 낸다. 주로 파일이 원본 그대로인지를 확인하는 무결성(integrity) 검사에 사용된다.
-
MD5(Message-Digest algorithm) : 임의의 길이의 메세지(variable-length message)를 입력받아 128비트로 출력된다.
-
SHA(Secure Hash Algorithm) : 미국 NSA가 제작하고 미국 국립표준기술연구소(NIST)에서 표준으로 제작된 해시 암호 알고리즘이다. 1993년 SHA-0을 시작으로 대한민국 인터넷 뱅킹에 사용되는 SHA-256에 이르기 까지 꾸준히 업데이트 되어왔다.
4) IPSec Protocol
-
Internet Key Exchange (IKE) : 암호화 알고리즘을 위한 키 결정, 인증키 협상
-
Encapsulating Security Payload (ESP) : Data에 기밀성 및 무결성을 제공함.
-
Authentication Header (AH) : Data의 인증 과 재생방지 서비스를 제공함
5) SA(Security Association)
-
SA는 IPSec 협상을 위한 위의 다양한 ‘보안 정책의 집합’을 의미한다. {프로토콜(AH/ESP) / 인증방식(Key) / 암호화 방식 / 무결성(Hash)} 또는 해당 보안 정책의 집합으로 형성된 ‘보안 연결’을 의미한다.
-
이러한 SA를 구분하는 식별자를 SPI라고 한다
6) ISAKMP (Internet Security Association Management Protocol)
-
암호화 프로토콜의 특성상 특정 세션을 오랫동안 암∙복호화 하게 되면 세션키가 장 시간 노출됨으로 인해 외부공격에 취약해진다.
-
따라서 ‘Session-Key’를 통상 1~8 시간마다 바꿔 줘야한다. 이 작업을 즉 SA 정보 일체와 ‘새로운 Key 분배‘를 자동으로 해주는 또 다른 프로토콜이 필요하게 되었는데 이를 ISAKMP(이하; ‘이사캠프)라 한다.
-
이사캠프는 SA를 생성, 수정, 삭제하기 위한 절차 및 패킷 구조를 정의한다.
1. 인증방식 : preshared key , RSA 만 지원
2. 암호화 알고리즘 : DES, 3DES, AES 지원
3. 해싱 알고리즘 : MD5, SHA
7) IPsec Headers
-
ESP는 원본 Packet에 대한 암호화 및 인증을 수행하지만, AH는 Header를 포함한 Packet에 인증을 수행하며, 암호화는 하지 않는다.
-
IP와 L4 사이에 ESP가 붙는다. = Transport Mode
-
L2헤더와IP 사이에 New-I와 ESP가 붙는다. = Tunnel Mode
Direct Encapsulation IPSec VPN 실습
# 공통설정
en
conf t
no ip domain lookup
line c 0
exec-timeout 0
logg syn
exit
hostname
# IP Address
HQ]
int f0/1
no shut
10.10.10.1 255.255.255.0
exit
int f0/0
no shut
ip add 10.10.12.1 255.255.255.252
HQ_VPN]
int f0/0
no shut
10.10.12.2 255.255.255.252
exit
int f0/1
no shut
1.1.100.1 255.255.255.252
ISP]
int f0/0
no shut
ip add 1.1.100.2 255.255.255.252
int f0/1
no shut
ip add 1.1.100.5 255.255.255.252
exit
int f1/0
no shut
ip add 1.1.100.9 255.255.255.252
Branch1]
int f0/0
no shut
ip add 1.1.100.6 255.255.255.252
exit
int f0/1
no shut
10.10.20.254 255.255.255.0
Branch2]
int f0/0
no shut
ip add 1.1.100.10 255.255.255.252
exit
int f0/1
no shut
ip add 10.10.30.254 255.255.255.0
# OSPF
HQ]
router ospf 1
network 10.10.10.1 0.0.0.0 a 0
network 10.10.12.1 0.0.0.0 a 0
HQ_VPN]
router ospf 1
network 10.10.12.2 0.0.0.0 a 0
default-information originate
exit
ip route 0.0.0.0 0.0.0.0 f0/1 1.1.100.2
Branch1]
router ospf 1
network 10.10.20.254 0.0.0.0 a 0
exit
ip route 0.0.0.0 0.0.0.0 f0/0 1.1.100.5
Brancch2]
router ospf 1
network 10.10.30.254 0.0.0.0 a 0
exit
ip route 0.0.0.0 0.0.0.0 f0/0 1.1.100.9
# Direct Encapsulation IPSec VPN
- 가장 기본적인 형태의 IPSec VPN, Original IP Packet에 IPSEC 관련 헤더(ESP or AH)만 추가된다.
- Direct Encapsulation IPSec 의 장점은 구성이 간단하다는 것이다.
- 단점은 Dynamic Routing Protocol과 Multicast가 지원되지 않기 때문에 대규모 사이트에서는 적합하지 않고, IPSec 이중화 구성이 복잡하다.
• 설정 순서는 다음과 같다.
① IKE Phase 1 : ISAKMP SA, 인증키 설정
② IKE Phase 2 : IPSec SA 설정
③ Crypto map 생성 후 interface 적용
# IKE Phase 2 - IPSec SA 및 암호화 대상 트래픽 정의.
- esp-aes 로 암호화 하고 esp-sha-hmac 로 무결성 체크
- 별도로 설정하지 않을 경우 기본동작은 tunnel 모드가 된다.
- 또한 아래 대상에 대해서만 암호화 및 무결성 체크를 한다.
HQ_VPN]
crypto isakmp policy 1 // 1~10000 사이의 숫자
authentication pre-share
encryption aes
hash sha
group 2 // 보통 2번 알고리즘을 많이 사용
lifetime 3600 // 키 교체주기 1시간
exit
crypto isakmp key ccna123 address 1.1.100.6 // 인증할 대상의 address를 설정
crypto isakmp key ccna123 address 1.1.100.10
end
show crypto isakmp policy
HQ_VPN]
crypto ipsec transform-set IPSEC_SA esp-aes esp-sha-hmac // esp의 암호는 aes, esp의 무결성 검사는 sha의hmac
mode tunnel
exit
ip access-list extended HQ->Branch1 // 누구랑 암호화할 것인가를 acl로 만들어야 함
permit ip 10.10.0.0 0.0.255.255 10.10.20.0 0.0.0.255 // 3번째 옥텍트를 축약해서 설정
exit
ip access-list extended HQ->Branch2
permit ip 10.10.0.0 0.0.255.255 10.10.30.0 0.0.0.255
exit
crypto map VPN_T 1 ipsec-isakmp
match address HQ->Branch1
set transform-set IPSEC_SA // 정의한 내용
set peer 1.1.100.6
exit
crypto map VPN_T 2 ipsec-isakmp
match address HQ->Branch2
set transform-set IPSEC_SA
set peer 1.1.100.10
int f0/1
crypto map VPN_T
end
show crypto map
Branch1]
crypto isakmp policy 1
authentication pre-share
encryption aes
hash sha
group 2
lifetime 3600
!
crypto isakmp key ccna123 address 1.1.100.1
crypto ipsec transform-set IPSEC_SA esp-aes esp-sha-hmac
!
ip access-list extended Branch1->HQ
permit ip 10.10.20.0 0.0.0.255 10.10.0.0 0.0.255.255
!
crypto map VPN_T 1 ipsec-isakmp
match address Branch1->HQ
set transform-set IPSEC_SA
set peer 1.1.100.1
!
int f0/0
crypto map VPN_T
Branch2]
crypto isakmp policy 1
authentication pre-share
encryption aes
hash sha
group 2
lifetime 3600
!
crypto isakmp key ccna123 address 1.1.100.1
crypto ipsec transform-set IPSEC_SA esp-aes esp-sha-hmac
!
ip access-list extended Branch2->HQ
permit ip 10.10.30.0 0.0.0.255 10.10.0.0 0.0.255.255
!
crypto map VPN_T 1 ipsec-isakmp
match address Branch1->HQ
set transform-set IPSEC_SA
set peer 1.1.100.1
!
int f0/0
crypto map VPN_T
Branch1]
ping 1.1.100.1 // verify
ping 10.10.10.1 sou f0/1 // verify 라우팅을 하지 않아도 사설to사설로 통신이 된다.
Branch2]
ping 1.1.100.1 // verify
ping 10.10.10.1 sou f0/1
오타 이슈가있었는데, 이럴땐 HQ_VPN, Branch1, Branch2 에서 clear crypto session, clear crypto sa, clear crypto isakmp로 초기화 한 후 다시 핑 테스트를 한다.
negotiation은 되어서 HQ_VPN] 에서 show crypto isakmp sa 했을때 active 상태로 확인될 수 있다.
Dynamic Crypto MAP 실습
- 일반 Crypto map의 경우 지사의 IP 주소가 고정되어 있어야 한다. (set peer x.x.x.x) 또한 새로운 지사가 추가될 때마다 기존 Crypto map에 새로운 지사 정보를 추가적으로 설정해야 한다. 만약 지사가 고정 IP 주소를 사용하지 않거나 혹은 새로운 지사가 지속적으로 증가되는 경우 ‘Dynamic Crypto map’을 사용하는 것이 효율적이다.
# dynamic VPN
HQ_VPN]
no crypto isakmp key ccna123 address 1.1.100.6
no crypto isakmp key ccna123 address 1.1.100.10
no crypto ipsec transform-set IPSEC_SA esp-aes esp-sha-hmac
no crypto map VPN_T 1
no crypto map VPN_T 2
int f0/1
no crypto map VPN_T
crypto isakmp key ccna123 address 0.0.0.0 0.0.0.0
crypto ipsec transform-set IPSEC_SA esp-aes esp-sha-hmac
exit
ip access-list extended HQ->Branch
permit ip 10.10.0.0 0.0.255.255 10.10.20.0 0.0.0.255
permit ip 10.10.0.0 0.0.255.255 10.10.30.0 0.0.0.255
exit
crypto dynamic-map DMAP 1
match address HQ->Branch
set transform-set IPSEC_SA
exit
crypto map VPN_T 1 ipsec-isakmp dynamic DMAP // dynamic 이므로 따로 peer 명령어는 없다.
int f0/1
crypto map VPN_T
Direct Encapsulation IPSec failover 실습
# IP address
HQ]
int l0
ip add 10.1.1.1 255.255.255.0
exit
int f0/0
no shut
ip add 10.1.10.1 255.255.255.252
exit
int f0/1
no shut
ip add 10.1.10.5 255.255.255.252
HQ_VPN]
int f0/0
no shut
ip add 10.1.10.2 255.255.255.252
exit
int f0/1
no shut
ip add 1.1.123.1 255.255.255.248
HQ_VPN2]
int f0/0
no shut
10.1.10.6 255.255.255.252
exit
int f0/1
no shut
ip add 1.1.123.2 255.255.255.248
SW]
no ip routing
CE]
int f0/0
no shut
ip add 1.1.123.3 255.255.255.248
exit
int f0/1
no shut
ip add 1.1.100.1 255.255.255.252
exit
ISP]
int f0/0
no shut
ip add 1.1.100.2 255.255.255.252
exit
int f0/1
no shut
ip add 1.1.100.5 255.255.255.252
exit
int f1/0
no shut
ip add 1.1.100.9 255.255.255.252
Branch1]
int F0/0
no shut
ip add 1.1.100.6 255.255.255.252
exit
int f0/1
no shut
ip add 10.2.2.2 255.255.255.0
Branch2]
int f0/0
no shut
ip add 1.1.100.10 255.255.255.252
exit
int f0/1
no shut
ip add 10.3.3.3 255.255.255.0
# Routing
HQ]
router ospf 1
router-id 1.1.1.1 // 토폴로지 상 HQ는 stub router이므로 DR이 되선 안된다.
network 10.1.1.1 0.0.0.0 a 0
network 10.1.10.1 0.0.0.0 a 0
network 10.1.10.5 0.0.0.0 a 0
HQ_VPN1]
router ospf 1
router-id 3.3.3.3
network 10.1.10.2 0.0.0.0 a 0
deafult-information originate
exit
ip route 0.0.0.0 0.0.0.0 f0/1 1.1.123.3
HQ_VPN2]
router ospf 1
router-id 2.2.2.2
network 10.1.10.6 0.0.0.0 a 0
default-information originate metric-type 1 // OE1 : 변동cost , OE2 : 고정cost 말그대로 oe1은 cost 변동상황에 맞춰 변하고, oe2는 변하지 않는 고정이다. default값은 OE2이다.
exit
ip route 0.0.0.0 0.0.0.0 f0/1 1.1.123.3
CE]
ip route 0.0.0.0 0.0.0.0 f0/1 1.1.100.2
ISP]
ip route 1.1.123.0 255.255.255.248 f0/0 1.1.100.1
Branch1]
ip route 0.0.0.0 0.0.0.0 f0/0 1.1.100.5
Branch2]
ip route 0.0.0.0 0.0.0.0 f0/0 1.1.100.9
HQ_VPN1]
ping 1.1.100.6 // verify
ping 1.1.100.9 // verify
# HSRP
HQ_VPN1]
int f0/1
standby 10 ip 1.1.123.4
standby 10 priority 110
standby 10 preempt delay minimum 10 // 현재 ospf 의 hello 주기로 맞춰주면 된다. etherfast는 10초
standby 10 track f 0/0 20
standby 10 authentication md5 key-string ccna123
standby 10 name VPN_failover
HQ_VPN2]
int f0/1
standby 10 ip 1.1.123.4
standby 10 preempt
standby 10 authentication md5 key-sting ccna123
standby 10 name VPN_failover
# IPSec VPN
HQ_VPN1]
crypto iskmp policy 1
authentication pre-share
encryption aes
hash sha
group 2
lifetime 7200 // 정하기 나름, 양단에 똑같이 맞춰주기만 하면 된다.
exit
crypto isakmp key ccna123 address 1.1.100.6
crypto isakmp key ccna123 address 1.1.100.10
crypto isakmp keepalive 10 // 상대방이 응답이 없으면 10초 있다가 peer 해제 명령어이다.
crypto ipsec transform-set IPSEC_SA esp-aes esp-sha-hmac
mode tunnel
exit
ip access-list extended HQ->Branch1
permit ip 10.1.0.0 0.0.255.255 10.2.2.0 0.0.0.255
permit ip 10.3.3.0 0.0.0.255 10.2.2.0 0.0.0.255
exit
ip access-list extended HQ->Branch2
Permit ip 10.1.0.0 0.0.255.255 10.3.3.0 0.0.0.255
permit ip 10.2.2.0 0.0.0.255 10.3.3.0 0.0.0.255
exit
crypto map VPN_T 1 ipsec-isakmp
match address HQ->Branch1
set transform-set IPSEC_SA
set peer 1.1.100.6
reverse-route // RRI (Reverse Route Injection)
exit
crypto map VPN_T 2 ipsec-isakmp
match address HQ->Branch2
set transform-set IPSEC_SA
set peer 1.1.100.10
reverse-route // RRI (Reverse Route Injection)
exit
router ospf 1
redistribute static subnets // RRI로 동작하려면 OE2 로 동작하는 HQ에게 재분배를 해야함
exit
int f0/1
crypto map VPN_T redundancy VPN_Failover // VPN의 대체경로를 인식하라는 뜻 HSRP VPN 네임인 failover을 적어준다.
HQ_VPN2]
crypto isakmp policy 1
authentication pre-share
encryption aes
hash sha
group 2
lifetime 7200
!
crypto isakmp key cisco321 address 1.1.100.6
crypto isakmp key cisco321 address 1.1.100.10
crypto isakmp keepalive 10
crypto ipsec transform-set IPSEC_SA esp-aes esp-sha-hmac
!
ip access-list extended HQ->Branch1
permit ip 10.1.0.0 0.0.255.255 10.2.2.0 0.0.0.255
permit ip 10.3.3.0 0.0.0.255 10.2.2.0 0.0.0.255
!
ip access-list extended HQ->Branch2
permit ip 10.1.0.0 0.0.255.255 10.3.3.0 0.0.0.255
permit ip 10.2.2.0 0.0.0.255 10.3.3.0 0.0.0.255
!
crypto map VPN_T 1 ipsec-isakmp
match address HQ->Branch1
set transform-set IPSEC_SA
set peer 1.1.100.6
reverse-route
!
crypto map VPN_T 2 ipsec-isakmp
match address HQ->Branch2
set transform-set IPSEC_SA
set peer 1.1.100.10
reverse-route
!
router ospf 1
redistribute static subnets
!
int fa 0/1
crypto map VPN_T redundancy VPN_failover
Branch1]
crypto isakmp policy 1
authentication pre-share
encryption aes
hash sha
group 2
lifetime 7200
!
crypto isakmp key cisco321 address 1.1.123.4
crypto isakmp keepalive 10
crypto ipsec transform-set IPSEC_SA esp-aes esp-sha-hmac
!
ip access-list extended Branch1->HQ
permit ip 10.2.2.0 0.0.0.255 10.1.0.0 0.0.255.255
permit ip 10.2.2.0 0.0.0.255 10.3.3.0 0.0.0.255
!
crypto map VPN_T 1 ipsec-isakmp
match address Branch1->HQ
set transform-set IPSEC_SA
set peer 1.1.123.4
!
int fa 0/0
crypto map VPN_T
Branch2]
crypto isakmp policy 1
authentication pre-share
encryption aes
hash sha
group 2
lifetime 7200
!
crypto isakmp key ccie321 address 1.1.123.4
crypto isakmp keepalive 10
crypto ipsec transform-set IPSEC_SA esp-aes esp-sha-hmac
!
ip access-list extended Branch2->HQ
permit ip 10.3.3.0 0.0.0.255 10.1.0.0 0.0.255.255
permit ip 10.3.3.0 0.0.0.255 10.2.2.0 0.0.0.255
!
crypto map VPN_T 1 ipsec-isakmp
match address Branch2->HQ
set transform-set IPSEC_SA
set peer 1.1.123.4
!
int fa 0/0
crypto map VPN_T
댓글남기기