VPN을 운영하는 데는 다양한 프로토콜이 있다. 이중 PPTP(Point-to-Point Tunneling Protocol)는 TCP/IP 상에서 안전한 통신을 지원하고 멀티프로토콜 통신을 추가한 새로운 개념의 프로토콜이다. 또한 PPTP를 이용한 통신으로, 리눅스와 윈도우 간의 VPN을 쉽게 구축할 수 있다. 이 글을 통해 리눅스와 윈도우를 이용해 서버 대 서버, 서버 대 클라이언트를 구성하는 방법을 알아본다.
정낙수, 정민, 김규현_국민대학교 OSSRC 소속 개발자
VPN 서비스를 이용하는 가장 쉬운 방법은 VPN 장비를 도입하는 것이지만, 그 비용은 접속 노드 2∼3개를 증설할 수 있는 것과 맞먹기 때문에 중소기업은 부담스러운 것이 현실이다. 하지만 중소기업에서 비용 부담없이 VPN을 구축할 수 있는 방법이 있다. 구형 PC와 윈도우, 리눅스를 이용해 VPN을 구축하는 것으로, 여러 가지 장점이 있다.
윈도우, 리눅스가 모두 소프트웨어이기 때문에 기능 업그레이드를 손쉽게 할 수 있고 다양한 프로토콜의 지원도 가능해진다. 물론 저렴하다는 점 역시 매우 큰 장점이다. 클라이언트 용도로 사용하기 힘든 PC에 윈도우 2000 서버를 이용해 VPN 서버를 구성할 수도 있고, 윈도우 2000 라이센스 비용에 일반 PC 비용 대신 폐기 처분될 PC에 리눅스를 설치해 VPN 서버로 만들 수 있으니 말이다.
또한 세션이 무제한이라는 장점이 있다. 소규모 네트워크를 위한 VPN 장비의 경우 최대 세션과 터널 수에도 제한이 있다. 때문에 일정 수의 사용자 이상은 접속할 수 없다는 단점이 있지만, 공개 소프트웨어나 기본 내장 VPN을 이용한 경우에는 최대 세션 수 제한이 없기 때문에 사용자 수를 확장해 사용할 수 있다. 그러나 소프트웨어로 구현된 장비가 늘 그렇듯이 하드웨어 장비에 비해 속도가 느리다는 단점이 있다. 물론 소프트웨어의 경우 해당 소프트웨어에 대한 정확한 이해가 필요하다는 것도 단점일 수 있다. 어떤 점에 더 비중을 둘 것인가는 네트워크 관리자의 몫이고 가장 적합한 솔루션을 선택하는 것 역시 네트워크 관리자의 몫이므로 여기에서 무엇이 더 좋은가에 대한 의제는 무의미할 것이다. 다양한 VPN 프로토콜을 통한 안전한 통신 확보
구축에 앞서 VPN의 개념을 파악해보자. VPN은 공중 통신망 기반 시설을 터널링 프로토콜과 보안 절차 등을 사용해 개별 기업의 목적에 맞게 구성한 사설 네트워크다. 자체망이나 전용회선의 개념을 인터넷과 같은 공중망을 통해 이용하는 것이다. VPN은 모든 회사들이 저마다 개별적으로 회선을 임대하는 것보다, 공중망을 공유함으로써 비용은 낮추면서도 전용회선과 거의 동등한 서비스를 사용하기 위해 활용된다. 또한 인증, 암호화, 복호화, 라우팅 등의 방식을 통해 데이터를 안전하게 처리할 수 있도록 지원한다.
VPN은 공중망을 통해 데이터를 송신하기 전에 데이터를 암호화하고, 수신측에서 복호화한다. 암호화는 데이터뿐 아니라, 부가적인 차원의 보안으로서 송수신지의 네트워크 어드레스도 포함한다. 또한 최근 모바일 업무가 증가함에 따라 모바일을 사용하는 직원들의 안전한 사내 네트워크 사용을 위해서도 VPN은 사용된다.
(그림 1) VPN을 이용한 LAN to LAN 구성
(그림 1)과 같이 3개의 사업장이 있을 때 각각의 사업장은 다른 사업장에 접근하기 위해서는 모든 장비에 공인 IP를 부여해야 한다. 이는 보안상 문제점을 지니며 IP를 확보하는 것 역시 부가 비용이 든다. 하지만 각각의 사업장을 VPN을 통해 터널을 생성하면 3개의 사업장이 하나의 네트워크 세그먼트를 구성하며 이를 통해 내부 IP를 사용하더라도 다른 사업장의 장비에 접근할 수 있다.
둘째, 리모트 액세스(Remote Access) VPN은 재택 근무나 모바일 근무와 같은 단독 사용자 환경에 적합한 구성이다. (그림 2)와 같이 외부의 사용자가 인터넷을 이용해 사업장의 VPN을 통해 터널을 생성하게 되면 모바일 사용자가 회사내의 사용자 혹은 자원에 로컬 네트워크에 속해있는 것과 같이 사업장내의 다른 자원에 접근할 수 있다.
(그림 2) VPN을 이용한 리모트 액세스 구성
VPN 솔루션은 마이크로소프트, 3Com 그리고 몇몇 다른 회사들이 PPTP라는 표준 프로토콜을 제안했으며, 시스코는 L2F, L2TP 등의 VPN 솔루션을 제공하고 있다. 최근의 노텔, 넷스크린, 시스코 장비들은 이같은 프로토콜을 모두 지원하고 있으므로, 서로 다른 장비를 이용하더라도 VPN 연결은 매우 손쉽게 구성할 수 있다. 기본적인 구성은 LAN to LAN VPN으로, 지사와 같은 멀티 유저 환경에서 프로토콜을 이용해 가상 네트워크를 만든다. VPN을 구성하는 프로토콜은 다음과 같다.
·IPSec 프로토콜
IPSec(Internet Protocol Security)은 보안을 위해 계획된 프로토콜로, RFC-2411에 정의돼 있다. 이전의 보안 기법들은 보안이 통신 모델의 애플리케이션 계층에 삽입됐다면 IPSec은 본질적으로 데이터 송신자의 인증을 허용하는 인증 헤더 AH와, 송신자의 인증과 데이터 암호화를 함께 지원하는 ESP(Encapsulating Security Payload), 키교환을 위한 IKE 등의 보안 서비스를 제공한다. AH는 MD5 또는 HMAC 알고리즘을 사용해 인증을 처리한다. ESP는 DES, RC5 등의 암호화 알고리즘을 사용해 데이터를 암호화한다. IKE 키관리 절차에서는 ISAKMP/Oakley 프로토콜과 같은 별개의 키 프로토콜들이 선택할 수 있다. 이같은 각 서비스에 관련된 명확한 정보는 IP 패킷 헤더의 뒤를 잇는, 헤더 속의 패킷에 삽입된다. AH가 무결성을 보장한다면 ESP는 보안성을 보장한다. 그리고 IPSec으로 전송시 전송 모드(Transport Mode)와 터널 모드(Tunnel Mode)를 지원한다. ·L2TP 프로토콜
L2TP(Layer 2 Tunneling Protocol)는 L2F 프로토콜을 향상시키기 위해 마이크로소프트의 PPTP와 시스코사의 L2F(Layer 2 Forwarding) 프로토콜이 결합돼 IETF가 산업 표준으로 제정한 터널링 프로토콜이다. 현재 L2TP v3는 L2TP를 확장해 일부 새로운 서비스 모델을 포함시켰다. 또한 PP만이 아닌 터널링 대안의 계층 2PDU에 대한 지원도 제공된다. LT2P는 IP, IPX, NetBEUI 트랙픽을 암호화 한 다음, IP 헤더로 캡슐화해 전송한다. PPP에서 제공되는 데이터 암호화 기법을 사용할 수도 있고 IPSec에 의해 제공되는 더 강력한 데이터 암호화 기법을 사용할 수 있다. 이때는 L2TP/IPSec라고 한다. L2TP와 IPSec의 결합 형태에서 연결은 DES(Data Encryption Standard) 알고리즘을 사용하는데, 이 알고리즘은 DES에 대해 하나의 56비트 키를, 3DES에 대해 세 개의 56비트 키를 사용한다. L2TP/IPSec 연결은 두 가지 수준의 인증을 요구한다. IPSec SA(보안 연결)를 작성해 L2TP 캡슐화 데이터를 보호하기 위해 L2TP/IPSec 클라이언트는 인증서나 미리 공유된 키를 사용해 컴퓨터 수준의 인증을 수행한다. IPSec SA가 성공적으로 작성되면 연결의 L2TP 부분에서 PPTP와 동일한 사용자 수준의 인증을 수행한다. ·PPTP 프로토콜
PPTP(Point-to-Point Tunneling Protocol)는 PPP의 확장으로 개발된 PPTP에서는 인터넷을 통한 새로운 수준의 강화된 보안과 멀티프로토콜 통신이 추가됐다. 인터넷 프로토콜인 TCP/IP를 그대로 이용하면서도 외부인은 접근할 수 없는 별도의 VPN을 운용할 수 있는 프로토콜이다. 특히 PPTP 지원하는 VPN을 통한 데이터 전송은 새로운 EAP(Extensible Authentication Protocol)를 사용하기 때문에 단일 LAN 내의 회사 사이트에서 데이터를 전송하는 것만큼이나 안전성을 보장한다. VPN 서버는 모든 보안 검사와 유효성 검사를 수행하고 데이터를 암호화해 보안되지 않는 네트워크를 통해 가상 터널을 생성해서 보다 안전하게 전송할 수 있다. 또한 개인 LAN to LAN 네트워크에 PPTP를 사용할 수도 있다. PPTP에서는 전화 접속 연결이 필요하지 않다. 그러나 컴퓨터와 서버가 IP로 연결돼 있어야 한다. IP LAN에 직접 연결돼 있으면서 서버와 접속할 수 있으면 LAN을 통한 PPTP 터널을 설정할 수 있다. 그러나 인터넷을 통해 터널을 만드는 중이고 일반적으로 ISP와의 전화 접속 연결을 통해 인터넷에 액세스하는 경우 터널을 설정하기 전에 전화 접속으로 인터넷에 연결해야 한다. 리눅스에서는 PPTPD라는 서버 데몬과 PPTP라는 클라이언트를 통해 VPN을 구성할 수 있다. 물론 PPTP 프로토콜을 통한 VPN을 구성함에 있어서 리눅스와 윈도우간의 서버 대 서버, 서버 대 클라이언트간의 구성이 가능하다. ·MPLS VPN
MPLS VPN은 고객별로 터널링하는 것으로 MPLS 코어를 운영하는 서비스 업체들에 의해 구현된다. 기업을 위한 주요 애플리케이션은 자사의 WAN 코어를 서비스 업체에 부분적이거나 모든 부분을 아웃소싱한다. MPLS의 특성을 이용해 서비스 업체들은 에지 라우터의 고객 어드레스 공간을 분리한 다음, 고객으로부터 트래픽이 서비스 업체의 코어에 들어오면 VPN 라벨이 IP 패킷에 첨부돼 터널 라벨 스위치 경로를 통해 전환된다. ·AToM
AToM(Any Transport over MPLS)은 서비스 업체 MPLS 네트워크에서 사용하기 위한 L2TP v3와 유사하게 동작한다. 2계층 프레임을 MPLS 네트워크로 전송하며, 목적지 상대방에 전송하기 전 고객 트래픽에 라벨을 붙인다는 점에서 MPLS VPN과 비슷하다. 하지만 확장된 라벨 전송 프로토콜 세션을 사용해 독특한 가상 회선이나 유사 회선 라벨과 협상, 다양한 2계층의 고객 트래픽을 규명한다는 점에서 차이가 있다. 서비스 업체 네트워크가 고객으로부터 패킷을 받게 되면, 패킷에 라벨을 붙이고 터널 LSP(Label Switched Path)를 사용해 변환, 목적지 에지 라우터에 보낸다. 수신하는 에지 라우터는 라벨을 벗기고 패킷을 순수한 2계층 PDU 형태로 고객 사이트에 포워딩한다. 이와 같은 대표적인 프로토콜 이외에도 AMTP(Ascend Tunnel Management Protocol), VTP(Virtual Tunneling Protocol), IP in IP 등의 방법이 있으나 실제로 IPSec, PPTP, L2TP가 가장 많이 사용되고 구현이 쉽다.
리눅스를 이용한 VPN 서버 구성 솔루션
윈도우와 함께 활용할 리눅스 VPN 프로그램을 살펴보자. FreeSWAN(www.freeswan.org)은 리눅스에서 IPSec 프로토콜을 이용해 서버를 구성할 수 있는 솔루션이다. 리눅스에서 FreeSWAN을 구성하기 위해서는 커널 컴파일로 커널에서 IPSec을 지원하게 만들어야 한다. 또한 서버에서 NAT를 지원해야 하므로 커널에서 NAT 기능을 사용하기 위해 iptables을 설정해야 한다. 커널 컴파일후 FreeSWAN을 설치한다. 이때 커널 패치가 이뤄지고 설치 후에는 /etc/ipsec.secrets와 /etc/ipsec.conf 파일을 통해 설정할 수 있다. 최신 커널인 2.6에는 IPSec 지원이 커널에 삽입돼 커널 패치를 하지 않아도 사용할 수 있다.
Poptop(www.poptop.org)은 리눅스에서 PPTP를 이용해 서버를 구성하는 솔루션이다. 리눅스에서 Poptop을 구성하기 위해서는 커널 컴파일을 통해 커널에서 PPP 방식을 지원할 수 있게 해야 한다. 이는 PPTP가 PPP를 이용해 구현됐기 때문이다. 또한 L2TPD(www.l2tpd.org)는 리눅스에서 L2TP를 이용해 서버를 구성할 수 있는 솔루션이다.
윈도우 2000으로 클라이언트 접속을 위한 서버 구성하기
이제 실제로 VPN을 구축해 보자. 여기에 사용된 장비는 펜티엄Ⅲ 700 CPU이며, 리눅스 커널 버전은 2.4.20 & 2.4.3 그리고 윈도우 2000 서버이다. 실제로 테스트가 이뤄질 때, 펜티엄 클래식 166Mhz에 메모리 32MB와 1GB의 하드디스크에 리눅스를 올려 구축했는데, 매우 원활하게 동작했다.
(그림 3)에서 클라이언트는 사설 IP 대역인 192.X.X.X의 IP에는 접속하지 못하므로 해당 서비스를 이용할 수 없다. 하지만 VPN을 이용할 경우 VPN 서버에 연결 후 서버로부터 가상의 IP인 192.168.1.10을 부여받으면서 서버와 같은 네트워크에 속하게 된다. 때문에 사설 IP로 할당된 전자우편이나 웹서비스를 이용할 수 있다.
(그림 3) LAN to 클라이언트 구성도(www.poptop.org 참조)
우선 클라이언트 접속을 위한 서버를 구성해 보자. 윈도우 2000의 라우팅 및 원격 액세스 서버 설치 마법사를 통해 구축을 시작한다(화면 1). 시작 → 프로그램 → 관리도구 → 라우팅 및 원격 액세스 선택 수동으로 구성한 서버를 선택하고 마친다.
(화면 1) 라우팅 및 원격 액세스 서버 설치 마법사 화면 라우팅 및 원격 액세스 서버가 설치되고 가동되면 서버에 접속한 원격 클라이언트에게 할당할 IP 대역을 설정한다(화면 2). 로컬 등록 정보 화면에서 서버 → 등록정보 → IP 탭을 선택한다.
(화면 2) 로컬 등록 정보 화면 원격 액세스 정책을 설정하기 위해 원격 액세스 정책 탭을 클릭해 새로 만들기를 선택한다(화면 3). 추가 탭을 눌러 다음과 같은 조건을 선택한다. Tunnel-Type 항목에 들어가 PPTP 선택하고, Windows-Group에서 클라이언트 계정에 필요한 그룹을 선택한다. 사용자 계정 그룹은 시작 → 프로그램 → 관리도구 → 컴퓨터관리 → 로컬사용자 및 그룹에서 관리로 들어간다. Day-And-Time-Restictions 항목에서 액세스 가능 시간대를 선택해준다.
(화면 3) 원격 액세스 정책 추가 화면
(화면 4) 원격 액세스 정책 권한 화면
원격 액세스 권한 허용을 선택한다(화면 4). 이로써 윈도우 2000 VPN 서버의 기본 설정을 마친 것이다. |
0