Pelajari cara terhindar dari serangan brute-force dengan mengamankan koneksi SSH menggunakan Public Key Authentication dan Fail2Ban.
TL;DR / Ringkasan Cepat: Cara Mengamankan SSH Server Linux
- Ubah Port Default: Ganti port 22 ke port kustom (misal 22934) untuk memangkas 90% bot scanner otomatis.
- Matikan Login Root: Set
PermitRootLogin nodi/etc/ssh/sshd_config. - Gunakan Public Key: Pakai kunci Ed25519/RSA 4096-bit dan kirim via
ssh-copy-id. - Matikan Login Password: Set
PasswordAuthentication nountuk melumpuhkan brute force password. - Firewall & 2FA: Izinkan port baru di UFW (
ufw allow 22934/tcp) dan aktifkan Google Authenticator 2FA.
Download Script Automasi Hardening SSH Linux
Jalankan 1 perintah otomatis untuk konfigurasi Port Kustom, PermitRootLogin, PasswordAuth, UFW, dan Restart sshd secara aman.
Diagram Flow Alur Pertahanan Berlapis SSH Server Linux
Protokol SSH (Secure Shell) adalah pintu masuk utama (gateway) yang digunakan oleh sysadmin dan developer untuk mengelola server Linux secara jarak jauh (remote). Mengingat perannya yang sangat krusial dalam keamanan jaringan server, memahami cara mengamankan ssh server linux adalah syarat mutlak dalam tutorial programming dan tutorial keamanan ssh linux di infokoding untuk mencegah akses ilegal dan serangan pembobolan otomatis (Brute-Force Attack).
Jika Anda baru saja menyewa Cloud VPS (Ubuntu, Debian, atau Rocky Linux), server Anda akan langsung menjadi sasaran pemindaian bot dari seluruh dunia. Artikel ini membahas panduan taktis cara mengamankan ssh server linux secara berlapis sesuai Dokumentasi Resmi OpenSSH Manual dan Panduan Keamanan SSH Ubuntu Server Docs.
- Ubah Port Default (Cara Mengamankan SSH Server Linux)
- Matikan Akses Login Root
- Gunakan Public Key Authentication
- Nonaktifkan Password Authentication
- Batasi User yang Boleh Login
- Atur Waktu Idle (Timeout)
- Install & Konfigurasi Fail2Ban
- Tabel Ringkasan Parameter sshd_config (Cara Mengamankan SSH Server Linux)
- Konfigurasi UFW Firewall & 2FA
- Troubleshooting Solusi Terkunci (Locked Out)
- Tanya Jawab Ringkas (FAQ)
1. Ubah Port Default: Cara Mengamankan SSH Server Linux dari Bot Scanner
Langkah awal dalam cara mengamankan ssh server linux adalah memindahkan port layanan dari angka default (Port 22). Bot peretas memindai port 22 secara masif 24/7. Mengganti nomor port ke angka tidak standar (misal: 22934) memangkas lebih dari 90% lalu lintas serangan otomatis.
# Buka file konfigurasi SSH Daemon
sudo nano /etc/ssh/sshd_config
# Cari baris '#Port 22' dan ubah menjadi:
Port 22934
2. Matikan Akses Login Root (Mengamankan SSH Linux dari Serangan Langsung)
Pengguna root adalah superuser utama dengan hak akses tanpa batas. Jangan biarkan siapapun mencoba login SSH secara langsung sebagai root. Selalu gunakan akun biasa yang memiliki wewenang sudo untuk kebutuhan administratif.
# Di dalam file /etc/ssh/sshd_config ubah:
PermitRootLogin no
3. Gunakan Public Key Authentication (Metode Utama Cara Mengamankan SSH Server Linux)
Metode terbaik dalam cara mengamankan ssh server linux di infokoding adalah menggantikan otentikasi kata sandi dengan sepasang kunci kriptografi (Private Key di komputer lokal dan Public Key di server). Kunci RSA 4096-bit atau Ed25519 sangat tangguh dan mustahil ditebak.
# Di komputer LOKAL Anda, generate kunci Ed25519 atau RSA:
ssh-keygen -t ed25519
# Salin public key ke server Anda:
ssh-copy-id -p 22934 username_anda@alamat_ip_server
4. Nonaktifkan Password Authentication (Langkah Krusial Tutorial Keamanan SSH Linux)
Setelah pengujian login menggunakan Public Key berhasil, matikan fitur otentikasi kata sandi sepenuhnya. Ini adalah lapis proteksi paling krusial untuk melumpuhkan seluruh metode serangan brute-force password.
# Di dalam file /etc/ssh/sshd_config pastikan baris ini diubah:
PasswordAuthentication no
5. Batasi User yang Boleh Login (Filter Akses SSH Linux)
Jika server Linux Anda dihuni oleh banyak akun sistem, terapkan prinsip least privilege dengan mendaftarkan secara spesifik (whitelist) nama pengguna yang diizinkan melakukan sesi remote SSH.
# Tambahkan di bagian bawah file sshd_config
AllowUsers john jane developer
6. Atur Waktu Idle Timeout (Mengamankan SSH Linux dari Session Hijacking)
Mencegah peretasan akibat sesi SSH yang ditinggalkan tanpa diawasi di tempat umum. Konfigurasikan server agar memutus sesi otomatis jika tidak ada aktivitas dalam waktu 5 menit.
# Klien akan terputus otomatis setelah 300 detik (5 menit) idle
ClientAliveInterval 300
ClientAliveCountMax 0
Tips Restart Daemon: Setelah mengubah file /etc/ssh/sshd_config, uji sintaksis konfigurasi dengan perintah sudo sshd -t sebelum merestart layanan: sudo systemctl restart sshd.
7. Install & Konfigurasi Fail2Ban (Proteksi Otomatis Server Linux)
Fail2Ban bekerja dengan memantau log autentikasi secara real-time. Jika ditemukan percakapan pembobolan berulang dari IP yang sama, Fail2Ban akan otomatis menyuntikkan aturan pembatasan di iptables firewall untuk memblokir IP peretas secara sementara maupun permanen.
# Install di Ubuntu/Debian
sudo apt update && sudo apt install fail2ban -y
# Aktifkan layanan fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
8. Tabel Ringkasan Parameter sshd_config (Cara Mengamankan SSH Server Linux)
Berikut adalah tabel ringkasan parameter utama file /etc/ssh/sshd_config beserta nilai yang direkomendasikan dalam tutorial programming ini untuk cara mengamankan ssh server linux:
| Parameter sshd_config | Nilai Rekomendasi | Fungsi & Dampak Keamanan |
|---|---|---|
| Port | 22934 (Port Kustom) | Mengubah port SSH default (22) untuk menghindari 90% bot scanner otomatis. |
| PermitRootLogin | no | Menutup akses langsung login sebagai user root. |
| PasswordAuthentication | no | Mematikan otentikasi password, mewajibkan penggunaan Public Key (Ed25519/RSA). |
| AllowUsers | user1 user2 | Membatasi secara spesifik (whitelist) nama pengguna yang diizinkan masuk via SSH. |
| ClientAliveInterval | 300 | Memutus sesi secara otomatis setelah 300 detik (5 menit) tidak ada aktivitas (idle). |
| ClientAliveCountMax | 0 | Batas maksimum percobaan sinyal keaktifan sebelum koneksi benar-benar terputus. |
| KbdInteractiveAuthentication | yes | Mengaktifkan otentikasi 2FA/MFA Google Authenticator. |
9. Konfigurasi Tambahan: UFW Firewall & 2FA/MFA (Tutorial Keamanan SSH Linux)
Untuk memperkuat Tutorial Keamanan SSH Linux di tingkat enterprise, kombinasikan pertahanan di atas dengan UFW Firewall dan Multi-Factor Authentication (MFA) sesuai rekomendasi Ubuntu Server Security Docs:
A. Konfigurasi UFW Firewall
Sebelum Anda merestart daemon SSH dengan port kustom baru (misal port 22934), Anda wajib mengizinkan port tersebut pada firewall UFW agar koneksi Anda tidak terputus.
# Izinkan port kustom SSH pada UFW
sudo ufw allow 22934/tcp
# Aktifkan UFW Firewall
sudo ufw enable
sudo ufw status
B. Otentikasi Dua Faktor (2FA/MFA) dengan Google Authenticator
Menambahkan lapisan otentikasi 2FA mewajibkan masukan 6 digit kode dari aplikasi Google Authenticator/Authy setiap kali ada koneksi SSH masuk.
# 1. Install modul PAM Google Authenticator
sudo apt install libpam-google-authenticator -y
# 2. Jalankan konfigurasi interaktif untuk user Anda
google-authenticator
# 3. Edit /etc/pam.d/sshd dan tambahkan baris berikut di bagian atas:
auth required pam_google_authenticator.so
# 4. Di file /etc/ssh/sshd_config, pastikan opsi ini aktif:
KbdInteractiveAuthentication yes
10. Troubleshooting: Solusi Terkunci (Locked Out) dari SSH Server
Terkunci dari server sendiri adalah skenario yang sering dialami administrator. Berikut solusi taktis jika Anda mengalami situasi locked out:
1. Lupa Nomor Port Kustom SSH
Gunakan fitur VNC / Web Console / Serial Console yang disediakan oleh Dashboard Provider Cloud VPS Anda (DigitalOcean, Linode, AWS, Hetzner). Login melalui Web Console, lalu jalankan perintah sudo ss -tulpn | grep sshd atau periksa file grep Port /etc/ssh/sshd_config untuk melihat nomor port yang aktif.
2. Private Key Hilang / Rusak
Login via Web Console Provider, buat pasangan kunci baru di komputer lokal, lalu salin Public Key baru ke file ~/.ssh/authorized_keys di server. Jika perlu, aktifkan sementara PasswordAuthentication yes di /etc/ssh/sshd_config lewat Web Console untuk memulihkan akses lokal, kemudian matikan kembali setelah Private Key baru berhasil terpasang.
3. Port Terblokir oleh UFW Firewall
Jika Anda lupa membuka port kustom di UFW sebelum merestart SSH, buka Web Console Provider dan jalankan perintah: sudo ufw allow <port_kustom>/tcp && sudo ufw reload.
11. Tanya Jawab Ringkas (FAQ) Tutorial Keamanan SSH Linux
Apakah mengganti port 22 saja sudah cukup untuk cara mengamankan ssh server linux?
Tidak cukup. Mengubah port hanyalah langkah penyaringan awal (security through obscurity). Pemindai port seperti Nmap tetap dapat mendeteksi port SSH kustom Anda. Anda wajib mengombinasikannya dengan Public Key Authentication, mematikan PermitRootLogin, dan memasang Fail2Ban. Referensi lengkap dapat dibaca pada OpenSSH Official Manual.
Bagaimana cara mengatasi situasi terkunci (locked out) dari SSH server?
Gunakan fitur Web Console / VNC / Serial Console yang disediakan oleh Dashboard Provider VPS Anda (DigitalOcean, Hetzner, AWS). Melalui Web Console tersebut, Anda bisa memeriksa log, membuka aturan UFW firewall, atau menyuntikkan Public Key baru ke file ~/.ssh/authorized_keys.
Apa perbedaan utama antara kunci RSA dan Ed25519 untuk SSH?
Kunci Ed25519 didasarkan pada kurva eliptis yang jauh lebih aman, berukuran lebih ringkas, dan verifikasinya jauh lebih cepat dibanding RSA 4096-bit. Ed25519 adalah standar kriptografi yang sangat disarankan untuk mengamankan SSH Linux modern.
Mengapa perintah 'sudo ufw allow <port>/tcp' wajib dijalankan sebelum restart sshd?
Jika firewall UFW aktif dan Anda merestart daemon SSH dengan port kustom baru tanpa mengizinkan port tersebut terlebih dahulu di UFW, maka paket data ke port baru tersebut akan langsung diblokir oleh firewall dan Anda akan terputus dari server secara permanen.
Kesimpulan
Menerapkan panduan cara mengamankan ssh server linux dalam Tutorial Keamanan SSH Linux infokoding ini secara disiplin akan memproteksi aset data server Anda dari ancaman peretasan otomatis di internet. Kombinasi port kustom, kunci kriptografi, UFW firewall, dan Fail2Ban akan menjamin server Linux Anda aman, tangguh, dan siap beroperasi di lingkungan produksi.
Untuk melengkapi proteksi server secara menyeluruh, pelajari juga panduan cara mengamankan web server Apache dan seri tutorial administrasi server DevOps kami di infokoding.
Rusmawan Abdullah Sani
DevOps Engineer & Lead Developer at infokodingPraktisi pengembangan web, DevOps, dan keamanan jaringan server Linux dengan pengalaman mengelola infrastruktur cloud server berskala produksi. Berfokus membagikan panduan teknis mendalam tentang administrasi server, otomasi deployment, dan tutorial programming di infokoding.com.