GNU/Linux >> Belajar Linux >  >> Linux

Apa kemungkinan masalah keamanan dengan daemon SSH?

Kekhawatiran terbesar adalah orang-orang yang masuk sebagai administrator komputer melalui SSH. Ini dapat dilakukan dengan kekerasan jika Anda memiliki kata sandi yang mudah ditebak.

Ada beberapa langkah keamanan yang dapat Anda lakukan, berikut adalah beberapa langkah yang selalu saya lakukan saat menyiapkan server SSH dan beberapa tambahan.

  1. Gunakan kata sandi yang kuat, yang terdiri dari setidaknya (katakanlah) 10 huruf besar dan kecil, angka, dan karakter lainnya.

  2. Penjara pengguna ke direktori home mereka. Pengguna yang di-jail tidak akan dapat mengakses/mengedit file yang berada di luar direktori home mereka. Jadi pengguna Anda tidak akan dapat mengakses/mengedit file sistem kunci. Banyak tutorial dapat ditemukan secara online tentang cara memenjarakan pengguna. Kebanyakan dari mereka menggunakan JailKit. Contoh tutorial semacam itu dapat ditemukan di sini. Sebagai alternatif, Anda juga dapat menggunakan ChrootDirectory asli server OpenSSH pengarahan. Contoh tutorial tentang ini dapat ditemukan di sini.

  3. Instal Fail2Ban. Fail2Ban adalah program yang memeriksa log otentikasi untuk entri yang salah. Ketika batas tertentu tercapai, itu menambahkan blok firewall untuk IP tertentu itu untuk jangka waktu yang telah ditentukan. Ada juga beberapa tutorial online yang ditemukan secara online tentang cara menyiapkan Fail2Ban dengan SSH, contohnya adalah yang ini. Beranda Fail2Ban juga menyimpan beberapa HOWTO yang bagus dan lengkap.

  4. Nonaktifkan login root melalui SSH. Ini adalah pengguna yang memiliki akses ke hampir semua file di sistem Anda, oleh karena itu disarankan untuk menonaktifkan login shell-nya. Di Ubuntu versi terbaru, pengguna root dinonaktifkan secara otomatis 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
    
  5. Gunakan port non-standar (Misalnya bukan 22) Ini dilakukan melalui penerusan port di router Anda (Misalnya 16121 -> 22, bukan 22 -> 22) atau dengan membuat daemon SSH mendengarkan pada port yang berbeda. Ini akan membuat layanan SSH Anda kurang 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
    
  6. Jangan gunakan kata sandi untuk masuk. Selain kata sandi, SSH juga memungkinkan masuk dengan menggunakan kunci pribadi. Ini berarti kunci disimpan di komputer tempat Anda mengakses SSH dari mesin SSH. Saat koneksi dicoba, klien SSH menggunakan kunci untuk masuk ke server alih-alih melalui otentikasi kata sandi. Kunci otentikasi jauh lebih kuat secara kriptografis daripada kata sandi dan oleh karena itu tidak mudah diretas. Ada juga beberapa tutorial online yang ditemukan secara online tentang cara menyiapkan autentikasi berbasis Kunci dengan SSH, contohnya adalah yang ini. (Jika Anda SSH dari windows dengan PuTTY, periksa tautan ini untuk mengetahui cara PuTTY.) Setelah menyiapkan autentikasi berbasis kunci, Anda dapat menonaktifkan autentikasi kata sandi dengan mengedit file /etc/ssh/sshd_config . Cari baris berikut dan pastikan tidak ada # di depannya.

    #PasswordAuthentication no
    
  7. Opsional, seperti yang disebutkan @ Linker3000 dalam komentarnya, Anda dapat mengatur terowongan VPN ke PC yang ingin Anda akses melalui SSH dan kemudian melarang akses jaringan non-lokal di 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 tambahkan berikut ini:

    sshd: ALL
    

    dan ke /etc/hosts.allow tambahkan berikut ini:

    sshd: 192.168.1.*
    

    di mana IP cocok dengan salah satu jaringan lokal Anda. * adalah karakter pengganti, jadi semua alamat IP dimulai dengan 192.168.1. akan diterima. Jika ini tidak berhasil, distribusi Anda mungkin menggunakan ssh bukannya sshd . Dalam hal ini, Anda harus mencoba ssh: 192.168.1.* dan ssh: ALL sebagai gantinya.

  8. Anda hanya dapat mengizinkan host tertentu, lakukan hal yang sama dengan /etc/hosts.allow dan /etc/hosts.deny seperti yang dijelaskan dalam 6, tetapi dalam /etc/hosts.allow tambahkan 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.}
    
  9. 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, buatlah. 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
    
  10. Hanya izinkan protokol SSH2 untuk koneksi masuk. Ada dua versi protokol SSH. SSH1 tunduk pada masalah keamanan sehingga disarankan menggunakan SSH 2. Ini dapat dipaksakan dengan mengedit file /etc/ssh/sshd_config . Cari baris berikut dan pastikan tidak ada # di depannya. Jika tidak ada, buatlah.

    Protocol 2,1
    

    hapus ,1 sehingga garisnya menjadi

    Protocol 2
    
  11. Jangan izinkan pengguna masuk yang tidak memiliki kata sandi. Ini dapat dipaksakan dengan mengedit file /etc/ssh/sshd_config . Cari baris berikut dan pastikan tidak ada # di depannya. Jika tidak ada, buatlah.

    PermitEmptyPasswords no
    
  12. Dan meskipun sederhana dan mungkin tidak perlu dikatakan tetapi terbukti penting dalam banyak kasus, selalu perbarui perangkat lunak Anda. Perbarui paket/perangkat lunak yang terpasang secara teratur.

=setelah mengedit file config SSH, jangan lupa restart daemon untuk menerapkan perubahan. Mulai ulang daemon dengan mengeksekusi:

sudo /etc/init.d/ssh restart

atau

sudo /etc/init.d/sshd restart

tergantung pada distribusi Linux yang Anda gunakan.


Beberapa kiat:

  1. Gunakan autentikasi berbasis Kunci, yang JAUH lebih aman daripada kata sandi
  2. SSH 2 saja
  3. Nonaktifkan login Root
  4. Untuk paranoid, ubah port dari port standar 22
  5. Untuk kenyamanan, gunakan alat untuk memetakan IP Anda ke nama DNS, seperti Dyndns atau sejenisnya. Anda dapat menggunakan IP yang sama untuk waktu yang lama, tetapi saat Anda bepergian dan membutuhkannya, Anda akan menemukan bahwa Anda telah mengeluarkan yang baru.
  6. Tentu saja, izinkan hanya port yang diperlukan untuk SSH (port 22, atau non-standar jika Anda mau) melalui firewall Anda.

Risiko utamanya adalah lupa bahwa Anda sedang menjalankan server ssh dan memasukkan kata sandi yang lemah di akun. Ada penyerang di luar sana yang secara sistematis mencoba nama akun umum (seperti webmaster dan bob ) dan kata sandi yang lemah. Anda dapat menghilangkan risiko ini dengan melarang login kata sandi (masukkan PasswordAuthentication no di sshd_config , dan masukkan juga UsePAM No atau nonaktifkan otentikasi kata sandi di pengaturan PAM untuk ssh). Tindakan perantara adalah membatasi login ssh ke daftar putih pengguna dengan AllowUsers atau AllowGroups di sshd_config .

Perhatikan bahwa mengizinkan login kata sandi itu sendiri bukanlah masalah keamanan. Kata sandi yang lemah dan kata sandi yang diintip adalah masalahnya, dan mengizinkan otentikasi kata sandi di server ssh adalah pengaktif. Untuk melindungi dari pengintaian kata sandi, jangan pernah mengetikkan kata sandi Anda pada mesin yang tidak sepenuhnya Anda percayai (namun jika Anda benar-benar mempercayai mesin tersebut, Anda mungkin juga memasang kunci pribadi di dalamnya, dan kemudian Anda tidak memerlukan autentikasi kata sandi).

Persyaratan minimum untuk menggunakan klien ssh pada mesin adalah Anda percaya bahwa tidak akan ada pembajakan aktif komunikasi ssh (serangan man-in-the-middle dimungkinkan jika dijalankan pada mesin klien — menurut Anda Anda mengetikkan perintah ke klien ssh murni tetapi klien sebenarnya mengirimkan data otentikasi Anda dengan setia tetapi juga memasukkan kuda trojan ke dalam komunikasi sesudahnya). Ini adalah persyaratan yang lebih lemah daripada percaya tidak akan ada pengintai kata sandi (biasanya dilakukan melalui keylogger, tetapi ada metode lain yang kurang otomatis seperti penjelajahan bahu). Jika Anda memiliki kepercayaan minimum tetapi masih takut pengintai, Anda dapat menggunakan sandi sekali pakai (OpenSSH mendukungnya melalui dukungan PAM).

Tentu saja, seperti program lain yang berinteraksi dengan mesin di luar kendali Anda (tidak hanya server jaringan tetapi juga klien), Anda harus mengikuti pembaruan keamanan.


Linux
  1. Izinkan login root ssh hanya dengan otentikasi kunci publik

  2. SSH dengan authorized_keys ke sistem Ubuntu dengan homedir terenkripsi?

  3. File apa yang paling umum untuk diperiksa dengan perangkat lunak pemantauan integritas file?

  1. Apa yang baru dengan rdiff-backup?

  2. Pindai keamanan Linux Anda dengan Lynis

  3. Apa itu sinyal tertunda?

  1. Linux IPTables:Cara Menambahkan Aturan Firewall (Dengan Contoh Izinkan SSH)

  2. Cara Mengonfigurasi SSH untuk membatasi Pengguna/Grup dengan perintah izinkan dan tolak

  3. Cara mengizinkan ssh dengan kata sandi kosong di Linux