Opsi OpenSSH dikendalikan melalui file /etc/ssh/sshd_config. Artikel ini menjelaskan 7 opsi default dalam file sshd_config yang harus Anda ubah.
Di sshd_config, baris yang dimulai dengan # adalah komentar. Untuk opsi yang menggunakan nilai default, file sshd_config berisi baris komentar dengan opsi dan nilai defaultnya.
Ini memudahkan kita, karena kita dapat melihat nama opsi OpenSSH dan nilai default tanpa harus mencari di tempat lain.
Misalnya, file sshd_config berisi baris komentar berikut. Ini menunjukkan bahwa opsi PubkeyAuthentication berisi “ya” sebagai nilai default.
$ grep -i pubkey /etc/ssh/sshd_config #PubkeyAuthentication yes
Jika Anda ingin mengubah ini, Anda harus menghapus komentar dan mengubah nilainya (dari ya menjadi tidak) seperti yang ditunjukkan di bawah ini.
$ vi /etc/ssh/sshd_config PubkeyAuthentication no
Saya menunjukkan di atas hanya sebagai contoh. Anda tidak perlu mengubah nilai default opsi PubkeyAuthentication, karena mengizinkan autentikasi kunci publik itu baik.
Anda tidak perlu mengubah nilai default apa pun di file sshd_config kecuali 7 opsi yang disebutkan dalam artikel ini.
1. Nonaktifkan Login Root (PermitRootLogin)
Secara default Anda dapat ssh ke server sebagai root. Yang terbaik adalah tidak mengizinkan root untuk login langsung ke server. Sebagai gantinya, Anda harus login ke sistem sebagai akun Anda dan kemudian lakukan 'su -' untuk login sebagai root.
Jika Anda memiliki beberapa sysadmin di organisasi Anda, dan jika mereka semua login ke server secara langsung sebagai root, Anda mungkin tidak tahu sysadmin mana yang login sebagai root. Sebaliknya, jika Anda menonaktifkan login sebagai root, sysadmin dipaksa untuk login sebagai akun mereka terlebih dahulu, sebelum mereka dapat melakukan ‘su -‘, ini membuat audit lebih mudah.
Tambahkan entri berikut ke sshd_config untuk menonaktifkan root untuk login ke server secara langsung.
$ vi /etc/ssh/sshd_config PermitRootLogin no
2. Izinkan Hanya Pengguna atau Grup Tertentu (AllowUsers AllowGroups)
Secara default siapa pun yang berhasil diautentikasi diizinkan untuk masuk. Sebagai gantinya, Anda dapat membatasi pengguna (atau grup) mana yang Anda izinkan untuk masuk ke sistem.
Ini berguna ketika Anda telah membuat beberapa akun pengguna di sistem, tetapi hanya ingin sedikit dari mereka yang masuk.
Ini juga berguna ketika Anda menggunakan NIS, openLDAP (atau sistem eksternal lainnya) untuk otentikasi. Setiap pengguna di perusahaan Anda mungkin memiliki akun di NIS, OpenLDAP, dll. Namun, pada server tertentu Anda hanya ingin sedikit dari mereka yang login. Misalnya, pada sistem produksi Anda hanya ingin sysadmin yang login.
Tambahkan entri berikut ke file sshd_config agar hanya pengguna tertentu yang dapat masuk ke sistem. Pada contoh di bawah ini hanya ramesh, john dan jason yang dapat login ke sistem ini. Nama pengguna harus dipisahkan dengan spasi.
$ vi /etc/ssh/sshd_config AllowUsers ramesh john jason
Tambahkan entri berikut ke file sshd_config untuk mengizinkan hanya pengguna yang termasuk dalam grup tertentu untuk masuk. Pada contoh di bawah ini hanya pengguna yang tergabung dalam sysadmin dan grup dba yang dapat masuk ke sistem.
$ vi /etc/ssh/sshd_config AllowGroups sysadmin dba
3. Tolak Pengguna atau Grup Tertentu (DenyUsers DenyGroups)
Alih-alih mengizinkan pengguna (atau grup tertentu), Anda juga dapat menolak pengguna atau grup tertentu.
Tambahkan entri berikut ke file sshd_config untuk menolak pengguna tertentu untuk masuk ke sistem. Pada contoh di bawah ini cvs, apache, jane tidak dapat login ke sistem ini. Nama pengguna harus dipisahkan dengan spasi.
$ vi /etc/ssh/sshd_config DenyUsers cvs apache jane
Tambahkan entri berikut ke file sshd_config untuk menolak pengguna yang termasuk dalam grup tertentu untuk masuk. Pada contoh di bawah ini pengguna yang tergabung dalam pengembang dan grup qa tidak dapat masuk ke sistem.
$ vi /etc/ssh/sshd_config DenyGroups developers qa
Catatan:Anda dapat menggunakan kombinasi dari semua perintah Allow dan Deny. Ini diproses dalam urutan ini:DenyUsers, AllowUsers, DenyGroups, dan terakhir AllowGroups
4. Ubah Nomor Port SSHD (Port)
Secara default ssh berjalan pada port 22. Sebagian besar penyerang akan memeriksa apakah server terbuka pada port 22, dan secara acak akan menggunakan brute force untuk login ke server menggunakan beberapa kombinasi username dan password.
Jika Anda mengubah port # menjadi sesuatu yang berbeda, orang lain perlu tahu persis port apa yang digunakan untuk login ke server menggunakan ssh. Contoh di bawah ini menggunakan port 222 untuk ssh.
$ vi /etc/ssh/sshd_config Port 222
Dari log Anda (/var/log/secure), jika Anda melihat banyak login yang tidak valid menggunakan ssh untuk akun yang tidak ada di sistem Anda, dari
alamat ip yang tidak Anda kenali, mungkin menjadi beberapa serangan brute force. Login ssh tidak valid semacam itu akan berhenti, jika Anda mengubah nomor port.
Harap dicatat bahwa ini menyebabkan sedikit ketidaknyamanan bagi tim Anda yang masuk ke sistem, karena mereka perlu mengetahui alamat ip dan nomor port.
5. Ubah Waktu Tenggang Masuk (LoginGraceTime)
Ketika Anda ssh ke server, Anda memiliki 2 menit untuk login. Jika Anda tidak berhasil masuk dalam waktu 2 menit, ssh akan terputus.
Waktu 2 menit untuk berhasil masuk terlalu lama. Anda harus mempertimbangkan untuk mengubahnya menjadi 30 detik, atau mungkin 1 menit.
Tambahkan entri berikut ke file sshd_config untuk mengubah waktu tenggang login dari 2 menit menjadi 1 menit.
$ vi /etc/ssh/sshd_config LoginGraceTime 1m
6. Batasi Antarmuka (Alamat IP) untuk Masuk (ListenAddress)
Jika Anda memiliki beberapa antarmuka di server yang dikonfigurasi ke alamat ip yang berbeda, Anda mungkin tidak ingin semua orang masuk ke server menggunakan semua alamat ip tersebut.
Mari kita asumsikan bahwa Anda memiliki 4 antarmuka berikut di server:
- eth0 – 192.168.10.200
- eth1 – 192.168.10.201
- eth2 – 192.168.10.202
- eth3 – 192.168.10.203
Secara default ssh akan mendengarkan semua alamat ip di atas. Jika Anda ingin pengguna login hanya menggunakan ip-address 200 dan 202, lakukan hal berikut di sshd_config
Anda$ vi /etc/ssh/sshd_config ListenAddress 192.168.10.200 ListenAddress 192.168.10.202
7. Putuskan sambungan SSH saat tidak ada aktivitas (ClientAliveInterval)
Setelah Anda berhasil masuk ke sistem, Anda mungkin ingin terputus saat tidak ada aktivitas setelah x jumlah menit. Ini pada dasarnya adalah waktu tunggu yang menganggur.
Di Bash, Anda dapat mencapai ini menggunakan variabel TMOUT.
Di OpenSSH, ini dapat dicapai dengan menggabungkan opsi ClientAliveCountMax dan ClientAliveInterval dalam file sshd_config.
- ClientAliveCountMax – Ini menunjukkan jumlah total pesan checkalive yang dikirim oleh server ssh tanpa mendapat respons apa pun dari klien ssh. Standarnya adalah 3.
- ClientAliveInterval – Ini menunjukkan batas waktu dalam hitungan detik. Setelah x jumlah detik, server ssh akan mengirim pesan ke klien meminta tanggapan. Default adalah 0 (server tidak akan mengirim pesan ke klien untuk diperiksa.).
Jika Anda ingin klien ssh keluar (batas waktu) secara otomatis setelah 10 menit (600 detik), ubah file sshd_config dan atur dua parameter berikut seperti yang ditunjukkan di bawah ini.
$ vi /etc/ssh/sshd_config ClientAliveInterval 600 ClientAliveCountMax 0