Open VPN 구성 방법 및 활용 사례

가상 사설망(VPN) 이란?

 

‘VPN(Virtual Private Networks)’은 가상 사설망이라는 뜻으로 여러 컴퓨터나 기기들을 직접 물리적인 케이블로 연결하는 것이 불가능하거나 비효율적인 경우에 암호화된 인터넷 회선을 사용해 마치 사설망이 연결되어 있는 것처럼 이용할 수 있는 기술입니다.

이렇게 보면 VPN 서비스를 일반 사용자가 활용할 기회가 많지 않은 것처럼 보일 수 있지만, 강력한 암호화 기술이 탑재된 VPN은 현재 사회적 이슈로 대두되고 있는 개인정보 유출 사고 등을 예방할 수 있는 뛰어난 보안 수단으로 활용 가능합니다. VPN에는 다양한 프로토콜이 있고, 각각의 고유한 특성이 있습니다. 오늘 글에서는 여러 VPN 중 무료로 사용가능한 OpenVPN에 대해 자세히 살펴보겠습니다. 저희 회사에서도 일부 구간에 Open VPN을 구축하여 실제 사용중에 있습니다.

 

오픈VPN 이란 무엇일까요?

 

오픈소스 VPN 프로토콜인 OpenVPN은 그 명칭에서도 알 수 있듯이 개방형 구조로 이루어진 프로그램입니다. OpenVPN은 2000년대 초 처음 나온 이후 계속해서 발전하였고 그 결과 20년이 넘는 긴 역사를 가지고 있으며 다양한 IT 회사에서 실무에 도입하여 사용중입니다.

 

OpenVPN은 윈도우, 맥OS, 리눅스 등 PC용 운영체제부터 안드로이드OS, iOS, 윈도우 모바일 등 스마트폰 및 태블릿용 운영체제, 그리고 오픈BSD, 프리BSD 등 기타 비주류 운영체제에서도 사용 가능한 소프트웨어로, 널리 쓰이는 VPN 프로토콜 중 하나입니다.

 

오픈VPN을 쓸때 장점은 무엇일까요?

 

Open VPN은 여러가지 장점과 이점을 가지고 있습니다. 먼저 OpenVPN은 오픈소스이므로 많은 사람들이 소스코드를 확인하고 피드백을 제공하며 검증하기 때문에 신뢰성이 높습니다. 또한 오픈VPN은 군사 등급인 256비트 암호화를 기본으로 사용하며, 다양한 암호화 알고리즘을 선택할 수 있어 안전성이 뛰어납니다. OpenVPN은 Private Tunnel이라는 전용 VPN 클라이언트를 제공해서 누구나 자유롭게 VPN 설정을 해서 활용할 수 있게 도와줍니다.

 

실제 구축 사례

 

OpenVPN 실제 구축 사례

 

지금부터의 내용은 실제 Open VPN을 제가 근무하고 있는 회사에 실제 도입하여 현재까지도 아무런 문제없이 사용중인 활용 사례에 대해서 설명드리겠습니다. 유료 VPN 솔루션도 시중에 많이 나와있지만 예산 문제나 기타 다른 문제 때문에 도입이 어렵다면 Open VPN을 적극 추천 드립니다.

 

OpenVPN 활용 핵심

 

  • Ubuntu 14.04 + OpenVPN
  • SHA 256 비트 암호화 지원
  • 인증서 기반 통신 (Open SSL)
  • Two-Factor 인증 (Password + OTP)

 

Server 측면 핵심 설정 사항 요약

 

Linux OS iptables 설정 중요

 

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE <- openvpn client IP 할당 범위
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -p tcp –dport 12345 -j ACCEPT <- openvpn service port

 

OpenVPN 환경설정 (암호화 통신 설정등) 셋팅

 

cipher AES-128-CBC
auth SHA256
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-pam.so openvpn

cat /etc/pam.d/openvpn <- 로그인 방법 설정 ID / PW + google OTP 조합

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth required /usr/local/lib/security/pam_google_authenticator.so forward_pass
auth include system-auth
account include system-auth
password include system-auth

 

접속 사용자 Client 핵심 설정

 

Windows, Mac OS 둘다 지원
openvpn download -> https://openvpn.net/index.php/open-source/downloads.html

VPN IP를 DHCP 로 사용할시 PC(client) 에 DHCP 서비스가 시작되 있어야 합니다. (Windows OS 기준)

client program install 이나 더블클릭하여 실행시 “관리자 권한”으로 가급적 실행해야함

config 파일 설정을 서버측에 맞게 잘 설정해야함

 

구성시 기타 중요한 점들 요약

 

Openvpn Flow

 

구글 OTP 는 time base라 서버 시간이 정확한게 좋음 (cron에 등록하여 time server 측으로 동기화를 자주 해줘야함)

상용 vpn 장비도 많이 있으나, 오픈소스로 구축해서 실무에 적용하여 사용하여도 크게 불편함은 없음.
two factor 인증이라 보안적인 측면에서도 큰 문제는 없음.

 

계정 탈취를 위해서는 아래모든 사항을 만족해야하는데요. 즉, 계정 탈취는 매우 힘들다는것이며 보안이 매우 강력하다는 것을 반증합니다.

ID / PASS 를 알아야하고 / 접속 인증서가 있어야하고 / OTP QR 코드가 있어야 하며/ OTP를 알아야 한다는 것입니다.

 

좀더 고도화를 진행하고자 한다면 접속자(사용자)별 role base 기반도 가능합니다. 즉, A팀, B팀에 대해서 별도로 목적지(서버)를 지정해줄수도 있다는 것입니다. 처음부터 이와 같은 그룹화 Role Base 기반으로 구축한다면 향후 관리적인 측면에서도 유용할것입니다.

예: Conn001~Conn010 계정은 AA, CC 그룹 서버군에만 접속이 가능하도록 설정.
Conn020~Conn040 계정은 개발서버로만 접속 가능하도록 설정 구성.

 

ISMS 대상 서비그나 정보보안 규정을 준수해야하는 서비스군에는 접근제어 관리도 매우 중요합니다. OpvnVPN을 구축하고 이와 같은 접근에 대한 상세한 이력도 저장 보관이 가능합니다. 향후 심사 받을때 증적용으로도 사용할수가 있습니다. 예를들어 모든 접속 이력에 대하여 Elastic 으로 저장하여 관리하면 매우 도움이 될것입니다.

 

또한, 향후 문제 발생시에도 접속 이력에 대한 분석용도로도 활용가능합니다. 언제 어디서 몇번 포트로 몇시에 접속을 했다? 등 접속 로그에 대한 상세 분석도 가능합니다.