Apakah Anda bermaksud mengizinkan layanan SSH ke dunia? Atau hanya untuk anggota tim di tempat-tempat tertentu? Jawaban saya sedikit tergantung pada beratnya tantangan Anda.
Dalam kedua kasus tersebut, satu hal yang harus Anda lakukan adalah memastikan bahwa server SSH tidak mengizinkan login kata sandi untuk pengguna root.
- Di / etc / ssh / sshd_config pastikan Anda tidak pernah mengizinkan login root kecuali dengan kunci SSH.
Di sistem saya, saya punya pengaturan ini
PermitRootLogin without-password
tapi saya perhatikan di Ubuntu baru yang mereka miliki
PermitRootLogin prohibit-password
Jika Anda membaca "man sshd_config" Saya pikir ini berarti "larangan kata sandi" yang lebih baru ini berarti hal yang sama dan tentunya lebih jelas artinya. Itu BUKAN default pada beberapa sistem Linux, tetapi mungkin harus.
Sekarang, tentang masalah Anda. Apakah server sistem Anda hanya beberapa pengguna di tempat tertentu? Melakukan hal ini!
edit /etc/hosts.deny dan masukkan
SEMUA SEMUA
Kemudian edit /etc/hosts.allow dan daftarkan nomor IP atau rentang yang ingin diizinkan menggunakan SSH. Notasi ada sedikit membingungkan karena jika Anda ingin mengizinkan semua sistem dengan nomor IP seperti 111.222.65.101 hingga 111.222.65.255, Anda memasukkan entri seperti ini di hosts.allow
ALL: 127.0.0.1
sshd: 111.222.65.
sshdfwd-X11: 111.222.65.
Itu adalah solusi yang kuat dan kuat. Jika pengguna Anda dapat dihitung berdasarkan rentang IP, lakukanlah!
Solusi ini ada sebelum tabel IP dibuat, itu (saya pikir) jauh lebih mudah untuk dikelola, tetapi tidak sebagus solusi tabel IP karena rutin tabel IP akan mengenali musuh lebih cepat daripada program yang dijalankan oleh hosts.allow dan host .menyangkal. Tapi ini adalah cara yang pasti, cara mudah untuk menutup banyak masalah, bukan hanya dari SSH.
Perhatikan masalah yang Anda buat sendiri. Jika Anda ingin membuka server FTP, server web, atau yang lainnya, Anda harus membuat entri di host diizinkan.
Anda dapat mencapai tujuan dasar yang sama dengan mengutak-atik iptables dan firewall. Dalam arti tertentu, ini adalah solusi yang lebih disukai karena Anda memblokir musuh di batas luar. Ubuntu memiliki "ufw" (firewall yang tidak rumit) dan "man ufw" memiliki banyak contoh. Saya lebih suka memiliki GUI yang bagus untuk mengarungi ini, saya tidak harus melakukan ini sepanjang waktu. Mungkin orang lain bisa memberi tahu kami jika ada sekarang.
- Posting lain di sini disarankan menggunakan kunci publik SSH hanya untuk pengguna Anda. Itu pasti akan membantu, dengan harga kompleksitas dan frustrasi untuk pengguna Anda. Di lab kami, ada 15 komputer. Pengguna masuk di antara komputer. Membutuhkan otentikasi kunci SSH akan menyebabkan kerumitan besar karena orang-orang pergi dari satu komputer ke komputer lain.
Sumber frustrasi lain akan terjadi ketika beberapa pengguna mengumpulkan kunci ssh yang berbeda untuk berbagai server. Karena saya memiliki kunci SSH untuk sekitar 12 proyek yang berbeda, sekarang ssh gagal karena saya memiliki terlalu banyak kunci publik (Memerlukan salah satu "ssh -o PubkeyAuthentication = false" atau membuat entri dalam file .ssh / config. Ini adalah PITA)
- Jika Anda harus membiarkan server terbuka untuk SSH dari dunia luas, maka Anda harus menggunakan rutin penolakan untuk memblokir lokasi yang sering mencoba masuk. Ada 2 program bagus untuk ini, yang kami gunakan adalah denyhosts dan fail2ban . Program-program ini memiliki pengaturan yang memungkinkan Anda untuk melarang pelanggar, selama Anda suka.
Dalam sistem Centos Linux kami, saya perhatikan mereka menjatuhkan paket denyhosts dan hanya menawarkan fail2ban. Saya suka denyhosts karena membangun daftar rentang pengguna / ip yang merepotkan dan kemudian di hosts.deny, daftar itu dicatat. Kami memasang fail2ban sebagai gantinya dan itu OK. Pemahaman saya adalah bahwa Anda lebih suka memblokir pengguna jahat ini di tepi luar server, sehingga pemblokir berbasis tabel ip, seperti fail2ban, sebenarnya lebih baik. Denyhosts bekerja pada level sekunder, setelah musuh mendapatkan iptables masa lalu, mereka kemudian ditolak oleh daemon sshd.
Di kedua program ini, agak membosankan untuk mengeluarkan pengguna dari penjara jika mereka lupa kata sandi mereka dan mencoba beberapa kali untuk masuk. Agak sulit untuk membuat orang kembali ketika mereka membuat kesalahan masuk. Anda mungkin mengira akan ada GUI point-and-click di mana Anda bisa menunjuk dan membiarkan orang-orang kembali, tetapi tidak seperti itu. Saya hanya perlu melakukan ini setiap beberapa bulan dan lupa bagaimana setiap kali, jadi saya menulis instruksi untuk diri saya di halaman web saya http://pj.freefaculty.org/blog/?p=301