Cara Memperlambat Peretas

17

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 Unauthorizedke 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 Unauthorizedkesalahan atau akhirnya mati, jadi kita mungkin bisa melakukan menunggu tidak terbatas / tak terbatas.
Flipster
sumber
36
Apakah ada alasan Anda tidak bisa hanya mengkonfigurasi firewall Anda untuk menghentikan lalu lintas yang datang dari alamat IP-nya? Masalah ini akan lebih baik diselesaikan di tingkat jaringan daripada tingkat aplikasi. Menjatuhkan lalu lintas berarti dia harus duduk di sana sampai permintaan koneksi habis. Dan sama sekali tidak menanggapi sama sekali jauh lebih efektif daripada membuang kembali tanggapan "tidak sah" karena itu memberinya secara efektif tidak ada informasi untuk diperiksa.
cdhowie
3
Mengapa tidak memblokir ip-nya saja?
Hogan
2
Cabut server Anda.
Sayed Ibrahim Hashimi
Lihatlah jawaban saya - ini adalah hal standar, saya terkejut Anda tidak mendapatkan jawaban yang menunjuk ke beberapa sistem deteksi intrusi sebelumnya.
Unreason
@ Mengatakan, mencabut server Anda adalah salah satu hal terburuk yang dapat Anda lakukan. Selain DoSing sendiri, lihat juga security.stackexchange.com/q/181/33
AviD

Jawaban:

37

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.

Joel Coel
sumber
1
Hai Joel, ini adalah jawaban "diterima", tetapi karena pertanyaannya ditransfer dari StackOverflow, tampaknya saya tidak memiliki wewenang untuk benar-benar menerimanya. Saya memberi jawaban Anda +1. Inilah yang akan saya lakukan.
Flipster
2
@ klik klik pada nama Anda dan kemudian tautan 'akun' di bagian bawah halaman di sebelah kanan. Itu akan memungkinkan Anda mengaitkan ini kembali ke akun stack overflow Anda dan mendapatkan kembali kepemilikan atas pertanyaan.
Joel Coel
1
tetapi Anda juga ingin melakukannya secara otomatis - tidak ada gunanya menangani masalah tersebut berdasarkan kasus per kasus. (lihat jawaban saya)
Unreason
5

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

  • dengan mudah memfilter alamat IP tunggal dari mana serangan datang tanpa mempengaruhi pengguna situs Anda yang lain
  • Anda dapat menulis regex Anda sendiri untuk menganalisis log
  • Anda dapat menentukan tindakan Anda sendiri (throttle bukannya ban, dll)

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

  • letakkan firewall linux antara WAN dan server Anda
  • berikan akses ke mesin firewall ke log IIS Anda
  • tulis regex untuk menganalisisnya
  • tancapkan ke template yang ada untuk dicekal

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.

Tidak masuk akal
sumber
4

Jika mereka datang dari alamat IP tertentu atau blok alamat, Anda mungkin ingin menambahkan rute blackhole ke dalamnya:

ip ro add blackhole 10.69.96.0/24
ip ro flush cache

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.

Sean Reifschneider
sumber
1
+1. Saya menyukai info Anda tentang efisiensi relatif routing vs netfilter dalam situasi ini. iptablespada kernel dengan ipsetkemampuan sangat efisien dapat mencocokkan daftar besar alamat IP, tetapi sepertinya tidak ada distro utama yang mengaktifkan ipsetkernel mereka.
Steven Monday
Poin baiknya, ipset adalah sesuatu yang sepertinya berguna untuk hal-hal seperti ini, tetapi tidak tersedia. Ada sistem lain yang disebut nf-hipac yang merupakan pengoptimal iptables yang lebih umum, tetapi pos terakhir di milis dan rilis terakhir adalah dari tahun 2005.
Sean Reifschneider
3

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.

sybreon
sumber
2

Apa yang Anda cari adalah modul Apache mod_evaisve.

Pada distro berbasis Debian, instal menggunakan

apt-get install libapache2-mod-evasive

CentOS / RHEL

yum install mod_evasive

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.

vagarwal
sumber
0

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.

Robert
sumber
2
Teknik ini kadang-kadang digunakan dalam serangan DDoS - oleh penyerang. Melakukan ini di server agak kontraproduktif. <_ <
p-static
Tidak benar mengatakan bahwa itu digunakan dalam serangan DDoS - efek semacam ini adalah tujuan serangan DDoS. Melakukannya di server / firewall, tetapi hanya untuk menyerang komputer adalah satu-satunya pertahanan nyata (AFAIK).
Unreason
0

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.

Kris van der Mast
sumber
0

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 :)

Nathan Chere
sumber
itu bukan solusi, memotong jeli dengan kapak. Dan B, DDOS benar-benar bukan rekomendasi yang baik (meskipun saya berasumsi Anda sedang bercanda), tidak ada alasan untuk a) melakukan sesuatu illagel b) menempatkan lebih banyak beban di server Anda!
Trufa
0

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.

corin
sumber
0

jika Anda seorang programmer, Anda bisa bekerja dengan .net Begin_Request event dan meletakkan "sleep" Anda di sana

Ayo makan siang
sumber