1~ 5번 내용이 있어야 하는데... 내용이 삭제가 되었다..
ㅠㅠ
VPN(Virtual Private Network)
- 본사에서 지사로 데이터를 전송 할 때, 전용선으로 전송하면 보안적 측면이나 속도에서 매우 좋지만 회선 사용료가 비싸고 사용하지 않을 때에는 대역폭 낭비가 심하다. 이럴 때 본사와 지사간 VPN으로 연결하면 좋다.
모든 일은, 가성비다.. 효율이고, 비용 절감이 우선순위이다.!!
VPN Connection
1) IPsec
2) site-to-site VPN
3) GRE Tunneling
※실습내용이... 생략 되어졌다.. 저장이 안되어 있나 보다.
[실습내용]
1941 라우터에 license key가 있기 때문에 실습에서 이 라우터를 사용한 것이다.
Main#conf t
Main(config)#license boot module c1900 technology-package securityk9 해주고,
소프트웨어 사용 동의에서 yes를 입력해서 받아들이면 %IOS_LICENSE_IMAGE_APPLICATION-6- LICENSE_LEVEL: Module name = C1900 Next reboot level = securityk9 and License = securityk9 라고 나온다. 임의로 securityk9 키를 설정한 것이다.
Main(config)#end
Main#copy run start 해서 키를 가지고 있는 현재 설정을 시작 설정으로 만들어서 저장하고, 확인에서 엔터해주고,
Main>en
Main#reload 해주고, 확인에서 엔터해서 IOS 이미지를 다시 올리는데 앞에서 copy run start 했기 때문에 재 부팅되어도 설정은 남아있게 된다.
⑥ 이제 해시, 암호화, 로그인 등 IPSec VPN 연결에 필요한 설정을 해준다.
Main>en
Main#conf t 해주고
Main(config)#ip local pool PoolVPN 192.168.2.100 192.168.2.115 해서 외부에서 VPN을 통해서 192.168.2.0 네트워크로 들어오는 호스트들에게 DHCP나 NAT 서버에서처럼 .2.100 ~ .2.115 범위의 IP 주소 중 하나를 각각 할당해주는 설정이다.
Main(config)#aaa new-model 해주는데 aaa는 a(accounting:계정)a(authentication:인증) a(authorization:자격)에 대한 설정을 new-model이라는 이름으로 레이블을 붙이고
Main(config)#aaa authentication login UserVPN local 해서 사용자 정보를 가지고 있는 UserVPN의 username과 password를 local 데이터베이스에 저장하고
Main(config)#aaa authorization network GroupVPN local 해서 그룹 정보를 가지고 있는GroupVPN을 local 데이터베이스에 저장하며
Main(config)#username paul password paul 해서 VPN 로그온 사용자_명과 패스워드를 지정한다.
Main(config)#crypto isakmp policy 100 해서 사전 공유키 암호화 기법을 dynamic-map, ipsec, isakmp, key, map 중에서 isakmp로 지정하고, 정책의 priority(1~10,000)를 100으로 정한다. crypto ? 하고, crypto isakmp ?, crypto isakmp policy ?식으로 해서 여러 옵션을 보면서 설정하면 된다.
Main(config-isakmp)#encryption aes 256 해서 오가는 정보를 3des, aes, des 중에서 AES 암호화 알고리즘에서 256bits 길이로 해준다.
Main(config-isakmp)#hash sha 해서 md5와 sha 중에서 sha로 해시 알고리즘을 지정하고
Main(config-isakmp)#authentication pre-share 해서 인증은 사전 공유키로 하게 해주고
Main(config-isakmp)#group 5 해서 Diffie-Hellman의 암호화 레벨 1, 2, 5 중에서 5로 지정한 뒤
Main(config-isakmp)#lifetime 3600 해서 암호가 지속되는 시간을 1시간으로 해주고
Main(config-isakmp)#exit 해준다.
=>이제 로그온, 암호화, 인증 등에 관한 구성을 마쳤다.
⑦ 계속 VPN 서버에서 VPN 클라이언트를 위한 구성을 해주는데
Main(config)#crypto isakmp client configuration group GroupVPN 해서 클라이언트 연결에 isakmp 암호화를 사용해서 구룹 이름을 GroupVPN으로 해주고
Main(config-isakmp-group)#key ciscovpn로 그룹의 사전 공유키 ciscovpn을 를 만들고
Main(config-isakmp-group)#pool PoolVPN로 공유키가 저장되는 풀 PoolVPN 을 만들고
Main(config-isakmp-group)#exit
⑧ 계속 VPN 서버에서 VPN 클라이언트에서 VPN 서버로 전송되는 패킷에 대한 IPSec 설정을 해주는데
Main(config)#crypto ipsec transform-set SetVPN ? 해서 선택할 수 있는 옵션들을 보고
Main(config)#crypto ipsec transform-set SetVPN esp-aes ? 해서 선택할 수 있는 옵션들을 보고
Main(config)#crypto ipsec transform-set SetVPN esp-aes esp-sha-hmac 해서 이 VPN 연결에 SetVPN 레이블을 붙이고, IPSec를 위한 esp-aes 해시와 esp-sha-hmac 알고리즘을 사용한다고 지정한 뒤
⑨ 계속 VPN 서버에서 클라이언트 연결을 동적으로 수행되도록 Mapping을 설정한다.
Main(config)#crypto dynamic-map DynamicVPN ? 해서 동적 맵의 이름을 DynamicVPN으로 정하고, 옵션을 보면 이 dynamic-map의 엔트리 개수를 지정하게 한다.
Main(config)#crypto dynamic-map DynamicVPN 100 해서 이 Dynamic-map에 들어갈 수 있는 엔트리 갯수를 100개 정도로 제한해두고,
Main(config-crypto-map)#set transform-set SetVPN 해서 전송 세트에 앞에서 설정한 SetVPN과 매핑되게 해주고
Main(config-crypto-map)#reverse-route 해서 역으로도 통신되게 하고
Main(config-crypto-map)#exit
⑩ 계속 VPN 서버 Main에서 StaticMap의 map entires를 설정한다.
Main(config)#crypto map StaticMap client configuration address respond 해서 이름을 StaticMap으로 정해서 클라이언트가 요청하는 IP 주소를 주게 하고
Main(config)#crypto map StaticMap client authentication list UserVPN 해서 클라이언트가 UserVPN에 속하게 하고
Main(config)#crypto map StaticMap isakmp authorization list GroupVPN 해서 클라이언트가 Group VPN에 속하게 하고
Main(config)#crypto map StaticMap 100 ipsec-isakmp dynamic DynamicVPN 해서 사전 공유키가 동적으로 DynamicVPN과 호환되게 해주는데 100은 entries 숫자이다.
Main(config)#int s0/0/0
Main(config-if)#crypto map StaticMap 해서 s0/0/0 인터페이스에서 앞에서 StaticMap의 엔트리 내용으로 사전 공유키 ISAKMP 패킷을 인증하게 하는데 CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON을 보고
Main(config-if)#end
Main#sh run 해서 설정한 내용들을 검토한다.
GRE Tunneling VPN
VPN 연결에서 터널링을 사용한다면 GRE(Generic Routing Encapsulation)를 사용하는데 터널이란 하나의 프로토콜을 다른 방법으로 캡슐화하는 기법으로
VPN에 최적인 기법이다. 예를 들어 IPX 네트워크를 사용하는 본사와 지사라도 인터넷을 사용해서 연결한다면 연결 통신망으로 IP 환경을 사용하는 경우가 대부분일 것이다. 이런 경우 IPX 헤더를 IP 헤더로 캡슐화(덮어씌움)해서 IP 환경에서 IPX 데이터가 전송되게 하는 기법이다. 이럴 때 IPIP(IP In IP) 프로토콜을 사용하기도 하지만 보통은 두 노드의 출발지 주소와 목적지 주소만 지정해 주면 설정이 완성되므로 구성이 간편한 GRE 프로토콜을 사용한다.
터널 인터페이스도 루프백 인터페이스나 서브인터페이스처럼 가상 인터페이스로 여겨지므로 라우터의 메모리에 영향을 끼쳐서 최대 9Kbps의 대역폭을 소비한다. 터널을 하는 이유가 공용망을 사설망처럼 사용하는데 있으므로 access-list가 적용되고 이들을 묶어서 움직이게 하는 route-map 개념이 들어가며 루핑을 막기 위해서 passive-interface가 설정되어져야 한다. 내부 IPX 네트워크는 주소만 변경하면 된다.
하지만 Tunneling VPN은 어느 사전 공유 키 등을 사용하지 않아서 보안이 취약하다고 여기고 요즘은 IPSec의 키 설정 기법을 여기에 추가하기도 한다.
① ISP 라우터 설정이다.
Router#conf t
Router(config)#host ISP
ISP(config)#int s0/0/0
ISP(config-if)#ip addr 10.10.10.1 255.255.255.252
ISP(config-if)#no shut
ISP(config-if)#int s0/0/1
ISP(config-if)#ip addr 20.20.20.1 255.255.255.252
ISP(config-if)#no shut
ISP(config-if)#exit 하고
ISP(config)#ip route 192.168.1.0 255.255.255.0 10.10.10.2와
ISP(config)#ip route 192.168.2.0 255.255.255.0 20.20.20.2 해서 Static routing을 해주고
ISP(config)#end
ISP#
② 이어서 좌측 Branch 라우터이다.
a. 기본설정을 한다.
Router#conf t
Router(config)#host Branch
Branch(config)#int fa0/0
Branch(config-if)#ip addr 192.168.1.1 255.255.255.0
Branch(config-if)#no shut
Branch(config-if)#int s0/0/0
Branch(config-if)#ip addr 10.10.10.2 255.255.255.252
Branch(config-if)#no shut
Branch(config-if)#exit
b. 이어서 가상 GRE tunnel을 생성한다.
Branch(config)#int tunnel 1
Branch(config-if)#ip addr 50.50.50.2 255.255.255.252
Branch(config-if)#tunnel source s0/0/0 해서 물리적인 인터페이스를 통한다고 해주고
Branch(config-if)#tunnel destination 20.20.20.2(물리적_상대방)
Branch(config-if)#no shut
Branch(config-if)#end
Branch#
c. 계속해서 이 tunnel의 경로를 설정한다.
Branch#conf t
Branch(config)#ip route 192.168.2.0 255.255.255.0 50.50.50.1(터널_상대방) 해서 터널의 경로를 Static routing으로 잡아주고
Branch(config)#ip route 0.0.0.0 0.0.0.0 10.10.10.1 해서 물리적 경로를 Default routing을 잡아주고
Branch(config)#end
Branch#
③ 이제 우측 Main 라우터이다.
a. 기본 설정을 한다.
Router#conf t
Router(config)#host Main
Main(config)#int fa0/0
Main(config-if)#ip addr 192.168.2.1 255.255.255.0
Main(config-if)#no shut
Main(config-if)#int s0/0/0
Main(config-if)#ip addr 20.20.20.2 255.255.255.252
Main(config-if)#no shut
Main(config-if)#exit 하고
b. 이제 GRE tunnel을 생성한다.
Main(config)#int tunnel 1
Main(config-if)#ip addr 50.50.50.1 255.255.255.252
Main(config-if)#tunnel source s0/0/0
Main(config-if)#tunnel destination 10.10.10.2(물리적_상대방)
Main(config-if)#no shut
Main(config-if)#end
Main#
c. 그리고 경로를 설정한다.
Main#conf t
Main(config)#ip route 192.168.1.0 255.255.255.0 50.50.50.2(터널_상대방) 해서 터널의 경로를 Static routing으로 잡아주고
Main(config)#ip route 0.0.0.0 0.0.0.0 20.20.20.1 해서 물리적 경로를 Default routing으로 잡아주고
Main(config)#end
Main#