AWS Client VPN용 데스크톱 클라이언트 활용하기 (서울 리전 포함)
AWS는 OpenVPN 기반 클라이언트를 통해 어디서든 AWS 및 온프레미스 기반 네트워크에 안전하게 액세스할 수 있도록 작년에 AWS Client VPN을 시작했습니다. AWS Client VPN은 수요에 따라 연결 수를 탄력적으로 늘리거나 줄이는 완전 관리형 VPN 서비스입니다.
이를 통해 직원과 파트너에게 용이한 연결을 제공할 수 있으며 단일 콘솔에서 모든 연결을 모니터링 및 관리할 수 있습니다. Client VPN 엔드포인트를 생성하고, 이 엔드포인트에 원하는 VPC 서브넷을 연결한 다음 사용자가 원하는 클라우드 리소스에 액세스할 수 있도록 권한 부여 규칙을 설정할 수 있습니다.
AWS Client VPN용 신규 데스크톱 클라이언트 출시
이제 Windows 및 MacOS 클라이언트를 훨씬 쉽게 AWS에 연결할 수 있습니다. 이 애플리케이션은 데스크톱 또는 노트북에 설치할 수 있으며 상호 인증, Active Directory를 통한 사용자 이름/암호 및 Multi-Factor Authentication(MFA)을 지원합니다. 클라이언트를 사용하여 VPN 연결을 설정하면 데스크톱 또는 노트북이 구성된 VPC의 일부가 되어 권한 부여 규칙에서 허용하는 리소스에 액세스할 수 있습니다.
클라이언트 애플리케이션은 무료로 사용할 수 있으며 AWS Client VPN 엔드 포인트가 있는 모든 AWS 리전에 대한 연결을 설정하는 데 사용할 수 있습니다. 현재 아시아 태평양(서울) 리전을 비롯하여 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(캘리포니아 북부), 미국 서부(오레곤), 캐나다(중부), 유럽(아일랜드), 유럽(런던), 유럽(프랑크푸르트), 유럽(스톡홀름), 아시아 태평양(뭄바이), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 및 아시아 태평양(도쿄) 리전에서 이러한 엔드포인트를 생성할 수 있습니다.
이 글에서는 어떻게 AWS 클라이언트 VPN를 통해 AWS에 안전하게 VPN을 통해 연결하는지 알려드립니다. Active Directory 인증을 사용하여 클라이언트 VPN 연결을 위한 엔드 투 엔드 솔루션을 배포하는 과정을 안내합니다.
클라이언트 VPN 엔드 포인트 생성하기
먼저 AWS 관리 콘솔의 VPC 섹션으로 이동한 후, 클라이언트 VPN 엔드 포인트를 선택합니다.
이제 클라이언트 VPN 엔드 포인트를 만들 수 있습니다.
그런 다음 VPN 클라이언트를 위한 CIDR을 선택합니다. 여기서는 사용 가능한 가장 작은 서브넷 인 / 22 주소 공간을 사용하고 있습니다. 필요한 경우 더 큰 서브넷을 지정할 수 있습니다 (최대/18). 선택한 서브넷이 클라이언트 VPN 엔드 포인트를 통해 접근하려는 리소스와 겹치지 조심하세요. 클라이언트 VPN은 소스 NAT (SNAT)를 사용하여 연결된 VPC의 리소스에 연결합니다.
다음 섹션에서는 인증을 위한 정보를 입력해야 합니다. 이전에 관리되는 Active Directory를 배포 했으므로 이를 선택하겠습니다. AWS Managed Microsoft AD 디렉토리가 없는 경우 설정에 대한 자세한 정보를 찾을 수 있습니다 . 프라이빗 인증서 를 생성 하여 AWS Certificate Manager (ACM)로 가져와야합니다 . 이 연습에서는 Active Directory 인증 만 표시합니다.
다음 섹션에서는 연결 로깅을 구성합니다. 이 목적을 위해 이미 CloudWatch 로그 그룹 을 설정했습니다 . 연결 로깅을 통해 클라이언트가 연결을 시도한 포렌식과 연결 시도 결과를 얻을 수 있습니다.
구성의 마지막 섹션에서 DNS 서버의 IP 주소를 지정하고 클라이언트 연결에 TCP 또는 UDP를 선택합니다. 여기서는 Route 53 Resolver 인바운드 엔드 포인트 의 IP 주소를 선택하지만 환경에서 사용하는 DNS 서버를 선택할 수 있습니다.
필요한 정보를 모두 입력하면 VPN 끝 점이 Pending-associate 임을 알 수 있습니다 . 이제 VPN 엔드 포인트를 하나 이상의 VPC와 연결할 수 있습니다.
클라이언트 VPN 엔드 포인트를 대상 네트워크에 연결
다음 단계는 VPN 엔드 포인트를 대상 네트워크 (VPC 서브넷)와 연결하는 것입니다. 이는 AWS 클라이언트 VPN 콘솔 의 Associations (연결) 부분을 통해 수행 됩니다.
클라이언트 VPN 엔드 포인트와의 연결을 생성하기 위해 VPC와 서브넷을 선택합니다. 클라이언트 VPN 트래픽을 쉽게보고 추적 할 수 있도록 VPC 엔드 포인트에 대한 ENI를 호스팅하기 위해 VPC에 특정 서브넷을 만들었습니다. 클라이언트 VPC 엔드 포인트를 여러 서브넷에 연결할 수 있습니다. 요구 사항은 각 서브넷이 동일한 VPC이지만 다른 가용 영역에 속해야 한다는 점입니다. 대상 네트워크 (VPC의 서브넷)를 성공적으로 연결 한 후에는 VPN 세션을 만들 수 있지만 리소스에 액세스 할 수는 없습니다.
사용자에 대한 VPC 접근 설정 (권한 규칙 추가)
다음 단계는 인증 규칙을 추가하는 것입니다. 권한 부여 규칙은 클라이언트 VPN 엔드 포인트를 통해 지정된 네트워크에 액세스 할 수있는 사용자 집합을 제어합니다. “클라이언트 VPN”AD 그룹의 사용자 만 액세스 할 수 있기를 원합니다. 이를 위해 먼저 AWS 계정 의 기존 AWS Managed Microsoft Active Directory 에서 생성 한“클라이언트 VPN”AD 그룹의 SID를 가져옵니다 . 다음 스크린 샷에 나와 있습니다.
그런 다음 클라이언트 VPN 콘솔의 권한 부분으로 클라이언트 엔드 포인트를 선택합니다.
대상 네트워크 활성화하려면 (NAT 게이트웨이 내가 VPC에서 실행 한을 통해) 인터넷 트래픽을 포함, 클라이언트 VPN 엔드 포인트를 통과하는 모든 트래픽을 사용하려는 때문에 0.0.0.0/0의 기본 경로를 입력합니다. 그런 다음 VPN Users 그룹의 SID를 Active Directory 그룹 이름 필드에 배치합니다 (이전 명령을 실행하여 얻은 정보). 이제 “클라이언트 VPN”AD 그룹에 속한 사용자는 VPN 클라이언트 엔드 포인트를 통해 모든 트래픽을 라우팅 할 수 있습니다.
보안 그룹 적용 하기
클라이언트 VPN 엔드 포인트는 보안 그룹을 지원합니다. 보안 그룹을 사용하여 응용 프로그램에 대한 액세스를 제한 할 수 있습니다. 보안 그룹은 VPC 관련 ENI의 트래픽 유출 만 제어합니다. VPC 관련 ENI를 통해 라우팅 할 수 있는 트래픽을 제한하기 위해 제한적인 권한 부여를 사용할 수 있습니다.
VPN 엔드 포인트를 선택하고 보안 그룹 탭으로 이동합니다. 여기에서 보안 그룹 적용을 선택 합니다.
이제 모든 허용 을 통해 접근을 허가 가능하고, 가능하면 제한적인 포트 접근으로만 특정 보안 그룹의 집합이 될 수 있습니다.
여기서 보안 그룹의 깔끔한 기능은 VPN 엔드 포인트에 적용한 보안 그룹을 다른 보안 그룹의 트래픽 소스로 활용할 수 있다는 것입니다. 이를 통해 VPN 클라이언트의 연결 만 허용하는 보안 그룹을 만들 수 있습니다.
경로 추가
연결된 VPC의 경로는 클라이언트 VPN 경로 테이블에 자동으로 추가됩니다. 다음 스크린 샷에 나와 있습니다.
이 VPC 연결이 VPN 클라이언트에 인터넷 연결을 제공하기를 원하기 때문에 (VPC에서 이미 NAT 게이트웨이가 실행되고 있지만) 라우팅 테이블에 0.0.0.0/0의 기본 경로를 추가해야합니다. 경로 생성 버튼을 클릭하여 이 과정을 시작 합니다. 그런 다음 대상 VPC 서브넷을 선택하고 설명을 입력하시면 됩니다.
여기서 주목해야 할 점은 VPC 연결 ENI (Elastic Network Interface)에 퍼블릭 IP가 있다는 것입니다. 연결 서브넷이 퍼블릭 서브넷에 상주하는 경우이를 사용하여 VPN 클라이언트에 인터넷 액세스를 제공 할 수 있습니다. 이는 EC2 콘솔 의 네트워크 인터페이스 섹션의 다음 스크린 샷에 표시되어 있습니다.
AWS Client VPN의 강력한 기능은 온 프레미스 리소스에 액세스 할 수있는 기능입니다. 연결된 VPC가 온-프레미스 리소스에 액세스 할 수 있으므로 온-프레미스 네트워크 (10.200.0.0/24)에 대한 경로를 추가 할 수 있습니다. 이미 0.0.0.0/0을 허용하는 권한이 있으므로 새 권한을 명시 적으로 추가 할 필요가 없습니다. 기본 경로 권한이없는 경우 온-프레미스 네트워크 (10.200.0.0/24)에 대한 새 권한을 만들어야합니다. 마찬가지로 다른 VPC에 연결하려는 경우 서브넷이 연결된 VPC에 VPC를 피어링 할 수 있습니다.
클라이언트 구성 다운로드
이제 인프라를 프로비저닝하고 구성 했으므로 마지막 단계는 클라이언트 구성을 다운로드하는 것입니다. open-VPN을 사용하고 macOS를 사용하고 있기 때문에 Tunnelblick을 다운로드하여 설치했습니다 .
이제 콘솔에서 클라이언트 구성을 다운로드하면됩니다. VPN 끝점을 선택하고 클라이언트 구성 다운로드 버튼을 클릭합니다.
거기에서 Mac에서 구성 파일을 두 번 클릭하여 Tunnelblick으로 구성 파일을 열면 VPN으로 VPC에 연결할 수 있습니다!
클라이언트 연결 모니터링
AWS 클라이언트 VPN은 클라우드 기반 서비스이므로 로깅 및 분석이 시작됩니다. 콘솔에서 모든 클라이언트 연결을 모니터링하여 클라이언트 연결을 신속하게 실시간으로 볼 수 있습니다. 다음 스크린 샷에 나와 있습니다. 클라이언트 연결이 발생할 때이를 모니터링 할 수있었습니다. 문제 해결 및 모니터링에 매우 유용합니다. CloudWatch 및 CloudTrail 을 모니터링에 사용할 수도 있습니다.
이 글에서는 AWS에서 클라이언트 VPN을 시작하고 실행하는 것이 얼마나 쉬운 지 보여 주었고 클라이언트 VPN 솔루션을 배포하는 쉬운 방법을 알려드렸습니다. 단일 VPN 클라이언트 터널을 사용하면 OpenVPN 기반 클라이언트를 사용하여 어느 위치에서나 AWS 또는 온 프레미스의 리소스에 액세스 할 수 있습니다. 또한 네트워크 기반 규칙 및 보안 그룹을 통해 세분화 된 보안 기능을 사용할 수 있습니다.
— Channy(윤석찬);