Connecting

AWS Client VPN 구성하기 본문

클라우드

AWS Client VPN 구성하기

팬도라 2023. 2. 20. 16:04
반응형

AWS VPN 클라이언트 사용자가 Amazon Virtual Private Cloud(VPC)에 대한 보안 연결을 설정할 수 있게 해주는 소프트웨어 애플리케이션입니다. 이를 통해 별도의 VPN 장비가 없어도 안전하게 VPC의 리소스에 액세스 할 수 있습니다.

Client VPN의 기능

AWS VPN 클라이언트는 다음과 같은 다양한 이점을 제공합니다.

  • 보안 연결 - OpenVPN 클라이언트를 사용하여 어떤 위치에서든 안전한 TLS 연결을 제공합니다.
  • 관리형 서비스 - AWS 관리형 서비스이므로 서드 파티 원격 액세스 VPN 솔루션을 배포하고 관리하는 운영 부담이 없습니다.
  • 높은 가용성 및 탄력성 - AWS 리소스와 온프레미스 리소스에 연결하는 사용자 수에 따라 자동으로 확장/축소됩니다.
  • 인증 - Active Directory 인증, 연동 인증 및 인증서 기반 인증을 사용한 클라이언트 인증을 지원합니다.
  • 세분화된 제어 - 네트워크 기반 액세스 규칙을 정의하여 사용자 지정 보안 제어를 구현할 수 있습니다. 이러한 규칙은 Active Directory 그룹의 세부 수준에서 구성됩니다. 또한 보안 그룹을 사용하여 액세스 제어를 구현할 수도 있습니다.
  • 간편한 사용 - 단일 VPN 터널을 사용하여 AWS 리소스와 온프레미스 리소스에 액세스 할 수 있습니다.
  • 관리 효율성 - 클라이언트 연결 시도에 대한 세부 정보를 제공하는 연결 로그를 볼 수 있습니다. 또한 활성 클라이언트 연결을 종료하는 기능을 포함하여 활성 클라이언트 연결을 관리할 수도 있습니다.
  • 심층적 통합 - AWS Directory Service 및 Amazon VPC를 포함한 기존 AWS 서비스와 통합됩니다.

Client VPN의 구성 요소

다음은 Client VPN의 핵심 개념입니다.

Client VPN 엔드포인트
Client VPN 엔드포인트는 Client VPN 세션을 활성화하고 관리하기 위해 생성하고 구성하는 리소스입니다. 이는 모든 Client VPN 세션의 종료 지점입니다.

대상 네트워크
대상 네트워크는 Client VPN 엔드포인트와 연결하는 네트워크입니다. VPC의 서브넷이 대상 네트워크입니다. 서브넷을 Client VPN 엔드포인트와 연결하면 VPN 세션을 설정할 수 있습니다. 고가용성을 위해 여러 서브넷을 하나의 Client VPN 엔드포인트와 연결할 수 있습니다. 모든 서브넷이 동일한 VPC에 위치해야 합니다. 각 서브넷이 서로 다른 가용 영역에 속해야 합니다.

라우팅
각 Client VPN 엔드포인트에는 사용 가능한 대상 네트워크 라우팅을 설명하는 라우팅 테이블이 있습니다. 라우팅 테이블의 각 라우팅은 특정 리소스 또는 네트워크에 대한 트래픽 경로를 지정합니다.

권한 부여 규칙
권한 부여 규칙은 네트워크에 액세스할액세스 할 수 있는 사용자를 제한합니다. 지정된 네트워크의 경우 액세스가 허용되는 Active Directory 또는 자격 증명 공급자(IdP) 그룹을 구성합니다. 이 그룹에 속한 사용자만 지정된 네트워크에 액세스 할 수 있습니다. 기본적으로 권한 부여 규칙이 없으므로 클라이언트가 리소스 및 네트워크에 액세스 하도록 허용하는 권한 부여 규칙을 구성해야 합니다.

클라이언트
VPN 세션을 설정하기 위해 Client VPN 엔드포인트에 연결하는 최종 사용자입니다. 최종 사용자는 OpenVPN 클라이언트를 다운로드하고 사용자가 생성한 Client VPN 구성 파일을 사용하여 VPN 세션을 설정해야 합니다.

클라이언트 CIDR 범위
클라이언트 IP 주소를 할당할 IP 주소 범위입니다. Client VPN 엔드포인트에 대한 각 연결에는 클라이언트 CIDR 범위의 고유한 IP 주소가 할당됩니다. 클라이언트 CIDR 범위(예: 10.2.0.0/16)를 선택합니다.

Client VPN 포트
AWS Client VPN은 TCP 및 UDP 모두에 대해 포트 443과 1194를 지원합니다. 기본값은 포트 443입니다.

Client VPN 네트워크 인터페이스
서브넷을 Client VPN 엔드포인트와 연결하면 해당 서브넷에 Client VPN 네트워크 인터페이스가 생성됩니다. Client VPN 엔드포인트에서 VPC로 전송된 트래픽은 Client VPN 네트워크 인터페이스를 통해 전송됩니다. 그런 다음 클라이언트 CIDR 범위의 소스 IP 주소가 Client VPN 네트워크 인터페이스 IP 주소로 변환되는 소스 네트워크 주소 변환(SNAT)이 적용됩니다.

연결 로깅
Client VPN 엔드포인트에 대한 연결 로깅을 활성화하여 연결 이벤트를 로깅할 수 있습니다. 이 정보를 사용하여 포렌식을 실행하거나, Client VPN 엔드포인트가 어떻게 사용되고 있는지 분석하거나, 연결 문제를 디버깅할 수 있습니다.

셀프 서비스 포털
Client VPN은 엔드포인트에 연결하는 데 필요한 설정이 포함된 최신 버전의 AWS VPN Desktop Client 및 최신 버전의 Client VPN 엔드포인트 구성 파일을 최종 사용자가 다운로드할 수 있는 셀프서비스 포털 웹 페이지를 제공합니다. Client VPN 엔드포인트 관리자는 Client VPN 엔드포인트에 대한 셀프서비스 포털을 활성화하거나 비활성화할 수 있습니다. 셀프서비스 포털은 미국 동부(버지니아 북부), 아시아 태평양(도쿄), 유럽(아일랜드) 리전과 AWS GovCloud(미국 서부)의 서비스 스택으로 지원되는 글로벌 서비스입니다.


AWS VPN Client 구성 방법

VPC -> Client VPN 엔드포인트로 접속합니다.

클라이언트 VPN 엔드포인트 생성을 클릭하여 다음과 같이 설정을 진행합니다.

VPN 인증을 위해 본 방법에서는 "상호인증" 방식을 사용하겠습니다. 이때, ACM에 등록된 인증서가 필요합니다.
AWS Certificate Manager(ACM)에서 발급받은 인증서는 사용할 수 없기 때문에 서버 인증서를 ACM에 업로드하고 Client VPN 엔드포인트를 생성할 때 지정해야 합니다.
Self-Signed SSL/TLS Certificate을 사용하기 위해 다음과 같은 방식을 사용하겠습니다.

Windows

EasyRSA 릴리스(EasyRSA releases) 페이지를 열고 사용 중인 Windows 버전에 해당하는 ZIP 파일을 다운로드한 후 압축을 풉니다.
명령 프롬프트를 열고 EasyRSA-3.x 폴더가 추출된 위치로 이동하고, 다음 명령을 실행하여 EasyRSA 3 셸을 엽니다.

C:\Program Files\EasyRSA-3.x> .\EasyRSA-Start.bat

새로운 PKI 환경을 시작하고, CA를 빌드하여 서버 인증서 및 키를 생성하고 이후 클라이언트 인증서 및 키를 생성합니다.

./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full server nopass
./easyrsa build-client-full client1.domain.tld nopass

exit 

서버 인증서 및 키 그리고 클라이어트 인증서 및 키를 사용자 지정 폴더에 복사한 후 해당 폴더로 이동합니다.

C:\Program Files\EasyRSA-3.x> mkdir C:\custom_folder
C:\Program Files\EasyRSA-3.x> copy pki\ca.crt C:\custom_folder
C:\Program Files\EasyRSA-3.x> copy pki\issued\server.crt C:\custom_folder
C:\Program Files\EasyRSA-3.x> copy pki\private\server.key C:\custom_folder
C:\Program Files\EasyRSA-3.x> copy pki\issued\client1.domain.tld.crt C:\custom_folder
C:\Program Files\EasyRSA-3.x> copy pki\private\client1.domain.tld.key C:\custom_folder
C:\Program Files\EasyRSA-3.x> cd C:\custom_folder

Linux / Mac OS

OpenVPN easy-rsa를 사용하여 서버 및 클라이언트 인증서와 키를 생성한 다음, 서버 인증서와 키를 ACM에 업로드합니다. 자세한 내용은 Easy-RSA 3 Quickstart README를 참조하세요.

OpenVPN easy-rsa 리포지토리를 로컬 컴퓨터에 복제하고 easy-rsa/easyrsa3 폴더로 이동합니다.

git clone https://github.com/OpenVPN/easy-rsa.git
cd easy-rsa/easyrsa3

새로운 PKI 환경을 시작하고, CA를 빌드하여 서버 인증서 및 키를 생성하고 이후 클라이언트 인증서 및 키를 생성합니다.

./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full server nopass
./easyrsa build-client-full client1.domain.tld nopass

서버 인증서 및 키 그리고 클라이어트 인증서 및 키를 사용자 지정 폴더에 복사한 후 해당 폴더로 이동합니다.

mkdir ~/custom_folder/
cp pki/ca.crt ~/custom_folder/
cp pki/issued/server.crt ~/custom_folder/
cp pki/private/server.key ~/custom_folder/
cp pki/issued/client1.domain.tld.crt ~/custom_folder
cp pki/private/client1.domain.tld.key ~/custom_folder/
cd ~/custom_folder/

인증서 생성이 완료되었습니다. CLI를 통한 ACM를 업로드 방법은 다음과 같습니다.

aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt

aws acm import-certificate --certificate fileb://client1.domain.tld.crt --private-key fileb://client1.domain.tld.key --certificate-chain fileb://ca.crt

AWS 콘솔에서 업로드 하는 경우 다음 스크린샷을 참고하세요.

AWS Certificate Manager (ACM)에서 인증서 가져오기를 클릭합니다.

인증서 세부 정보에 들어가야 하는 키 값은 다음과 같습니다.

  • 인증서 본문 : .crt
  • 인증서 프라이빗 키 : .key
  • 인증서 체인 : ca.crt

Windows, Mac OS의 경우 터미널에서 간단하게 파일의 내용을 복사할 수 있습니다.

cat .\server.crt | pbcopy 
cat .\server.crt | clip

인증서 세부정보를 입력하고 다음을 클릭합니다.

마지막 검토 화면에서 정상적으로 작성되었는지 검토하고 가져오기를 클릭합니다.

ACM 화면을 다시 들어가 보면 생성한 키가 정상적으로 가져온 것을 확인할 수 있습니다.

클라이언트 VPN 엔드포인트 생성 회면으로 돌아와서 인증 정보를 다음과 같이 입력합니다.

  • 서버 인증서 ARN : server
  • 상호인증 사용
  • 클라이언트 인증서 ARN : client1.domain.tld

전송 프로토콜은 기본값인 UDP를 사용하고, VPN을 통해 접속한 VPC를 선택하고 보안그룹을 선택합니다.
보안 그룹은 0.0.0.0/0으로 추가하고, 필요에 따라 ACL를 구성하겠습니다.

기본 구성이 완료되었습니다.

클라이언트 구성을 다운로드합니다.

.ovpn 확장자를 가진 파일을 다운로드하고, 이후 Client VPN -> 대상 네트워크 연결에서 연결할 VPC와 서브넷을 구성합니다.

)

권한 부여 규칙에 들어가서 모든 대상 네트워크로 부터 접속을 허용할 수 있도록 추가 규칙을 지정합니다.

)

다음으로. ovpn 파일을 메모장, vim을 통해서 열어서 인증서 파일 내용을 업데이트 해야 합니다.

  • 클라이언트 인증서 : client1.domain.tld.crt
  • 클라이언트 키 : client1.domain.tld.key

원하는 텍스트 편집기를 사용하여 Client VPN 엔드포인트 구성 파일을 엽니다. <cert></cert> 및 <key></key> 태그를 파일에 추가합니다. 클라이언트 인증서의 내용과 프라이빗 키의 내용을 다음과 같이 해당 태그 사이에 배치합니다.

<cert>
Contents of client certificate (.crt) file
</cert>

<key>
Contents of private key (.key) file
</key>

AWS Client VPN 연결

Clinet VPN을 연결하기 위한 가장 간단한 방법은 AWS에서 제공하는 에이전트를 사용하는 것입니다. 다운로드를 클릭하여 OS에 맞는 클라이언트 파일을 다운로드하고 설치를 진행합니다.

설치가 완료된 후, 클라이언트 프로그램 -> 연결 -> 프로필 관리 -> 프로필 추가 -> .ovpn 파일을 추가합니다.

모든 과정을 정상적으로 이루어졌다면 연결이 수립되고 AWS VPC <-> PC 간 VPN 터널을 사용할 수 있습니다.

VPC 내부에 EC2 인스턴스에 ICMP를 허용하고 Ping을 날리면 정상적으로 통신되는 부분을 확인할 수 있습니다.

'클라우드' 카테고리의 다른 글

AWS IoT Core 연동하기  (2) 2023.09.11
AWS RDS for Oracle DB 계정간 마이그레이션 방법  (0) 2023.06.19
AWS 기본 튜토리얼  (0) 2021.02.24
AWS, AZURE, GCP 특징  (2) 2021.01.22
퍼블릭 클라우드 기본  (0) 2021.01.18
Comments