Wisdom’s Cloud

[AWS] 1. Client VPN을 사용하여 Private Subnet EC2에 접속 (OpenVPN 활용) 본문

AWS/VPN

[AWS] 1. Client VPN을 사용하여 Private Subnet EC2에 접속 (OpenVPN 활용)

지혜로운지혜쓰 2022. 2. 21. 16:31

Client VPN

  • Client VPN은 AWS 리소스 및 온프레미스 네트워크의 리소스에 안전하게 액세스할 수 있도록 하는 관리형 클라이언트 기반 VPN 서비스 입니다.
  • Client VPN에서는 OpenVPN 기반 VPN 클라이언트를 사용하여 어떤 위치에서든 리소스에 액세스할 수 있습니다.

 

 

실습

구성 아키텍처

 

OpenVPN 설치 및 EasyRSA 다운로드

https://openvpn.net/community-downloads/

페이지에 접속하여 사용 중인 Windows 버전에 해당하는 Windows Installer를 다운로드한 후, 설치 프로그램을 실행합니다. 

 

Community Downloads | OpenVPN

Visit this page to download the latest version of the open source VPN, OpenVPN.

openvpn.net

https://github.com/OpenVPN/easy-rsa/releases

페이지에 접속하여 사용 중인 Windows 버전에 해당하는 ZIP 파일을 다운로드 합니다. 그리고 ZIP 파일의 압축을 풀고 EasyRSA-3.0.8 폴더를 \Program Files\OpenVPN 폴더에 복사합니다.

 

Releases · OpenVPN/easy-rsa

easy-rsa - Simple shell based CA utility. Contribute to OpenVPN/easy-rsa development by creating an account on GitHub.

github.com

 

서버 및 클라이언트 인증서와 키 생성

더보기

관리자 권한으로 명령 프롬프트를 열고, C:\Program Files\OpenVPN\EasyRSA-3.0.8 디렉터리로 이동한 후, EasyRSA 3 셸을 엽니다.

C:\Program Files\OpenVPN\EasyRSA-3.0.8> EasyRSA-Start

 

새 PKI 환경을 시작합니다.

# ./easyrsa init-pki

 

새 CA(인증 기관)를 빌드합니다.

# ./easyrsa build-ca nopass

 

서버 인증서 및 키를 생성합니다.

# ./easyrsa build-server-full server nopass

 

클라이언트 인증서 및 키를 생성합니다.

# ./easyrsa build-client-full client1.domain.tld nopass

 

EasyRSA 3 셸을 종료합니다.

# exit

 

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

C:\Program Files\OpenVPN\EasyRSA-3.0.8> mkdir C:\certificate

C:\Program Files\OpenVPN\EasyRSA-3.0.8> copy pki\ca.crt C:\certificate

C:\Program Files\OpenVPN\EasyRSA-3.0.8> copy pki\issued\server.crt C:\certificate

C:\Program Files\OpenVPN\EasyRSA-3.0.8> copy pki\private\server.key C:\certificate

C:\Program Files\OpenVPN\EasyRSA-3.0.8> copy pki\issued\client1.domain.tld.crt C:\certificate

C:\Program Files\OpenVPN\EasyRSA-3.0.8> copy pki\private\client1.domain.tld.key C:\certificate

C:\Program Files\OpenVPN\EasyRSA-3.0.8> cd C:\certificate

 

서버 인증서 및 키와 클라이언트 인증서 및 키를 ACM에 업로드합니다. (Client VPN 엔드포인트를 생성하려는 리전과 동일한 리전에 업로드해야 합니다.)

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

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

 

ACM 콘솔에서 업로드된 서버와 클라이언트의 인증서를 확인할 수 있으며, 필요한 VPC와 서브넷을 생성해둡니다.

 

Client VPN 엔드포인트 생성 및 구성

VPC 콘솔에서 클라이언트 VPN 엔드포인트를 선택한 후, 클라이언트 VPN 엔드포인트 생성을 클릭합니다.
적당한 이름과 클라이언트 IP 주소를 할당할 IP 주소 범위를 지정합니다. 할당할 주소 블록 크기가 /22 이상이어야 하고, /12 보다 크면 안됩니다. 그리고 상호 인증 사용을 클릭하여 생성한 서버와 클라이언트의 인증서를 선택합니다.
DNS 서버 IP 주소를 입력하고, VPN 터널을 통해 전송한 트래픽을 제한하기 위해 분할 터널을 활성화합니다. 그리고 연결될 VPC와 default 보안 그룹을 선택한 후, 클라이언트 VPN 엔드포인트 생성을 클릭합니다.

더보기

AWS에서는 내부 DNS가 존재하는데 끝자리 2로 예약되어 있습니다. 따라서 DNS 서버 IP 주소는 연결될 VPC의 끝자리를 2로 하여 설정하면 됩니다.

 

생성한 엔드포인트의 연결 부분에서 연결을 클릭합니다.
연결할 VPC와 서브넷을 선택한 후, 연결을 클릭합니다.
다음으로 권한 부여 부분에서 수신 승인을 클릭합니다.
액세스 권한을 부여할 클라이언트 IP 주소 범위를 입력한 후, 권한 부여 규칙 추가를 클릭합니다.
엔드포인트 상태가 사용 가능으로 바뀐 것을 확인할 수 있고, 클라이언트 구성 다운로드를 클릭하여 다운로드 합니다.
다운로드한 파일에서 위와 같이 복제한 클라이언트 인증서와 키의 위치를 추가합니다.

더보기

다운로드한 구성 파일에는 VPN 연결을 설정하는 데 필요한 Client VPN 엔드포인트 및 인증서 정보가 포함되어 있습니다. Client VPN 엔드포인트에 연결하여 VPN 연결을 설정해야 하는 클라이언트에 이 파일을 제공해야 하기 때문에 클라이언트 인증서와 키의 위치를 추가해야 합니다.

 

확인

OpenVPN GUI를 실행하여 Import에서 파일 불러오기를 클릭한 후, 변경한 구성 파일을 불러옵니다.
불러온 구성 파일에서 연결을 클릭합니다.
위와 같이 접속 중인 상태를 확인할 수 있습니다.
접속에 성공하였고, 11.0.0.130으로 할당되었습니다.
인스턴스를 생성해서 프라이빗 주소로 접속해보면 성공하는 것을 확인할 수 있습니다.