link
AWS client VPN 이란?
- AWS 및 온프레미스 네트워크의 리소스에 안전하게 액세스 할 수 있는 클라이언트 기반의 완전 관리형 SSL VPN 서비스.
- Client VPN을 사용하면 OpenVPN 기반 VPN 클라이언트를 이용하여 어디서나 내부 리소스에 액세스 할 수 있다.
구성
- 이용자는 OpenVPN Client를 사용하여 재택 근무지, 출장지 등 어떤 위치에서든 클라이언트 VPN 엔드포인트를 통해서 안전하게 연결할 수 있다.
- Client VPN 엔드포인트에 연결시 사용자 기반 인증(Active Directory) 또는 상호 인증(인증서)을 이용 할 수 있다.
- 엔드포인트에 할당된 서브넷의 ENI(Elastic Network Interface)를 통해 VPC에 액세스가 가능.
- 보안 그룹이나 인증 규칙을 사용하여 액세스를 제어.
실습
- cloudformation은 없고 하나씩 수동으로 생성하여 실습진행
VPC
-
VPN 연결 테스트를 위해 Private subnet3개 를 가진 vpc를 생성한다.
-
private subnet중 하나는 ec2 인스턴스를 배포하고, 나머지 두개는 client vpn 엔드포인트를 작성할때 연결 서브넷으로 사용한다.
-
맨날 테라폼으로만 하다가 수동으로 하는데 자동생성이 있네.. 넘편하구만
EC2
- private subnet a(198.19.1.0/24)
- amazon ami, t2.micro
- sg icmp vpc 대역 오픈
- 생성에서 계속 오류나서 ec2생성 이후 인바운드 편집으로 설
CloudWatch
- VPN 연결로그를 저장하기 위해, 로그그룹 및 로그 스트림을 생성한다.
- connection-log로 생성
인증서 만들기
- OpenVPN easy-rsa를 사용하여 서버 인증서 및 키를 생성하고 이를 ACM 업로드 해본다.
구성
OpenVPN
EasyRSA
- link에서 다운로드 후 C:\Program Files\OpenVPN에 복사함
인증서 및 키
- 위 경로에서 start.bat 실행
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full server nopass
- 쉘에서 나와서 custom_folder를 생성하고, 아래와 같이 앞서 생성한 키들을 복사한다.
ACM
server인증서
- 본문 : server.crt
- 프라이빗키 : server.key
- 체인 : ca.crt
client인증서
- 본문 : client1.domain.tld.crt
- 프라이빗키 : client1.domain.tld.key
- 체인 : ca.crt
- 2개 인증서 등록 확인
Client VPC 엔드포인트 생성
- 인증서 기반의 상호 인증을 사용하여 클라이언트 VPN을 연결할수 있도록 구성한다.
이름 태그 | 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 |
기타 항목 | 기본값 |
- 생성한 엔드포인트의 대상 네트워크 연결을 편집
- b,c az의 서브
- 권한부여 추가
- 엑세스 활성화 네트워크에 VPC cidr 추가
- 라우팅 테이블에 2개 있는지 확인
- 대상 네트워크(b,c)
- 상태 활성화 확인후 [클라이언트 구성 다운로드] 클릭
VPN 연결
- AWS Client VPN 엔드포인트에 연결하기 위해서 PC에 VPN 클라이언트 도구를 설치하고 이를 통해 실제로 VPN으로 연결한다.
VPN 클라이언트 설치
- link에서 운영체제 맞는 프로그램 다운로드
- 파일 불러오기로 ovpn 파일 선택,
- 다음 연결 선택
- 연결됨을 확인
- VPN 엔드포인트에서 연결 확인
ping 확인
- ec2 인스턴스에 ping을 날려 네트워크가 전달되는지 확인.
- netstat으로 확인
로그 확인
- cloudwatch에서 접속 시간, 종료시간, 접속환경 등 확인 가능.