Mengakses Layanan pada Amazon EC2 tanpa Membuat Security Group

1 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Mengakses Amazon EC2 tanpa membuat security group
Photo by Daniel Jerez on Unsplash

TeknoCerdas.com – Salam cerdas untuk kita semua. Ketika membutuhkan akses ke layanan yang berada didalam Amazon EC2 biasanya port layanan tersebut harus dibuka dulu lewat Security Group. Terdakang kita memerlukan akses dari komputer lokal layanan internal untuk diakses. Membuka security group ke publik untuk layanan internal seperti database berpotensi membuka serangan ke layanan. Dengan memanfaatkan SSH Tunnel layanan tersebut dapat diakses dari localhost tanpa perlu membuat security group.

Pada artikel ini akan disertakan beberapa contoh bagaimana mengakses layanan seperti Nginx, MySQL, dan Redis yang berada di Amazon EC2 tanpa membuat security group. Satu-satunya security group yang harus dibuat adalah membuka koneksi SSH ke instance EC2.

Security group ⬈ adalah sebuah virtual firewall untuk Amazon EC2 yang mengatur lalu lintas jaringan untuk inbound (masuk) dan outbound (keluar).

Memanfaatkan SSH Tunneling

Cara paling mudah untuk mengakses layanan yang berada pada EC2 tanpa membuat security group adalah menggunakan SSH tunneling. Dengan SSH tunneling dimungkinan koneksi ke port lokal yang terhubung ke server dimana SSH melakukan koneksi. Istilah lain dari metode ini adalah SSH port forwarding.

Sehingga koneksi ke aplikasi di server dilakukan dengan melakukan koneksi ke localhost dan port baru yang disediakan oleh SSH.

Perintah untuk melakukan SSH Tunneling adalah:

$ ssh -CNq -L [bind_address:]port:host:hostport
  • C untuk melakukan kompresi data
  • N tidak perlu melakukan eksekusi perintah (shell)
  • q mode senyap
  • L melakukan port forwarding dari lokal ke remote server

Contoh 1: Koneksi ke Internal Web Server

Sebagai contoh di Amazon EC2 terdapat internal web server yang berjalan di port 80 dan digunakan untuk monitoring. Untuk mengakses dari komputer lokal maka gunakan perintah berikut:

ssh -CNq -L 8080:127.0.0.1:80 user@SSH_SERVER

Untuk mengakses web server dapat dilakukan pada komputer lokal dengan membuka alamat http://localhost:8080/ otomatis traffic akan diarahkan ke SSH_SERVER port 80 secara otomatis.

Contoh 2: Koneksi ke Database Server

Misal pada remote SSH terdapat database server MySQL yang berjalan pada local loopback dan port 3306 maka untuk melakukan koneksi dari komputer lokal ke database server adalah seperti berikut:

ssh -CNq -L 3306:127.0.0.1:3306 user@SSH_SERVER

Untuk mengakses MySQL dari komputer lokal maka cukup melakukan koneksi ke IP 127.0.0.1 dan port 3306.

mysql -u root -h 127.0.0.1 -P 3306 -p

Contoh 3: Koneksi ke Redis Server Berbeda IP

Contoh berikut mengilustrasikan bahwa terdapat Redis server yang berbeda alamat IP dengan server SSH. Selama server SSH dapat melakukan komunikasi ke server Redis maka koneksi dari komputer lokal ke Redis server tetap dapat dilakukan.

Misal Redis server memiliki privat IP 172.16.1.5 dan jalan di port 6379 maka perintah SSH Tunnel yang digunakan adalah:

ssh -CNq -L 6379:172.16.1.5:6379 user@SSH_SERVER

Untuk melakukan koneksi ke Redis server dari komputer lokal dapat dilakukan dengan melakukan koneksi ke 127.0.0.1 port 6379.

telnet 127.0.0.1 6379

Semoga artikel ini membantu 🙂