Quản lí kết nối SSH & RDP với Systems Manager

Quản lí kết nối SSH & RDP với Systems Manager

avatar

Minh Bui

2024.07.07

Bài viết này Cloudmentor Pro sẽ cùng mọi người tìm hiểu hai chức năng của Systems Manager đó là Session Manager và Fleet Manager.

Introduction

Systems manager là gì?

Systems Manager là service cho phép chúng ta tự động hoá việc quản lí các máy EC2 và các máy on-premise, từ đó giúp tiết kiệm chi phí và giảm effort vận hành. Systems Manager có các tính năng có thể kể đến như:

  • Run Command: cho phép thực thi command từ xa
  • State Manager: quản lí configuration
  • Patch Manager: quản lí các bản vá lỗi và apply tự động
  • v.v....

Systems Manager Session Manager là gì ?

Đây là tính năng cho phép kết nối ssh từ xa đến các máy được quản lí bởi Systems Manager một cách trực tiếp từ AWS console mà không cần mở port ssh 22. Từ đó sẽ rất tiện lợi khi muốn truy cập ec2, giảm risk security như bị leak ssh key, ngoài ra còn giảm effort quản lí và lưu trữ ssh key.

Systems Manager Fleet Manager là gì ?

Đây là tính năng cho phép kết nối rdp (chỉ áp dụng cho máy Windows) từ xa đến các máy được quản lí bởi Systems Managers một cách trực tiếp từ AWS console mà không cần mở port rdp 3389. Ngoài ra Fleet Manager còn cung cấp các tính năng khác như quản lí tình trạng online của các máy, xem thông tin instance trong thời gian thực, xem thông tin windows registry, v.v.. nhưng chủ yếu được dùng để kết nối rdp thôi.

Làm thế nào để sử dụng được các chức năng của Systems Manager?

Để sử dụng được thì mình cần biến các instance này thành “managed instance” của Systems Manager, thì cần đảm bảo 3 yếu tố sau:

1. Đường truyền

Từ máy ec2 phải có đường truyền kết nối đến được SSM, đường truyền này có thể thông qua internet hoặc VPC Endpoint như các trường hợp sau:

  • EC2 trong public subnet:
  • Ec2 trong private subnet sử dụng NatGW:
  • Ec2 trong private subnet sử dụng VPC Endpoint: Ở đây theo quy định của aws thì sẽ cần 3 endpoint sau:
    • SSM Endpoint
    • SSM Message Endpoint
    • EC2 Message Endpoint

2. IAM Permission

  • EC2 Role phải có permission tối thiểu là AmazonSSMManagedInstanceCore để cho phép SSM có quyền quản lí EC2.

3. SSM Agent

  • SSM Agent phải được cài trên máy và configure IAM permission đầy đủ. Đối với máy EC2 thì chỉ cần config IAM Role, máy on-premise thì sẽ cần config access key / secret key cho SSM Agent.
  • Các AMI phổ biến hiện tại như Amazon Linux 2023, Windows Server 2019, v.v... thì đều đã có sẵn SSM Agent bên trong.

Mục tiêu bài lab

Bài lab hôm nay mình sẽ build thử một EC2 Windows nằm trong public subnet, EC2 này có thể connect đến Systems Manager thông qua internet. Từ đó sẽ thực hiện test kết nối đến EC2 này bằng cả hai hình thức SSH & RDP thông qua hai chức năng đó là Session Manager & Fleet Manager.

Lab Details

  1. Duration: 15 phút
  2. AWS Region: us-east-1

Architecture diagram

Task Details

  1. Tạo EC2
  2. Test kết nối SSH thông qua Sessions Manager
  3. Test kết nối RDP thông qua Fleet Manager
  4. Clean up

1. Tạo EC2

1.1. Tạo IAM Role cho ec2

Vào IAM Console, thực hiện tạo IAM Role với các parameter như sau:

  • Use case: EC2
  • Policy:
    • AmazonSSMManagedInstanceCore
  • Role name: d-saa-ec2-ssm-role

1.2. Tạo security group cho ec2

Ở đây mình sẽ configure security group cho ec2 để có thể kết nối SSH và RDP vào được. Cách làm thông thường thì sẽ phải mở 2 port ở inbound rule là port 22 (SSH) và port 3389 (RDP) , nhưng do mình sẽ kết nối thông qua SSM nên không cần mở 2 port này. Do đó security group inbound mình sẽ để trống, outbound để alllow toàn bộ để cho phép ec2 kết nối đến SSM thông qua internet được.

Security group sẽ có thông tin như sau:

  • Name: d-saa-ec2-ssm-sg

  • Description: for ssm connection

  • VPC: Default VPC

  • Inbound rules This security group has no inbound rules.

  • Outbound rules

    TypeProtocolPort rangeDestination
    All trafficAllAll0.0.0.0/0
  • Tags

    Keyvalue
    Named-saa-ssm-ec2

1.3. Tạo EC2

Ở step này mình sẽ tạo ec2 với đoạn user data bên dưới với mục đích khi ec2 được tạo thì cũng đồng thời cài ssm agent phiên bản mới nhất.

Các setting cho ec2 như sau:

  • Name: d-saa-ssm-ec2
  • OS: Windows Server 2022 Base
  • Instance type: Default (t2.micro)
  • Key pair: d-key-SAA-common (Nếu chưa có thì tạo mới)
  • Network Setting:
    • VPC: (default)
    • Subnet: us-east-1a
    • Auto-assign public IP: Enable
    • Select existing security group: d-saa-ssm-ec2
  • Advanced details > IAM Instance profile: d-saa-ec2-ssm-role
  • Advanced details > User data (copy chính xác nội dung bên dưới)
<powershell>
$dir = $env:TEMP + "\ssm"
New-Item -ItemType directory -Path $dir -Force
cd $dir
(New-Object System.Net.WebClient).DownloadFile("https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/windows_amd64/AmazonSSMAgentSetup.exe", $dir + "\AmazonSSMAgentSetup.exe")
Start-Process .\AmazonSSMAgentSetup.exe -ArgumentList @("/q", "/log", "install.log") -Wait
</powershell>

Chờ khoảng 3~5p cho ec2 khởi tạo và cài ssm agent xong.

2. Test kết nối SSH thông qua Sessions Manager

Chọn instance vừa tạo, nhấn Connect

Chọn tab Session Manager, nhấn Connect

Kết nối thành công, test thử lệnh systeminfo để hiển thị thông tin windows:

3. Test kết nối RDP thông qua Fleet Manager

Vào Systems Manager console > Fleet Manager > Chọn instance id vừa tạo > Node actions > Connect > Connect with Remote Desktop

Kết nối SSH thông qua Session Manager thì không đòi hỏi key nhưng kết nối RDP thông qua Fleet Manager thì sẽ cần cung cấp key hoặc username password. Ở đây mình sẽ thực hiện upload file key đã set ở step trước và nhấn Connect.

Kết nối RDP thành công:

Clean up

Thực hiện xoá các resource đã tạo ở các step trên:

  1. Xoá Ec2
  2. Xoá security group
  3. Xoá iam role

Tổng kết

  • Như vậy ở bài viết hôm nay chúng ta đã tìm hiểu cách setup một ec2 instance để nó được quản lí bởi SSM, từ đó có thể sử dụng được các chức năng của SSM như Session Manager và Fleet Manager.
  • Session Manager và Fleet Manager là 2 chức năng giúp việc quản lí kết nối đến ec2 một cách thực sự đơn giản, có thể thực hiện kết nối trực tiếp từ trên console mà không cần mở port security group, từ đó có thể giúp debug các vấn đề rất nhanh chóng nếu ec2 xảy ra sự cố.
  • Ngoài Session Manager và Fleet Manager thì SSM còn rất nhiều chức năng khác, có thể tham khảo thêm ở link sau: https://aws.amazon.com/systems-manager/features/
  • Nếu các bạn có thắc mắc hay muốn biết thêm chủ đề gì hãy liên lạc vào group cho Cloudmentor Pro biết nhé: Link FB