Beberapa script kiddie di Delhi, India telah mencoba meretas situs kami sejak tadi malam. Dia menulis skrip browser yang membuat permintaan server kami dalam loop bersarang besar, mencoba semuanya di bawah matahari.
Dia tidak mendapatkan apa-apa, dan bahkan tidak melewati pertahanan dasar kita (tapi dia mengisi file log kita).
Kami mengirimkan kembali 403 Unauthorized
ke permintaannya segera setelah mereka masuk, tetapi semakin cepat kami memblokir permintaannya, semakin cepat skripnya berjalan.
Kami ingin memperkenalkan semacam "penundaan" sebelum mengirim kembali respons 403. Semakin lama, semakin baik.
Pertanyaan: Bagaimana kita dapat menunda upaya peretasan tanpa mempengaruhi bagian situs lainnya?
- Saya berasumsi bahwa Sleep (15000) di utasnya akan menjadi berita buruk bagi pengunjung situs lainnya.
- Memutar utas baru hanya untuknya sepertinya berlebihan.
- Apakah ada cara lain untuk mengirim respons yang tertunda?
- Berapa lama kita bisa memaksa browsernya menunggu? Saya kira saya tidak terlalu peduli jika dia mendapatkan
403 Unauthorized
kesalahan atau akhirnya mati, jadi kita mungkin bisa melakukan menunggu tidak terbatas / tak terbatas.
Jawaban:
Seharusnya ada firewall terpisah di suatu tempat di depan server web Anda. Anda ingin memblokir permintaan di sana agar tidak pernah mencapai server Anda, sehingga sejauh menyangkut IP-nya server Anda tidak ada lagi.
sumber
Ada sistem pendeteksi intrusi yang sebenarnya besar dan kecil yang akan melakukan ini secara otomatis untuk Anda tergantung pada berbagai filter, honeypots, dan mekanisme lainnya
Sebagai contoh, lihat fail2ban yang dapat dikonfigurasi untuk mengambil tindakan berdasarkan analisis log.
Dengan cara ini kamu bisa
Ada alat lain yang lebih besar, lihat bagian lihat juga di wikipedia.
Karena pertanyaan Anda ditandai dengan asp.net, saya menganggap platform server Anda adalah windows. Namun, jika menggunakan linux firewall adalah opsi, Anda dapat mencoba di atas
Firewall seperti itu dapat dijalankan pada perangkat keras yang sangat sederhana - pikirkan sesuatu seperti router linksys (lihat di sini ) untuk bandwidth tautan yang sangat baik.
sumber
Jika mereka datang dari alamat IP tertentu atau blok alamat, Anda mungkin ingin menambahkan rute blackhole ke dalamnya:
Anda juga dapat melakukannya dengan menggunakan aturan iptables, tetapi menyadari bahwa aturan iptables dilintasi secara linear, jadi jika Anda mulai menambahkan aturan iptables untuk setiap penjahat yang datang, Anda dapat mulai memakan banyak CPU. Tabel perutean dioptimalkan untuk menangani banyak entri. Misalnya, salah satu kotak saya memiliki 350 ribu entri di tabel peruteannya tanpa masalah. Tetapi jika saya memiliki 3K aturan iptables kotak itu hampir pasti jatuh
Jika Anda mencoba melakukan sesuatu di mana aplikasi Anda tidur selama beberapa detik pada koneksi ini, Anda mungkin akhirnya mengikat sumber daya yang cukup sehingga permintaan yang sah tidak dapat memperoleh sumber daya apa pun.
sumber
iptables
pada kernel denganipset
kemampuan sangat efisien dapat mencocokkan daftar besar alamat IP, tetapi sepertinya tidak ada distro utama yang mengaktifkanipset
kernel mereka.Anda tidak ingin memperlambatnya karena memperlambatnya secara tidak benar akan menurunkan situs Anda seolah-olah sedang diserang DoS karena utas Anda akan 'sibuk' melayani permintaan orang ini. Yang ingin Anda lakukan adalah memblokir IP-nya dan menyelesaikannya. Tidak ada alasan untuk memberi umpan kepada orang yang melakukannya.
sumber
Apa yang Anda cari adalah modul Apache mod_evaisve.
Pada distro berbasis Debian, instal menggunakan
CentOS / RHEL
mod_evasive terus melacak permintaan yang datang ke Apache dan melarang IP menggunakan iptables yang melewati nilai ambang batas. Ini adalah alat utama melawan serangan DoS berbasis HTTP dan bahkan serangan DoS Terdistribusi ketika Anda ditargetkan oleh botnet besar dengan ribuan IP yang berbeda.
Ini berjalan sebagai modul Apache yang dimuat selama runtime dan bukan sebagai daemon terpisah.
Meskipun, penyerang pintar dengan kontrol botnet besar masih dapat menurunkan server web Anda dengan mengatur waktu permintaan yang dikirim oleh masing-masing zombie di botnet sehingga tidak ada IP yang pernah melewati nilai ambang batas.
Dalam hal ini, Anda harus menggunakan IDS berbasis anomali dan mungkin melatih sistem sendiri. Tetapi ini sangat tidak mungkin terjadi kecuali jika Anda memiliki musuh besar yang nyata atau seseorang dengan agenda perusahaan.
sumber
Jika Anda menggunakan linux, gunakan iptables untuk membatasi orang untuk seperti 1 byte / s dengan penundaan besar dan membuatnya mengambil selamanya untuk bahkan mendapatkan satu permintaan melalui. Jika didistribusikan, itu tidak akan banyak membantu.
Saya tidak yakin bagaimana Anda akan melakukannya pada Windows, tetapi Anda mungkin menemukan beberapa opsi serupa di router atau firewall perangkat keras Anda, jika ada.
EDIT: Setuju dengan di atas, ini lebih seperti pertanyaan kesalahan server.
sumber
Jika alamat IP orang itu cukup konstan, Anda dapat membuat HttpModule khusus, sambungkan melalui perubahan pada file web.config dan tunda saat itu diakui sebagai alamat IP ini. Atau Anda dapat mengirimnya kembali sekitar 404 kode atau membuatnya dialihkan ke tempat lain.
sumber
Anda tahu mereka di India. Apakah situs Anda memiliki pelanggan India yang signifikan yang akan menghalangi hanya memblokir seluruh rentang IP mereka di tingkat firewall secara bertahap sampai aliran berhenti? Ini tentu saja bukan solusi yang tegas tetapi jika Anda hanya berurusan dengan 'script kiddie' yang khas, itu sudah cukup untuk membuat mereka kecil hati dan mengirim mereka ke target lain.
Bahkan lebih baik, jika itu dari satu IP, Anda dapat membalas dengan serangan penolakan layanan Anda sendiri :)
sumber
Selain jawaban yang Anda terima, Anda akan ingin menyimpan dokumentasi Anda (log, jejak) dan menyediakannya ke penyedia layanan Anda. Ini adalah yang paling efektif selama insiden karena penyedia Anda dapat menyaksikan serangan. Meskipun Anda berhasil dalam tindakan Anda, penting untuk membatasi upaya lebih lanjut dan itu membantu penyedia Anda dalam meningkatkan permintaan ke penyedia layanan penyerang; bisa dibilang tindakan yang paling efisien adalah penyedia penyerang untuk menolak layanan kepada pelanggannya, penyerang yang diidentifikasi.
sumber
jika Anda seorang programmer, Anda bisa bekerja dengan .net Begin_Request event dan meletakkan "sleep" Anda di sana
sumber