[1. 개요]

세션 관리자의 포트 전달 기능을 사용.

pem key 미사용, RDP 포트(3389)를 열지 않고 RDP 터널링하여 원격 Windows 인스턴스(GUI)에 엑세스 할 수 있습니다.



[2. 설치]

2.1 로컬 서버 설정

2.1.1 AWS CLI 설치

- https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-windows.html

  위 URL 참고하여 설치합니다.

- 설치 확인

aws --version


2.1.2 Session manager plugin 설치

- https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe 

  위 URL 사용하여 설치 관리자를 다운로드합니다.

- 설치 확인

session-manager-plugin



2.2 Session Manager 활성화

2.2.1 IAM 역할 생성

- AmazonEC2RoleforSSM 정책이 연결된 IAM 역할을 생성합니다. (이름 : ec2-ssm)

 

2.2.2 Windows Server EC2 생성

- Windows Server 2019 Base AMI를 선택합니다.

  (Session Manager는 Windows 2008 R2 부터 Windows 2019 까지 지원하며, Windows 2016 Nano는 지원되지 않습니다.)

 

- 2.2.1에서 만든 역할(ec2-ssm)을 선택합니다.


- 이미 생성된 인스턴스의 경우, 역할 수정을 통하여 역할을 부여할 수 있습니다.

  (EC2 > 작업 > 보안 > IAM 역할 수정)

 

- 규칙이 없는 보안그룹을 구성합니다.


2.2.3 Session 연결

- Session Manager 활성화 확인 및 정상 접속을 확인합니다.(EC2 > 연결 > Session Manager)

 



2.3 사용자 설정

2.3.1 Session Manager로 접속할 사용자 생성

- Session 연결한 서버에서 아래 명령어로 새 사용자를 설정합니다.

$Password = Read-Host -AsSecureString

********* (password설정)

New-LocalUser “SampleUser” -Password $Password

Add-LocalGroupMember -Group “Remote Desktop Users” -Member “SampleUser”


2.3.2 자격 증명 IAM 사용자 생성

- aws cli 접속할 IAM 사용자를 생성합니다.

 

- StartSession, Terminate Session 권한을 갖는 정책을 생성합니다.

(기존 정책 직접 연결 > 정책 생성 > JSON)

 


{

     "Version": "2012-10-17",

     "Statement": [

        {

            "Effect": "Allow",

            "Action": [

                "ssm:StartSession"

            ],

            "Resource": [

                "arn:aws:ec2:Region:Account-id:instance/Instance-id",

                "arn:aws:ssm:Region:*:document/SSM-SessionManagerRunShell",

                 "arn:aws:ssm:*:*:document/AWS-StartPortForwardingSession"

            ],

            "Condition": {

                "BoolIfExists": {

                     "ssm:SessionDocumentAccessCheck": "true"

                }

            }

        },

        {

            "Effect": "Allow",

            "Action": [

                 "ec2:DescribeInstances",

                "ssm:GetConnectionStatus",

                 "ssm:DescribeSessions",

                 "ssm:DescribeInstanceProperties"

            ],

            "Resource": "*"

        },

        {

            "Effect": "Allow",

            "Action": [

                "ssm:TerminateSession"

            ],

            "Resource": [

                 "arn:aws:ssm:*:*:session/${aws:username}-*"

            ]

        }

     ]

}

 

- 로컬 서버 터미널에서 aws configure를 실행하여 사용자 Access Key, Secret Key, region 설정을 합니다.

 


2.4 RDP to EC2 Instance

2.4.1 Session 시작

- 로컬 서버 터미널에서 아래 명령을 입력하여 인스턴스에 대한 세션을 시작합니다.

aws ssm start-session --target  --document-name AWS-StartPortForwardingSession --parameters "localPortNumber=54321,portNumber=3389"

2.4.2 연결 확인

- 원격 데스크톱 연결(또는 원격 앱)을 열어 localhost:54321(자신이 적은 로컬 포트 번호) 적어준 후 옵션 표시를 누릅니다.

 

- 2.3.1에서 생성한 사용자 이름과 password를 입력합니다.

 

- 원격 포트 및 pem key 없이 접속을 확인할 수 있습니다.




 

지금까지 RDP 포트(3389) 및 pem key를 사용하지 않고 RDP 터널링하여 Windwos 인스턴스(GUI)에 엑세스하는

과정을 진행하였습니다. 


감사합니다.