Cara Meningkatkan Keamanan akses SSH dengan OpenSSH Server Hardening

Cara Meningkatkan Keamanan akses SSH dengan OpenSSH Server Hardening

Apa itu OpenSSH Server Hardening?

SSH merupakan sebuah protokol administrasi remote yang memperbolehkan pengguna untuk mengakses dan mengontrol server mereka dalam jaringan secara aman. 

Secure Shell (SSH) dirancang sebagai pengganti Telnet dan Protokol Remote Shell lainnya yang tidak aman seperti RSH Berkeley dan Protokol REXEC, yang mengirim informasi, terutama kata sandi dalam bentuk teks, yang menyebabkan rentan terhadap intersepsi dan menggunakan penganalisa paket.

Teknik Hardening adalah proses pengerasan suatu lapisan yang lembut sehingga lapisan tersebut menjadi lebih kuat dan lebih tahan terhadap kerusakan. Prinsip itu juga yang digunakan untuk menerapkan hardening server yang berpengaruh terhadap keamanan server. OpenSSH Server Hardening ini dilakukan supaya SSH server bisa terlidungi dari ancaman-ancaman orang-orang yang tidak bertanggung jawab, yang mungkin saja berniat untuk mengambil data-data penting yang ada di server.

Artikel ini menjelaskan cara meningkatkan security akses Server SSH menggunakan fitur OpenSSH Server Hardening. Anda harus mengontrol aktivitas client yang mengakses SSH, mengatur tingkat kepercayaan koneksi, melakukan blacklist pengguna tertentu yang melakukan pelanggaran, dan menerapkan interval akses untuk melindungi server dari serangan SSH umum.

1. Kontrol Akses SSH (Secure Shell)

Di bagian ini, terapkan lapisan pertama pertahanan SSH dengan menerapkan kontrol pada proses autentikasi. Dengan mengatur cara pengguna dapat masuk, dan berapa lama sesi tidak aktif, Anda dapat melindungi server Anda dari serangan brute force SSH. Kontrol akses pengguna ke server seperti yang dijelaskan dalam langkah-langkah berikut.

Menggunakan editor teks seperti Nano atau Vim, edit file konfigurasi SSH utama

sudo nano /etc/ssh/sshd_config
  1. Generate SSH Key Pairs
    Utility ssh-keygen menghasilkan kunci berdasarkan algoritma yang berbeda termasuk RSA, DSA, ECDSA, and ED25519. RSA keys dapat lebih aman dengan kunci yang lebih panjang dari 2048 bits. 
    • Generate ED25519 key pair pada komputer lokal anda.
      ssh-keygen -t ed25519 -f /path/to/key/file
    • Copy public key yang sudah digenerate
      cat ~/.ssh/id_rsa.pub
    • Untuk menambah SSH key ke authorized keys, buat file .ssh di server anda
      mkdir -p ~/.ssh
    • Gunakan echo, tambahkan  ~/.ssh/authorized_keys , seperti dibawah ini
      echo "your-public-key" >> ~/.ssh/authorized_keys
    • Tambahkan permissions pada file dibawah ini.
      sudo chmod 600 ~/.ssh/authorized_keys
    • Restart SSH daemon untuk menyimpan perubahan
      sudo systemctl restart sshd
  2. Disable Password Logins
    Dibandingkan dengan kunci SSH, penyerang menggunakan brute-force untuk menyerang server SSH menggunakan kata sandi. Nonaktifkan login dengan password untuk semua pengguna.
    • Untuk menonaktifkan login dengan password dan hanya menerima SSH keys. Ganti baris konfigurasi seperti dibawah ini:
      PasswordAuthentication no
    • Untuk memperketat pengaturan server, nonaktifkan metode otentikasi lainnya seperti di bawah ini
      ChallengeResponseAuthentication no
      KerberosAuthentication no
      GSSAPIAuthentication no
  3. Disable Root Login
    PermitRootLogin no
  4. Ganti Default SSH Port 22 dengan port lain
    Port 9040
  5. Setting Idle Timeouts
    Untuk mencegah sesi SSH dibiarkan terbuka terlalu lama, Anda dapat mengatur waktu idle agar koneksi otomatis terputus jika tidak ada aktivitas.Tambahkan atau ubah konfigurasi berikut di file /etc/ssh/sshd_config:
    ClientAliveInterval 300
    ClientAliveCountMax 2
    
    Penjelasan:
    • ClientAliveInterval 300 berarti server akan mengecek aktivitas setiap 300 detik (5 menit).
    • ClientAliveCountMax 2 artinya jika tidak ada respons dua kali berturut-turut, koneksi akan diputus.

2. Limit Login Attempts

Serangan brute force SSH biasanya dilakukan dengan mencoba ribuan kombinasi username dan password. Untuk mengurangi risiko ini, Anda perlu membatasi percobaan login.

  1. Reduce the Login Grace Period
    Atur waktu maksimum untuk proses login agar lebih singkat:
    LoginGraceTime 30
    
    Dengan konfigurasi ini, pengguna hanya memiliki waktu 30 detik untuk autentikasi sebelum koneksi diputus.
  2. Limit the Number of Unauthenticated Connections
    Batasi jumlah koneksi SSH yang belum terautentikasi dengan menambahkan:
    MaxStartups 10:30:60
    
    Penjelasan :
    • Maksimal 10 koneksi tanpa autentikasi diperbolehkan
    • Probabilitas penolakan meningkat setelah 30 koneksi
    • Semua koneksi baru ditolak setelah 60 koneksi
  3. Limit the Number of Active Sessions per User
    Untuk mencegah satu user membuka terlalu banyak sesi SSH:
    MaxSessions 2
    

    Pengaturan ini sangat berguna pada server produksi agar lebih stabil dan aman.

3. Grant Akses SSH untuk Otorisasi User

Agar lebih aman, sebaiknya SSH hanya bisa diakses oleh user tertentu saja.

  1. Tambahkan konfigurasi berikut:
    AllowUsers admin serveruser
    
  2. Atau jika ingin membatasi berdasarkan grup:
    AllowGroups sshusers
    

    Dengan cara ini, user lain di server tidak bisa mengakses SSH meskipun memiliki akun sistem.

4. Batasi Akses User SSH

Selain whitelist, Anda juga bisa memblokir user tertentu secara langsung:

DenyUsers test guest demo

Metode ini efektif untuk memblokir akun tidak aktif atau akun yang dicurigai sering melakukan pelanggaran.

5.Tambahkan Display Warning Banners

Menampilkan banner peringatan saat login SSH dapat membantu aspek legal dan keamanan.

  1. Buat File Banner
    sudo nano /etc/ssh/banner
    
    Isi contoh banner :
    PERINGATAN!
    Akses ke server ini hanya diperbolehkan untuk pengguna yang berwenang.
    Segala aktivitas akan dipantau dan dicatat.
    
  2. Aktifkan Banner di SSH
    Tambahkan konfigurasi berikut di sshd_config:
    Banner /etc/ssh/banner
    

    Banner ini akan muncul sebelum proses login SSH dimulai.

6. Menginstal Aplikasi Firewall

Firewall adalah lapisan keamanan wajib untuk server SSH.

  1. Contoh Menggunakan UFW (Ubuntu)
    • Aktifkan firewall:
      sudo ufw enable
      
    • Izinkan port SSH yang sudah diganti:
      sudo ufw allow 9040/tcp
      
    • Cek status firewall:
      sudo ufw status
      
      Pastikan hanya port yang dibutuhkan saja yang terbuka untuk mengurangi risiko serangan.

Penutup

Penerapan OpenSSH Server Hardening merupakan langkah krusial untuk meningkatkan keamanan server secara menyeluruh. Dengan membatasi akses pengguna, menggunakan autentikasi berbasis kunci, menonaktifkan login root dan password, mengatur batas percobaan login, serta memanfaatkan firewall dan banner peringatan, server akan lebih terlindungi dari serangan seperti brute force atau akses tidak sah. Keamanan server bukan hal yang statis, sehingga konfigurasi ini perlu ditinjau dan diperbarui secara rutin, didukung dengan monitoring dan pembaruan perangkat lunak. Dengan pendekatan yang konsisten, risiko serangan dapat diminimalkan, menjaga data penting tetap aman, dan memastikan server beroperasi secara stabil.


Artikel Lain

WhatsApp Kami

Support : +6282138153600

Admin Finance : +6285191239466