link
AWS client VPN 이란?
- AWS 및 온프레미스 네트워크의 리소스에 안전하게 액세스 할 수 있는 클라이언트 기반의 완전 관리형 SSL VPN 서비스.
- Client VPN을 사용하면 OpenVPN 기반 VPN 클라이언트를 이용하여 어디서나 내부 리소스에 액세스 할 수 있다.
구성
![](https://velog.velcdn.com/images/dotlike/post/c1e60a9a-e0ea-4297-a966-1ce92568b4e7/image.png)
- 이용자는 OpenVPN Client를 사용하여 재택 근무지, 출장지 등 어떤 위치에서든 클라이언트 VPN 엔드포인트를 통해서 안전하게 연결할 수 있다.
- Client VPN 엔드포인트에 연결시 사용자 기반 인증(Active Directory) 또는 상호 인증(인증서)을 이용 할 수 있다.
- 엔드포인트에 할당된 서브넷의 ENI(Elastic Network Interface)를 통해 VPC에 액세스가 가능.
- 보안 그룹이나 인증 규칙을 사용하여 액세스를 제어.
실습
- cloudformation은 없고 하나씩 수동으로 생성하여 실습진행
VPC
-
VPN 연결 테스트를 위해 Private subnet3개 를 가진 vpc를 생성한다.
-
private subnet중 하나는 ec2 인스턴스를 배포하고, 나머지 두개는 client vpn 엔드포인트를 작성할때 연결 서브넷으로 사용한다.
-
맨날 테라폼으로만 하다가 수동으로 하는데 자동생성이 있네.. 넘편하구만
![](https://velog.velcdn.com/images/dotlike/post/c5eddb0b-64a5-48e7-bc6c-23a46a532e6c/image.png)
EC2
- private subnet a(198.19.1.0/24)
- amazon ami, t2.micro
- sg icmp vpc 대역 오픈
- 생성에서 계속 오류나서 ec2생성 이후 인바운드 편집으로 설
![](https://velog.velcdn.com/images/dotlike/post/17bf0f41-750a-4b0b-a3a2-5014310e93dd/image.png)
CloudWatch
- VPN 연결로그를 저장하기 위해, 로그그룹 및 로그 스트림을 생성한다.
![](https://velog.velcdn.com/images/dotlike/post/b7609534-d439-43c3-b9f3-8c3c77b5cb18/image.png)
![](https://velog.velcdn.com/images/dotlike/post/16691b26-8cd5-4357-8cd9-fc215fd61b31/image.png)
- connection-log로 생성
![](https://velog.velcdn.com/images/dotlike/post/48198af6-cb87-4966-9881-3b035b5c6871/image.png)
인증서 만들기
- OpenVPN easy-rsa를 사용하여 서버 인증서 및 키를 생성하고 이를 ACM 업로드 해본다.
구성
OpenVPN
EasyRSA
- link에서 다운로드 후 C:\Program Files\OpenVPN에 복사함
인증서 및 키
- 위 경로에서 start.bat 실행
![](https://velog.velcdn.com/images/dotlike/post/5d1c6b65-86df-4bf1-93da-8131b113caec/image.png)
./easyrsa init-pki
![](https://velog.velcdn.com/images/dotlike/post/7926c318-f575-4028-91f5-a82b68670c03/image.png)
./easyrsa build-ca nopass
![](https://velog.velcdn.com/images/dotlike/post/7095997e-c18f-4f13-90e6-c5944e69ab36/image.png)
./easyrsa build-server-full server nopass
![](https://velog.velcdn.com/images/dotlike/post/d6a9eaac-11df-4c98-b17a-7af9b7f54409/image.png)
![](https://velog.velcdn.com/images/dotlike/post/80a627b1-8a46-4cec-94e9-692dc1aaa627/image.png)
- 쉘에서 나와서 custom_folder를 생성하고, 아래와 같이 앞서 생성한 키들을 복사한다.
![](https://velog.velcdn.com/images/dotlike/post/d0f202bd-aee8-493c-b753-54f276c87c5a/image.png)
ACM
server인증서
- 본문 : server.crt
- 프라이빗키 : server.key
- 체인 : ca.crt
![](https://velog.velcdn.com/images/dotlike/post/e82fc029-330e-4cd8-bc91-dca0f5a3692e/image.png)
client인증서
- 본문 : client1.domain.tld.crt
- 프라이빗키 : client1.domain.tld.key
- 체인 : ca.crt
![](https://velog.velcdn.com/images/dotlike/post/820b9c41-38da-4ba4-9cfc-be4d8694a980/image.png)
- 2개 인증서 등록 확인
![](https://velog.velcdn.com/images/dotlike/post/34be395c-907c-476c-8555-28440d9c8c46/image.png)
Client VPC 엔드포인트 생성
- 인증서 기반의 상호 인증을 사용하여 클라이언트 VPN을 연결할수 있도록 구성한다.
![](https://velog.velcdn.com/images/dotlike/post/c4a1c3ec-963e-4531-aa91-bdc6452a270c/image.png)
이름 태그 | cvpn-hands-on |
---|
클라이언트 IPv4 CIDR 블록 | 100.64.0.0/22 |
서버 인증서 ARN | Server의 이름이 붙은 ARN을 지정 |
인증 옵션 | 상호 인증 사용 |
클라이언트 인증서 ARN | client1.domain.tld 이름이 붙은 ARN을 지정 |
클라이언트 연결에 대한 세부 정보를 기록하시겠습니까? | 예 |
CloudWatch Logs 로그 그룹 이름 | /aws/clientvpn |
CloudWatch Logs 로그 스트림 이름 | connection-log |
분할 터널 활성화 | 체크함 |
VPC ID | cvpn-hands-on |
기타 항목 | 기본값 |
![](https://velog.velcdn.com/images/dotlike/post/cbcb29b6-4319-4f93-aac2-5f4ee2e43829/image.png)
- 생성한 엔드포인트의 대상 네트워크 연결을 편집
- b,c az의 서브
![](https://velog.velcdn.com/images/dotlike/post/99e32f1d-9f1e-4587-b93b-ff41a984429d/image.png)
- 권한부여 추가
- 엑세스 활성화 네트워크에 VPC cidr 추가
![](https://velog.velcdn.com/images/dotlike/post/9131dfa9-f8db-46b3-a883-e4a7e7021036/image.png)
- 라우팅 테이블에 2개 있는지 확인
- 대상 네트워크(b,c)
![](https://velog.velcdn.com/images/dotlike/post/886071a6-257f-4ef5-8790-d9502890e23e/image.png)
- 상태 활성화 확인후 [클라이언트 구성 다운로드] 클릭
![](https://velog.velcdn.com/images/dotlike/post/504bb3e6-e33b-4263-aeb7-6d72bf35da07/image.png)
VPN 연결
- AWS Client VPN 엔드포인트에 연결하기 위해서 PC에 VPN 클라이언트 도구를 설치하고 이를 통해 실제로 VPN으로 연결한다.
![](https://velog.velcdn.com/images/dotlike/post/d5604197-225f-4a0d-bf8b-510bcd6e7968/image.png)
VPN 클라이언트 설치
- link에서 운영체제 맞는 프로그램 다운로드
![](https://velog.velcdn.com/images/dotlike/post/e60741a8-cbdb-43ce-9344-f2a577e4474b/image.png)
- 파일 불러오기로 ovpn 파일 선택,
- 다음 연결 선택
![](https://velog.velcdn.com/images/dotlike/post/f838b509-daf0-44c9-b79f-803c0a7b6061/image.png)
- 연결됨을 확인
![](https://velog.velcdn.com/images/dotlike/post/7480eb1e-ed99-410f-be2e-2916b5b59d9b/image.png)
- VPN 엔드포인트에서 연결 확인
![](https://velog.velcdn.com/images/dotlike/post/18f7b2cf-7a50-4d6e-879b-a85d422b0f1c/image.png)
ping 확인
- ec2 인스턴스에 ping을 날려 네트워크가 전달되는지 확인.
![](https://velog.velcdn.com/images/dotlike/post/85748826-86e0-4487-8da3-1b8c12e5fb60/image.png)
- netstat으로 확인
![](https://velog.velcdn.com/images/dotlike/post/88a536a6-64b5-45b5-9f74-6cdefa46f7d0/image.png)
로그 확인
- cloudwatch에서 접속 시간, 종료시간, 접속환경 등 확인 가능.
![](https://velog.velcdn.com/images/dotlike/post/7f935524-05eb-4b25-9d4b-40e4139591a4/image.png)