Ini tidak berguna seperti yang diklaim beberapa orang, tetapi setidaknya akan mengurangi dampak pada file log Anda karena banyak upaya login brute force hanya menggunakan port default daripada memindai untuk melihat apakah SSH mendengarkan di tempat lain. Beberapa serangan akan memindai SSH di tempat lain, jadi itu bukan peluru perak.
Jika server Anda akan menjadi semacam host bersama, alih-alih hanya melayani kebutuhan proyek Anda, menggunakan port non-standar bisa menyusahkan karena Anda harus menjelaskannya kepada pengguna Anda berulang-ulang dan berakhir ketika mereka lupa dan program klien mereka gagal terhubung ke port 22!
Masalah lain yang mungkin terjadi dengan SSH pada port non-standar adalah jika Anda menjumpai klien dengan set filter keluar terbatas, yang tidak dapat terhubung ke port khusus Anda karena filter mereka hanya memungkinkan, misalnya, port 22, 53, 80 dan 443 menjadi tujuan untuk koneksi keluar baru. Ini tidak biasa, tetapi tentu saja tidak pernah terdengar. Pada masalah yang sama, beberapa ISP mungkin melihat lalu lintas terenkripsi pada port selain yang biasanya diharapkan (port 443 atau HTTPS, 22 untuk SSH, dan sebagainya) sebagai upaya untuk menyembunyikan koneksi P2P dan throttle (atau blokir) koneksi dengan cara yang tidak nyaman.
Saya pribadi menjaga SSH pada port standar untuk kenyamanan. Selama tindakan pencegahan biasa dilakukan (kata sandi / kunci kebijakan yang kuat, membatasi login root, ...) itu tidak perlu menjadi masalah dan masalah pertumbuhan file log ketika Anda terkena serangan brute force dapat dikurangi dengan menggunakan alat seperti sebagai fial2ban untuk sementara memblokir host yang memberikan terlalu banyak set kredensial autentikasi dalam ruang waktu tertentu.
Apapun port yang Anda pilih, jika Anda pindah dari 22, pastikan itu di bawah 1024. Di bawah sebagian besar pengaturan Unix-a-like di konfigurasi default mereka, hanya root (atau pengguna dalam grup root) yang dapat mendengarkan pada port di bawah 1024, tetapi setiap pengguna dapat mendengarkan pada port yang lebih tinggi. Menjalankan SSH pada port yang lebih tinggi meningkatkan kemungkinan pengguna jahat (atau diretas) yang mengelola crash daemon SSH Anda dan menggantinya dengan proxy mereka sendiri.
Saya satu-satunya pengguna server ini. Terima kasih telah menjelaskan masalah 1024+. Saya akan menggunakan port 48xxx jika saya memilih. Pokoknya pada titik ini saya masih belum mengerti apakah ini berguna atau tidak = /
dinamis
16
+1 untuk> 1024 bit.
MattC
26
Ini adalah bentuk keamanan yang sederhana (namun sangat efektif) melalui ketidakjelasan .
Jika server SSH Anda tidak ada di port 22, kemungkinan besar itu akan ditemukan oleh mereka yang memindai seluruh internet mencari kata sandi yang lemah pada akun default. Jika Anda memindai seluruh jaringan, Anda tidak dapat memeriksa semua port 64k yang mungkin untuk menemukan server SSH.
Namun, jika seseorang secara aktif menargetkan Anda secara spesifik, itu tidak memberikan manfaat, karena nmappemindaian satu kali saja akan mengungkapkan port tempat ia sebenarnya berjalan.
"periksa semua kemungkinan port 64k" ... Menjalankan SSH di port mana pun di atas 1023 salah. Itu membuat sistem lebih rentan daripada membiarkannya berjalan di port default-nya.
Juliano
3
@Juliano - tolong jelaskan. Hanya karena Anda harus root untuk mendengarkan pada port yang diistimewakan tidak (AFAIK) membuatnya tidak aman untuk berjalan pada port yang tidak terjangkau.
Alnitak
4
Omong-omong, ini bukan keamanan melalui ketidakjelasan, jika tidak, Anda juga harus memanggil otentikasi kata sandi yang sama. Keamanan melalui ketidakjelasan adalah ketika implementasi tidak diungkapkan. Di sini, implementasinya dinyatakan dengan jelas ("Saya mengubah port layanan"), dan rahasia ("port mana?") Masih dirahasiakan.
Juliano
5
@ John - sebenarnya saya melihat poin @ Juliano. Itu tidak membuat daemon SSH itu sendiri secara intrinsik menjadi kurang aman, tetapi dalam kasus umum yang berjalan pada port non-privilege memang membatalkan asumsi normal bahwa root memulai daemon. Jadi, jika Anda entah bagaimana dapat menghentikan daemon itu (mis. Dengan Melakukannya), Anda dapat memulai daemon palsu Anda sendiri di tempatnya tanpa perlu eksploit root. Daemon palsu itu kemudian dapat menangkap detail yang cukup untuk memungkinkan eksploitasi lebih lanjut.
Alnitak
2
@ John, itu benar - masih membutuhkan penyerang untuk mendapatkan akses yang cukup untuk memulai daemon baru sendiri. Poin kuncinya adalah mereka tidak lagi memerlukan akses root untuk memulainya.
Alnitak
21
Untuk benar-benar menghindari serangan bruteforce, selalu penting untuk mengikuti beberapa langkah:
Instal denyhosts atau fail2ban
Batasi jumlah koneksi per detik pada ssh port
Ubah port ssh
Login root ditolak
Aktifkan otentikasi dengan kunci alih-alih kata sandi
Sepertinya daftar yang bagus kecuali bagian perubahan port yang saya tidak benar-benar setuju, itu terlalu banyak ketidakjelasan. Pemindai port modern akan menemukannya dalam beberapa detik saja? (dan banyak jaringan tidak akan membiarkan lalu lintas port keluar secara acak, biasanya terbatas pada 22, 80 dan 443)
Oskar Duveborn
1
Batas perubahan port serangan brute force yang memeriksa ssh berjalan pada port default, baik jika serangan lebih serius, hanya dalam hal ini penyerang dapat melakukan scan port hole di jaringan / host Anda.
Ali Mezgani
1
Faktanya, saya pikir di balik firewall yang bagus, jika Anda tetap memperbarui layanan dan jika Anda mengubah pengaturan defaultnya, Anda bisa aman dari serangan orang jahat. dan mungkin bukan dari eksploitasi 0day atau serangan yang tidak diketahui
Ali Mezgani
2
Menggunakan denyhosts / fail2ban mengurangi kebutuhan untuk berpindah port atau membutuhkan kunci. Jika Anda tidak mengizinkan kata sandi, maka tidak ada gunanya menggunakan denyhosts / fail2ban atau mengubah porta.
Jeremy L
1
Menggunakan denyhosts / fail2ban tidak serta merta mengurangi kebutuhan akan langkah-langkah keamanan tambahan. Titik keamanan adalah membuat sebanyak mungkin penghalang jalan bagi pengguna yang berusaha menghindari keamanan. Tentu Anda mungkin tidak perlu mengubah port dari 22 menjadi 2222 tetapi katakan admin lain datang dan mengaktifkan kembali kata sandi ... Anda masih memiliki beberapa gundukan kecepatan lainnya. Setiap langkah yang tercantum di atas membuat admin persentase dekat dengan ketidakmungkinan keamanan 100%.
Patrick R
12
Ya itu berguna karena hanya membantu menghindari semua serangan brute force dan membantu menjaga log tetap bersih :)
Adapun nomor port yang terserah Anda, saya telah melihat perusahaan menggunakan 1291 cukup sering. Saya menggunakan sesuatu yang lebih tinggi meskipun hanya untuk membantu menghindari beberapa skrip.
Tidak mengizinkan login ssh root dan mengubah nomor port dan mungkin sesuatu seperti fail2ban dan Anda harus menjadi emas. tambahkan iptables untuk ukuran yang baik dan terus perbarui informasi Anda dan Anda tidak akan memiliki masalah apa pun.
Tetapi lihat jawaban David Spillett untuk mengetahui mengapa port 1291 (lebih besar dari 1024) mungkin berbahaya.
Konerak
Jika Anda akan menyarankan untuk menggunakan port yang tidak terjangkau 2 tahun setelah banyak lainnya, jawaban yang lebih baik - mungkin menyiapkan alasan yang lebih baik daripada 'Saya telah melihat perusahaan melakukannya'. Saya telah melihat perusahaan melakukan banyak hal. Saya jarang ingin mengikuti teladan mereka.
underscore_d
11
Menggunakan port ssh yang tidak standar akan membutuhkan lebih banyak penjelasan dan dokumentasi, dan menjawab email "Saya tidak bisa masuk".
Saya menganggap manfaat menjalankan sshd berikut pada port non-standar lebih penting daripada masalah yang diciptakannya:
99,9999% serangan brute-force dilakukan oleh bot yang hanya mencari port 22 dan tidak pernah membuang waktu mencoba untuk menemukan port non-standar. Serangan brutal dan tindakan balasan seperti denyhosts atau fail2ban mengkonsumsi sumber daya, yang akan Anda simpan dengan hanya menjalankan server ssh pada port non-standar.
Anda akan menyingkirkan semua laporan tidak berguna tentang bot yang mencoba masuk ke sistem Anda. Jika ada IP yang muncul dalam laporan login yang gagal, kemungkinan besar ini adalah manusia.
Selain itu, jika Anda ingin benar-benar jahat, Anda selalu dapat menjalankan sshd palsu (dengan DenyUsers * ) pada port standar 22, sementara sshd reguler Anda berjalan pada port 54321. Ini akan memastikan Anda bahwa semua bot dan penyusup-wannabes akan selamanya cobalah masuk ke layanan yang menolak semua login, karena tidak seorang pun akan berpikir untuk mencoba menemukan layanan sshd Anda yang sebenarnya .
Ini mungkin menghasilkan lebih banyak panggilan dukungan sekalipun.
Brad Gilbert
3
Ini benar, tetapi keamanan yang ditingkatkan harus dibayar mahal. :)
Born To Ride
11
Melakukan ini untuk alasan "keamanan" apa pun adalah palsu. Ini adalah contoh terbaik keamanan oleh ketidakjelasan yang bukan keamanan.
Jika Anda ingin membuat log Anda sedikit lebih ringan dan bersih, maka ya ini berguna karena Anda tidak akan mendapatkan sebanyak mungkin upaya bruteforce port knocking / script-kiddy.
Ya. Ketika saya memiliki ssh pada port 22, saya memiliki> 20.000 upaya kata sandi yang gagal muncul di log saya per hari. Yang berarti saya mendapat email peringatan keamanan setiap hari. Saya menonaktifkan otentikasi kata sandi - Anda harus memiliki kunci pribadi yang tepat untuk masuk - jadi saya tidak khawatir tentang seseorang yang masuk, tetapi saya lebih suka menerima email peringatan keamanan hanya ketika sesuatu yang nyata sedang terjadi.
jdege
10
Saya akan menjalankan ssh pada port standar dan menggunakan sesuatu seperti fail2ban atau denyhosts untuk membatasi jumlah serangan kamus.
Pilihan lain adalah menonaktifkan login dengan kata sandi altogheter dan hanya mengizinkan login dengan kunci ssh.
Karena ada banyak orang jahat di luar sana yang memindai semua IP server untuk port terbuka dalam upaya untuk mengeksploitasi. Saya pernah mengalami serangan palu pada port SSH saya sepanjang hari sampai saya memindahkannya ke port lain dan pada IP yang tidak terhubung ke situs web saya lagi.
Ini berguna karena skrip-bot yang mencoba serangan tebak-tebakan pada umumnya berfokus pada Port 22, jadi mengubah port biasanya membuangnya. Anda harus menyeimbangkan nilai memitigasi risiko itu dengan rasa sakit saat mengonfigurasi ssh klien untuk terhubung ke port non-standar (tidak terlalu besar jika Anda tidak memiliki banyak pengguna yang terhubung, diakui).
Sebagai alternatif, Anda dapat mengurangi risiko brute-force dengan mematikan otentikasi kata sandi dan memerlukan otentikasi kunci-RSA sebagai gantinya.
Saya biasanya tidak mengubah port pada SSHD, jadi saya tidak dapat menyarankan nomor lain, tetapi periksa daftar port yang biasa digunakan untuk menemukan nomor lain (yaitu yang tidak digunakan oleh hal lain, dan dengan demikian mungkin dipindai) .
Saya selalu mengubah SSHd saya untuk menggunakan port 2222, semua orang yang perlu masuk ke server saya tahu ini dan itu bukan rahasia. Sama sekali tidak ada keuntungan keamanan dengan melakukan ini (kecuali jika calon peretas adalah orang tolol).
Satu-satunya manfaat yang saya dapatkan dari ini adalah bahwa auth log tidak memiliki sejuta upaya login gagal untuk 'root', 'alice', 'bob', 'sally', 'admin', dll.
Keamanan melalui ketidakjelasan telah terbukti tidak berguna, biasanya saya mengkonfigurasi akses ssh dengan port standar untuk semua alasan yang disebutkan di atas (masalah klien dalam konfigurasi ulang, firewall dan masalah proxy, dll).
Selain itu saya selalu menonaktifkan login root dan otentikasi kata sandi dan sebagai langkah terakhir saya menggunakan fail2ban untuk menyingkirkan pesan-pesan yang mengganggu di syslog. Di Debian / Ubuntu itu sesederhana mengetik aptitude install fail2ban. Konfigurasi default berfungsi dengan baik, tetapi saya biasanya menyetel beberapa parameter agar lebih membatasi memiliki waktu larangan yang lebih lama (setidaknya satu hari) dan hanya 2 upaya otentikasi yang gagal sebagai pemicu untuk larangan tersebut.
Saya akan mengatakan bahwa hal yang paling Anda lindungi saat mengubah port SSH adalah pemindaian otomatis yang akan mencoba dan mendapatkan akses menggunakan nama pengguna / kata sandi standar, jika kebijakan kata sandi Anda ketat, Anda tidak perlu khawatir tentang mereka.
belum lagi port scanner akan mencoba port lain juga.
Jim Deville
4
Jika Anda menonaktifkan login kata sandi ke server Anda (yang sangat disarankan), maka mengubah port SSH sama sekali tidak berguna. Dengan menonaktifkan kata sandi login (dan memerlukan otentikasi berbasis kunci), Anda menghapus kemungkinan upaya kata sandi brute-force, sehingga Anda tidak mendapatkan apa-apa dengan mencari-cari nomor port.
Jika Anda terus mengizinkan otentikasi basis kata sandi, maka Anda membiarkan diri Anda terbuka terhadap kemungkinan upaya brute force yang berhasil atau - lebih umum, dalam pengalaman saya - kata sandi Anda dikompromikan karena Anda mengetiknya saat menggunakan sistem yang berjalan seorang keylogger.
Jika Anda / sama sekali tidak berguna / sama sekali tidak berguna untuk keamanan /, saya setuju. Mengubah port berguna untuk menjaga kebisingan di log auth.
Chris S
"dan memerlukan otentikasi berbasis kunci"? apa ini
dinamis
1
@ yes123, SSH dapat menggunakan pasangan kunci publik-pribadi untuk mengautentikasi pengguna alih-alih kata sandi. Pasangan kunci mereka juga dapat dilindungi oleh kata sandi, sehingga menawarkan otentikasi dua faktor (sesuatu yang Anda tahu = kata sandi; sesuatu yang Anda miliki = file kunci). Jika Anda menerapkan ini, Anda dapat menonaktifkan login kata sandi (sehingga seseorang yang mengetahui kata sandi lokal Anda tidak dapat menggunakan file kunci dan kata sandi file kunci). Kata sandi relatif tidak aman dibandingkan dengan kunci, jutaan kali lebih mudah untuk brute force daripada pasangan kunci (meskipun biasanya masih sulit). Lihat man ssh-keygenbanyak info.
Chris S
@ yes123, berbagai halaman manual terkait ssh (sshd, sshd_config, ssh, ssh_config) adalah bacaan yang bermanfaat. Dokumen ini terlihat seperti tutorial yang bagus tentang otentikasi kunci publik dengan ssh.
larsks
2
Meskipun terlihat seperti "keamanan oleh ketidakjelasan" yang khas, saya memperkirakan itu masuk akal karena memindai semua port yang mungkin (~ 64k) adalah cara yang lebih mahal daripada hanya satu dari mereka.
Tetapi saya dapat menambahkan bahwa "port knocking" jauh lebih baik.
Bukan jawaban tetapi terlalu lama untuk komentar, jadi saya akan membuat CW ini.
Saya sudah memikirkan hal ini sebentar dan sampai pada kesimpulan bahwa ada banyak kebenaran dalam apa yang dikatakan Juliano dalam komentar atas jawaban Alnitak. Namun demikian, saya menemukan bahwa dengan menjalankan SSH pada port 22 hanya membuatnya terlalu mudah untuk meluncurkan serangan apa pun terhadapnya.
Untuk mengatasi masalah ini, saya menjalankan server SSH internal saya pada port 22 dan menggunakan firewall untuk mem-forward port tinggi ke 22 pada mesin target. Ini memberikan keamanan melalui ketidakjelasan sambil mempertahankan keamanan port rendah, seperti yang ditunjukkan Juliano.
Keamanan melalui ketidakjelasan bukanlah prinsip yang biasanya saya langgani dan sering ditunjukkan bahwa pemindaian port sederhana akan mengungkapkan port target, membuat ketidakjelasan itu tidak berharga. Untuk mengatasi masalah itu firewall saya (Smoothwall Express), baik di kantor maupun di rumah, gunakan skrip bernama Guardian Active Response, yang dipicu oleh peringatan Snort. Dari pengamatan saya dapat memberitahu Anda bahwa ketika Anda menekan lebih dari 3 port berbeda dari sumber yang sama paket Anda dijatuhkan sampai waktu reset yang telah ditetapkan. Ini membuatnya agak sulit dan sangat memakan waktu untuk menjalankan pemindaian port, membuat ketidakjelasan itu benar-benar berharga. Kenyataannya ini menyebabkan saya sering keluar dari jaringan sehingga saya menetapkan pengecualian untuk alamat IP sumber saya (rumah atau kantor).
Ide bagus dengan port forward, John! Saya pikir kami berdua telah mempelajari sesuatu :)
Alnitak
1
Masalah yang Anda miliki adalah bahwa firewall diatur untuk hanya mengizinkan IP tertentu untuk terhubung, dan bos sudah bosan membuka IP tertentu ketika dia keluar dan sekitar. Jika Anda mengunci IP tertentu di firewall, itu bisa menyebalkan.
Dua hal yang saya pikirkan di sini. Mengubah port melindungi terhadap serangan otomatis. Itu tentang hal itu, tetapi itu adalah bagian besar dari lalu lintas serangan rata-rata di luar sana ... jaringan pemindaian skrip otomatis. Jika Anda mengubah port default, serangan-serangan itu akan langsung gagal. Jadi masuk akal dalam hal itu. Tapi itu tidak melakukan apa-apa terhadap serangan terarah, karena penyerang hanya dapat memindai dari Nessus atau NMAP untuk menentukan port apa yang Anda gunakan jika Anda memiliki teman kecil khusus yang cukup membenci Anda.
Kedua, jika Anda menggunakan server mirip UNIX, Anda dapat menginstal utilitas seperti Denyhosts untuk menghentikan serangan. Jika Anda menginstal denyhosts, ia memantau upaya login yang salah dan setelah (apa pun yang Anda tentukan jumlahnya) upaya gagal itu akan mencekal IP untuk periode waktu yang Anda tentukan. Denyhosts juga dapat berbicara dengan host penolakanhost lain dan meneruskan daftar larangan, jadi jika seorang penyerang terkunci dari sistem Linux Fred di Montana, sistem Anda juga akan mendapatkan IP tersebut untuk dicekal. Sangat berguna selama pengguna Anda mengingat kata sandi mereka.
Itu semua tergantung pada skenario penggunaan Anda. Berapa banyak program yang Anda miliki yang merupakan "rasa sakit" untuk mengubah port koneksi untuk SSH / SCP (dan jika mereka tidak mengizinkannya atau membuatnya sakit, Anda benar-benar perlu mempertimbangkan untuk mengganti vendor, secara pribadi). Jika itu hanya potensi ketakutan, saya akan mengatakan itu bukan masalah. Dan ini bos Anda, meminta sesuatu yang tidak sepenuhnya aneh karena banyak sysadmin yang membalik port SSH (dengan beberapa kritik dari orang-orang yang membenci apa pun yang berbau keamanan bahkan samar-samar melalui ketidakjelasan ... tapi itu benar-benar mengurangi kebisingan latar belakang kasar dari pemindaian otomatis.)
Rebus - mengubah port memblokir skrip otomatis dan sebagian besar lalu lintas buruk. Tidak akan menghentikan penyerang yang diarahkan. Pertimbangkan juga menginstal utilitas pelarangan otomatis. Keamanan berlapis-lapis tidak melukai Anda jika dilakukan dengan benar dan mengubah port membantu lebih daripada yang menyakitkan di sebagian besar situasi.
Saya telah menjalankan SSH pada port> 1024 selama lebih dari 5 tahun sekarang. Sejak itu, saya tidak melihat adanya upaya portscan di file log saya (kecuali dari diri saya sendiri). Ada server saya yang saya admin yang dijalankan menggunakan port> 1024.
Banyak server SSH yang berjalan pada port> 1024, memiliki situs web sendiri yang cukup populer.
Jika server SSH berjalan di perusahaan saya sendiri, mungkin saya sudah memposting alamat IP dari server itu di sini sehingga kalian dapat mencoba untuk meretas ke server. Sayangnya server SSH bukan milik saya. ;-)
Tetapi ada hal-hal lain yang harus Anda siapkan untuk membuatnya aman. SSH> 1024 saja tidak akan cukup. Nomor port tidak boleh di / etc / services, harus menggunakan port forwarding (mis. Port 1124-> 22), akses langsung ke Root harus dinonaktifkan dan hal lainnya.
Jadi, jika Anda ingin berdebat, lebih baik jalankan SSH pada port> 1024 selama beberapa tahun.
Memindahkan SSH dengan baik ke port lain memang masuk akal, ini membantu dengan keamanan tetapi tidak terlalu besar. Tentu saja untuk melakukannya Anda harus memiliki kontrol atas firewall Anda, tetapi itu bukan masalah bagi Anda. Apa yang saya pikir mengurungkan manfaat memindahkan pelabuhan adalah pembukaan rentang yang dapat diterima - sebenarnya saya akan mengatakan bahwa itu lebih dari membatalkan manfaat dan mengekspos Anda lebih jauh dari Anda hari ini. Saya yakin Anda dapat meyakinkannya untuk memindahkan port DAN mengurangi secara signifikan rentang masuk dengan menyusun daftar kemungkinan titik masuk bukannya hanya membuka semuanya.
Mengubah port ssh Anda adalah latihan sia-sia yang hanya memberi Anda keamanan terbatas. Lebih baik Anda menonaktifkan otentikasi kata sandi, yang menghilangkan risiko upaya kata sandi kasar, dan hanya mengandalkan autentikasi berbasis kunci ssh. Jika lingkungan Anda memerlukan otentikasi kata sandi, adopsi beberapa mekanisme dua faktor, seperti SecurID atau Wikid.
Kedua hal ini memberi Anda peningkatan nyata dalam keamanan, sedangkan mengubah ssh port hanya memberi Anda ilusi keamanan.
Ini adalah POV praktis: Saya mengoperasikan server ssh pribadi yang terlihat secara publik selama lebih dari empat tahun dengan port SSH yang berubah dan saya tidak pernah mencoba memindai kata sandi. Demi QA ini, saya baru saja mengaktifkan kembali 22 pada salah satu dari mereka selama satu hari. Akibatnya saya dipindai sekitar setiap 10 menit dengan frekuensi percobaan kata sandi sekitar 5 per detik. Selain itu "scan kiddies" juga mencari server dengan kerentanan OpenSSH tertentu.
Yang pasti ini adalah keamanan oleh ketidakjelasan yang tidak membantu jika Anda punya musuh.
Ini bekerja dengan baik, terlepas dari rengekan kerumunan "keamanan melalui ketidakjelasan".
Kelinci konyol, SEMUA keamanan adalah keamanan melalui ketidakjelasan. Hanya karena Anda percaya bahwa protokol kripto Z yang tidak jelas [memerlukan kombinasi sampel DNA, kunci bersama dan tidak mungkin untuk benar-benar mengetikkan kata sandi manusia] sebenarnya aman tidak membuatnya begitu. Yang benar adalah, setiap dan semua ukuran keamanan bergantung pada probabilitas dan asumsi oleh pengguna. Sayang sekali bagi Anda jika saya tahu bagaimana mengeksploitasi asumsi itu, tetapi itu dia.
Bagaimanapun,
Kami telah melakukan ini selama bertahun-tahun, bersama dengan a) membatasi tingkat upaya koneksi (namun, saya tidak tahu bagaimana kami mengaturnya, sesuatu dalam konfigurasi ssh), dan b) skrip untuk melarang host yang menjalankan serangan kamus dengan lebih dari X tebakan salah dalam Y menit. Kami melarang host membuat koneksi untuk jangka waktu tertentu, dan itu membuatnya lebih mudah untuk beradaptasi dengan topologi jaringan yang berubah.
Jika kata sandi Anda cukup kompleks, dan mereka hanya dapat melakukan 3 upaya dalam 15 menit, tidak ada yang perlu ditakuti. Tidaklah sulit untuk mengawasi serangan yang terdistribusi, baik - kita biasanya mengumpulkan dengan subnet dan ip untuk mengesampingkan hal semacam itu.
Akhirnya, yang Anda butuhkan hanyalah beberapa metode tupai rahasia untuk memungkinkan koneksi ke port Anda dengan memodifikasi aturan f / w. Itu bisa apa saja ... smtp, web, magic dns query. Hal-hal seperti SecurID atau Wikid hanya memberikan lebih banyak info kepada pihak ketiga. Dan jangan mulai saya menggunakan sertifikat aman melalui pihak ketiga.
-1, Anda tampaknya tidak mengerti apa itu ketidakjelasan ... Membuat sesuatu yang tidak jelas tidak sama dengan meletakkan kunci di atasnya. Meskipun benar bahwa tidak ada keamanan yang absolut, pasti ada perbedaan dan menggabungkan tiga faktor otentikasi dengan ketidakjelasan tidak membantu siapa pun.
Chris S
1
Maaf, Chris, itu agama pemujaan kargo. Mungkin Anda tidak dapat memilih kunci, dan dengan demikian berpikir memiliki kunci membuat Anda aman, tetapi semua kunci dapat diambil. Pikirkan di luar kotak: Dalam banyak kasus, membuat sesuatu "tidak jelas" bisa lebih baik daripada menggunakan kunci. Model / tampilan keamanan Anda seperti meninggalkan laptop Anda di mobil yang terkunci dengan set alarm - satu tweaker dengan batu dan laptop Anda hilang. Tapi mungkin itu bukan tweaker, tapi seseorang dengan eksploitasi 0 hari dan waktu untuk membunuh ... Oh, lihat! Chris memiliki target "aman" dan cukup terlihat! Ketidakjelasan adalah bagian yang SANGAT penting dari keamanan.
joe acak
Maaf, tetapi perbandingan dan logika Anda tidak bertahan. Saya tahu bagaimana cara mengambil kunci, lebih cepat untuk memotongnya, memecahkan jendela, berkeliling. Setiap tindakan pengamanan memiliki sejumlah waktu dan upaya yang diperlukan untuk mengatasinya; ketidakjelasan membutuhkan sedikit waktu dan usaha, dalam urutan menit hingga jam. Keamanan nyata, seperti upaya membatasi kata sandi, membuat kata sandi memerlukan banyak waktu. Perbedaan waktu yang signifikan itu adalah perbedaan antara keamanan 'palsu' dan 'nyata'; ketidakjelasan jatuh pada yang pertama.
Jawaban:
Ini tidak berguna seperti yang diklaim beberapa orang, tetapi setidaknya akan mengurangi dampak pada file log Anda karena banyak upaya login brute force hanya menggunakan port default daripada memindai untuk melihat apakah SSH mendengarkan di tempat lain. Beberapa serangan akan memindai SSH di tempat lain, jadi itu bukan peluru perak.
Jika server Anda akan menjadi semacam host bersama, alih-alih hanya melayani kebutuhan proyek Anda, menggunakan port non-standar bisa menyusahkan karena Anda harus menjelaskannya kepada pengguna Anda berulang-ulang dan berakhir ketika mereka lupa dan program klien mereka gagal terhubung ke port 22!
Masalah lain yang mungkin terjadi dengan SSH pada port non-standar adalah jika Anda menjumpai klien dengan set filter keluar terbatas, yang tidak dapat terhubung ke port khusus Anda karena filter mereka hanya memungkinkan, misalnya, port 22, 53, 80 dan 443 menjadi tujuan untuk koneksi keluar baru. Ini tidak biasa, tetapi tentu saja tidak pernah terdengar. Pada masalah yang sama, beberapa ISP mungkin melihat lalu lintas terenkripsi pada port selain yang biasanya diharapkan (port 443 atau HTTPS, 22 untuk SSH, dan sebagainya) sebagai upaya untuk menyembunyikan koneksi P2P dan throttle (atau blokir) koneksi dengan cara yang tidak nyaman.
Saya pribadi menjaga SSH pada port standar untuk kenyamanan. Selama tindakan pencegahan biasa dilakukan (kata sandi / kunci kebijakan yang kuat, membatasi login root, ...) itu tidak perlu menjadi masalah dan masalah pertumbuhan file log ketika Anda terkena serangan brute force dapat dikurangi dengan menggunakan alat seperti sebagai fial2ban untuk sementara memblokir host yang memberikan terlalu banyak set kredensial autentikasi dalam ruang waktu tertentu.
Apapun port yang Anda pilih, jika Anda pindah dari 22, pastikan itu di bawah 1024. Di bawah sebagian besar pengaturan Unix-a-like di konfigurasi default mereka, hanya root (atau pengguna dalam grup root) yang dapat mendengarkan pada port di bawah 1024, tetapi setiap pengguna dapat mendengarkan pada port yang lebih tinggi. Menjalankan SSH pada port yang lebih tinggi meningkatkan kemungkinan pengguna jahat (atau diretas) yang mengelola crash daemon SSH Anda dan menggantinya dengan proxy mereka sendiri.
sumber
Ini adalah bentuk keamanan yang sederhana (namun sangat efektif) melalui ketidakjelasan .
Jika server SSH Anda tidak ada di port 22, kemungkinan besar itu akan ditemukan oleh mereka yang memindai seluruh internet mencari kata sandi yang lemah pada akun default. Jika Anda memindai seluruh jaringan, Anda tidak dapat memeriksa semua port 64k yang mungkin untuk menemukan server SSH.
Namun, jika seseorang secara aktif menargetkan Anda secara spesifik, itu tidak memberikan manfaat, karena
nmap
pemindaian satu kali saja akan mengungkapkan port tempat ia sebenarnya berjalan.sumber
Untuk benar-benar menghindari serangan bruteforce, selalu penting untuk mengikuti beberapa langkah:
sumber
Ya itu berguna karena hanya membantu menghindari semua serangan brute force dan membantu menjaga log tetap bersih :)
Adapun nomor port yang terserah Anda, saya telah melihat perusahaan menggunakan 1291 cukup sering. Saya menggunakan sesuatu yang lebih tinggi meskipun hanya untuk membantu menghindari beberapa skrip.
Tidak mengizinkan login ssh root dan mengubah nomor port dan mungkin sesuatu seperti fail2ban dan Anda harus menjadi emas. tambahkan iptables untuk ukuran yang baik dan terus perbarui informasi Anda dan Anda tidak akan memiliki masalah apa pun.
sumber
Saya menganggap manfaat menjalankan sshd berikut pada port non-standar lebih penting daripada masalah yang diciptakannya:
Selain itu, jika Anda ingin benar-benar jahat, Anda selalu dapat menjalankan sshd palsu (dengan DenyUsers * ) pada port standar 22, sementara sshd reguler Anda berjalan pada port 54321. Ini akan memastikan Anda bahwa semua bot dan penyusup-wannabes akan selamanya cobalah masuk ke layanan yang menolak semua login, karena tidak seorang pun akan berpikir untuk mencoba menemukan layanan sshd Anda yang sebenarnya .
2 sen saya.
sumber
Melakukan ini untuk alasan "keamanan" apa pun adalah palsu. Ini adalah contoh terbaik keamanan oleh ketidakjelasan yang bukan keamanan.
Jika Anda ingin membuat log Anda sedikit lebih ringan dan bersih, maka ya ini berguna karena Anda tidak akan mendapatkan sebanyak mungkin upaya bruteforce port knocking / script-kiddy.
sumber
Saya akan menjalankan ssh pada port standar dan menggunakan sesuatu seperti fail2ban atau denyhosts untuk membatasi jumlah serangan kamus.
Pilihan lain adalah menonaktifkan login dengan kata sandi altogheter dan hanya mengizinkan login dengan kunci ssh.
sumber
Karena ada banyak orang jahat di luar sana yang memindai semua IP server untuk port terbuka dalam upaya untuk mengeksploitasi. Saya pernah mengalami serangan palu pada port SSH saya sepanjang hari sampai saya memindahkannya ke port lain dan pada IP yang tidak terhubung ke situs web saya lagi.
sumber
Ini berguna karena skrip-bot yang mencoba serangan tebak-tebakan pada umumnya berfokus pada Port 22, jadi mengubah port biasanya membuangnya. Anda harus menyeimbangkan nilai memitigasi risiko itu dengan rasa sakit saat mengonfigurasi ssh klien untuk terhubung ke port non-standar (tidak terlalu besar jika Anda tidak memiliki banyak pengguna yang terhubung, diakui).
Sebagai alternatif, Anda dapat mengurangi risiko brute-force dengan mematikan otentikasi kata sandi dan memerlukan otentikasi kunci-RSA sebagai gantinya.
Saya biasanya tidak mengubah port pada SSHD, jadi saya tidak dapat menyarankan nomor lain, tetapi periksa daftar port yang biasa digunakan untuk menemukan nomor lain (yaitu yang tidak digunakan oleh hal lain, dan dengan demikian mungkin dipindai) .
sumber
Saya selalu mengubah SSHd saya untuk menggunakan port 2222, semua orang yang perlu masuk ke server saya tahu ini dan itu bukan rahasia. Sama sekali tidak ada keuntungan keamanan dengan melakukan ini (kecuali jika calon peretas adalah orang tolol).
Satu-satunya manfaat yang saya dapatkan dari ini adalah bahwa auth log tidak memiliki sejuta upaya login gagal untuk 'root', 'alice', 'bob', 'sally', 'admin', dll.
sumber
Keamanan melalui ketidakjelasan telah terbukti tidak berguna, biasanya saya mengkonfigurasi akses ssh dengan port standar untuk semua alasan yang disebutkan di atas (masalah klien dalam konfigurasi ulang, firewall dan masalah proxy, dll).
Selain itu saya selalu menonaktifkan login root dan otentikasi kata sandi dan sebagai langkah terakhir saya menggunakan fail2ban untuk menyingkirkan pesan-pesan yang mengganggu di syslog. Di Debian / Ubuntu itu sesederhana mengetik
aptitude install fail2ban
. Konfigurasi default berfungsi dengan baik, tetapi saya biasanya menyetel beberapa parameter agar lebih membatasi memiliki waktu larangan yang lebih lama (setidaknya satu hari) dan hanya 2 upaya otentikasi yang gagal sebagai pemicu untuk larangan tersebut.sumber
Saya akan mengatakan bahwa hal yang paling Anda lindungi saat mengubah port SSH adalah pemindaian otomatis yang akan mencoba dan mendapatkan akses menggunakan nama pengguna / kata sandi standar, jika kebijakan kata sandi Anda ketat, Anda tidak perlu khawatir tentang mereka.
sumber
Jika Anda menonaktifkan login kata sandi ke server Anda (yang sangat disarankan), maka mengubah port SSH sama sekali tidak berguna. Dengan menonaktifkan kata sandi login (dan memerlukan otentikasi berbasis kunci), Anda menghapus kemungkinan upaya kata sandi brute-force, sehingga Anda tidak mendapatkan apa-apa dengan mencari-cari nomor port.
Jika Anda terus mengizinkan otentikasi basis kata sandi, maka Anda membiarkan diri Anda terbuka terhadap kemungkinan upaya brute force yang berhasil atau - lebih umum, dalam pengalaman saya - kata sandi Anda dikompromikan karena Anda mengetiknya saat menggunakan sistem yang berjalan seorang keylogger.
sumber
man ssh-keygen
banyak info.Meskipun terlihat seperti "keamanan oleh ketidakjelasan" yang khas, saya memperkirakan itu masuk akal karena memindai semua port yang mungkin (~ 64k) adalah cara yang lebih mahal daripada hanya satu dari mereka.
Tetapi saya dapat menambahkan bahwa "port knocking" jauh lebih baik.
sumber
Bukan jawaban tetapi terlalu lama untuk komentar, jadi saya akan membuat CW ini.
Saya sudah memikirkan hal ini sebentar dan sampai pada kesimpulan bahwa ada banyak kebenaran dalam apa yang dikatakan Juliano dalam komentar atas jawaban Alnitak. Namun demikian, saya menemukan bahwa dengan menjalankan SSH pada port 22 hanya membuatnya terlalu mudah untuk meluncurkan serangan apa pun terhadapnya.
Untuk mengatasi masalah ini, saya menjalankan server SSH internal saya pada port 22 dan menggunakan firewall untuk mem-forward port tinggi ke 22 pada mesin target. Ini memberikan keamanan melalui ketidakjelasan sambil mempertahankan keamanan port rendah, seperti yang ditunjukkan Juliano.
Keamanan melalui ketidakjelasan bukanlah prinsip yang biasanya saya langgani dan sering ditunjukkan bahwa pemindaian port sederhana akan mengungkapkan port target, membuat ketidakjelasan itu tidak berharga. Untuk mengatasi masalah itu firewall saya (Smoothwall Express), baik di kantor maupun di rumah, gunakan skrip bernama Guardian Active Response, yang dipicu oleh peringatan Snort. Dari pengamatan saya dapat memberitahu Anda bahwa ketika Anda menekan lebih dari 3 port berbeda dari sumber yang sama paket Anda dijatuhkan sampai waktu reset yang telah ditetapkan. Ini membuatnya agak sulit dan sangat memakan waktu untuk menjalankan pemindaian port, membuat ketidakjelasan itu benar-benar berharga. Kenyataannya ini menyebabkan saya sering keluar dari jaringan sehingga saya menetapkan pengecualian untuk alamat IP sumber saya (rumah atau kantor).
sumber
Masalah yang Anda miliki adalah bahwa firewall diatur untuk hanya mengizinkan IP tertentu untuk terhubung, dan bos sudah bosan membuka IP tertentu ketika dia keluar dan sekitar. Jika Anda mengunci IP tertentu di firewall, itu bisa menyebalkan.
Dua hal yang saya pikirkan di sini. Mengubah port melindungi terhadap serangan otomatis. Itu tentang hal itu, tetapi itu adalah bagian besar dari lalu lintas serangan rata-rata di luar sana ... jaringan pemindaian skrip otomatis. Jika Anda mengubah port default, serangan-serangan itu akan langsung gagal. Jadi masuk akal dalam hal itu. Tapi itu tidak melakukan apa-apa terhadap serangan terarah, karena penyerang hanya dapat memindai dari Nessus atau NMAP untuk menentukan port apa yang Anda gunakan jika Anda memiliki teman kecil khusus yang cukup membenci Anda.
Kedua, jika Anda menggunakan server mirip UNIX, Anda dapat menginstal utilitas seperti Denyhosts untuk menghentikan serangan. Jika Anda menginstal denyhosts, ia memantau upaya login yang salah dan setelah (apa pun yang Anda tentukan jumlahnya) upaya gagal itu akan mencekal IP untuk periode waktu yang Anda tentukan. Denyhosts juga dapat berbicara dengan host penolakanhost lain dan meneruskan daftar larangan, jadi jika seorang penyerang terkunci dari sistem Linux Fred di Montana, sistem Anda juga akan mendapatkan IP tersebut untuk dicekal. Sangat berguna selama pengguna Anda mengingat kata sandi mereka.
Itu semua tergantung pada skenario penggunaan Anda. Berapa banyak program yang Anda miliki yang merupakan "rasa sakit" untuk mengubah port koneksi untuk SSH / SCP (dan jika mereka tidak mengizinkannya atau membuatnya sakit, Anda benar-benar perlu mempertimbangkan untuk mengganti vendor, secara pribadi). Jika itu hanya potensi ketakutan, saya akan mengatakan itu bukan masalah. Dan ini bos Anda, meminta sesuatu yang tidak sepenuhnya aneh karena banyak sysadmin yang membalik port SSH (dengan beberapa kritik dari orang-orang yang membenci apa pun yang berbau keamanan bahkan samar-samar melalui ketidakjelasan ... tapi itu benar-benar mengurangi kebisingan latar belakang kasar dari pemindaian otomatis.)
Rebus - mengubah port memblokir skrip otomatis dan sebagian besar lalu lintas buruk. Tidak akan menghentikan penyerang yang diarahkan. Pertimbangkan juga menginstal utilitas pelarangan otomatis. Keamanan berlapis-lapis tidak melukai Anda jika dilakukan dengan benar dan mengubah port membantu lebih daripada yang menyakitkan di sebagian besar situasi.
sumber
Saya telah menjalankan SSH pada port> 1024 selama lebih dari 5 tahun sekarang. Sejak itu, saya tidak melihat adanya upaya portscan di file log saya (kecuali dari diri saya sendiri). Ada server saya yang saya admin yang dijalankan menggunakan port> 1024.
Banyak server SSH yang berjalan pada port> 1024, memiliki situs web sendiri yang cukup populer.
Jika server SSH berjalan di perusahaan saya sendiri, mungkin saya sudah memposting alamat IP dari server itu di sini sehingga kalian dapat mencoba untuk meretas ke server. Sayangnya server SSH bukan milik saya. ;-)
Tetapi ada hal-hal lain yang harus Anda siapkan untuk membuatnya aman. SSH> 1024 saja tidak akan cukup. Nomor port tidak boleh di / etc / services, harus menggunakan port forwarding (mis. Port 1124-> 22), akses langsung ke Root harus dinonaktifkan dan hal lainnya.
Jadi, jika Anda ingin berdebat, lebih baik jalankan SSH pada port> 1024 selama beberapa tahun.
p / s: 1124 bukan port SSH saya no. Ha ha.
sumber
Saya kira jika Anda belum menemukan port mengetuk berguna, kalau tidak, tidak.
sumber
Memindahkan SSH dengan baik ke port lain memang masuk akal, ini membantu dengan keamanan tetapi tidak terlalu besar. Tentu saja untuk melakukannya Anda harus memiliki kontrol atas firewall Anda, tetapi itu bukan masalah bagi Anda. Apa yang saya pikir mengurungkan manfaat memindahkan pelabuhan adalah pembukaan rentang yang dapat diterima - sebenarnya saya akan mengatakan bahwa itu lebih dari membatalkan manfaat dan mengekspos Anda lebih jauh dari Anda hari ini. Saya yakin Anda dapat meyakinkannya untuk memindahkan port DAN mengurangi secara signifikan rentang masuk dengan menyusun daftar kemungkinan titik masuk bukannya hanya membuka semuanya.
sumber
Mengubah port ssh Anda adalah latihan sia-sia yang hanya memberi Anda keamanan terbatas. Lebih baik Anda menonaktifkan otentikasi kata sandi, yang menghilangkan risiko upaya kata sandi kasar, dan hanya mengandalkan autentikasi berbasis kunci ssh. Jika lingkungan Anda memerlukan otentikasi kata sandi, adopsi beberapa mekanisme dua faktor, seperti SecurID atau Wikid.
Kedua hal ini memberi Anda peningkatan nyata dalam keamanan, sedangkan mengubah ssh port hanya memberi Anda ilusi keamanan.
sumber
Ini adalah POV praktis: Saya mengoperasikan server ssh pribadi yang terlihat secara publik selama lebih dari empat tahun dengan port SSH yang berubah dan saya tidak pernah mencoba memindai kata sandi. Demi QA ini, saya baru saja mengaktifkan kembali 22 pada salah satu dari mereka selama satu hari. Akibatnya saya dipindai sekitar setiap 10 menit dengan frekuensi percobaan kata sandi sekitar 5 per detik. Selain itu "scan kiddies" juga mencari server dengan kerentanan OpenSSH tertentu.
Yang pasti ini adalah keamanan oleh ketidakjelasan yang tidak membantu jika Anda punya musuh.
sumber
Ini bekerja dengan baik, terlepas dari rengekan kerumunan "keamanan melalui ketidakjelasan".
Kelinci konyol, SEMUA keamanan adalah keamanan melalui ketidakjelasan. Hanya karena Anda percaya bahwa protokol kripto Z yang tidak jelas [memerlukan kombinasi sampel DNA, kunci bersama dan tidak mungkin untuk benar-benar mengetikkan kata sandi manusia] sebenarnya aman tidak membuatnya begitu. Yang benar adalah, setiap dan semua ukuran keamanan bergantung pada probabilitas dan asumsi oleh pengguna. Sayang sekali bagi Anda jika saya tahu bagaimana mengeksploitasi asumsi itu, tetapi itu dia.
Bagaimanapun,
Kami telah melakukan ini selama bertahun-tahun, bersama dengan a) membatasi tingkat upaya koneksi (namun, saya tidak tahu bagaimana kami mengaturnya, sesuatu dalam konfigurasi ssh), dan b) skrip untuk melarang host yang menjalankan serangan kamus dengan lebih dari X tebakan salah dalam Y menit. Kami melarang host membuat koneksi untuk jangka waktu tertentu, dan itu membuatnya lebih mudah untuk beradaptasi dengan topologi jaringan yang berubah.
Jika kata sandi Anda cukup kompleks, dan mereka hanya dapat melakukan 3 upaya dalam 15 menit, tidak ada yang perlu ditakuti. Tidaklah sulit untuk mengawasi serangan yang terdistribusi, baik - kita biasanya mengumpulkan dengan subnet dan ip untuk mengesampingkan hal semacam itu.
Akhirnya, yang Anda butuhkan hanyalah beberapa metode tupai rahasia untuk memungkinkan koneksi ke port Anda dengan memodifikasi aturan f / w. Itu bisa apa saja ... smtp, web, magic dns query. Hal-hal seperti SecurID atau Wikid hanya memberikan lebih banyak info kepada pihak ketiga. Dan jangan mulai saya menggunakan sertifikat aman melalui pihak ketiga.
sumber