SSH adalah utilitas administrasi sistem umum untuk server Linux. SSH singkatan dari “Secure Socket Shell”, dan seperti namanya, protokol dibangun dengan mempertimbangkan keamanan. Banyak administrator server berasumsi bahwa SSH cukup aman, dan sebagian besar, mereka benar. SSH secara default memiliki fitur keamanan yang luar biasa, seperti enkripsi komunikasi untuk mencegah serangan man in the middle (MITM), dan juga host key verification untuk mengingatkan pengguna jika identitas server telah berubah sejak mereka terakhir masuk.
Beberapa teknik yang dapat dipertimbangkan untuk membantu meningkatkan keamanan SSH server Linux Anda adalah sebagai berikut:
Brute Force Protection
Teknik ini adalah salah satu teknik paling umum untuk meningkatkan keamanan SSH. Ini karena salah satu masalah keamanan paling umum yang dihadapi oleh administrator server yang menjalankan layanan SSH adalah serangan brute force dari bot otomatis. Bot akan mencoba menebak nama pengguna dan kata sandi di server, tetapi brute force protection dapat secara otomatis mencekal alamat IP mereka setelah sejumlah kegagalan yang ditetapkan.
Beberapa solusi perlindungan open source brute force yang umum adalah ConfigServer Firewall (CSF) dan Fail2Ban. CSF paling umum di server cPanel, karena memiliki plugin WHM.
Mengubah port SSH
Ini juga salah satu teknik paling banyak dipakai untuk meningkatkan keamanan SSH yaitu dengan mengubah nomor port SSH menjadi nomor port selain port default, 22 / tcp.
Perubahan ini relatif mudah dilakukan, misalnya, jika Anda ingin mengubah port SSH Anda dari 22 menjadi 2222, Anda hanya perlu memperbarui baris Port file sshd_config Anda seperti:
Port 2222
Akan tetapi perlu diperhatikan bahwa port 2222 adalah port “alternatif” yang cukup umum, jadi beberapa bot brute force mungkin masih mencoba port ini. Akan lebih baik untuk memilih nomor port apa pun hingga 65535 yang lebih acak, bahkan tidak harus mengandung angka 2, asal tidak digunakan oleh program lain di server.
Disable Root Login via SSH
Teknik umum lainnya adalah menonaktifkan akun pengguna root agar tidak masuk sekaligus melalui SSH, atau tanpa kunci SSH yang diotorisasi. Anda masih dapat memiliki akses root melalui SSH dengan memberikan hak istimewa “sudo” kepada salah satu pengguna terbatas Anda, atau menggunakan perintah “su” untuk beralih ke akun root dengan kata sandi.
Ini dapat dikonfigurasi dengan menyesuaikan pengaturan “PermitRootLogin” di file sshd_config Anda.
Untuk mengizinkan login root dengan kunci SSH saja, Anda akan mengubah baris menjadi:
PermitRootLogin without-password
Untuk sepenuhnya menolak login root melalui SSH, Anda akan mengubah baris menjadi:
PermitRootLogin no
Disable Password Authentication, gunakan key authentication
Hal pertama yang biasanya dilakukan kebanyakan orang ketika membuat kata sandi adalah membuatnya panjang, sulit ditebak, dan tidak berdasarkan kata-kata kamus. Kunci SSH dapat menggantikan otentikasi kata sandi dengan otentikasi dengan file kunci.
Kunci SSH sangat aman dibandingkan dengan kata sandi, karena mengandung banyak data acak. Jika Anda pernah melihat sertifikat SSL atau file kunci, kunci SSH terlihat mirip dengan ini. Ini adalah string karakter acak yang sangat besar.
Alih-alih mengetik kata sandi untuk masuk ke server SSH, Anda akan mengautentikasi menggunakan file kunci ini, dengan cara yang hampir sama dengan cara kerja sertifikat SSL di situs web.
Jika Anda ingin menonaktifkan otentikasi kata sandi, Anda dapat melakukannya dengan mengubah pengaturan PasswordAuthentication di file sshd_config, seperti:
PasswordAuthentication no
Pendekatan Hibrid: Izinkan kata sandi untuk IP tertenntu, tetapi izinkan kunci untuk semua IP.
Jika Anda ingin memproteksi akses SSH secara lebih aman, ada sejumlah pendekatan “hybrid” yang dapat Anda terapkan yang menggabungkan satu atau lebih teknik keamanan ini.
Salah satunya dengan memberikan sebagian besar keamanan menonaktifkan otentikasi kata sandi, sementara masih memungkinkan kenyamanan otentikasi kata sandi dalam banyak kasus.
Untuk melakukan ini, Anda ingin menambahkan baris berikut ke sshd_config Anda:
# Global Setting to disable password authentication
PasswordAuthentication no
[...]
# Override the Global Settings for IP Whitelist
# Place this section at the -end- of your sshd_config file.
Match address 1.2.3.4/32
PasswordAuthentication yes
Untuk contoh di atas, 1.2.3.4 adalah alamat IP yang masuk whitelist. Anda dapat mengulangi bagian konfigurasi tersebut untuk whitelist beberapa IP, dan Anda dapat menggunakan subnet lain seperti / 28, / 27, dll untuk membuat whitelist berbagai IP.
Ingat bahwa Match address
harus ditempatkan di bagian paling akhir dari file sshd_config Anda.