실습 목표
인터넷도, 인바운드 정책도 뭣도 없는 Private한 환경에 있는 Windows 서버로 3389(RDP) Port Open 없이 로컬에서 RDP로 접속한다.
준비
- VPC 생성 / Private Subnet 생성 / Route - 서브넷 연결
-> 통신이 되지 않는 네트워크 환경을 구성한다. (후에 이 환경에 인스턴스를 생성할 것이다.)
VPC Endpoint
SSM을 사용하여 인스턴스에 연결하기 위해서는 Internet Gateway가 있거나, 또는 AWS PrivateLink 인 VPC Endpoint가 있어야 한다.
엔드포인트는 모든 네트워크 트래픽을 Amazon 네트워크로 제한하여 AWS 리소스 간의 네트워크 통신이 가능하도록 하는 역할을 한다.
이 경우 인터넷 게이트웨이나 NAT 디바이스가 필요 없어진다.
VPC Endpoint 생성
1. SSM 사용을 위해 3개의 VPC 엔드포인트를 생성한다.
- ssm
- ssmmessages
- ec2messages
[VPC] - [Endpoints] - [Create]
엔드포인트 서비스 범주를 선택하고, 엔드포인트를 생성할 VPC와 서브넷을 선택한다.
* 엔드포인트 생성이 안된다고 뜬다면 아래의 부분을 비활성화하거나, VPC의 'DNS Hostname' 을 활성화해본다.
보안그룹 설정
해당 VPC의 CIDR에 대해 443 Port를 허용해준다.
Windows 인스턴스 생성 및 SSM IAM 역할 적용
엔드포인트는 생성을 마치고 나면 끝이다.
테스트를 위해 EC2 인스턴스를 생성한다.
AMI 이름 : Windows_Server-2019-English-Full-Base-2021.12.15 으로 인스턴스를 생성했다.
IAM 역할 수정
SSM 연결을 위해 IAM 역할을 적용해야 한다.
1. AmazonEC2RoleforSSM Policy가 연결된 EC2 서비스 전용 IAM 역할을 생성한다.
2. [적용할 인스턴스 선택] - [작업] - [보안] - [IAM 역할 수정]
3. 1에서 생성한 IAM 역할을 적용 후 저장한다.
4. 이제 잠시 기다리면 아래와 같이 뜨면서 Windows SSM 에 연결할 수 있게 된다.
다른 리눅스 서버를 생성해도 동일하게 SSM 연결이 가능하다.
하지만 이 방식의 SSM 연결은 Windows 서버의 커맨드창으로의 연결만 가능하며, GUI를 사용할 수 있는 RDP 연결은 아니다.
로컬에서 SSM RDP 접속하기
SSM이 정상적으로 연결되었으니, 로컬에서 위 서버의 RDP로 접속해보자.
설치 및 확인
로컬에서 SSM RDP 접속을 위해서는 두 가지가 먼저 설치되어야 한다.
1. AWS CLI
aws --version 으로 설치 확인.
2. AWS SSM Plugin (설치 관련 참고 링크 확인)
SSM Plugin 설치 확인
> session-manager-plugin 명령으로 SSM Plugin 이 설치됐는지 확인할 수 있다.
aws configure
- aws configure 을 위해서는 자격증명이 필요하므로, IAM User 를 생성한다.
* admin access 를 부여하여 테스트했지만, Startsession, Terminatesession 정책이 연결된 사용자로도 테스트가 가능하다.
-> CSV 다운로드 후 Access Key, Secret Key 를 사용할 것이다.
- Access Key, Secret Key, Region, Format 순서로 설정한다.
Format은 설정하지 않고 넘어가도 된다.
SSM Start Session 테스트
정상적으로 SSM Plugin 이 설치되어 작동하는지, 자격 증명을 가진 계정의 인스턴스에 접근이 가능한지 확인을 위해 테스트 겸 리눅스 서버를 생성하였다.
> aws ssm start-session --target [i-instaceID(SSM 연결 가능한 Linux)]
정상적으로 접속이 되었다.
이제 RDP도 접속해본다.
1234 포트는 임의로 지정이 가능한 부분이다. 열고싶은 Local의 포트 번호를 지정한다.
> aws ssm start-session --target <instance-id> --document-name AWS-StartPortForwardingSession --parameters "localPortNumber=1234,portNumber=3389"
생성한 Windows 서버에는 3389 포트가 열려있지 않다. 포트는 열려있지 않지만, 설정한 local의 1234 포트로 Forwarding 하여 3389 트래픽을 1234 포트로 보내주는 것이다.
-> 이 역할을 하는 문서가 AWS-StartPortForwardingSession 이라는 문서라고 한다.
--document-name 옵션 추가 후 [문서명] 값을 입력하여 사용한다.
위의 명령을 실행해본다.
Waiting for connections... 상태로 멈춰있으면 연결됐다고 생각하면 된다.
윈도우 원격 연결
아까 SSM 연결을 시작할 때 지정했던 Local의 1234 포트로 연결할 것이다.
Windows ID와 Password 는 콘솔에서 암호를 해독하여 저장해둔다.
이 창이 뜨면 정상적으로 연결된 것이다. "예"를 선택하면 윈도우 서버에 RDP 접속을 성공하는데, 연결되고 나면 로컬 cmd 창에 다음과 같이 뜬다.
연결된 원격 세션을 종료해도 SSM 은 계속 연결된 상태이기 때문에 사용하지 않을 경우 SSM Session 을 종료한다.
끗.
<실습 참고 자료>
실습 전반
https://honglab.tistory.com/124?category=921082
[AWS] Session Manager로 RDP 접속하기 (Windows Server)
21.12.11 추가 SSMuser 생성은 굳이 필요 없다. -> Administrator / pem키 해독한 password로도 충분히 접속 가능하다 ssm/ssmmessages/ec2messages 3개 endpoint만 있다면 NAT조차 없는 Private한 서브넷에 있는..
honglab.tistory.com
AWS SSM Plugin 설치 관련 AWS Docs
(Optional) Install the Session Manager plugin for the AWS CLI - AWS Systems Manager
(Optional) Install the Session Manager plugin for the AWS CLI If you want to use the AWS Command Line Interface (AWS CLI) to start and end sessions that connect you to your managed nodes, you must first install the Session Manager plugin on your local mach
docs.aws.amazon.com
플러그인 설치 링크 - Windows (누르면 바로 설치됨)
'AWS' 카테고리의 다른 글
[AWS] Application Migration Service(MGN) 으로 다른 리전에 마이그레이션 해보기 (0) | 2022.02.24 |
---|---|
[AWS] Transit Gateway를 사용하여 다른 리전 EC2에 내부 IP로 SSH 접속하기 (0) | 2021.12.01 |