Immersion In Data

AWS

[AWS] 관리형 VPN 설정 방법

sungjunminn 2022. 7. 11. 13:58

구성 순서

1. IAM 사용자 생성

2. AWS 명령줄 인터페이스(AWS CLI) 프로그램 설치

3. aws configure 설정

4. 인증서 생성 (EasyRSA)

5. AWS Certificate Manager에 인증서 가져오기

6. Client VPN 엔드포인트 생성

7. 클라이언트 구성 다운로드

8. 클라이언트 구성 파일 편집

9. Open VPN GUI 다운로드

10. Open VPN GUI 어플에서 클라이언트 구성 파일 열기(연결)

 

1. IAM 사용자 생성

 

AWS Certificate Manager(ACM)에 인증서를 업로드 할 수 있는 사용자를 생성하거나 기존 사용자에게 권한을 부여한다. 

AWSCertificateManagerFullAccess

 

2. AWS 명령줄 인터페이스(AWS CLI) 프로그램 설치

 

https://aws.amazon.com/ko/cli/  으로 접속해서 해당하는 운영체제로 다운을 받는다. 

 

AWS 명령줄 인터페이스

aws-shell은 명령줄 셸 프로그램으로서, AWS 명령줄 인터페이스를 사용하는 새로운 사용자와 고급 사용자 모두에게 도움이 되는 편의 기능 및 생산성 기능을 제공합니다. 주요 기능은 다음과 같습

aws.amazon.com

 

 

 

설치가 완료가 되면 cmd창에서 aws configure 명령어를 입력하여 아래와 같이 자격증명을 설정해준다. 

 

 

4. 인증서 생성(EasyRSA)

 

https://github.com/OpenVPN/easy-rsa/releases으로 접속해서 해당하는 운영체제로 다운을 받는다. 

 

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

 

 

cmd창을 열고 EasyRSA-Start.bat이 있는 디렉토리로 이동한다.

다음과 같은 명령어로 인증서를 생성한다. 

 

EasyRSA 3 셸 열기 : .\EasyRSA-Start.bat
새 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

 

위와 같이 따라왔다면 EasyRSA 폴더 안에 인증서와 키가 발급되었다. 

 

서버 인증서 및 키 그리고 클라이어트 인증서 및 키를 사용자 지정 폴더에 복사한 후 해당 폴더로 이동한다.
인증서 및 키를 복사하기 전에 mkdir 명령을 사용하여 사용자 지정 폴더 생성한다.
사용자 지정 폴더에 인증서 및 키를 복사한다. 

 

mkdir C:\custom
copy pki\ca.crt C:\custom
copy pki\issued\server.crt C:\custom
copy pki\private\server.key C:\custom
copy pki\issued\client1.domain.tld.crt C:\custom
copy pki\private\client1.domain.tld.key C:\custom
cd C:\custom

 

custom이라는 폴더에 내가 필요한 서버 인증서와 키, 클라이언트 인증서와 키 그리고 체인이 옮겨졌다. 

 

5. AWS Certificate Manager(ACM)에 인증서 가져오기

 

 

AWS Certificate Manager(ACM)에 접속해 인증서 가져오기를 클릭한다. 

 

 

 

인증서 세부 정보를 입력한다.

위에서 만든 custom폴더 안의 인증서와 키를 메모장으로 열어서 해당 위치에 넣어준다.

- 서버 인증서 본문                                                              - 클라이언트 인증서 본문

인증서 본문 : server.crt                                                        인증서 본문 : client1.domain.tld.crt
인증서 프라이빗 키 : server.key                                           인증서 프라이빗 키 : client1.domain.tld.key
인증서 체인 : ca.crt                                                              인증서 체인 : ca.crt 

 

 

 

서버 인증서와 클라이언트 인증서가 AWS Certificate Manager로 가져왔다. 

 

 

6. Client VPN 엔드포인트 생성

 

 

AWS VPC안의 Client VPN 엔드포인트로 들어가 클라이언트 VPN 엔드포인트 생성 버튼을 눌러준다.

클라이언트 IPv4 CIDR :  VPC CIDR 대역과 겹치지 않은 대역을 사용한다. 

서버 인증서 ARN : 위에서 등록한 서버 인증서를 선택한다. 

클라이언트 인증서 ARN : 위에서 등록한 클라이언트 인증서를 선택한다. 

 

 

 

분할 터널(split-tunnel) 활성화 체크 버튼을 눌러준다.

(분할 터널을 활성화해주지 않으면, 모든 트래픽이 AWS로 향하게 되어 인터넷 통신 트래픽이 모두 AWS 네트워크를 거치게 된다.)

 

 

 

방금 생성한 엔드포인트를 VPC 서브넷과 연결해야 한다.

하위 탭의 "연결"을 클릭한다. 

클라이언트 VPN 엔드포인트를 연결할 서브넷을 등록해준다. 

 

 

 

 

서브넷과 연결하였다면,

"권한부여" 탭으로 들어가 모든 트래픽(0.0.0.0/0)에 대한 접속을 허용할 수 있도록 수신승인 설정한다. 

 

 

7. 클라이언트 구성 다운로드

 

 

클라이언트 구성을 다운로드 해준다. 

 

 

8. 클라이언트 구성 파일 편집

다운로드한 클라이언트 구성 파일을 메모장으로 열어서 클라이언트 인증서와 클라이언트 키를 순서대로 넣어준다. 

client

dev tun

proto udp

...

...

...

verb 3

<ca>

------BEGIN CERTIFICATE------

...

...

...

------END CERTIFICATE------

</ca>

 

<cert>

------BEGIN CERTIFICATE------

...

...                                                                     ← 클라이언트 인증서 client1.domain.tld.crt

...

------END CERTIFICATE------

</cert>

 

<key>

------BEGIN CERTIFICATE------

...

...                                                                     ← 클라이언트 키 client1.domain.tld.key

...

------END CERTIFICATE------

</key>

 

reneg-sec 0 

 

 

9. Open VPN GUI 다운로드

 

https://openvpn.net/community-downloads/으로 접속해서 해당하는 운영체제로 다운을 받는다.

 

Community Downloads | OpenVPN

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

openvpn.net

 

 

10. Open VPN GUI 어플에서 클라이언트 구성 파일 열기(연결)

 

 

 

Open VPN GUI 어플을 열고 위에서 편집한 클라이언트 구성파일을 파일 불러오기를 통해 열어준다. 

그러고 연결을 하면..

 

 

 

연결이 잘 된 것을 확인할 수 있다.