SSH adalah salah satu metode paling umum untuk mengakses server jarak jauh. SSH juga merupakan salah satu alasan paling umum di balik server Linux yang disusupi.
Jangan salah paham. SSH (Secure Shell) adalah protokol yang cukup aman berdasarkan desain, tetapi ini tidak berarti Anda harus membiarkannya pada konfigurasi default.
Dalam artikel ini, saya akan membagikan beberapa cara praktis untuk meningkatkan keamanan SSH dan dengan demikian mengamankan server Linux Anda.
Tips untuk mengamankan SSH di server Linux

Misalnya, jika Anda menonaktifkan login SSH berbasis kata sandi, tidak perlu menggunakan solusi Fail2Ban.
Jika Anda mengetahui dasar-dasar SSH, Anda tahu bahwa file konfigurasi SSH terletak di /etc/ssh/sshd_config .
Sebagian besar tips pengerasan SSH yang disebutkan di sini akan mengharuskan Anda untuk mengedit file konfigurasi ini. Inilah sebabnya mengapa itu akan menjadi ide yang baik untuk membuat cadangan file asli. Anda juga harus memulai ulang layanan SSH jika Anda membuat perubahan apa pun pada file konfigurasi SSH.
Mari kita lihat langkah apa yang dapat Anda ambil untuk mengamankan server SSH Anda.
1. Nonaktifkan sandi kosong
Ya. Dimungkinkan untuk memiliki akun pengguna di Linux tanpa kata sandi apa pun. Jika pengguna tersebut mencoba menggunakan SSH, mereka juga tidak memerlukan kata sandi untuk mengakses server melalui SSH.
Itu adalah risiko keamanan. Anda harus melarang penggunaan kata sandi kosong. Dalam file /etc/ssh/sshd_config, pastikan untuk menyetel opsi PermitEmptyPasswords ke no.
PermitEmptyPasswords no
2. Ubah port SSH default
Port SSH default adalah 22 dan sebagian besar pemeriksaan skrip serangan hanya ditulis di sekitar port ini. Mengubah port SSH default akan menambah lapisan keamanan tambahan karena jumlah serangan (yang masuk ke port 22) dapat berkurang.
Cari informasi port di file konfigurasi dan ubah ke sesuatu yang berbeda:
Port 2345
Anda harus mengingat atau mencatat nomor port jika tidak, Anda juga tidak dapat mengakses server Anda dengan SSH.
3. Nonaktifkan login root melalui SSH
Sejujurnya, menggunakan server sebagai root itu sendiri harus dilarang. Ini berisiko dan tidak meninggalkan jejak audit. Mekanisme seperti sudo hanya ada karena alasan ini.
Jika Anda memiliki pengguna sudo yang ditambahkan di sistem Anda, Anda harus menggunakan pengguna sudo itu untuk mengakses server melalui SSH alih-alih root.
Anda dapat menonaktifkan login root dengan memodifikasi opsi PermitRootLogin dan menyetelnya sebagai no:
PermitRootLogin no
4. Nonaktifkan protokol ssh 1
Ini jika Anda menggunakan distribusi Linux yang lebih lama. Beberapa versi SSH yang lebih lama mungkin masih memiliki protokol SSH 1 yang tersedia. Protokol ini memiliki kerentanan yang diketahui dan tidak boleh digunakan.
Versi SSH yang lebih baru secara otomatis mengaktifkan protokol SSH 2 tetapi tidak ada salahnya untuk memeriksanya kembali.
Protocol 2
5. Konfigurasikan interval waktu tunggu idle
Interval waktu tunggu idle adalah jumlah waktu koneksi SSH dapat tetap aktif tanpa aktivitas apa pun. Sesi menganggur seperti itu juga merupakan risiko keamanan. Sebaiknya konfigurasikan interval waktu tunggu idle.
Interval batas waktu dihitung dalam detik dan secara default adalah 0. Anda dapat mengubahnya menjadi 300 untuk mempertahankan interval waktu tunggu lima menit.
ClientAliveInterval 300
Setelah interval ini, server SSH akan mengirim pesan hidup ke klien. Jika tidak mendapat tanggapan, koneksi akan ditutup dan pengguna akhir akan logout.
Anda juga dapat mengontrol berapa kali ia mengirim pesan hidup sebelum memutuskan sambungan:
ClientAliveCountMax 2
6. Izinkan akses SSH hanya untuk pengguna tertentu
Dalam hal keamanan, Anda harus mengikuti prinsip dengan hak istimewa paling rendah. Jangan memberikan hak jika tidak diperlukan.
Anda mungkin memiliki beberapa pengguna di sistem Linux Anda. Apakah Anda perlu mengizinkan akses SSH ke semuanya? Mungkin tidak.
Pendekatan di sini adalah mengizinkan akses SSH ke beberapa pengguna yang dipilih dan dengan demikian membatasi untuk semua pengguna lain.
AllowUsers User1 User2
Anda juga dapat menambahkan pengguna yang dipilih ke grup baru dan hanya mengizinkan grup ini untuk mengakses SSH.
AllowGroups ssh_group
Anda juga dapat menggunakan DenyUsers dan DenyGroups untuk menolak akses SSH ke pengguna dan grup tertentu.
7. Nonaktifkan Penerusan X11
Server tampilan X11 atau X adalah kerangka kerja dasar untuk lingkungan grafis. Penerusan X11 memungkinkan Anda menggunakan aplikasi GUI melalui SSH.
Pada dasarnya, klien menjalankan aplikasi GUI di server tetapi berkat penerusan X11, saluran dibuka antara mesin dan aplikasi GUI ditampilkan pada mesin klien.
Protokol X11 tidak berorientasi pada keamanan. Jika Anda tidak membutuhkannya, Anda harus menonaktifkan penerusan X11 di SSH.
X11Forwarding no
8. Mengurangi serangan brute force secara otomatis
Untuk menggagalkan serangan bruteforce SSH, Anda dapat menggunakan alat keamanan seperti Fail2Ban.
Fail2Ban memeriksa upaya login yang gagal dari alamat IP yang berbeda. Jika upaya buruk ini melewati ambang batas dalam interval waktu yang ditetapkan, IP akan dilarang mengakses SSH untuk jangka waktu tertentu.
Anda dapat mengonfigurasi semua parameter ini sesuai keinginan dan kebutuhan Anda. Saya telah menulis panduan pengantar terperinci tentang penggunaan Fail2Ban yang harus Anda baca.
9. Nonaktifkan login SSH berbasis kata sandi
Tidak peduli seberapa banyak Anda mencoba, Anda akan selalu melihat upaya login yang buruk melalui SSH di server Linux Anda. Penyerang cerdas dan skrip yang mereka gunakan sering kali menangani pengaturan default alat seperti Fail2Ban.
Untuk menghilangkan serangan brute force yang konstan, Anda dapat memilih hanya login SSH berbasis kunci.
Dalam pendekatan ini, Anda menambahkan kunci publik dari sistem klien jarak jauh ke daftar kunci yang dikenal di server SSH. Dengan cara ini, mesin klien tersebut dapat mengakses SSH tanpa memasukkan kata sandi akun pengguna.
Ketika Anda memiliki pengaturan ini, Anda dapat menonaktifkan login SSH berbasis kata sandi. Sekarang, hanya mesin klien yang memiliki kunci SSH tertentu yang dapat mengakses server melalui SSH.
Sebelum Anda melakukan pendekatan ini, pastikan Anda telah menambahkan kunci publik Anda sendiri ke server dan berhasil. Jika tidak, Anda akan mengunci diri dan mungkin kehilangan akses ke server jarak jauh khususnya jika Anda menggunakan server cloud seperti Linode di mana Anda tidak memiliki akses fisik ke server.
Baca tutorial mendetail ini untuk mempelajari cara menonaktifkan otentikasi SSH berbasis kata sandi.
10. Otentikasi dua faktor dengan SSH
Untuk meningkatkan keamanan SSH, Anda juga dapat mengaktifkan otentikasi dua faktor. Dalam pendekatan ini, Anda menerima sandi satu kali di ponsel, email, atau melalui aplikasi autentikasi pihak ketiga.
Anda dapat membaca tentang menyiapkan autentikasi dua faktor dengan SSH di sini.
Kesimpulan
Anda dapat melihat semua parameter server SSH Anda menggunakan perintah ini:
sshd -T
Dengan cara ini, Anda dapat dengan mudah melihat apakah Anda perlu mengubah parameter apa pun untuk meningkatkan keamanan server SSH.
Anda juga harus terus memperbarui instalasi dan sistem SSH.
Saya telah membuat daftar beberapa cara praktis pengerasan SSH. Tentu saja, ada beberapa cara lain untuk mengamankan SSH dan server Linux Anda. Tidak mungkin mencantumkan semuanya dalam satu artikel.
Saya harap Anda menemukan tips ini bermanfaat. Beri tahu saya tips mana yang menurut Anda berguna.
Apakah Anda tahu tips tambahan tentang keamanan SSH? Mengapa tidak membagikannya kepada kami di bagian komentar?