Ini adalah Pertanyaan Canonical 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 semua 100Mbps bandwidth yang tersedia. Tidak ada yang dapat mengakses situs saya karena semua permintaan waktu habis, dan saya bahkan tidak bisa masuk ke server karena SSH juga habis! 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: rata-rata beban server saya (yang biasanya sekitar 0,25) roket hingga 20 atau lebih dan tidak ada yang dapat mengakses situs saya sama seperti kasus lainnya. Itu 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?
Terkait, saya menemukan sekali bahwa selama satu atau dua hari, setiap kali saya memulai layanan saya, ia mendapat koneksi dari alamat IP tertentu dan kemudian jatuh. Segera setelah saya memulai lagi, ini terjadi lagi dan jatuh lagi. Bagaimana itu serupa, dan apa yang bisa saya lakukan?
Jawaban:
Anda mengalami penolakan serangan layanan. Jika Anda melihat lalu lintas datang dari beberapa jaringan (IP berbeda pada subnet berbeda), Anda mendapat penolakan layanan terdistribusi (DDoS); jika itu semua berasal dari tempat yang sama Anda memiliki DoS lama yang sederhana. Akan bermanfaat untuk memeriksa, jika Anda mampu; gunakan netstat untuk memeriksa. Ini mungkin sulit dilakukan.
Penolakan layanan biasanya jatuh ke dalam beberapa kategori: berbasis lalu lintas, dan berbasis beban. Item terakhir (dengan layanan mogok) adalah DoS berbasis exploit dan sangat berbeda.
Jika Anda mencoba untuk mengetahui jenis serangan apa yang terjadi, Anda mungkin ingin menangkap beberapa lalu lintas (menggunakan wireshark, tcpdump, atau libpcap). Anda harus, jika mungkin, tetapi juga sadar bahwa Anda mungkin akan menangkap cukup banyak lalu lintas.
Seringkali 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) mendapatkan bandwidth upstream dari banyak host yang berbeda di jaringan yang berbeda untuk menyerang Anda, sambil menutupi jejak mereka. The Low Orbit Ion Cannon adalah salah satu contoh dari botnet (meskipun sukarela bukan malware yang diturunkan); Zeus lebih khas.
Berbasis lalu lintas
Jika Anda berada di bawah DoS berbasis lalu lintas, Anda menemukan bahwa ada begitu banyak lalu lintas yang datang ke server Anda sehingga koneksi ke Internet sepenuhnya jenuh. Ada tingkat kehilangan paket tinggi ketika melakukan ping server Anda dari tempat lain, dan (tergantung pada metode routing yang digunakan) kadang-kadang Anda juga melihat latensi yang sangat tinggi (pingnya tinggi). Serangan semacam ini biasanya merupakan DDoS.
Meskipun ini adalah serangan yang "sangat keras", dan sudah jelas apa yang sedang terjadi, sulit bagi administrator server untuk melakukan mitigasi (dan pada dasarnya mustahil bagi pengguna hosting bersama untuk melakukan mitigasi). Anda akan membutuhkan bantuan dari ISP Anda; beri tahu mereka bahwa Anda berada di bawah DDoS dan mereka mungkin dapat membantu.
Namun, sebagian besar ISP dan penyedia transit akan secara proaktif menyadari apa yang sedang terjadi dan menerbitkan rute blackhole untuk server Anda. Artinya, mereka menerbitkan rute ke server Anda dengan biaya sesedikit mungkin, melalui
0.0.0.0
: mereka membuat lalu lintas ke server Anda tidak lagi dapat dilalui di Internet. Rute-rute ini biasanya / 32-an dan pada akhirnya dihapus. Ini sama sekali tidak membantu Anda; tujuannya adalah untuk melindungi jaringan ISP dari banjir. Untuk jangka waktu, server Anda akan secara efektif kehilangan akses Internet.Satu-satunya cara ISP Anda (atau Anda, jika Anda memiliki SA Anda sendiri) dapat membantu adalah jika mereka menggunakan pembentuk lalu lintas cerdas yang dapat mendeteksi dan menilai kemungkinan lalu lintas DDoS. Tidak semua orang memiliki teknologi ini. Namun, jika lalu lintas datang dari satu atau dua jaringan, atau satu host, mereka mungkin juga dapat memblokir lalu lintas di depan Anda.
Singkatnya, ada sangat sedikit yang dapat Anda lakukan tentang masalah ini. Solusi jangka panjang terbaik adalah meng-host layanan Anda di banyak lokasi berbeda di Internet yang harus di-DDoSed secara individual dan bersamaan, membuat DDoS jauh lebih mahal. Strategi untuk ini tergantung pada layanan yang Anda butuhkan untuk melindungi; DNS dapat dilindungi dengan beberapa server nama otoritatif, SMTP dengan catatan MX cadangan dan penukar email, dan HTTP dengan DNS round-robin atau multihoming (tetapi bagaimanapun juga beberapa degradasi mungkin terlihat selama durasinya).
Load balancers jarang merupakan solusi yang efektif untuk masalah ini, karena load balancer itu sendiri mengalami masalah yang sama dan hanya menciptakan hambatan. IPTables atau aturan firewall lainnya tidak akan membantu karena masalahnya 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 dikurangi atau selesai 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 langkah-langkah aktif untuk mengurangi jenis serangan ini, dan juga memiliki banyak bandwidth yang tersedia di berbagai tempat sehingga membanjiri mereka pada umumnya tidak layak.
Jika Anda memutuskan untuk menggunakan CloudFlare (atau CDN / proxy lain), ingatlah untuk menyembunyikan IP server Anda. Jika seorang penyerang menemukan IP, ia dapat kembali DDoS server Anda secara langsung, melewati CloudFlare. Untuk menyembunyikan IP, server Anda tidak boleh berkomunikasi secara langsung dengan server / pengguna lain kecuali mereka aman. Misalnya server Anda tidak boleh mengirim email langsung ke pengguna. Ini tidak berlaku jika Anda meng-host semua konten Anda di CDN dan tidak memiliki server sendiri.
Juga, beberapa VPS dan penyedia hosting lebih baik dalam mengurangi serangan ini daripada yang lain. Secara umum, semakin besar mereka, semakin baik mereka dalam hal ini; penyedia yang sangat terpelajar dan memiliki banyak bandwidth akan secara alami lebih tangguh, dan satu dengan tim operasi jaringan yang aktif dan penuh staf akan dapat bereaksi lebih cepat.
Berbasis beban
Ketika Anda mengalami DDoS berbasis beban, Anda melihat bahwa rata-rata beban abnormal tinggi (atau CPU, RAM, atau penggunaan disk, tergantung pada platform dan spesifik Anda). Meskipun server tampaknya tidak melakukan sesuatu yang bermanfaat, ini sangat sibuk. Seringkali, akan ada banyak sekali entri dalam log yang menunjukkan kondisi yang tidak biasa. Lebih sering daripada tidak, ini datang dari banyak tempat yang berbeda dan merupakan DDoS, tapi itu belum tentu demikian. Bahkan tidak harus ada banyak host yang berbeda .
Serangan ini didasarkan pada membuat layanan Anda melakukan banyak hal mahal. Ini bisa seperti membuka sejumlah besar koneksi TCP dan memaksa Anda untuk mempertahankan statusnya, atau mengunggah file yang terlalu besar atau banyak ke layanan Anda, atau mungkin melakukan pencarian yang sangat mahal, atau benar-benar melakukan apa saja 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 menangani begitu banyak .
Pertama, bahwa jenis serangan ini mungkin sering merupakan indikasi masalah konfigurasi atau bugdalam layanan Anda. Misalnya, Anda mungkin telah mengaktifkan logging dengan kata-kata yang terlalu banyak, 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 melambat hingga merangkak. Perangkat lunak Anda mungkin juga melakukan sesuatu yang sangat tidak efisien untuk kasus input tertentu; penyebabnya sama banyaknya dengan ada program, tetapi dua contoh adalah situasi yang menyebabkan layanan Anda tidak menutup sesi yang selesai, dan situasi yang menyebabkannya menelurkan proses anak dan meninggalkannya. Jika Anda berakhir dengan puluhan ribu koneksi terbuka dengan status untuk melacak, atau puluhan ribu proses anak, Anda akan mengalami masalah.
Hal pertama yang mungkin dapat Anda lakukan adalah menggunakan firewall untuk menghentikan 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 lintasnya ringan), Anda dapat menjatuhkannya di firewall dan tidak akan lagi menimbulkan masalah. Hal lain yang harus dilakukan adalah memperbaiki bug di layanan Anda (menghubungi vendor dan bersiaplah untuk pengalaman dukungan yang lama).
Namun, jika ini masalah konfigurasi, mulailah dari sana . Matikan logging pada sistem produksi ke tingkat yang wajar (tergantung pada program ini biasanya default, dan biasanya akan melibatkan memastikan tingkat "debug" dan "verbose" logging tidak aktif; jika semua yang dilakukan pengguna dicatat dengan tepat dan detail halus, logging Anda terlalu bertele-tele). Selain itu, periksa proses anak dan permintaan batas , mungkin throttle permintaan yang masuk, koneksi per IP, dan jumlah proses anak diperbolehkan, sebagaimana berlaku.
Tak perlu dikatakan bahwa server Anda lebih baik dikonfigurasi dan disediakan, semakin sulit jenis serangan ini. Hindari pelit dengan RAM dan CPU pada khususnya. Pastikan koneksi Anda ke hal-hal seperti database backend dan penyimpanan disk cepat dan dapat diandalkan.
Berbasis eksploitasi
Jika layanan Anda secara misterius crash dengan sangat cepat setelah dibesarkan, khususnya jika Anda dapat menetapkan pola permintaan yang mendahului crash dan permintaan tersebut tidak sesuai atau tidak cocok dengan pola penggunaan yang diharapkan, Anda mungkin mengalami DoS berbasis eksploitasi. Ini bisa datang dari sesedikit hanya satu host (dengan hampir semua jenis koneksi internet), atau banyak host.
Ini 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 crash jarak jauh, seperti input kacau yang menyebabkan null-dereference atau sesuatu dalam layanan Anda.
Tangani ini dengan cara yang sama seperti serangan akses jarak jauh yang tidak sah. Firewall terhadap host asal dan jenis lalu lintas jika mereka bisa ditembaki. Gunakan validasi proksi terbalik jika berlaku. Kumpulkan bukti forensik (coba dan tangkap sebagian lalu lintas), ajukan tiket bug ke vendor, dan pertimbangkan untuk mengajukan keluhan pengaduan (atau pengaduan hukum) terhadap sumber juga.
Serangan-serangan ini cukup murah untuk dipasang, jika suatu exploit dapat ditemukan, dan mereka bisa sangat kuat, tetapi juga relatif mudah untuk dilacak dan dihentikan. Namun, teknik yang berguna terhadap DDoS berbasis lalu lintas umumnya tidak berguna terhadap DoS berbasis eksploitasi.
sumber
Jika Anda perusahaan, Anda memiliki banyak pilihan. Jika Anda 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 penyedia VPS paling berdedikasi dan tidak akan mengatur aturan firewall khusus hanya untuk server Anda. Tetapi saat ini, Anda memiliki beberapa pilihan.
CDN
Jika Anda menjalankan server web, pertimbangkan untuk meletakkannya di belakang CDN seperti CloudFlare atau Amazon CloudFront.
CDN mahal. Untuk mengendalikan biaya, sajikan 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
Cloud pribadi biasanya merupakan solusi perusahaan yang mahal, tetapi biaya VPC Amazon hampir tidak ada untuk mengatur. Namun, bandwidth Amazon secara umum mahal. Jika Anda mampu melakukannya, maka Anda dapat mengatur Grup Keamanan dan Jaringan ACL Amazon VPC untuk memblokir lalu lintas sebelum tiba di tempat 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 IO non-pemblokiran dan dapat menangani sejumlah besar koneksi. Selain itu, tidak banyak yang dapat Anda lakukan selain memastikan Anda menjalankan versi terbaru dari perangkat lunak server.
Ketika Port TCP Anda Diserang Dan Semua Lain 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 perusahaan saat ini.
Tujuannya adalah untuk mengubah port TCP mendengarkan Anda cukup cepat sehingga botnet tidak dapat mengikuti, katakan sekali setiap 10 detik. Ini dicapai dengan menggunakan program proxy sederhana yang melakukan roaming port. Urutan port pseudo-acak, tetapi harus didasarkan pada waktu server. Dan algoritma untuk menghitung waktu & port server harus disembunyikan dalam kode javascript / flash klien Anda. Program juga harus memodifikasi firewall karena mengubah port mendengarkan, dan firewall harus stateful. Jika seseorang tertarik, saya akan mengunggah skrip node.js saya yang berfungsi dengan Amazon, ke GitHub.
sumber
Ubah domain Anda untuk pergi ke black hole seperti 0.0.0.0 untuk waktu yang singkat.
Bicaralah dengan server Anda, berikan 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 duduk di depannya). Dari sini Anda dapat melihat apakah itu adalah alamat IP tunggal dan memblokirnya dari situs atau serangan yang didistribusikan.
sumber
Ketika Anda berada di bawah serangan DDoS, ISP Anda dapat sangat membantu Anda, tetapi jika mereka tidak memiliki perlindungan DDoS, sangat mungkin bahwa Anda tidak akan bekerja sampai serangan berhenti. Biasanya mereka akan melihat alamat ip yang diserang dan membatalkan jaringan pada router hulu mereka. Jika Anda tidak memiliki banyak lalu lintas, ada banyak layanan online untuk perlindungan DDoS di mana lalu lintas Anda dialihkan, difilter, dan dikirim kembali ke server Anda.
sumber
Kami memiliki situasi yang sama sebelumnya. Di bawah ini adalah apa yang kami lakukan.
Pertama, colokkan kabel jaringan dari server Anda. Sekarang, periksa layanan server Anda kembali ke perilaku normal dengan melihat monitor kinerja dan pengelola tugas. Jika tidak, pindai server Anda dengan perangkat lunak malwarebytes untuk memastikan server Anda bersih. Langkah ini biasanya akan memastikan server terputus Anda kembali normal lagi.
Selanjutnya, apakah Anda memiliki firewall? Jika ya, apakah Anda memperbarui langganan? Pastikan Anda mengaktifkan fitur intrusi IPS di firewall. Hanya dengan memperbarui langganan firewall menyelesaikan serangan DDOS kami.
Kami belajar bahwa kami harus memperbarui langganan keamanan (mis. Firwall atau anti virus) dan tidak menganggap enteng. Serangan DDOS terjadi setiap hari dan dapat terjadi pada bisnis kecil juga. Semoga ini membantu.
sumber