Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

VPN에 대하여

Virtual Private Network로 흔히 가상 사설망이라고 부르기도 한다.

내부 네트워크 통신환경을 구축하는 가장 큰 이유 중 하나는 해당 내부 네트워크의 정보를 바깥에 드러내지 않고자 하는데 있다. 이런 내부 네트워크 망의 구성은 기본적으로 단순하다. 인터넷과 연결된 게이트 웨이를 두고, 외부와 단절된 네트워크 망을 구성하면 된다. 이들 내부 네트워크 망은 인터넷과 단절됨으로 외부로 부터 안전하게 데이터를 주고 받을 수 있다. 인터넷으로 나가기를 원한다면, 게이트 웨이를 통과해야 한다.

그러나 인터넷의 사용이 보편화 되고, 기업의 네트워크가 물리적으로 멀리 떨어진 곳에 위치하면, 이들 네트워크를 다시 묶어주는 작업이 필요하게 된다. 물론 공공망인 인터넷을 그대로 이용하는 방법도 있겠지만 인터넷은 기본적으로 보안 서비스를 제공하지 않으므로, 데이터를 보호해야될 필요성이 있는 기업에서는 이를 사용할 수가 없다. 가장 쉬운 방법은 전용회선을 설치하는 것인데, 비용이 지나치게 많이들 수 있다는 단점이 있다.

VPN은 인터넷을 공유해서 비용을 낮추면서 전용회선과 동등한 수준의 서비스를 제공하기 위한 솔류션을 제공한다. VPN을 이용하면, 지역적으로 멀리 떨어진 망을 마치 하나의 사설 망인 것처럼 구성할 수 있다. 논리적인 회선이므로 하드웨어가 필요하지 않고, 이동성이 편하다는 장점이 있다.

이 회사는 3개의 네트워크 영역으로 구성되어 있다. 주요 정보를 가지고 있는 주 네트워크외에, 해외 지사의 정보를 가지고 있는 지역 네트워크 A와 B이다. 이들은 물리적으로 멀리 떨어져 있으며, 인터넷으로 연결될 수 있다. 그러나 인터넷을 통할 경우 회사의 주요 정보가 그대로 노출된다는 문제점이 있다. VPN을 이용하면, 인터넷을 가로지르는 (가상의 논리적)사설망을 구축해서 안전하게 정보를 교환할 수 있다.

또한 출장등으로 외부에 있을 때도 VPN을 이용해서 안전하게 데이터 통신을 할 수 있다. 이러한 VPN의 이동성은 특히 모바일 기기가 대중화 되면서 점점 중요한 기능이 될 것으로 생각된다.

구축 방법

  1. IPSec을 이용한 방법
  2. SSL VPN을 이용한 방법
  3. PPTP를 이용한 방법

Reverse-Proxy

Proxy도 VPN의 한 형태로 본다. HTTPS를 이용해서 터널을 만들어서 웹 서비스에 접근한다. 클라이언트의 설치 없이 웹 브라우저만 있으면 접근할 수 있으므로, 이동성이 좋다. Proxy에 대한 내용은 Proxy 서버 구축을 참고한다.

Port-forwarding

Port-forwarding로 자원에 접근한다. 포트를 선택할 수 있음으로, 다양한 자원에 접근할 수 있다. 역시 웹 브라우저를 이용하지만 접근하는 자원에 따른 클라이언트가 필요하다. 예컨데 FTP자원에 접근 하겠다면, Java applet혹은 ActiveX등의 Agent가 필요하다. 자원에 접근하기 위해서는 브라우저에서 Agent를 다운 받아야 한다는 불편함이 있으므로 (Reverse-Proxy방식에 비해서 이동성이 떨어지긴 하지만)높은 수준의 이동성을 제공한다.

개발측에서 각 서비스에 맞는 Java Applet를 개발해야 한다는 부담이 있다.

TUN/TAP 가상 디바이스 드라이버를 이용한 SSL VPN

SSL VPN은 브라우저를 이요한 웹서비스 접근, 즉 Proxy형태로 단일 포트 서비스를 중계하기 위한 목적으로 만들어 졌다. 이렇게 해서 얻을 수 있는 최대 장점은 클라이언트 측에서 별다른 프로그램의 설치 없이 웹 브라우저만 가지고 내부 정보에 접근할 수 있다는 점이다. 이는 특히 이동성이 중요해진 요즘에 중요한 장점이다.

컴퓨터 네트워크(:12)에서 TUNTAP는 커널에서 제공하는 가상 네트워크 드라이버 다. 일반적인 네트워크 드라이버가 이더넷 카드등을 직접 제어하는 것과는 달리, 이들 가상 네트워크 드라이버는 소프트웨어적으로 구현된 가상의 네트워크 장치를 제어한다.

TAP은 OSI(:12)의 2 계층 (데이터 링크 계층)을 시뮬레이션 한다. TUN은 3 계층 (네트워크 계층)을 시뮬레이션한다.

가상 디바이스 드라이버를 사용한 VPN은 완전한 서브 네트워크 환경을 구성해 준다는 장점이 있다. 이는 모든 애플리케이션을 사용할 수 있음을 의미한다. 하지만 별도의 클라이언트 프로그램이 준비되어야 한다는 단점이 있다. 특히 루트 권한을 가지고 있어야 하는데, 운영체제에 따라서 이동성에 제약을 가져다 줄 수 있다.

TUN/TAP는 VPN 솔류션에서 사용한다. 가상 네트워크 드라이버를 만들고, 이 드라이버를 이용해서 가상 사설망을 구한다. 이 문서에서 다루는 OpenVPN이 TUN/TAP을 사용한다.

공개 소프트웨어로 OpenSSH도 TUN/TAP을 사용한다. 언제 시간이 되면 OpenSSH를 이용한 VPN 환경 구축도 소개하도록 하겠다.

OpenSSH와 OpenVPN은 TUN/TAP 디바이스를 이용해서 터널을 만들고, 그 터널을 SSL 암호화 한다.

가상화 솔류션

가상 네트워크 드라이버는가상화 솔류션에서 guest 운영체제와 host 운영체제를 연결하기 위한 내부 통신용 네트워크 인터페이스를 만들기 위해서도 사용한다. 다음은 리눅스 host 운영체제에 생성된 가상 네트워크 드라이버를 보여주고 있다. 가상화 솔류션으로 virtualbox(:12)를 이용했다.
# ifconfig
...
vboxnet0  Link encap:Ethernet  HWaddr 0a:00:27:00:00:00  
          inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:206 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:46525 (46.5 KB)
...

VPN Over SSL

VPN은 일반 공중망(주로 인터넷)을 이용해서 데이터 통신을 한다. 때문에 보안 문제가 발생할 수 있다. 이 문제는 SSL을 이용하면 해결 될 것이다.

때문에 많은 VPN 제품들이 SSL을 기반으로 안전한 데이터 통신을 보장한다. 이하 설명은 VPN Over SSL을 기준으로 한다.

VPN 구성 방식

Host To GatewayGatewy To gateway방식으로 나뉜다.
  1. Host to Gateway
접속자 단위로 VPN 터널을 생성한다. 사용자는 VPN 클라이언트를 설치해서 VPN Gateway에 접근요청을 한다. VPN Gateway에서 인증이 끝나면, 클라이언트와 VPN Gateway 사이에 SSL 터널이 만들어져서 통신을 하게 된다. 클라이언트의 데이터를 받은 VPN Gateway는 데이터를 복호화 하고, 내부 서버로 전달한다. 즉 내부 네트워크에서는 일반 데이터 통신을 사용한다. 내부 통신망에서 굳이 암호화된 데이터 통신을 할 필요는 없기 때문이다.
  1. Gateway to Gateway
사이트 단위로 VPN 터널을 생성한다. 예컨데, 본사와 지사끼리 VPN 터널을 만들고자 할때 이 방법을 사용할 수 있다.

OpenVPN으로 VPN 환경 구축하기

기타 참고 문서

IPsec과 SSL VPN 비교