Senin, 19 Agustus 2024

SSH Remote Access: Pengertian, Fungsi, Cara kerja, Instalasi, Keamanan, dan Troubleshooting SSH

Apa Itu Transmission Control Protocol (TCP)? - 2024

Secure SHell (SSH)

 Teknologi yang semakin maju membuat pengguna dapat mengontrol perangkat yang mereka punya, bahkan dari jarak jauh sekalipun. Hal ini karena adanya SSH atau biasa disebut Secure Shell Connection.

Secure Shell atau SSH merupakan protokol untuk mengakses (login) sistem komputer remote secara aman. Umumnya protokol ini digunakan untuk login ke sistem server. Berbeda dengan protokol remote login lainnya seperti telnet dan rsh, SSH menggunakan enkripsi pada traffic data-nya sehingga meminimalisir resiko sniffing dan Man-In-The-Middle (MITM) Attack. Secara default, SSH berjalan pada port 22 TCP, namun untuk menghindari adanya serangan Denial-Of-Service (DOS) dan Brute-Force, port SSH biasanya dipindahkan ke port lain. Dengan demikian, SSH bisa memungkinkan Anda melakukan pekerjaan secara remote melalui koneksi internet dengan aman.

 Protokol dan Port:

  • TCP: SSH menggunakan protokol Transport Control Protocol (TCP) untuk menjamin pengiriman data yang terurut dan reliabel. TCP memastikan bahwa semua data yang dikirimkan tiba di tujuan dengan benar dan dalam urutan yang tepat.
  • Port 22: SSH secara default menggunakan port 22. Port ini adalah nomor yang digunakan untuk mengidentifikasi layanan SSH di jaringan. Ketika Anda menjalankan klien SSH, Anda akan menentukan alamat IP server dan port 22 sebagai tujuan koneksi.

 

Mengapa SSH Sangat Penting?

SSH (Secure Shell) adalah alat yang sangat krusial dalam dunia teknologi informasi, terutama karena kemampuannya untuk menjaga keamanan data saat melakukan akses jarak jauh ke sistem komputer. Berikut alasan mengapa SSH sangat penting:

  • Enkripsi Kuat: SSH menggunakan enkripsi yang sangat kuat untuk melindungi data yang dikirimkan dan diterima antara klien dan server. Hal ini berarti data sensitif seperti kata sandi, perintah, atau file yang ditransfer akan diacak menjadi kode yang tidak dapat dibaca oleh pihak yang tidak berwenang.
  • Autentikasi yang Aman: SSH menyediakan berbagai metode autentikasi yang kuat, seperti menggunakan kata sandi, kunci SSH (public-private key pair), atau mekanisme autentikasi berbasis token. Hal ini memastikan hanya pengguna yang sah yang dapat mengakses sistem.
  • Integritas Data: SSH juga menjamin integritas data yang ditransfer. Artinya, data yang diterima di sisi penerima akan sama persis dengan data yang dikirimkan dari pengirim. Hal ini mencegah terjadinya manipulasi data selama proses transmisi.
  • Fleksibelitas: SSH dapat digunakan untuk berbagai macam tugas, mulai dari menjalankan perintah di server jarak jauh, mentransfer file, hingga membuat terowongan (tunneling) untuk protokol lain.
  • Standar Industri: SSH adalah protokol yang sudah menjadi standar industri dan didukung oleh banyak sistem operasi dan aplikasi.

 

Contoh Skenario Penggunaan SSH:

  • Manajemen Server:
    • Administrator sistem menggunakan SSH untuk mengelola server-server mereka dari jarak jauh.
    • Tugas-tugas seperti menginstal software, mengkonfigurasi layanan, memantau kinerja server, dan mengatasi masalah dapat dilakukan dengan mudah melalui SSH.
  • Transfer File:
    • SSH dapat digunakan untuk mentransfer file dengan aman antara komputer lokal dan server.
    • Protokol seperti SFTP (Secure File Transfer Protocol) yang berjalan di atas SSH memungkinkan transfer file yang efisien dan aman.
  • Eksekusi Perintah Jarak Jauh:
    • SSH memungkinkan pengguna untuk menjalankan perintah di server jarak jauh seolah-olah mereka sedang bekerja langsung di server tersebut.
    • Hal ini sangat berguna untuk melakukan debugging, menjalankan skrip, atau mengotomatiskan tugas-tugas tertentu.
  • Pembuatan Terowongan (Tunneling):
    • SSH dapat digunakan untuk membuat terowongan yang aman untuk protokol lain seperti HTTP atau FTP.
    • Hal ini memungkinkan Anda untuk mengakses layanan yang tidak aman melalui koneksi SSH yang aman.

 

Cara Kerja SSH

Cara kerja dari SSH adalah dengan memakai model client server. Oleh sebab itu, klien SSH harus melakukan koneksi ke SSH server terlebih dahulu. Setelah itu, SSH klien akan memproses koneksi dengan menggunakan kunci kriptografi. Ini bertujuan agar verifikasi dan identifikasi data pengguna berhasil tersalurkan ke SSH server.

Selama kunci digunakan oleh SSH client dan ternyata tidak sama dengan server milik SSH, maka koneksi tidak akan terhubung. SSH server akan terhubung dengan SSH client, jika Anda menggunakan kunci yang sama dan sudah melewati berbagai proses verifikasi yang tersedia.

Setelah itu, koneksi akan terhubung karena enkripsi yang memakai hashing algorithm dan symmetric encryption.  Proses ini berfungsi untuk memastikan rahasia data pengguna masih utuh saat diberikan kepada klien. Kemudian, SSH client dan SSH server akan melakukan negosiasi koneksi, apakah koneksi sudah aman atau belum. Setelah berhasil, pengguna bisa masuk ke dalam server onndengan mudah untuk melakukan pertukaran data melalui enkripsi.

 

Isntalasi dan Konfigurasi SSH 

Instalasi OpenSSH pada Sistem Linux

OpenSSH adalah implementasi SSH yang paling umum digunakan pada sistem Linux. Untuk menginstalnya, Anda dapat menggunakan manajer paket yang sesuai dengan distribusi Linux Anda.

Contoh: " sudo apt install openssh-server "

Setelah instalasi selesai, layanan SSH akan secara otomatis dimulai. Anda dapat memeriksa statusnya dengan perintah: " sudo systemctl status sshd "

 

Konfigurasi File sshd_config

File konfigurasi utama SSH adalah sshd_config. File ini terletak di direktori /etc/ssh/. Anda dapat mengedit file ini untuk menyesuaikan pengaturan SSH sesuai kebutuhan.

 Beberapa konfigurasi penting yang perlu diperhatikan:

  • Port: Secara default, SSH menggunakan port 22. Anda dapat mengubahnya untuk meningkatkan keamanan:
    Port 2222
    
  • PermitRootLogin: Menonaktifkan login root secara langsung melalui SSH dianggap sebagai praktik keamanan yang baik:
    PermitRootLogin no
    
  • PasswordAuthentication: Jika memungkinkan, nonaktifkan autentikasi berbasis kata sandi dan gunakan autentikasi berbasis kunci:
    PasswordAuthentication no
    
  • ChallengeResponseAuthentication: Aktifkan untuk menambahkan lapisan keamanan tambahan:
    ChallengeResponseAuthentication yes
  • RSAAuthentication: Aktifkan autentikasi menggunakan kunci RSA:
    RSAAuthentication yes
    
  • PubkeyAuthentication: Aktifkan autentikasi menggunakan kunci publik:
    PubkeyAuthentication yes
    
  • AuthorizedKeysFile: Tentukan file yang berisi kunci publik pengguna yang diizinkan untuk login:
    AuthorizedKeysFile  %h/.ssh/authorized_keys
    

Contoh konfigurasi sshd_config:

# /etc/ssh/sshd_config

Port 2222
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys

Setelah melakukan perubahan, restart layanan SSH:

 sudo systemctl restart sshd

 

Membuat Pasangan Kunci SSH

Untuk menggunakan autentikasi berbasis kunci, Anda perlu membuat pasangan kunci SSH. Anda dapat melakukannya dengan perintah ssh-keygen:

ssh-keygen -t rsa

Perintah ini akan membuat dua file:

  • id_rsa: Kunci privat (simpan dengan aman)
  • id_rsa.pub: Kunci publik (digunakan untuk otentikasi)

Menyalin Kunci Publik ke Server

Salin kunci publik ke file authorized_keys di server. Anda dapat menggunakan perintah ssh-copy-id:

ssh-copy-id user@server_ip 

Ganti user@server_ip dengan informasi login ke server Anda.

Konfigurasi Tambahan

  • Firewall: Pastikan firewall Anda mengizinkan lalu lintas SSH pada port yang telah Anda konfigurasi.
  • Fail2ban: Gunakan Fail2ban untuk memblokir IP yang melakukan percobaan login gagal berulang kali.
  • Disable Password Hash: Nonaktifkan penyimpanan hash kata sandi untuk meningkatkan keamanan.
  • Limit Login Attempts: Batasi jumlah percobaan login yang diizinkan dalam waktu tertentu.

 

Troubleshooting Masalah SSH

 1. Kesalahan Otentikasi

  • Periksa kata sandi atau kunci: Pastikan Anda menggunakan kata sandi atau kunci privat yang benar. Ingat, perbedaan huruf besar-kecil sangat penting.
  • Cek format kunci: Pastikan kunci publik Anda di format yang benar dan telah ditambahkan ke file authorized_keys di server.
  • Nonaktifkan autentikasi berbasis kata sandi: Jika Anda menggunakan kunci SSH, nonaktifkan autentikasi berbasis kata sandi di sshd_config untuk menghindari kesalahan.
  • Uji koneksi dengan ssh-copy-id: Gunakan perintah ssh-copy-id user@server_ip untuk menyalin kunci publik Anda ke server dan menguji koneksi secara otomatis.
2. Koneksi Timeout
  • Periksa konektivitas jaringan: Pastikan Anda terhubung ke internet dan server yang Anda coba akses dapat dijangkau.
  • Cek firewall: Pastikan firewall di komputer Anda dan di server tidak memblokir port SSH.
  • Verifikasi alamat IP dan port: Pastikan Anda menggunakan alamat IP dan nomor port yang benar.
  • Tingkatkan timeout: Jika koneksi lambat, coba tingkatkan nilai ConnectTimeout di konfigurasi klien SSH Anda.

3. Masalah dengan Kunci SSH

  • Periksa izin file: Pastikan file kunci Anda memiliki izin yang benar. Kunci privat harus dimiliki oleh pengguna dan tidak dapat dibaca oleh orang lain.
  • Buat pasangan kunci baru: Jika Anda mencurigai ada masalah dengan kunci yang ada, buat pasangan kunci baru.
  • Hapus kunci host yang tidak dikenal: Jika Anda mendapatkan pesan kesalahan tentang kunci host yang tidak dikenal, hapus entri yang terkait dari file ~/.ssh/known_hosts.

4. Kesalahan Lainnya

  • Periksa log SSH: Log SSH dapat memberikan informasi berharga tentang penyebab masalah. Cari file log SSH di direktori /var/log/secure atau /var/log/auth.log.
  • Cek konfigurasi sshd_config: Pastikan tidak ada kesalahan konfigurasi di file sshd_config di server.
  • Periksa status layanan SSH: Pastikan layanan SSH berjalan dengan benar di server menggunakan perintah systemctl status sshd.
  • Perbarui OpenSSH: Pastikan Anda menggunakan versi OpenSSH terbaru untuk mendapatkan perbaikan bug dan peningkatan keamanan.

Tips Tambahan

  • Gunakan alat bantu: Ada banyak alat bantu yang dapat membantu Anda mendiagnosis masalah SSH, seperti ssh-keyscan untuk memindai kunci host, dan ssh-add untuk menambahkan kunci ke agen autentikasi SSH.
  • Cari di internet: Jika Anda masih mengalami masalah, coba cari solusi di forum atau dokumentasi OpenSSH.
  • Minta bantuan: Jika Anda tidak dapat menemukan solusi sendiri, mintalah bantuan dari komunitas atau profesional.

Contoh Pesan Kesalahan dan Solusinya

  • "Permission denied (publickey,password)": Periksa izin file kunci, pastikan kata sandi atau kunci benar, dan pastikan autentikasi berbasis kunci diaktifkan di server.
  • "Connection timed out": Periksa konektivitas jaringan, firewall, dan alamat IP/port.
  • "No such file or directory": Pastikan path ke file kunci yang Anda gunakan benar.

 

Saran untuk Pemula SSH

  • Mulai dengan dasar: Pelajari konsep dasar SSH seperti kunci publik-privat, autentikasi, dan konfigurasi.
  • Gunakan distribusi Linux: Banyak distribusi Linux sudah dilengkapi dengan OpenSSH yang terinstal secara default.
  • Konfigurasi yang aman: Atur konfigurasi SSH dengan hati-hati, terutama untuk port, autentikasi, dan izin file.
  • Gunakan kunci SSH: Hindari menggunakan kata sandi untuk autentikasi. Kunci SSH jauh lebih aman.
  • Perbarui sistem: Selalu perbarui sistem operasi dan aplikasi SSH Anda untuk mendapatkan perbaikan keamanan terbaru.
  • Monitor log: Periksa log SSH secara teratur untuk mendeteksi aktivitas yang mencurigakan.
  • Gunakan alat bantu: Ada banyak alat bantu yang dapat membantu Anda mengelola SSH dengan lebih mudah, seperti ssh-keygen, ssh-copy-id, dan ssh-add.

Best Practices

  • Prinsip minimal akses: Berikan hanya izin yang diperlukan kepada pengguna.
  • Batasi login root: Hindari login sebagai root secara langsung. Gunakan akun pengguna dengan hak akses sudo.
  • Gunakan firewall: Konfigurasi firewall untuk memblokir lalu lintas yang tidak perlu.
  • Pertimbangkan menggunakan 2FA: Tambahkan autentikasi dua faktor untuk meningkatkan keamanan.
  • Pelajari tentang SSH tunneling: SSH tunneling dapat digunakan untuk mengamankan koneksi ke layanan lain.

Kesimpulan

SSH adalah alat yang sangat kuat dan fleksibel untuk mengelola sistem jarak jauh. Dengan mengikuti praktik keamanan terbaik, Anda dapat memanfaatkan semua manfaat yang ditawarkan oleh SSH sambil meminimalkan risiko keamanan.

 

 

 

 

 

 

 

 

 

 Referensi

https://csirt.patikab.go.id/portal/berita/47#:~:text=Secure%20Shell%20atau%20dikenal%20sebagai,sistem%20komputer%20remote%20secara%20aman.

 https://blog.myorbit.id/technology/tentang-ssh-pengertian-fungsi-cara-kerja-dan-contohnya#:~:text=Secure%20Shell%20(SSH)%20adalah%20sebuah,mengontrol%20perangkat%20dari%20jarak%20jauh.

 https://www.exabytes.co.id/blog/transmission-control-protocol/#:~:text=Protokol%20ini%20memastikan%20bahwa%20data,yang%20tepat%2C%20dan%20tanpa%20adanya

https://www.hostinger.co.id/tutorial/cara-ganti-port-ssh-di-vps#:~:text=Secara%20default%2C%20SSH%20berjalan%20pada,menjadi%20target%20serangan%20brute%2Dforce.

 

 

 

0 komentar:

Posting Komentar