Kekhawatiran terbesar adalah orang yang masuk sebagai administrator komputer melalui SSH. Ini dapat dilakukan dengan brute force jika Anda memiliki kata sandi yang mudah ditebak.
Ada beberapa langkah-langkah keamanan yang dapat Anda ambil, di bawah ini adalah beberapa yang selalu saya ambil ketika menyiapkan server SSH dan beberapa tambahan.
Gunakan kata sandi yang kuat, yang terdiri dari setidaknya (katakanlah) 10 huruf besar dan kecil, angka, dan karakter lainnya.
Jail pengguna ke direktori home mereka. Pengguna yang dipenjara tidak akan dapat mengakses / mengedit file yang berada di luar direktori home mereka. Jadi pengguna Anda tidak akan dapat mengakses / mengedit file sistem utama. Banyak tutorial dapat ditemukan online tentang cara memenjarakan pengguna. Sebagian besar dari mereka menggunakan JailKit . Contoh tutorial semacam itu dapat ditemukan di sini . Atau, Anda juga dapat menggunakan ChrootDirectory
arahan asli OpenSSH-server . Contoh tutorial ini dapat ditemukan di sini .
Instal Fail2Ban . Fail2Ban adalah program yang memeriksa log otentikasi untuk entri yang salah. Ketika batas tertentu tercapai, itu menambah blok firewall untuk IP tertentu untuk waktu yang telah ditentukan. Ada juga beberapa tutorial online yang ditemukan online tentang cara mengatur Fail2Ban dengan SSH, contohnya adalah yang ini . Situs web Fail2Ban juga memiliki beberapa HOWTO yang bagus dan lengkap.
Nonaktifkan login root melalui SSH. Ini adalah pengguna yang memiliki akses ke hampir semua file di sistem Anda, oleh karena itu menonaktifkan login shell-nya. Dalam versi terbaru Ubuntu, pengguna root secara otomatis dinonaktifkan tetapi tidak ada salahnya untuk menonaktifkan akses SSH-nya. Ini dilakukan dengan mengedit file /etc/ssh/sshd_config
. ✝ Cari baris berikut dan pastikan tidak ada # di depannya.
#PermitRootLogin no
Gunakan port non-standar (Mis. Bukan 22) Ini dapat dilakukan melalui penerusan port di router Anda (Mis 16121 -> 22 bukannya 22 -> 22) atau dengan membuat daemon SSH mendengarkan pada port yang berbeda. Ini akan membuat layanan SSH Anda lebih mudah dideteksi oleh pengguna jahat. Ini dilakukan dengan mengedit file /etc/ssh/sshd_config
. ✝ Cari baris berikut dan ubah 22 ke port apa pun yang Anda inginkan. Jangan lupa untuk meneruskan port yang benar di router Anda sesudahnya.
Port 22
Jangan menggunakan kata sandi untuk masuk. Selain kata sandi, SSH juga memungkinkan masuk dengan menggunakan kunci pribadi. Ini berarti kunci disimpan di komputer Anda di mana Anda mengakses SSH dari mesin SSH. Ketika koneksi dicoba, klien SSH menggunakan kunci untuk masuk ke server alih-alih melalui otentikasi kata sandi. Kunci autentikasi jauh lebih kuat secara kriptografis daripada kata sandi dan karenanya tidak mudah diretas. Ada juga beberapa tutorial online yang ditemukan online tentang cara mengatur otentikasi berbasis kunci dengan SSH, contohnya adalah yang ini . (Jika Anda SSH dari windows dengan Putty, periksa tautan ini untuk Putty howto.) Setelah Anda mengatur otentikasi berbasis kunci, Anda dapat menonaktifkan otentikasi kata sandi dengan mengedit file /etc/ssh/sshd_config
. ✝ Cari baris berikut dan pastikan tidak ada # di depannya.
#PasswordAuthentication no
Secara opsional, seperti yang disebutkan oleh @ Linker3000 dalam komentarnya, Anda dapat mengatur terowongan VPN ke PC yang ingin Anda akses melalui SSH dan kemudian melarang akses jaringan non-lokal pada server SSH. Dengan begitu, tidak ada perangkat eksternal tanpa koneksi VPN yang dapat mengakses server SSH Anda. Ini dapat dilakukan dengan menolak SEMUA host dan kemudian hanya mengizinkan IP jaringan lokal untuk login. Ini dilakukan dengan mengedit /etc/hosts.deny
dan menambahkan yang berikut:
sshd: ALL
dan untuk /etc/hosts.allow
menambahkan yang berikut ini:
sshd: 192.168.1.*
di mana IP cocok dengan salah satu jaringan lokal Anda. *
adalah wildcard, sehingga semua alamat IP yang dimulai dengan 192.168.1.
akan diterima. Jika ini tidak berhasil, distribusi Anda mungkin digunakan ssh
sebagai gantinya sshd
. Dalam hal ini, Anda harus mencoba ssh: 192.168.1.*
dan ssh: ALL
sebagai gantinya.
Anda hanya bisa mengizinkan host tertentu, melakukan hal yang sama dengan /etc/hosts.allow
dan /etc/hosts.deny
seperti yang dijelaskan dalam 6, tetapi /etc/hosts.allow
menambahkan baris berikut dan setiap host untuk memungkinkan dipisahkan oleh spasi:
sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
Izinkan hanya pengguna tertentu untuk mengakses server SSH Anda. Ini dilakukan dengan mengedit file /etc/ssh/sshd_config
. ✝ Cari baris berikut dan pastikan tidak ada # di depannya. Jika tidak ada, buat itu. Misalnya, jika Anda hanya ingin mengizinkan john, tom dan mary, tambahkan / edit baris ini:
AllowUsers john tom mary
Anda juga dapat menolak pengguna tertentu misalnya, jika Anda ingin menolak akses ke john, tom dan mary, tambahkan / edit baris ini:
DenyUsers john tom mary
Hanya izinkan protokol SSH2 untuk koneksi masuk. Ada dua versi protokol SSH. SSH1 tunduk masalah keamanan sehingga menggunakan SSH 2 dianjurkan. Hal ini dapat dipaksa dengan mengedit file /etc/ssh/sshd_config
. ✝ Cari baris berikut dan pastikan tidak ada # di depannya. Jika tidak ada, buat itu.
Protocol 2,1
hapus, 1 sehingga garisnya akan
Protocol 2
Jangan memungkinkan pengguna untuk login yang tidak memiliki password ditetapkan. Hal ini dapat dipaksa dengan mengedit file /etc/ssh/sshd_config
. ✝ Cari baris berikut dan pastikan tidak ada # di depannya. Jika tidak ada, buat itu.
PermitEmptyPasswords no
Dan meskipun sederhana dan mungkin tidak perlu dikatakan tetapi terbukti penting dalam banyak kasus, tetap perbarui peranti lunak Anda. Perbarui paket / perangkat lunak yang diinstal secara rutin.
tergantung pada distribusi Linux yang Anda gunakan.