안녕하세요. 오늘은 클라우드 보안과 편의성을 동시에 잡을 수 있는 AWS Client VPN에 대해 깊이 있게 다뤄보려 합니다.
보통 사내망(Private Subnet)에 있는 DB나 관리자 페이지에 접속하려면 어떻게 하시나요?
방법 1: 퍼블릭 서브넷에 **Bastion Host(점프 서버)**를 두고 SSH 터널링을 한다. (보안 키 관리 귀찮음)
방법 2: 사무실 IP만 보안 그룹(SG)에서 열어준다. (재택근무나 카페에서는 접속 불가)
이런 불편함을 해결해 주는 것이 바로 AWS Client VPN입니다.
1. AWS Client VPN이란?
AWS Client VPN은 PC(노트북)나 모바일 기기에서 OpenVPN 기반의 클라이언트를 사용하여, 어디서든 안전하게 AWS VPC 내부 네트워크나 온프레미스 네트워크에 접속할 수 있게 해주는 완전 관리형 VPN 서비스입니다.
쉽게 말해, **"내 컴퓨터에 전용 랜선을 꽂아 AWS VPC 안으로 쑥 집어넣는 것"**과 같습니다.
왜 Site-to-Site VPN과 다른가요?
Site-to-Site VPN: '건물 대 건물' 연결입니다. 본사 라우터와 AWS를 연결하여, 사무실에 있는 모든 직원이 별도 로그인 없이 AWS에 접속합니다.
Client VPN: '사용자 대 건물' 연결입니다. 직원 개개인의 노트북에 VPN 프로그램을 깔고 접속합니다. 이동 중이거나 재택근무 환경에 최적화되어 있습니다.
Client VPN의 3가지 핵심 장점
1. Bastion Free: 점프 서버를 거치지 않고, 내 PC에서 ping 10.0.1.5 처럼 사설 IP로 직접 통신합니다.
2. 강력한 보안: 인증서 기반(Mutual Auth) 또는 Active Directory(AD) 인증을 통해 철저하게 검증된 사용자만 들어올 수 있습니다.
3. 고가용성: AWS가 관리하므로 VPN 서버가 죽을 걱정을 할 필요가 없습니다. 자동으로 확장되고 관리됩니다.
2. 구축 가이드: 단계별 따라 하기
이제 이론은 충분하니, 실제로 구축해 보겠습니다. AWS Client VPN은 [인증서 생성] → [ACM 등록] → [VPN 생성] → [클라이언트 설정] 순서로 진행됩니다 .
Step 1. 인증서 발급 (EasyRSA)
Client VPN은 서버와 클라이언트가 서로를 신뢰하는 상호 인증(Mutual Authentication) 방식을 주로 사용합니다. 이를 위해 사설 인증서를 만듭니다.
EasyRSA 설치: GitHub에서 easy-rsa를 다운로드하고 초기화합니다 .
서버 인증서 생성: VPN 서버용 인증서를 만듭니다.
클라이언트 인증서 생성: 접속할 사용자용 인증서를 만듭니다.
Step 2. AWS ACM에 인증서 등록
방금 만든 인증서 파일들을 AWS Certificate Manager(ACM)에 업로드해야 AWS가 이를 인식합니다 .
서버 인증서 등록: server.crt, server.key, ca.crt 파일을 입력하여 등록합니다.
클라이언트 인증서 등록: client1.crt, client1.key, ca.crt 파일을 입력하여 등록합니다.
Step 3. Client VPN Endpoint 생성
이제 본격적으로 VPN 접속 지점을 만듭니다.
VPC 콘솔 > Client VPN 엔드포인트 > 생성 클릭.
Client IPv4 CIDR: VPN에 접속한 클라이언트들에게 할당할 IP 대역입니다(예: 10.0.0.0/22).
주의: 연결하려는 VPC의 CIDR과 겹치면 절대 안 됩니다! .
인증 정보: **'상호 인증 사용'**을 체크하고, Step 2에서 등록한 서버/클라이언트 인증서를 각각 선택합니다 .
기타 설정: 프로토콜은 TCP, 포트는 443을 권장합니다(방화벽 우회 용이) .
Step 4. 네트워크 연결 및 권한 부여 (필수)
Endpoint만 만들면 껍데기뿐입니다. 실제 VPC와 연결해 줘야 합니다.
대상 네트워크 연결: 생성된 VPN을 선택하고 [대상 네트워크 연결] 탭에서 VPC와 서브넷을 지정합니다.
승인 규칙(Authorization Rule) 추가:
누구에게? **모든 사용자(0.0.0.0/0)**에게 (혹은 특정 그룹에게)
어디로? 대상 VPC의 CIDR 대역으로 가는 트래픽을 허용한다고 설정합니다.
Step 5. 클라이언트 설정 파일(.ovpn) 수정
이 부분이 가장 중요하고 실수하기 쉬운 부분입니다.
콘솔에서 **[클라이언트 구성 다운로드]**를 눌러 .ovpn 파일을 받습니다.
이 파일을 메모장으로 열고, 인증서 키 값을 직접 넣어줘야 합니다.
<ca> ... </ca>: 기본적으로 들어있습니다.
<cert> ... </cert>: 아까 만든 클라이언트 인증서(.crt) 내용을 복사해 넣습니다 .
<key> ... </key>: 아까 만든 클라이언트 프라이빗 키(.key) 내용을 복사해 넣습니다 .
DNS 호스트 이름 앞에 랜덤 문자열을 붙이는 설정(remote-random-hostname)이 있다면 그대로 둡니다.
Step 6. 접속 및 테스트
이제 모든 준비가 끝났습니다.
AWS VPN Client 프로그램을 설치합니다.
수정한 .ovpn 파일을 프로필로 추가하고 **[연결]**을 누릅니다 .
"연결됨" 상태가 되면, 터미널을 열고 프라이빗 서브넷에 있는 서버 IP로 접속해 봅니다.
Bastion 없이 바로 접속되는 것을 확인할 수 있습니다 .
???? 보안 그룹 팁 접속이 안 된다면 타겟 서버(EC2)의 보안 그룹(SG)을 확인하세요. Client VPN의 보안 그룹이나 VPN 클라이언트 CIDR 대역에서의 인바운드 접근을 허용해야 합니다 .
마치며
AWS Client VPN을 구축하면 개발자와 운영자는 더 이상 "VPN 접속하려고 회사에 가는" 수고를 하지 않아도 됩니다.
보안: 인증서로 철저히 검증된 기기만 접속.
편의: Bastion 없이 내 PC에서 바로 DB 툴(DBeaver 등) 연결 가능.
초기 설정이 조금 번거로울 수 있지만, 한 번 구축해 두면 업무 효율이 200% 올라가는 강력한 도구이니 꼭 도입해 보시길 추천합니다!

.jpg)