Pendahuluan


Secure Shell (SSH) adalah protokol populer untuk mengakses dan mengelola server secara remote.

Biasanya, SSH membutuhkan port 22 terbuka pada server, yang sering menjadi target serangan brute-force atau scanning bot.

Di lingkungan AWS, ada cara yang lebih aman untuk mengakses instance EC2 tanpa membuka port 22.

Yaitu SSH over SSM (AWS Systems Manager Session Manager).

Dengan metode ini:

  • Tidak perlu membuka port 22 di security group.
  • Tidak memerlukan alamat IP publik pada EC2.

Semua komunikasi berjalan melalui AWS Systems Manager (SSM) dengan enkripsi.


Apa itu SSH over SSM?


SSH over SSM adalah teknik untuk mengakses server menggunakan protokol SSH, namun trafiknya ditunnel melalui AWS Systems Manager Session Manager daripada melalui koneksi langsung ke port 22.

AWS SSM berfungsi sebagai perantara (proxy) yang aman, sehingga akses bisa dilakukan dari VPC internal tanpa eksposur langsung ke internet.


Keuntungan SSH over SSM


  1. Keamanan Lebih Tinggi
  • Tidak ada port 22 terbuka.
  • Tidak ada IP publik yang terekspos.

  1. Audit & Logging
  • Semua aktivitas bisa dicatat di CloudTrail atau S3 untuk keperluan audit.
  • Akses dari Mana Saja
  • Tidak terikat pada alamat IP kantor atau VPN tertentu.

Cara Kerja


Secara umum, alur SSH over SSM adalah:

  • Client menjalankan perintah SSH dengan parameter SSM ProxyCommand.
  • AWS CLI memanggil AWS Systems Manager untuk membuat session.
  • Session Manager membangun koneksi terenkripsi ke instance EC2 melalui SSM Agent.
  • Data SSH mengalir melalui tunneling SSM, bukan langsung ke port 22.

Persiapan di AWS


Untuk menggunakan SSH over SSM, pastikan:

  • SSM Agent terpasang di EC2.
  • AMI terbaru Amazon Linux 2 dan Ubuntu biasanya sudah ada SSM Agent.
  • IAM Role untuk EC2 memiliki policy berikut:
{
  "Effect": "Allow",
  "Action": [
    "ssm:UpdateInstanceInformation",
    "ssm:StartSession",
    "ssm:DescribeInstanceInformation",
    "ssm:SendCommand"
  ],
  "Resource": "*"
}
  • IAM User/Role di sisi client memiliki izin ssm:StartSession.
  • Security Group tidak perlu membuka port 22.

Konfigurasi di Client


  • Install AWS CLI dan Session Manager Plugin:
# AWS CLI
pip install awscli --upgrade

# Session Manager Plugin (Linux/Mac)
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"

  • Tambahkan konfigurasi di ~/.ssh/config:

Host i-* mi-*
  User ec2-user
  IdentityFile ~/.ssh/my-key.pem
  ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"

  • SSH ke Instance via SSM:
ssh ec2-user@i-0123456789abcdef0
i-0123456789abcdef0 adalah Instance ID EC2.

Best Practices


  • Gunakan IAM Policy yang minimal agar hanya user tertentu yang bisa memulai sesi SSH.
  • Aktifkan Session Logging ke S3 atau CloudWatch Logs untuk audit.
  • Nonaktifkan port 22 di Security Group sepenuhnya.
  • Gunakan Parameter Store / Secrets Manager untuk menyimpan credential.

Kesimpulan


SSH over SSM adalah solusi modern untuk mengakses EC2 secara aman tanpa membuka port 22 atau mengekspos IP publik.

Dengan memanfaatkan AWS Systems Manager Session Manager, keamanan meningkat, biaya operasional berkurang, dan akses menjadi fleksibel.

Bagi organisasi yang memprioritaskan zero-trust security di AWS, SSH over SSM adalah best practice yang layak diimplementasikan.