Bagaimana kita bisa membatasi dampak penyelidikan ssh?


13

Server web saya terus-menerus diserang oleh berbagai alamat IP. Mereka mencoba lima kata sandi dan kemudian mengubah alamat IP.

Saya telah melakukan berbagai penguncian seperti menggunakan ssh-keys dan tidak mengizinkan kata sandi, dan tidak mengizinkan login root jarak jauh.

Apakah ada sesuatu yang bisa saya lakukan untuk menghilangkan upaya serangan ini? Jika gagal, apakah ada pertahanan khusus yang harus saya pasang?


1
Menandai untuk dimigrasikan ke security.se di mana ia sedikit lebih sesuai topik
Rory Alsop

1
@Rory Ada perbedaan antara "sedikit lebih banyak pada topik orang lain" dan "di luar topik di sini" - sepertinya cukup jelas pada topik di sini
Michael Mrozek

Jangan khawatir @Michael. Punya ping dari Gilles untuk datang dan melihatnya karena mungkin offtopic di sini.
Rory Alsop

@Rory Ok, saya akan bertanya kepadanya tentang hal itu; dia biasanya cukup pandai meyakinkan saya sesuatu yang saya pikir {off, on} topik sebenarnya {on, off} topik
Michael Mrozek

1
Pertanyaan saya tampaknya telah berubah tanpa bisa dikenali. Dalam pertanyaan awal saya, saya benar-benar berusaha mencari tahu apakah itu biasa bagi setiap situs untuk mengalami serangan brute force - yaitu apakah itu fakta kehidupan. Ini dijawab oleh Matteo dengan "Ini memang fakta kehidupan." Bagian kedua dari pertanyaan itu adalah menanyakan apa yang bisa saya lakukan untuk secara aktif menghentikan serangan-serangan ini selain memasang pertahanan . Ini akan menjadi pertanyaan sekunder yang relevan jika hanya situs-situs tertentu yang menderita serangan brute force. Itu dijawab oleh Bruce dengan ide tarpit-nya. Saya tidak benar-benar meminta tips defensif.
JW01

Jawaban:


14

Ini memang fakta kehidupan. Anda dapat memasang alat untuk memfilter host yang menyerang Anda setelah beberapa upaya gagal.

DenyHosts menganalisis file log Anda dan secara otomatis menambahkan penyerang ke /etc/hosts.denyfile Anda .

Periksa dokumentasi tentang cara mengonfigurasinya untuk kebutuhan Anda.

Pembaruan : beberapa poin penting yang disarankan dalam komentar

  • pastikan untuk mengkonfigurasi alat sebagai DenyHosts karena Anda dapat mengunci diri (misalnya, Anda dapat mengonfigurasi mesin atau jaringan yang tidak pernah difilter)

  • DenyHosts tidak meningkatkan keamanan sistem Anda: itu hanya menyaring serangan pada tingkat IP (mungkin mengurangi beban pada mesin kecil dan mengurangi ukuran file log tetapi tidak lebih)


1
Aaah. Saya mulai berpikir bahwa saya istimewa. Terima kasih telah meluruskan saya.
JW01

Memperluas pada Matteo, pertanyaan Anda hampir dijawab dengan tepat refs Q1.3 denyhosts.sourceforge.net/faq.html#1_0
whoami

@whoami Terima kasih atas tautannya, ringkasan yang bagus. Meskipun satu hal yang selalu terlintas dalam pikiran saya ketika saya melihat penggunaan tip port yang berbeda adalah ' bagaimana Anda tahu bahwa port alternatif yang Anda pilih belum digunakan oleh hal lain? '
JW01

1
Hati-hati dengan DenyHosts dan alat serupa, karena mereka memperkenalkan kompleksitas tambahan, yaitu mereka dapat membuat masalah keamanan sendiri, lih. komentar ke-2 di unix.stackexchange.com/questions/2942/…
maxschlepzig

1
Berhati-hatilah dengan DenyHosts karena Anda mungkin mengunci diri dari mesin. Sederhana apt-get install denyhostsmembuat saya terkunci dari mesin saya.
Naftuli Kay

15

Saya mengikuti petunjuk ini untuk menambahkan penundaan 7-detik untuk setiap upaya login SSH dengan kata sandi salah. Saya membuat sshd saya menjadi "tarpit" untuk pemindai kasar.

Saya juga harus menambahkan bahwa saya telah memodifikasi, tarpit sshd, mencatat kata sandi yang gagal. Ini mungkin tidak sepenuhnya etis, karena memberikan pengguna root melihat apa yang pengguna salah ketik sebagai kata sandi mereka sendiri, tetapi karena saya satu-satunya pengguna "nyata", saya pikir tidak apa-apa.

Saya tidak menjalankannya pada port non-standar, karena aspek "tarpit" tidak akan membuang waktu siapa pun.


Juga, gunakan port non-standar dan gunakan kunci bukan kata sandi. Kemudian mereka hampir tidak memiliki harapan (asalkan mereka tidak mendapatkan kunci, yang semuanya harus di-password).
Callum Rogers

Ini adalah jawaban yang bagus karena memiliki sedikit pendekatan 'ofensif' daripada murni 'defensif' yang menurut saya menambah moral.
JW01

9

Jika hanya sejumlah kecil orang perlu SSH ke sistem, maka pertimbangkan untuk memindahkan SSH ke port non-standar (misalnya 6422, 8080, dll.) Itu saja akan mengurangi jumlah upaya login secara besar-besaran (dan mungkin melindungi Anda dari beberapa pengiriman yang belum ditambal SSH mengeksploitasi cacing berbasis, misalnya).


3
+1 Agak berguna karena membatasi gangguan, tetapi jangan salah menganggap ini sebagai tindakan pengamanan - ini setara dengan pintu kasa terhadap nyamuk daripada kunci keamanan.
Piskvor meninggalkan gedung

1
+1 Ini juga menghemat sumber daya server.
Xeoncross

6

Setuju dengan jawaban @ Matteo; apa yang Anda lihat pada dasarnya adalah ribuan sistem zombie'd mengeksekusi serangan brute-force terdistribusi di server Anda karena ada situs web yang berjalan di atasnya, yang berarti mungkin ada pengguna yang mungkin memiliki akun login yang mungkin bisa ditebak usaha minimal dari script kiddie - dia punya program yang memerintahkan ribuan zombie untuk membuat upaya brutal pada beberapa ratus host situs web sekaligus dan hanya menyusun daftar pengembalian yang sukses.

Demikian pula, Anda kadang-kadang dapat melihat banyak izin dari "http://your.web.host/phpmyadmin/" di /var/log/apache2/access.log file ; ini adalah pemindaian otomatis untuk cara paling umum mengatur PHPMyAdmin, dan akan mencoba sejumlah eksploit yang diketahui jika ditemukan (ini, kebetulan, itulah sebabnya saya mulai memberi tahu pelanggan untuk menggunakan situs PMA yang saya buat sendiri dan tetap up to date daripada menginstal versi mereka sendiri dan lupa untuk tetap memperbaruinya, tapi sekarang kami tidak aktif).

Selain mengirimkan perintah asli, itu bahkan tidak menghabiskan waktu atau bandwidth; itu api dan lupakan.

Bit perangkat lunak lain yang sangat berguna untuk situasi seperti ini adalah fail2ban , yang menggunakan iptables untuk memblokir upaya koneksi setelah beberapa logon yang jelas salah atau upaya eksploit lainnya.


4

Coba konfigurasikan Fail2ban . Ini memberikan cara yang sangat fleksibel untuk mencari upaya yang gagal, dan memiliki template untuk SSH, HTTP dan layanan umum.

Fail2ban akan memperbarui iptables sesuai dengan tindakan Anda .. Saya menyukainya.


3

Anda dapat menggunakan IPTABLES untuk menghentikan lalu lintas tanpa menjalankan daemon seperti Fail2Ban atau DenyHosts.

#  Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest to prevent SSH attacks)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

2

Jika Anda bisa mengelolanya, saya menemukan cara terbaik untuk menangani hal-hal seperti ini adalah menggunakan VPN. Dengan begitu, satu-satunya hal yang dapat mereka targetkan adalah VPN. Seharusnya tidak ada layanan yang terbuka untuk dunia pada umumnya, kecuali yang diperlukan untuk "semua orang" untuk mengakses, seperti server web Anda. Segala sesuatu yang lain harus diblokir oleh firewall. Sekarang satu-satunya hal yang Anda benar-benar perlu khawatirkan adalah keamanan VPN Anda. Jika Anda bisa, dapatkan IP statis untuk komputer yang Anda kelola dari server Anda, dan kunci VPN Anda ke alamat IP tertentu. Ini benar-benar satu-satunya cara untuk menghentikan orang dari mencoba memaksakan kata sandi.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.