Pertanyaan Saya di bawah DDoS. Apa yang dapat saya?


Ini adalah sebuah Pertanyaan Kanonis tentang mitigasi DoS dan DDoS.

Saya menemukan lonjakan lalu lintas besar-besaran di situs web yang saya host hari ini; Saya mendapatkan ribuan koneksi per detik dan saya melihat saya menggunakan 100Mbps dari bandwidth yang tersedia. Tidak ada yang dapat mengakses situs saya karena semua waktu permintaan habis, dan saya bahkan tidak dapat masuk ke server karena SSH juga keluar! Ini telah terjadi beberapa kali sebelumnya, dan setiap kali itu berlangsung beberapa jam dan hilang dengan sendirinya.

Kadang-kadang, situs web saya memiliki masalah lain yang berbeda tetapi terkait: beban rata-rata server saya (biasanya sekitar .25) roket hingga 20 atau lebih dan tidak ada yang dapat mengakses situs saya sama seperti kasus lainnya. Ini juga hilang setelah beberapa jam.

Restart server saya tidak membantu; apa yang dapat saya lakukan untuk membuat situs saya dapat diakses kembali, dan apa yang terjadi?

Sehubungan dengan itu, saya menemukan sekali untuk satu atau dua hari, setiap kali saya memulai layanan saya, ia mendapat koneksi dari alamat IP tertentu dan kemudian jatuh. Segera setelah saya memulainya lagi, ini terjadi lagi dan itu jatuh lagi. Bagaimana itu serupa, dan apa yang bisa saya lakukan?


171
2017-08-19 09:14




Saya mengikuti ini setelah membaca (Membuat pertanyaan "Bantuan, Saya Mendapatkan DDOS-ed!" Kanonik?). Apakah saya hanya ingin mengatakan Nice Work !!! - AngryWombat
Juga lihat security.stackexchange.com/a/792/2379 - Pacerier


Jawaban:


Anda mengalami serangan penolakan layanan. Jika Anda melihat lalu lintas yang berasal dari beberapa jaringan (IP yang berbeda pada subnet yang berbeda), Anda mendapat penolakan layanan terdistribusi (DDoS); jika itu semua berasal dari tempat yang sama Anda memiliki DoS lama yang biasa. Akan sangat membantu untuk memeriksa, jika Anda mampu; gunakan netstat untuk memeriksa. Ini mungkin sulit dilakukan.

Penolakan layanan biasanya termasuk dalam beberapa kategori: berdasarkan lalu lintas, dan berbasis beban. Item terakhir (dengan layanan mogok) adalah DoS berbasis exploit dan sangat berbeda.

Jika Anda mencoba untuk menentukan jenis serangan apa yang terjadi, Anda mungkin ingin menangkap beberapa lalu lintas (menggunakan wireshark, tcpdump, atau libpcap). Anda harus, jika mungkin, tetapi juga menyadari bahwa Anda mungkin akan menangkap banyak lalu lintas.

Sesering tidak, ini akan datang dari botnet (jaringan host yang dikompromikan di bawah kendali pusat dari beberapa penyerang, yang penawarannya akan mereka lakukan). Ini adalah cara yang baik bagi penyerang untuk (sangat murah) memperoleh bandwidth hulu banyak host yang berbeda pada jaringan yang berbeda untuk menyerang Anda dengan, sambil menutupi jejak mereka. Itu Meriam Ion Orbit Rendah adalah salah satu contoh botnet (meskipun bersifat sukarela, bukan berasal dari malware); Zeus adalah yang paling khas.

Berbasis lalu lintas

Jika Anda berada di bawah DoS berbasis lalu lintas, Anda menemukannya ada begitu banyak traffic datang ke server Anda bahwa koneksi ke Internet benar-benar jenuh. Ada tingkat kehilangan paket yang tinggi saat melakukan ping server dari tempat lain, dan (tergantung pada metode perutean yang digunakan) terkadang Anda juga melihat latensi sangat tinggi (ping tinggi). Serangan semacam ini biasanya berupa DDoS.

Meskipun ini benar-benar "keras" menyerang, dan sudah jelas apa yang sedang terjadi, sulit bagi administrator server untuk mengurangi (dan pada dasarnya tidak mungkin bagi pengguna shared hosting untuk mengurangi). Anda akan membutuhkan bantuan dari ISP Anda; beri tahu mereka bahwa Anda berada di bawah DDoS dan mereka mungkin bisa membantu.

Namun, sebagian besar ISP dan penyedia layanan transit akan secara proaktif menyadari apa yang sedang terjadi dan mempublikasikan rute lubang hitam untuk server Anda. Apa artinya ini adalah bahwa mereka mempublikasikan rute ke server Anda dengan biaya sesedikit mungkin, melalui 0.0.0.0: mereka membuat lalu lintas ke server Anda tidak lagi dapat dilacak di Internet. Rute ini biasanya / 32s dan akhirnya dihapus. Ini tidak membantu sama sekali; tujuannya adalah untuk melindungi jaringan ISP dari banjir besar. Selama ini, server Anda akan kehilangan akses Internet secara efektif.

Satu-satunya cara ISP Anda (atau Anda, jika Anda memiliki AS sendiri) akan dapat membantu adalah jika mereka menggunakan pembentuk lalu lintas cerdas yang dapat mendeteksi dan membatasi tingkat kemungkinan lalu lintas DDoS. Tidak semua orang memiliki teknologi ini. Namun, jika lalu lintas berasal dari satu atau dua jaringan, atau satu host, mereka mungkin juga dapat memblokir lalu lintas di depan Anda.

Pendeknya, ada sangat sedikit yang bisa Anda lakukan tentang masalah ini. Solusi jangka panjang terbaik adalah menghosting layanan Anda di banyak lokasi berbeda di Internet yang harus DDoSed secara individual dan bersamaan, membuat DDoS jauh lebih mahal. Strategi untuk ini bergantung pada layanan yang perlu Anda lindungi; DNS dapat dilindungi dengan beberapa server nama otoritatif, SMTP dengan cadangan MX record dan mail exchangers, dan HTTP dengan DNS round-robin atau multihoming (tetapi beberapa degradasi mungkin terlihat untuk durasi tetap).

Load balancer jarang merupakan solusi yang efektif untuk masalah ini, karena load balancer itu sendiri tunduk pada masalah yang sama dan hanya menciptakan hambatan. IPTable atau lainnya aturan firewall tidak akan membantu karena masalahnya adalah pipa Anda sudah jenuh. Setelah koneksi dilihat oleh firewall Anda, itu sudah terlambat; bandwidth ke situs Anda telah dikonsumsi. Tidak masalah apa yang Anda lakukan dengan koneksi; serangan tersebut dikurangi atau diselesaikan ketika jumlah lalu lintas masuk kembali ke normal.

Jika Anda dapat melakukannya, pertimbangkan untuk menggunakan jaringan distribusi konten (CDN) seperti Akamai, Limelight dan CDN77, atau gunakan layanan scrubbing DDoS seperti CloudFlare atau Prolexic. Layanan ini mengambil tindakan aktif untuk mengurangi jenis serangan ini, dan juga memiliki banyak bandwidth yang tersedia di berbagai tempat yang membanjiri mereka umumnya tidak layak.

Jika Anda memutuskan untuk menggunakan CloudFlare (atau CDN / proxy lain), ingat untuk menyembunyikan IP server Anda. Jika seorang penyerang mengetahui IP, dia dapat lagi DDoS server Anda secara langsung, melewati CloudFlare. Untuk menyembunyikan IP, server Anda tidak boleh berkomunikasi langsung dengan server / pengguna lain kecuali mereka aman. Misalnya server Anda tidak boleh mengirim email langsung ke pengguna. Ini tidak berlaku jika Anda menghosting semua konten Anda di CDN dan tidak memiliki server sendiri.

Juga, beberapa penyedia layanan VPS dan hosting lebih baik dalam mengurangi serangan-serangan ini daripada yang lain. Secara umum, semakin besar mereka, semakin baik mereka berada di sini; penyedia yang sangat diperhatikan dan memiliki banyak bandwidth secara alami akan lebih tangguh, dan satu dengan tim operasi jaringan yang aktif dan memiliki staf penuh akan dapat bereaksi lebih cepat.

Berbasis beban

Ketika Anda mengalami DDoS berbasis beban, Anda memperhatikan bahwa rata-rata beban sangat tinggi (atau CPU, RAM, atau penggunaan disk, tergantung pada platform Anda dan spesifikasinya). Meskipun server tidak tampak melakukan sesuatu yang berguna, namun sangat sibuk. Seringkali, akan ada banyak sekali entri di log yang menunjukkan kondisi yang tidak biasa. Lebih sering daripada tidak ini berasal dari banyak tempat yang berbeda dan merupakan DDoS, tetapi itu belum tentu demikian. Bahkan tidak perlu ada banyak host yang berbeda.

Serangan ini didasarkan pada membuat layanan Anda melakukan banyak hal yang mahal. Ini bisa berupa sesuatu seperti membuka sejumlah besar koneksi TCP dan memaksa Anda untuk mempertahankan keadaan untuk mereka, atau mengunggah file yang terlalu besar atau banyak ke layanan Anda, atau mungkin melakukan pencarian yang sangat mahal, atau benar-benar melakukan apa pun yang mahal untuk ditangani. Lalu lintas berada dalam batas dari apa yang Anda rencanakan dan dapat lakukan, tetapi jenis permintaan yang dibuat terlalu mahal untuk ditangani begitu banyak.

Pertama, bahwa jenis serangan ini mungkin sering merupakan indikasi dari masalah konfigurasi atau bug dalam layanan Anda. Misalnya, Anda mungkin memiliki pencatatan log yang terlalu verbose yang diaktifkan, dan mungkin menyimpan log pada sesuatu yang sangat lambat untuk ditulis. Jika seseorang menyadari hal ini dan melakukan banyak hal yang menyebabkan Anda menulis banyak log ke disk, server Anda akan memperlambat perayapan. Perangkat lunak Anda mungkin juga melakukan sesuatu yang sangat tidak efisien untuk beberapa kasus masukan tertentu; penyebabnya sama banyaknya dengan program, tetapi dua contoh adalah situasi yang menyebabkan layanan Anda tidak menutup sesi yang selesai, dan situasi yang menyebabkannya memunculkan proses anak dan meninggalkannya. Jika Anda memiliki puluhan ribu koneksi terbuka dengan negara untuk melacak, atau puluhan ribu proses anak, Anda akan mengalami masalah.

Hal pertama yang mungkin bisa Anda lakukan adalah gunakan firewall untuk menjatuhkan lalu lintas. Ini tidak selalu mungkin, tetapi jika ada karakteristik yang dapat Anda temukan di lalu lintas masuk (tcpdump bisa bagus untuk ini jika lalu lintas ringan), Anda dapat menjatuhkannya di firewall dan tidak akan lagi menimbulkan masalah. Hal lain yang harus dilakukan adalah memperbaiki bug di layanan Anda (berhubungan dengan vendor dan bersiaplah untuk pengalaman dukungan yang panjang).

Namun, jika itu masalah konfigurasi, mulailah dari sana. Menolak logging pada sistem produksi ke tingkat yang wajar (tergantung pada program ini biasanya default, dan biasanya akan melibatkan memastikan "debug" dan "verbose" tingkat penebangan tidak aktif; jika semua hal yang dilakukan pengguna masuk dengan tepat dan detail halus, pencatatan Anda terlalu panjang). Selain itu, periksa proses anak dan batas permintaan, mungkin mencekik permintaan masuk, koneksi per IP, dan jumlah proses turunan yang diizinkan, sebagaimana berlaku.

Tak usah dikatakan bahwa lebih baik dikonfigurasi dan lebih baik menyediakan server Anda, semakin sulit serangan jenis ini akan. Hindari pelit dengan RAM dan CPU secara khusus. Pastikan koneksi Anda ke hal-hal seperti database backend dan penyimpanan disk yang cepat dan andal.

Exploit-based

Jika layanan Anda secara misterius crash sangat cepat setelah dibesarkan, terutama jika Anda dapat menetapkan pola permintaan yang mendahului tabrakan dan permintaannya tidak lazim atau tidak cocok dengan pola penggunaan yang diharapkan, Anda mungkin mengalami DoS berbasis eksploit. Ini dapat berasal dari sesedikit satu host (dengan hampir semua jenis koneksi internet), atau banyak host.

Ini adalah mirip dengan DoS berbasis beban dalam banyak hal, dan pada dasarnya memiliki penyebab dan mitigasi yang sama. Perbedaannya hanyalah bahwa dalam kasus ini, bug tidak menyebabkan server Anda menjadi boros, tetapi mati. Penyerang biasanya mengeksploitasi kerentanan kecelakaan jarak jauh, seperti input yang kacau yang menyebabkan null-dereference atau sesuatu dalam layanan Anda.

Tangani ini sama dengan serangan akses jarak jauh yang tidak sah. Firewall terhadap host dan jenis lalu lintas asal jika mereka dapat disematkan. Gunakan validasi reverse proksi jika berlaku. Kumpulkan bukti forensik (coba dan tangkap beberapa lalu lintas), ajukan tiket bug ke vendor, dan pertimbangkan untuk mengajukan keluhan penyalahgunaan (atau keluhan hukum) terhadap sumber asli juga.

Serangan-serangan ini cukup murah untuk dipasang, jika eksploitasi dapat ditemukan, dan mereka bisa sangat kuat, tetapi juga relatif mudah untuk melacak dan berhenti. Namun, teknik yang berguna terhadap DDoS berbasis lalu lintas umumnya tidak berguna terhadap DoS berbasis eksploitasi.


183
2017-08-19 09:14



Mengenai paragraf terakhir Anda, Dan bagaimana jika Anda mendapatkan eksploit berbasis D DoS? Bagaimana Anda bisa melacak dan menghentikannya? - Pacerier


Jika Anda adalah perusahaan, Anda memiliki banyak pilihan. Jika Anda seorang pria kecil seperti saya, menyewa VPS atau server khusus untuk melayani situs web kecil, biaya dapat dengan cepat menjadi penghalang.

Dari pengalaman saya, saya percaya sebagian besar penyedia VPS yang berdedikasi dan tidak akan membuat aturan firewall khusus hanya untuk server Anda. Tetapi saat ini, Anda memiliki beberapa opsi.

CDN

Jika Anda menjalankan server web, pertimbangkan untuk meletakkannya di belakang CDN seperti CloudFlare atau Amazon CloudFront.

CDN mahal. Agar biaya tetap terkendali, layani file besar (gambar besar, audio, video) langsung dari server Anda, bukan melalui CDN. Namun, ini dapat mengekspos alamat IP server Anda ke penyerang.

Cloud Pribadi

Awan pribadi biasanya merupakan solusi perusahaan yang mahal, tetapi biaya Amazon VPC tidak ada sama sekali untuk mengatur. Namun, bandwidth Amazon pada umumnya mahal. Jika Anda mampu membelinya, maka Anda dapat menyiapkan Grup Keamanan Amazon VPC dan Jaringan ACL untuk memblokir lalu lintas sebelum tiba di instance Anda. Anda harus memblokir semua port kecuali port server TCP Anda.

Perhatikan penyerang masih dapat menyerang port server TCP Anda. Jika itu adalah server web maka pertimbangkan untuk menggunakan sesuatu seperti nginx yang menggunakan non-blocking IO dan dapat menangani sejumlah besar koneksi. Di luar itu tidak banyak yang dapat Anda lakukan selain memastikan Anda menjalankan versi terbaru dari perangkat lunak server.

Ketika Port TCP Diserang Dan Semua Lainnya Gagal

Ini adalah solusi yang saya kembangkan yang berlaku untuk server non-web yang tidak dapat bersembunyi di balik CDN, seperti WebSocket, konten media / server streaming. CloudFlare mendukung WebSocket tetapi hanya untuk enterprise saat ini.

Tujuannya adalah untuk mengubah port TCP Anda cukup cepat sehingga botnet tidak dapat mengikuti, katakanlah setiap 10 detik. Ini dicapai dengan menggunakan program proxy sederhana yang melakukan roaming port. Urutan port adalah pseudo-random, tetapi harus berdasarkan waktu server. Dan algoritma untuk menghitung waktu server & port harus disembunyikan di javascript / kode flash klien Anda. Program ini juga harus memodifikasi firewall karena perubahan port mendengarkan, dan firewall perlu menyatakan. Jika seseorang tertarik, saya akan mengunggah skrip node.js saya yang bekerja dengan Amazon, ke GitHub.


6
2017-12-05 18:04





Ubah domain Anda untuk pergi ke lubang hitam seperti 0.0.0.0 untuk waktu yang singkat.

Berbicaralah ke server Anda dan lihat apakah mereka dapat mengeluarkan Anda dengan alamat IP lain sebagai cara sementara untuk mengakses server atau melihat apakah server memiliki akses konsol jarak jauh (seperti Anda sedang duduk di depannya). Dari sini Anda dapat melihat apakah itu alamat IP tunggal dan memblokirnya dari situs atau serangan terdistribusi.


3
2018-02-26 07:44



Mengubah DNS seperti itu cenderung lebih berbahaya daripada baik. Pada awalnya saya akan mengurangi TTL dari A record, tetapi membiarkan alamat IP tidak berubah - sampai saya memiliki IP baru untuk mengarahkannya ke. - kasperd


Ketika Anda berada di bawah DDoS, serang ISP Anda, itu bisa sangat membantu Anda, tetapi jika mereka tidak memiliki perlindungan DDoS, kemungkinan besar Anda akan kehabisan layanan sampai serangan berhenti. Biasanya mereka akan melihat alamat ip yang diserang dan membatalkan jaringan di router upstream mereka. Jika Anda tidak memiliki banyak lalu lintas, ada banyak layanan online untuk perlindungan DDoS di mana lalu lintas Anda dirutekan ulang, difilter, dan dikirim kembali ke server Anda.


0
2017-11-18 11:42