TDCTF Academy Logo TDCTF ACADEMY

SSH (Secure Shell)

Definisi dan Fungsi

SSH (Secure Shell) adalah protokol jaringan kriptografi yang menyediakan saluran aman (secure channel) untuk berkomunikasi antara dua perangkat melalui jaringan yang tidak aman. Dikembangkan sebagai pengganti protokol remote shell lama seperti Telnet, rlogin, dan rsh yang mengirimkan data dalam bentuk teks terbuka (plaintext).

SSH memiliki tiga fungsi utama:

1. Remote Access (Akses Jarak Jauh)

Fungsi paling fundamental - SSH memungkinkan pengguna masuk ke shell sistem jarak jauh dengan aman. Administrasi server Linux/Unix hampir selalu dilakukan melalui SSH. Sintaks dasarnya:

Setelah terautentikasi, pengguna mendapat shell interaktif untuk menjalankan perintah seolah-olah duduk langsung di depan server.

2. File Transfer

SSH menyediakan dua mekanisme transfer file:

  • SCP (Secure Copy) - Menyalin file antar host dengan perintah scp.

    scp file.txt [email protected]:/home/user/
  • SFTP (SSH File Transfer Protocol) - Protokol transfer file interaktif yang menyediakan fungsi like ls, get, put, rm melalui koneksi SSH. Klien SFTP dapat digunakan sebagai pengganti FTP yang tidak aman.

3. Port Forwarding / Tunneling

SSH dapat membuat tunnel terenkripsi untuk meneruskan lalu lintas dari satu port ke port lain. Tiga jenis port forwarding:

  • Local forwarding: Meneruskan port lokal ke host tujuan melalui server SSH.

    ssh -L 8080:internal.server:80 user@bastion-host
  • Remote forwarding: Meneruskan port dari server SSH ke host lokal.

    ssh -R 2222:localhost:22 user@public-server
  • Dynamic forwarding: Membuat SOCKS proxy yang meneruskan lalu lintas secara dinamis.

    ssh -D 1080 user@remote-server

Port forwarding sangat berguna untuk mengakses layanan internal yang tidak terekspos ke internet atau melewati firewall.

Cara Kerja SSH

SSH menggunakan arsitektur client-server dengan tiga lapisan protokol:

1. Transport Layer

Menetapkan koneksi TCP di port 22, melakukan negosiasi algoritma enkripsi (AES, ChaCha20, 3DES), algoritma key exchange (ECDH, DH), dan algoritma Message Authentication Code (HMAC). Semua komunikasi setelah tahap ini dienkripsi secara simetris menggunakan session key yang dihasilkan.

2. Authentication Layer

Setelah saluran aman terbentuk, server mengotentikasi klien. Ini melibatkan pertukaran host key server untuk mencegah serangan man-in-the-middle (MITM). Klien memverifikasi host key melalui fingerprint yang disimpan di ~/.ssh/known_hosts.

3. Connection Layer

Mengelola multiple channel dalam satu koneksi SSH. Setiap channel dapat digunakan untuk sesi shell, eksekusi perintah tunggal, atau tunnel port forwarding. Multiplexing ini memungkinkan fitur seperti X11 forwarding dan agent forwarding.

Alur lengkap koneksi SSH:

  1. Klien membuka koneksi TCP ke port 22 server.
  2. Server mengirimkan host key publik dan daftar algoritma yang didukung.
  3. Kedua pihak melakukan key exchange asimetris (menggunakan algoritma Diffie-Hellman atau Elliptic Curve Diffie-Hellman) untuk menghasilkan session key bersama.
  4. Semua komunikasi selanjutnya dienkripsi secara simetris menggunakan session key.
  5. Klien mengotentikasi diri (password atau kunci publik).
  6. Sesuai permintaan, server membuka channel shell, eksekusi, atau tunnel.

Authentication Methods

1. Password Authentication

Metode paling sederhana: pengguna memasukkan password yang diverifikasi server. Meskipun nyaman, metode ini rentan terhadap serangan brute-force jika tidak dikombinasikan dengan pembatasan (rate limiting). Sebaiknya digunakan hanya di jaringan terpercaya atau dengan fail2ban.

2. Key-Based Authentication (Public Key)

Metode yang lebih aman menggunakan pasangan kunci kriptografis:

  1. Pengguna membuat pasangan kunci dengan ssh-keygen -t ed25519.
  2. Kunci publik (id_ed25519.pub) disalin ke server ke file ~/.ssh/authorized_keys.
  3. Kunci privat (id_ed25519) disimpan aman di sisi klien.
  4. Saat login, server menantang klien untuk membuktikan kepemilikan kunci privat - tanpa mengirimkannya melalui jaringan.

Algoritma kunci yang direkomendasikan: Ed25519 (performa tinggi, keamanan kuat, ukuran kecil) atau RSA 4096-bit. Hindari DSA dan RSA 1024-bit yang sudah dianggap tidak aman.

SSH Hardening Tips

Konfigurasi server SSH (/etc/ssh/sshd_config) harus diperketat untuk mengurangi permukaan serangan:

# Nonaktifkan login root
PermitRootLogin no

# Batasi pengguna yang diizinkan login SSH
AllowUsers admin operator

# Nonaktifkan autentikasi password, hanya kunci
PasswordAuthentication no
ChallengeResponseAuthentication no

# Gunakan hanya protokol 2
Protocol 2

# Ubah port default (opsional, mengurangi noise log)
Port 2222

# Batasi percobaan login
MaxAuthTries 3
MaxSessions 2

# Nonaktifkan X11 forwarding jika tidak diperlukan
X11Forwarding no

# Logging verbose
LogLevel VERBOSE

# Client alive check
ClientAliveInterval 300
ClientAliveCountMax 2

Setelah perubahan, restart SSH: systemctl restart sshd.

Praktik Keamanan Tambahan

  • Fail2ban: Blokir alamat IP setelah gagal autentikasi berulang.
  • Two-Factor Authentication (2FA): Kombinasikan kunci SSH dengan Google Authenticator (PAM).
  • SSH Agent Forwarding: Hati-hati; hanya aktifkan jika benar-benar diperlukan karena dapat disalahgunakan oleh pengguna dengan akses root di server tujuan.
  • Audit log SSH: Pantau /var/log/auth.log untuk aktivitas mencurigakan.
  • SSH Certificate Authority (CA): Gunakan sertifikat SSH yang ditandatangani CA untuk manajemen akses terpusat, daripada mendistribusikan kunci publik satu per satu.

SSH adalah fondasi administrasi server modern. Dengan konfigurasi yang tepat, SSH menyediakan akses jarak jauh yang aman, fleksibel, dan andal untuk berbagai kebutuhan operasional.

PADA HALAMAN INI