Amazon Web Services 한국 블로그

Amazon VPC에서 OpenVPN Access Server 설정

AWS에서 더 많은 워크로드를 처리하게 되면 인터넷에 공개적으로 서비스를 노출하지 않고 프라이빗 콘텐츠를 제공해야 하는 경우가 발생합니다. 예를 들어 직원용 내부 포털은 일반적으로 프라이빗 네트워크를 통해서만 액세스할 수 있어야 합니다. 이에 대한 일반적인 솔루션은 사용자가 회사 리소스가 호스팅되는 프라이빗 네트워크에 모바일 디바이스 또는 노트북을 직접 연결할 수 있도록 하는 원격 액세스 가상 사설 네트워크(VPN)를 설정하는 것입니다.

OpenVPN Technologies, Inc.의 OpenVPN Access Server는 오픈 소스 OpenVPN 서버 기능과 추가 기능을 통합하여 완전한 기능을 갖춘 SSL VPN 소프트웨어 솔루션입니다. 이러한 기능에는 기존의 PKI(공개 키 인프라) 없이 사용자 인증서와 키를 손쉽게 발급할 수 있는 간소화된 관리 웹 인터페이스와 자동화된 인증서 관리 기능이 포함됩니다.

이 블로그 게시물에서는 AWS Marketplace에서 OpenVPN Access Server 리스팅을 찾아 Amazon VPC를 사용하여 배포하는 방법과 몇 가지 기본 기능을 테스트하는 방법을 살펴봅니다.

AWS Marketplace에서 OpenVPN Access Server 시작하기

먼저 AWS 관리 콘솔에 로그인하고 AWS Marketplace 콘솔을 엽니다. 그런 다음 검색 필드에 OpenVPN Access Server를 입력하고 요구 사항에 가장 적합한 제품을 선택합니다.

OpenVPN Access Server(커넥티드 디바이스 5개) 버전의 경우 소프트웨어 요금을 지불할 필요 없이 이 솔루션을 시험 사용할 수 있는 7일 무료 평가판이 포함되어 있습니다. 무료 평가판이 만료되면 AWS 청구서에서 유료 시간당 구독으로 자동 전환됩니다. 다른 옵션은 시간 또는 연간 구독으로 결제하는 디바이스를 비롯하여 더 많은 수의 디바이스를 지원합니다. 기존 보유 라이선스를 사용(BYOL)하도록 선택할 수도 있습니다.

제품을 시작하려면 다음과 같이 합니다.

  1. 선호하는 소프트웨어 제품 및 서비스를 선택한 다음 [구독 진행(Continue to Subscribe)]을 선택합니다.
  2. 이용 약관을 검토하고 [약관 동의(Accept Terms)]를 선택합니다. 요청이 처리되면 이메일과 제품 페이지에 표시되는 배너로 알려드립니다.
  3. 소프트웨어 구성을 시작할 준비가 되었으므로 [구성 진행(Continue to Configuration)]을 선택합니다.
  4. [리전(Region)]에서 OpenVPN 어플라이언스를 시작할 위치를 선택한 다음 [시작 진행(Continue to Launch)]을 선택합니다.
  5. 다음 페이지의 [EC2 인스턴스 유형(EC2 Instance Type)]에서 원하는 인스턴스를 선택합니다. 여기서는 t2.small 인스턴스를 테스트에 사용했습니다.
  6. [VPC 설정(VPC Settings)]에서 인스턴스를 배포할 VPC를 선택합니다.
  7. [서브넷 설정(Subnet Settings)]에서 사용 가능한 서브넷 중 하나를 선택합니다. VPN 클라이언트가 인터넷을 통해 어플라이언스에 연결할 수 있도록 공개적으로 액세스할 수 있는 서브넷을 선택해야 합니다.
  8. [보안 그룹 설정(Security Group Settings)] 섹션에서 다음을 수행합니다.
  • [판매자 설정에 따라 새로 생성(Create New Based on Seller Settings)]을 선택합니다.
  • 생성하려는 보안 그룹의 이름을 선택하고 설명을 입력합니다.
  • 열려 있는 포트와 프로토콜의 목록을 검토합니다.
  • [저장(Save)]을 선택합니다.
  1. 키 페어 설정(Key Pair Settings)에서 기존 키 페어를 선택하거나 [EC2에서 키 페어 생성(Create a key pair in EC2)]을 선택하여 키 페어를 생성합니다. 이 키는 EC2 인스턴스에 설치되므로, SSH 액세스가 가능해집니다.
  2. [시작(Launch)] 선택합니다.

보안 그룹 설정을 보면, OpenVPN Access Server를 사용하려면 TCP/22 (SSH), TCP/943, TCP/443(웹 인터페이스에 대한 HTTPS 액세스) 및 UDP/1194 (OpenVPN 프로토콜용 IANA 예약 포트)에 대한 인바운드 트래픽을 허용해야 한다는 것을 알 수 있습니다. 다음 이미지는 이 구성을 보여줍니다.

OpenVPN 보안 그룹 설정 구성 AWS Marketplace

왜 포트 TCP/943을 열어야 하는지 궁금하실 수도 있을 겁니다. 퍼블릭 네트워크의 방화벽이 HTTP(TCP/80) 및 HTTPS(TCP/443) 같은 가장 일반적인 포트를 제외한 모든 포트를 차단하는 경우가 있습니다. 이러한 상황에서 OpenVPN이 잘 작동하도록 하기 위해 기본적으로 OpenVPN 데몬은 TCP 포트 443에서 수신 대기하며, 들어오는 웹 브라우저 요청을 포트 TCP 943의 웹 서비스로 전달할 수 있습니다(웹 서버와 OpenVPN 서버가 동일한 포트에서 수신 대기할 수 없기 때문에).

포트 공유라는 OpenVPN 프로토콜 기능 덕분에 포트 443으로 들어오는 모든 HTTPS 연결은 포트 943에서 실행되는 실제 웹 서비스에 자동으로 다시 매핑됩니다. 동시에 포트 443에서 수신 대기하는 OpenVPN 데몬은 들어오는 터널 연결을 처리할 수 있으므로 기존 방화벽 제한을 우회할 수 있습니다.

탄력적 IP 주소 연결

EC2 인스턴스가 실행되고 나면 현재 인스턴스에 장애가 발생할 경우 동일한 주소를 다른 인스턴스에 다시 매핑할 수 있도록 탄력적 IP 주소를 연결하는 것이 가장 좋습니다. 이 퍼블릭 IP는 관리자 웹 인터페이스의 액세스 포인트, 그리고 VPN 클라이언트의 터널 설정 엔드포인트 역할을 합니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서에서 탄력적 IP 주소 섹션을 참조하세요.

이 구성에서는 VPN 어플라이언스가 단일 장애 지점을 나타내므로 프로덕션 환경에서는 이 테스트 구현이 안정적이지 않을 수 있습니다. 따라서 테스트를 완료한 후에는, 두 번째 인스턴스를 구입하고 두 인스턴스를 모두 고가용성(HA) 구성으로 구성하는 등의 보다 강력한 옵션을 고려할 수 있습니다. HA 배포 구현에 대한 자세한 내용은 OpenVPN 웹 사이트에서 OpenVPN Access Server용 액티브/액티브 고가용성 설정을 참조하십시오.

설치 마법사 완료

OpenVPN EC2 인스턴스가 실행 중일 때 SSH를 사용하여 인스턴스에 연결할 수 있습니다. 이렇게 하려면 SSH를 사용하여 Linux 인스턴스에 연결의 절차를 따릅니다.

Access Server에 처음 로그인하면 설치 마법사가 실행되므로, 관리자 웹 인터페이스에 액세스하기 전에 초기화 파라미터를 구성할 수 있습니다. 이 마법사에서는 일부 네트워크 세부 정보를 지정하고 관리자를 정의합니다.

기본 openvpn 사용자를 관리자로 사용하도록 선택할 경우 관리자 웹 인터페이스에 액세스하기 전에 암호를 설정해야 합니다. 암호를 설정하려면 다음 shell 명령을 사용합니다.

sudo passwd openvpn

VPN 구성 옵션 설정

관리 웹 인터페이스에 액세스하려면 할당한 퍼블릭 탄력적 IP 주소를 가리키고 설정한 관리자로 로그인합니다. 관리자 웹 인터페이스 URL의 형식은 https://xxx.xxx.xxx.xxx/admin과 같습니다.

로그인하면 다음 그림과 같이 [상태 개요(Status Overview)] 페이지가 열립니다. 여기에서 VPN 어플라이언스의 상태 개요를 확인할 수 있습니다. 이 포털을 사용하여 VPN을 튜닝하고, 네트워크 설정을 변경하고, 사용자 권한 및 인증을 관리할 수도 있습니다.

OpenVPN 상태 개요 AWS Marketplace

기본적으로 VPN 어플라이언스는 L3 NAT(네트워크 주소 변환) 모드로 작동하도록 구성되어 있습니다. 이 모드에서 VPN 클라이언트는 다음 그림과 같이 기본 172.27.224.0/20 CIDR(Classless Inter-Domain Routing) 풀에서 IP가 동적으로 할당되는 프라이빗 서브넷에 할당됩니다.

OpenVPN 설정 AWS Marketplace

이 IP 풀을 변경할 수 있지만 새 풀은 네트워크에서 사용되는 다른 서브넷과 달라야 합니다. 또한 [사용자 권한(User Permissions)] 페이지에 지정된 특정 사용자에게 고정 IP 주소를 할당하는 데 사용되는 다른 프라이빗 서브넷을 구성할 수도 있습니다.

다음 그림에서 보듯이 네트워크 라우팅의 경우 기본 옵션은 [예, NAT를 사용합니다.(Yes, using NAT)]입니다.

예, NAT를 사용합니다.

이 구성을 사용하면 VPN 클라이언트 IP 주소가 VPC 내부의 리소스에 제공되기 전에 변환됩니다. 즉, 클라이언트의 원래 IP 주소가 VPC IP 주소 공간에 속한 IP 주소에 다시 매핑됩니다. 또는 다음 중 하나를 선택할 수 있습니다.

  • VPC 서브넷에 대한 액세스를 완전히 거부합니다. 이렇게 하려면 [아니요(No)]를 선택합니다.
  • 자체 IP 주소를 사용하여 클라이언트를 표시합니다. 이렇게 하려면 [예. 라우팅을 사용합니다.(Yes, using Routing)]를 선택합니다. 이 옵션을 사용하면 클라이언트의 IP 주소가 변환되지 않습니다. 이 옵션은 VPC 내에서 실행 중인 리소스에서 VPN 클라이언트에 연결할 수 있어야 하는 경우에 유용할 수 있습니다.

[예. 라우팅을 사용합니다.(Yes, using Routing)] 옵션을 사용할 경우 다음을 수행해야 합니다.

  • OpenVPN Access Server 인스턴스에서 원본/대상 확인을 비활성화하여 어플라이언스가 클라이언트 안팎으로 트래픽을 전달하도록 허용합니다.
  • OpenVPN Access Server 보안 그룹을 적절하게 설정하여 VPC의 다른 IP로부터의 트래픽이 클라이언트에 도달하도록 허용합니다.
  • 프라이빗 서브넷의 라우팅 테이블을 업데이트하여 내부 VPC 라우터가 Access Server를 통해 연결 가능한 서브넷(예: VPN 클라이언트 서브넷)을 인식하도록 합니다.

배포 테스트

배포를 테스트하기 위해 Access Server가 실행되는 VPC에 속한 다른 프라이빗 서브넷에서 실행되는 EC2 인스턴스에 웹 서버를 준비했습니다. 어플라이언스 사용자 풀에 새 VPN 사용자를 구성한 다음 OpenVPN 호환 클라이언트 앱을 사용하여 테스트 웹 페이지에 연결할 수 있도록 VPN 연결을 설정했습니다. 사용 가능한 연결 옵션은 OpenVPN 웹 사이트에서 Commercial VPN Server Resources를 참조하십시오. 이 페이지의 [연결(Connecting)] 보기에서는 Windows, MacOS, Linux, Android 및 Apple iOS용 클라이언트에 대한 세부 정보와 설치 및 사용에 대한 단계별 지침이 제공됩니다.

다음 절차에서는 어플라이언스를 구성하고 OpenVPN Connect 클라이언트를 사용하여 VPN 연결을 설정하는 방법에 대해 설명합니다.

  1. 관리 웹 인터페이스의 탐색 창에서 [사용자 권한(User Permissions)]을 선택합니다. 다음 그림의 john과 같이 기본 인증 옵션을 사용하여 새 사용자를 구성합니다.

OpenVPN Connect 클라이언트를 사용하여 VPN 연결 설정

기본적으로 사용자에게는 프라이빗 172.27.224.0/20 CIDR 풀의 IP가 동적으로 할당되고, NAT를 사용하여 VPC에 속한 서브넷으로 트래픽을 전달합니다.

  1. Access Server의 퍼블릭 IP를 가리켜 웹 인터페이스 로그인 페이지를 엽니다. 다음 그림은 로그인 페이지를 보여줍니다.

퍼블릭 IP Access Server 로그인 페이지

  1. 사용자의 연결 프로파일을 다운로드합니다. 아직 다운로드하지 않았다면 OpenVPN 클라이언트를 다운로드할 수도 있습니다.
  2. 클라이언트 앱에서 사용자 프로파일을 가져옵니다.

이제 VPN 연결을 설정하여 프라이빗 리소스에 연결할 수 있습니다. 다음 그림은 테스트 웹 사이트의 OpenVPN 터널을 통해 프라이빗 서브넷에 액세스했을 때의 성공 화면을 보여줍니다.

성공 화면 OpenVPN

이 블로그 게시물에서는 AWS Marketplace에서 제공되는 OpenVPN 리스팅 중 하나를 사용하여 Amazon VPC 내에 OpenVPN Access Server를 설정하는 방법을 살펴보았습니다. 이 솔루션을 사용하면 가정 및 공공 장소를 포함한 원격 위치에서도 사용자에게 애플리케이션에 대한 보안 프라이빗 액세스 권한을 부여할 수 있습니다. AWS에서 OpenVPN 기술을 사용하는 방법에 대한 자세한 내용은 OpenVPN 웹 사이트에서 Leverage the Power of Amazon Cloud를 참조하세요.

– Antonio Duma

이 글은 AWS Marketplace 블로그의 Setting up OpenVPN Access Server in Amazon VPC 한국어 번역본입니다.