حمله HTTP flood چیست؟
حملهی HTTP flood در دستهی حملههای DDOS قرار میگیرد و هدف اصلی این حمله، مشغول نگهداشتن منابع یک سرور از طریق ارسال درخواست با پروتکل HTTP (پروتکل لایهی هفت مدل OSI) است.
زمانی که حملهکننده میخواهد با استفاده از حملهی HTTP flood، یک سرویس را از دسترس خارج کند، درخواستهای HTTP زیادی را (که عمومن متدهای GET و POST هستند) برای سرور ارسال میکند. درخواستهای ارسال شده، میتوانند کاملن مشابه یک درخواست معتبر ارسال شده بهوسیلهی یک کاربر واقعی باشند. از طرفی، این حمله نیاز به پهنای باند کمتری نسبت به بسیاری از حملههای دیگر دارد. این دو موضوع سبب شده است تا تشخیص و جلوگیری از این حمله به امری دشوار مبدل شود.
انواع حملههای HTTP flood
استفاده از متدهای GET و POST، رایجترین انواع استفاده از پروتکل HTTP برای مشغول نگهداشتن سرور هستند. در ادامه توضیح میدهیم که هرکدام از این متدها چگونه میتوانند باعث منع سرویس بشوند.
۱- متد GET: این متد، برای گرفتن اطلاعات از سرور استفاده میشود. در این نوع حمله، حملهکننده شروع به ارسال تعداد زیادی درخواست (برای نمونه درخواست برای عکس، یک فایل متنی یا …) میکند. حمله با استفاده از متد GET نسبت به متد POST ، به منابع بیشتری برای پیادهسازی نیاز دارد اما پیچیدگی کمتری دارد. گاهی برای پیادهسازی این نوع حمله، از botnet استفاده میشود. در این حالت، حملهکننده تعدادی کامپیوتر را از طریق بدافزارها آلوده میکند. دستگاههای آلوده شده، بدون اطلاع صاحب دستگاه، شروع به ارسال درخواست برای سرور میکنند و وقتی این کار از چندین دستگاه انجام شود، بیشتر منابع سرور درگیر پاسخگویی خواهند شد و حملهی DDOS اتفاق میافتد.
۲- متد POST: برخلاف متد قبلی، این متد برای ارسال یک فرم یا اطلاعات برای سرور استفاده میشود. هر فرمی که برای سرور ارسال میشود، نیاز به ثبت شدن در یک پایگاه داده دارد که این فرآیند، تقریبن زمانبر و از نظر پردازشی سنگین محسوب میشود. ارسال درخواستهای POST به سرور تا آنجا ادامه پیدا میکند که یا پهنای باند سرور برای درخواستهای ورودی پاسخگو نباشد یا سرور با درخواستهای زیادی به پایگاه داده مشغول باشد و توان پاسخگویی به درخواست دیگری را نداشته باشد. اگرچه برای این حمله، نیاز به ارسال تعداد کمتری درخواست برای سرور وجود دارد ولی با توجه به ماهیت متد POST که نیاز است اطلاعاتی برای سرور ارسال شود، پیچیدگی بیشتری دارد.
چگونه میتوان از حملهی HTTP flood جلوگیری کرد؟
همانطور که گفته شد، سختی تشخیص این حمله، در شبیه بودن ترافیک حملهکننده به ترافیک کاربر عادی است. اگر با کمک روشی بتوان این دو ترافیک را از یکدیگر جدا کرد، تا حدودی جلوی حمله گرفته میشود.
با توجه به اینکه در این حمله و بهخصوص دراستفاده از GET، از باتها استفاده میشود، میتوان با استفاده از یک چالش (برای نمونه استفاده از یک captcha یا یک معما)، تا حدودی کاربر واقعی را تشخیص داد.
یکی دیگر از راهها، استفاده از چالشهای JavaScript است. از آنجایی که بیشتر کاربرها از مرورگرهای وب استفاده میکنند و مرورگرها هم از JavaScript پشتیبانی میکنند، ارسال چالش هم میتواند موثر باشد. بسیاری از botnetها قادر به حل این چالشها نیستند. در حالیکه مرورگرها، بدون آنکه تغییری در عملکرد احساس بشود، میتوانند این چالشها را حل کنند.
با استفاده از سرویس WAF یا web application firewall میتوان با بررسی رفتار کاربران، رفتارهای نزدیک به حمله یا مهاجم را تشخیص داد و از ورود ترافیک مربوط به آنها جلوگیری کرد. این فایروالها با فایروالهای عادی تفاوتهایی دارد و عمومن کاربرد لایهی ۷، یعنی لایهی application دارند. این فایروال ، ترافیک ورودی یک web application و IP کاربران ارسالکنندهی آنها را تحتنظر دارد و IPها در یک پایگاه داده ذخیره میکند. با استفاده از این اطلاعات و با استفاده از قوانین و الگوهایی که از قبل برای فایروال تعریف شده است، هر زمان که فایروال رفتاری مانند حمله یا نزدیک به آن مشاهده کند، ترافیک ورودی مربوط به آن را مسدود میکند و به این شکل از حمله جلوگیری میشود. همچنین آن فایروالها، میتوانند با تحلیل محتوای درخواستهای HTTP، جلوی بسیاری از حملههای این لایه مانند SQL Injection یا حملهی XSS را، از طریق تشخیص کاراکترهای غیر مجاز و یا کد جاوا اسکریپت، بگیرند.
ابر آروان در راستای محافظت هرچه بیشتر از کسب و کارهای آنلاین مشتریان با بهرهگیری از محصول امنیت ابری و WAF اختصاصی خود، اینگونه حملات را شناسایی و دفع میکند.