2026-04-14 VPN AWS 네트워크 보안 원격 접속

AWS ClientVPN 설정 가이드

ACM 인증서 발급부터 Client VPN 엔드포인트 생성, 권한 규칙 설정, 클라이언트 연결까지 — AWS ClientVPN 구성 과정을 단계별로 정리했습니다.

AWS ClientVPN이란?

AWS ClientVPN은 원격지 사용자가 AWS VPC 내부 리소스 및 인터넷에 안전하게 접근할 수 있도록 하는 관리형 OpenVPN 기반 서비스입니다. 온프레미스 VPN 서버를 별도로 구축·관리할 필요 없이, AWS ClientVPN을 세팅함으로써 AWS가 가용성과 확장성을 책임지는 엔드포인트를 제공합니다.

AWS ClientVPN 아키텍처 — 클라이언트가 VPN 엔드포인트를 통해 VPC 서브넷과 인터넷 게이트웨이에 연결

그림 1. Client VPN 엔드포인트 → VPC 서브넷 → Internet Gateway 경유 인터넷 접근 시나리오

위 구성에서 트래픽 흐름은 다음과 같습니다.

원격 클라이언트 Client VPN 엔드포인트 VPC 서브넷
(네트워크 인터페이스)
Internet Gateway 인터넷

주요 특징

  • 프로토콜: OpenVPN (UDP 443 또는 TCP 443)
  • 인증 방식: 상호 인증서(Mutual TLS), Active Directory, SAML 2.0 중 선택
  • 요금: 엔드포인트 시간당 $0.10 + 클라이언트 연결 시간당 $0.05
  • 스플릿 터널: 선택적으로 VPC 트래픽만 터널링 (나머지는 로컬 인터넷 사용)

사전 준비

설정 전 아래 항목을 준비합니다.

  • AWS VPC 및 퍼블릭 서브넷 (IGW 연결 포함)
  • OpenVPN 호환 클라이언트 (AWS VPN Client 권장)
  • Easy-RSA 또는 OpenSSL (인증서 생성용)
1

서버 및 클라이언트 인증서 생성 후 ACM 등록

AWS ClientVPN의 상호 인증(Mutual TLS)에는 서버 인증서클라이언트 인증서가 모두 필요합니다. Easy-RSA를 사용해 자체 서명 CA를 만들고 두 인증서를 발급합니다.

# Easy-RSA 3.x 설치 (macOS)
brew install easy-rsa

# PKI 초기화
cd /usr/local/etc/easy-rsa
./easyrsa init-pki
./easyrsa build-ca nopass        # CA 생성 (Common Name: vpn-ca)

# 서버 인증서 생성
./easyrsa build-server-full server nopass

# 클라이언트 인증서 생성
./easyrsa build-client-full client1.domain.tld nopass

생성된 인증서를 AWS Certificate Manager(ACM)에 등록합니다.

# 서버 인증서 ACM 등록
aws acm import-certificate \
  --certificate fileb://pki/issued/server.crt \
  --private-key fileb://pki/private/server.key \
  --certificate-chain fileb://pki/ca.crt \
  --region ap-northeast-2

# 클라이언트 인증서 ACM 등록 (상호 인증 사용 시)
aws acm import-certificate \
  --certificate fileb://pki/issued/client1.domain.tld.crt \
  --private-key fileb://pki/private/client1.domain.tld.key \
  --certificate-chain fileb://pki/ca.crt \
  --region ap-northeast-2
Active Directory 또는 SAML 인증을 사용하는 경우: 클라이언트 인증서는 필요하지 않습니다. 서버 인증서만 ACM에 등록하면 됩니다.
2

Client VPN 엔드포인트 생성

AWS 콘솔 → VPC → Client VPN Endpoints → Create Client VPN Endpoint으로 이동합니다.

항목설정값 / 설명
Name 식별하기 쉬운 이름 (예: jccloud-client-vpn)
Client IPv4 CIDR 클라이언트에 할당할 IP 대역 (예: 10.8.0.0/22). VPC·서브넷과 겹치지 않아야 합니다.
Server certificate ARN Step 1에서 ACM에 등록한 서버 인증서 ARN 선택
Authentication type Mutual authentication (인증서) / Active Directory / Federated authentication(SAML) 중 선택
Client certificate ARN Mutual 인증 선택 시 클라이언트 인증서 ARN 지정
Connection logging 활성화 권장. CloudWatch Logs 그룹·스트림 지정
Split tunnel Enable: VPC 대역 트래픽만 터널링 (10.8.0.0/22만 VPN을 사용하게 되므로 가격과 보안적으로 권장)
Disable: 모든 트래픽을 터널로 전송
VPN port UDP 443 (기본, 성능 우수) 또는 TCP 443 (방화벽 우회 필요 시)
DNS servers VPC DNS 사용 시 VPC CIDR의 +2 주소 (예: 172.31.0.2)
Client CIDR 주의: /22 이상(최소 /12 ~ /22) 대역을 지정해야 합니다. VPC CIDR, 연결된 서브넷 CIDR과 반드시 겹치지 않도록 설계하세요.
3

대상 네트워크 연결 (Target Network Association)

엔드포인트 생성 후 Target network associations 탭에서 Associate target network를 클릭해 VPC와 서브넷을 연결합니다. 이 과정에서 AWS가 해당 서브넷에 Client VPN 네트워크 인터페이스를 자동으로 생성합니다.

항목설명
VPC 클라이언트가 접근할 VPC 선택
Subnet Client VPN 네트워크 인터페이스가 생성될 서브넷. 가용성을 위해 여러 AZ 서브넷을 추가할 수 있습니다.

연결이 완료되면 엔드포인트 상태가 Pending-associate에서 Available로 바뀝니다. (보통 수 분 소요)

4

권한 규칙(Authorization Rules) 추가

Client VPN은 기본적으로 모든 접근을 차단합니다. 접근을 허용할 대상 네트워크 대역을 명시적으로 추가해야 합니다. Authorization rules 탭 → Add authorization rule을 클릭합니다.

시나리오Destination networkGrant access to
VPC 전체 접근 172.31.0.0/16 (VPC CIDR) Allow access to all users
특정 서브넷만 접근 172.31.1.0/24 Allow access to all users
인터넷 접근 허용 (Full tunnel) 0.0.0.0/0 Allow access to all users
AD 그룹별 접근 제어 원하는 대역 Allow access to users in a specific access group (AD Group ID 입력)
5

라우트 설정

Route table 탭을 확인합니다. 서브넷 연결 시 VPC CIDR 라우트는 자동 생성됩니다. 인터넷 접근(0.0.0.0/0)이 필요하다면 수동으로 추가합니다.

Route destinationTarget subnet용도
172.31.0.0/16 연결된 서브넷 (자동 생성) VPC 내부 접근
0.0.0.0/0 퍼블릭 서브넷 (IGW 연결된 서브넷) 인터넷 접근 (Full tunnel 시)
스플릿 터널(Split Tunnel) 활성화 시: 0.0.0.0/0 라우트는 필요하지 않습니다. VPC CIDR 범위의 트래픽만 터널링되고 나머지는 클라이언트 로컬 인터넷을 사용합니다. 비용과 성능 모두 유리합니다.
6

Security Group 설정

Client VPN 엔드포인트는 연결 시 지정한 서브넷의 보안 그룹을 적용받습니다. VPN 클라이언트가 접근할 EC2·RDS 등의 보안 그룹 인바운드 규칙에 Client VPN 네트워크 인터페이스의 보안 그룹 또는 클라이언트 CIDR을 소스로 추가해야 합니다.

# 예: EC2 인스턴스 SG에 VPN 클라이언트 CIDR 허용
aws ec2 authorize-security-group-ingress \
  --group-id sg-xxxxxxxxxx \
  --protocol tcp \
  --port 22 \
  --cidr 10.8.0.0/22
7

클라이언트 구성 파일 다운로드 및 수정

엔드포인트 콘솔 → Download client configuration을 클릭해 .ovpn 파일을 받습니다. 상호 인증(Mutual TLS) 사용 시 클라이언트 인증서와 키를 파일에 추가해야 합니다.

# .ovpn 파일 끝에 아래 내용 추가

<cert>
-----BEGIN CERTIFICATE-----
(client1.domain.tld.crt 내용 붙여넣기)
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
(client1.domain.tld.key 내용 붙여넣기)
-----END PRIVATE KEY-----
</key>
AWS VPN Client(공식 앱) 사용 시: 인증서를 직접 붙여넣지 않아도 앱 내에서 인증서 파일을 별도로 지정할 수 있습니다. 보안 측면에서 더 권장됩니다.
8

클라이언트에서 VPN 연결

AWS VPN Client 앱을 열고 File → Manage Profiles → Add Profile에서 수정한 .ovpn 파일을 불러옵니다. Connect 버튼을 클릭하면 연결이 시작됩니다.

연결 성공 후 아래 명령으로 VPC 내부 접근을 확인합니다.

# 연결된 VPN IP 확인
ifconfig | grep 10.8

# VPC 내 EC2 프라이빗 IP로 핑 테스트
ping 172.31.x.x

# 또는 SSH 접속 확인
ssh -i keypair.pem ec2-user@172.31.x.x

비용 계산 예시

항목단가10명 / 오전 8시~오후 5시 (176시간/월)
엔드포인트 유지 비용 $0.10/시간 $0.10 × 176 = $17.60
클라이언트 연결 비용 $0.05/시간·클라이언트 $0.05 × 176 × 10명 = $88.00
월 합계 $105.60 (약 ₩145,000)

※ 서울 리전 기준. 데이터 전송 비용은 별도.

자주 발생하는 문제

증상원인 및 해결
연결 후 VPC 리소스에 접근 불가 Authorization Rule 누락. 대상 CIDR 확인 후 규칙 추가.
연결 후 인터넷 접근 불가 (Full tunnel) 0.0.0.0/0 라우트가 퍼블릭 서브넷(IGW 연결)을 가리키는지 확인.
TLS 핸드셰이크 실패 클라이언트 .ovpn 파일에 인증서·키가 올바르게 삽입됐는지 확인.
엔드포인트 상태가 Pending 서브넷 연결이 완료될 때까지 수 분 대기. 서브넷 CIDR 중복 여부 재확인.
EC2 SSH 연결 거부 EC2 Security Group 인바운드에 VPN 클라이언트 CIDR(10.8.0.0/22) 허용 추가.

마무리

AWS ClientVPN은 설정 단계가 다소 많지만, 한 번 구성만으로 별도 VPN 서버 유지 관리 없이 다수 사용자의 안전한 원격 접속 환경을 제공합니다. 또한 Active Directory, MFA, 또는 SAML 연동을 추가하면 사용자별 접근 통제와 MFA 강제를 구현할 수 있어 제로 트러스트(Zero Trust) 원격 접근 환경을 구현할 수 있습니다.

스플릿 터널을 활성화하면 VPN 트래픽이 VPC 통신에만 사용되어 비용과 지연 시간을 모두 줄일 수 있습니다. 인터넷 트래픽까지 제어가 필요한 규제 환경이 아니라면 스플릿 터널을 기본으로 설정하는 것을 권장합니다.
← 블로그 목록으로