راهکارهایی برای شناسایی و دفع حمله DDoS
پرسشی که اغلب از سوی مدیران امنیتی و وبمسترها مطرح می شود، این است که ما چه زمانی می توانیم متوجه شویم زیرساخت های شبکه یا سایت تحت سرپرستی ما گرفتار یک حمله منع سرویس توزیع شده (DDoS) قرار گرفته است؟ برخی از سازمان ها سعی می کنند برای مقابله با این حمله از نیروی انسانی کمک گرفته و به شکل روزانه یا حتی ساعتی زیرساخت های خود را تحت نظارت قرار دهند. با وجود این کارآیی این تکنیک خیلی زیاد نیست. راهکار موثر دیگری که در این زمینه پیش روی شما قرار دارد بکارگیری سرویس های نظارتی قدرتمند است. سرویس هایی که به شکل خودکار و البته هوشمندانه منابع را مورد بررسی قرار دهند.
نظارت خودکار روی منابع به منظور شناسایی حملات منع سرویس توزیع شده (DDoS) به تیم امنیتی سازمان شما اجازه می دهد روی وظایف مهم تری متمرکز شده و اعلان های درست را در زمان مناسبی دریافت کنند. همچنین فراموش نکنید ابزارها و سرویس های نظارتی در اغلب موارد قادر هستند با ارائه راه حل هایی به مقابله با این حملات بپردازند.
حمله منع سرویس توزیع شده چیست؟
بطور خلاصه، یک حمله منع سرویس توزیع شده (DDoS) یک حمله سیل آسا بوده که ترافیک افسار گسیخته ای را به سمت هاست یا سرور روانه می کند. یک هکر می تواند ترافیک سنگینی را ارسال کند تا به سرعت پهنای باند و منابع سرور از دسترس خارج شوند. در این حالت سرور دیگر قادر نیست به درخواست ها رسیدگی کند. در این حالت ممکن است سرور دچار مشکل شده یا پهنای باند برای پاسخگویی به درخواست های معتبر مشتریان وب سرویس شما در دسترس نباشد. همانطور که ممکن است حدس زده باشید تا زمانی که حمله ادامه پیدا کند خدمات رسانی متوقف می شود که این حرف به معنای از دست دادن درآمدهای مالی شما از سرویسی است که آن را ارائه کرده اید.
حملات منع سرویس توزیع شده برای هر کسب و کار آنلاینی ویرانگر بوده و در هر ساعت از شبانه روز ممکن است رخ دهند. در نتیجه مهم است که بدانید این حمله چگونه عمل می کند و چگونه باید آن را در کوتاه ترین زمان متوقف کنید. در مدت زمان بروز چنین حملاتی شما با یک منبع حمله کننده واحد سر و کار ندارید تا با فیلتر کردن آدرس IP هکر حمله را متوقف کنید. هکرهایی که حملات منع سرویس توزیع شده را پیاده سازی می کنند در ابتدا سامانه های کاربران را آلوده می کنند. این سامانه ها می توانند کامپیوترهای شخصی، سامانه های توکار یا دستگاه های اینترنت اشیاء باشند.
در ارتباط با دستگاه های توکار و اینترنت اشیاء، هکرها بطور مستقیم به میان افزاری که وظیفه کنترل دستگاه را عهده دار است حمله می کنند. در ادامه هکرها از یک سامانه متمرکز که وظیفه ارسال دستورات را بر عهده دارد استفاده می کنند. سامانه ای که به ماشین های آلوده به بدافزار اعلام می دارد ترافیک را به سمت یک سایت ارسال کنند. شدت یک حمله به تعداد ماشین هایی که یک هکر موفق شده است آنها را آلوده کند بستگی دارد. بطور معمول، تعداد این کامپیوترها ممکن است 1000 عدد یا حتی فراتر از 10 هزار دستگاه برود. مکانیزم بکار گرفته شده در حملات منع سرویس توزیع شده در اغلب موارد پیچیده است. بطور مثال هکرها می توانند درخواست های اتصال ناقص را ارسال کرده که این مکانیزم باعث به وجود آمدن حالت انتظار می شود. در این تکنیک بطور مرتب درخواست های جدیدی ارسال می شود.
شما در حالت عادی می توانید میزان ترافیکی را که از بابت یک حمله قادر به دفع آن هستید، محاسبه کنید. بطور مثال، اگر ترافیک عادی شما برابر با 100 ارتباط ورودی در یک لحظه بوده و سرور در این وضعیت قادر است به فعالیت های خود ادامه دهد، به معنای آن است که به احتمال زیاد ارتباط 100 ماشین روی ترافیک شما تاثیرگذار نخواهد بود. با این حال در یک حمله منع سرویس توزیع شده هزاران اتصال مبتنی بر آدرس های IP مختلف در یک زمان به سرور حمله می کنند. اگر سرور نتواند در یک لحظه 10 هزار ارتباط را مدیریت کند، به معنای آن است که شما در برابر یک حمله منع سرویس توزیع شده آسیب پذیر خواهید بود. (تصویر 1)
به عبارت دقیق تر در یک لحظه ممکن است صدها یا هزاران ماشین (سرور، کامپیوترهای شخصی یا حتی دستگاه های موبایل) ترافیک خود را به سمت شما گسیل کنند. در عرض چند دقیقه عملکرد سایت کاهش پیدا کرده و منابع هدر می روند. در این حالت کاربران عادی موفق نخواهند شد به سایت شما دسترسی پیدا کنند.
چگونه می توانیم اطلاع پیدا کنیم یک حمله منع سرویس توزیع شده رخ داده است؟
حملات منع سرویس توزیع شده از آن جهت بدترین نوع حملات به شمار می روند که بدون هیچگونه هشداری از راه می رسند. در حالی که برخی از گروه های بزرگ هکری پیش از حمله هشدارهایی را ارسال می کنند، اما در اغلب موارد مهاجمان بدون هیچگونه هشداری به سایت شما حمله می کنند. در این حالت شما تنها زمانی از این موضوع مطلع خواهید شد که مشتریان شکایت می کنند که مشکلی رخ داده و قادر نیستند به سایت شما دسترسی پیدا کنند.
در ابتدا تصور نمی کنید یک حمله منع سرویس توزیع شده رخ داده است، در نتیجه فکر می کنید سرور یا هاست دچار مشکل شده اند. در ادامه سرور را بررسی کرده و یکسری آزمایش های اولیه انجام می دهید، اما فقط حجم بالایی از ترافیک را مشاهده می کنید که باعث شده بکارگیری منابع به حداکثر ظرفیت ممکن برسد. در ادامه به سراغ بررسی این موضوع می روید که آیا برنامه هایی در پس زمینه در حال اجرا هستند، اما باز هم هیچ نشانه ای از یک مشکل را پیدا نمی کنید. مدت زمانی که صرف درک این موضوع می کنید که یک حمله منع سرویس توزیع شده رخ داده و مدت زمانی که صرف کم کردن آسیب ها می کنید حداقل چند ساعت زمان خواهد برد. در این چند ساعت ارزشمند شما ممکن است ضرر مالی زیادی را متحمل شوید. در نتیجه هرچه سریع تر این حمله را تشخیص دهید میزان خسارت به بار آمده به حداقل می رسد.
راهنمای تشخیص حمله منع سرویس توزیع شده
موثرترین راهکار برای مقابله با یک حمله منع سرویس توزیع شده درست همان زمانی است که حمله آغاز شده است. در اینجا چند سرنخ وجود دارد که نشان می دهند یک حمله منع سرویس توزیع شده رخ داده است.
- یک آدرس آی پی، X درخواست را در مدت زمان y ثانیه ایجاد کرده است.
- سرور پیغام خطای 503 به معنای غیرقابل دسترس بودن سرور به دلیل ترافیک زیاد را نشان می دهد.
- زمان زندگی (TTL) سر نام Time to Live روی یک درخواست پینگ به اتمام رسیده است.
- کارمندان از کندی سرعت گلایه دارند.
- و در نهایت گزارش های تحلیلی خبر از یک ترافیک بزرگ می دهند.
بیشتر این نشانه ها می توانند از سوی یک سامانه هشدار دهنده جمع آوری شده و از طریق یک ایمیل یا پیام برای مدیران ارسال شوند. سامانه هشدار دهنده طراحی شده از سوی loggly از جمله راهکارهایی است که در این زمینه پیش روی سازمان ها قرار دارد. (تصویر 1)
ارسال درخواست های زیاد از طریق یک آدرس آی پی
شما به شکل موقت می توانید روتر را به گونه ای تنظیم کنید تا ترافیک مبتنی بر یکسری آدرس های آی پی خاص را به سمت مسیرهایی هدایت کند که وجود ندارند. این تکنیک در حقیقت آدرس های آی پی حمله کننده را به یک مسیر خالی که وجود ندارد هدایت کرده و اجازه نمی دهد روی عملکرد سرور تاثیرگذار باشند. راهکار ساده تری که پیش روی شما قرار دارد، این است که آدرس های آی پی غیرقانونی را مسدود کرده و به این شکل حمله را متوقف کنید. اما این روش مشکلی دارد. آدرس های آی پی منبع حمله کننده ممکن است گمراه کننده باشند.
تنظیم هشدارها از طریق دیوارهای آتش یا سامانه های تشخیص نفوذ نیز ممکن است پیچیده باشد. هکرها ممکن است از روبات هایی که عملکرد عادی دارند برای فریب این سامانه ها استفاده کنند. بطورکلی، شما باید سامانه یا مکانیزم هشدار دهنده را به گونه ای تنظیم کنید که هر زمان تعداد زیادی درخواست را از آدرس های آی پی دریافت کرد که همگی در یک محدوده قرار دارند و از قبل مشخص شده اند و درون یک پنجره یکسان دریافت می شوند را تشخیص داده و این موضوع را به شما اطلاع دهد. به احتمال زیاد به یک فهرست سفید از آدرس های معتبر نیاز دارید. بواسطه آنکه روبات گوگل موسوم به Googlebot با سرعت و نرخ بالایی فرآیند خزیدن را انجام می دهد. در نتیجه اگر این فهرست را در اختیار نداشته باشید آنگاه روبات ها و اسکریپت های معتبری همچون روبات گوگل ممکن است به عنوان یک تهدید شناخته شده و سامانه هشدار دهنده یک پیغام هشدار کاذب را تولید کند.
سرور با کد 503 پاسخ می دهد.
در ویندوز شما می توانید هشدارها را به گونه ای تنظیم کنید که اگر یک رویداد خاص در Event Viewer اجرا شد از آن مطلع شوید. شما می توانید هر موضوعی همچون خطاها، هشدارها یا هر نوع رویدادی را به یک وظیفه الصاق سنجاق کنید. این کار باعث می شود تا پیش از آنکه یک موقعیت بحرانی شکل بگیرد موضوع را بررسی کنید. برای الصاق یک رویداد 503 ابتدا باید رویداد مورد نظر خود را در Event Viewer پیدا کنید. برای این منظور Event Viewer را باز کرده و روی رویداد مورد نظر کلیک راست کنید. این کار باعث می شود تا صفحه پیکربندی، مکانی که در نظر دارید یک رویداد را برای ارسال یک ایمیل به مدیر یا تیمی از پژوهشگران پیکربندی کنید، در اختیارتان قرار گیرد.
TTL Time Out
شما بطور معمول می توانید سرور را برای آزمایش پهنای باند و ارتباطات پینگ کنید، اگر در نظر دارید فرآیند هشداردهی را خودکارسازی کرده بطوریکه پیش از وقوع یک حمله به شما اطلاع رسانی کند، این راهکار کمک چندانی به شما نمی کند. البته بعضی مواقع پینگ کردن سرور با اشتباهاتی نیز همراه است. برای آنکه بتوانید هشداردهی مبتنی بر پینگ را خودکارسازی کنید، چند سرویس روی وب وجود دارند که اجازه می دهند از هر نقطه در جهان سایت خود را پینگ کنید. این سرویس ها را می توانید به شکل منطقه ای پیکربندی کرده تا فرآیند پینگ کردن را انجام دهند. از طریق این سرویس ها، سایت شما در 24 ساعت شبانه روز و هفت روز کاری تحت نظارت قرار می گیرد. در نتیجه تیم فناوری اطلاعات می تواند در صورت بروز مشکل روی سرور به سرعت موضوع را بررسی کند. بواسطه آنکه حمله منع سرویس انکار شده به سرعت پهنای باند شما را مصرف می کند، زمان پینگ ممکن است بیش از اندازه طولانی شود. در این حالت سرویس های فوق قادر هستند هشداری را برای تیم شما ارسال کرده تا به سرعت تدابیر امنیتی فنی را برای حل مشکل اعمال کنند.
چگونه می توانیم از طریق فرمان netstat یک حمله منع سرویس توزیع شده را شناسایی کنیم؟
راهکارهای مختلفی برای شناسایی یک حمله منع سرویس انکار شده وجود دارد. بطور مثال می توانید از Wireshark استفاده کرده و بسته های SYN را مورد بررسی قرار دهید. اما از طریق فرمان netstat که روی پلتفرم های مختلف قابل استفاده است می توانید به شناسایی این موضوع بپردازید. در ادامه با چند کاربرد این فرمان آشنا می شوید:
- فرمان netstat -na همه ارتباطات اینترنتی فعال به سرور و فقط ارتباطات در حالت انتظار را نشان می دهد.
- فرمان netstat -an | grep :80 | sort ارتباطات اینترنتی فعال به سرور از طریق پورت 80 را نشان می دهد. با توجه به اینکه فرمان فوق پورت مرتبط با پروتکل http را بررسی می کند، زمانی که یک وب سرور دارید این دستور کمک کننده است. خروجی این فرمان به صورت فهرست شده نشان داده می شود. از این فرمان برای شناسایی یک حمله single flood و به منظور تشخیص اینکه چه تعداد ارتباط وارد شونده از یک آدرس آی پی وارد شده است، استفاده کنید.
- فرمان netstat -n -p | grep SYN_REC | wc -I اجازه می دهد تعداد SYN_REC فعال در حال اجرا روی سرور را محاسبه کنید. این تعداد باید نسبتاً کم باشد. در اغلب موارد باید کمتر از 5 باشد. در یک حمله DoS یا mail bombs این تعداد رشد چشمگیری دارد. البته فراموش نکنید که این مقدار به سامانه شما نیز بستگی دارد. در نتیجه یک مقدار بالا ممکن است برای سرور دیگری حکم میانگین را داشته باشد.
- فرمان netstat -n -p | grep SYN_REC | sort -u به جای آنکه تنها تعداد آدرس های آی پی را نشان دهد همه آدرس های آی پی را فهرست می کند.
- فرمان netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n برای محاسبه و شمارش تعداد ارتباطاتی که هر آدرس آی پی روی سرور ایجاد کرده بکار برده می شود.
- فرمان netstat -anp | grep ‘tcp | udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n تعداد ارتباطات مرتبط با آدرس های آی پی را که از طریق پروتکل های TCP یا UDP به سرور متصل شده اند، شمارش کرده و نشان می دهد.
- فرمان netstat -ntu | grep ESTAB | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c| sort -nr به جای آنکه همه ارتباطات را مورد بررسی قرار دهد ارتباطات ایجاد شده (ESTABLISHED) را بررسی کرده و تعداد ارتباطات مرتبط با هر آدرس آی پی را نشان می دهد.
از طریق بکارگیری فرمان های فوق موفق خواهید شد یک آدرس آی پی را که آماده است برای اجرای یک حمله DDoS مورد استفاده قرار گیرد، شناسایی کنید.
منابع
مقاله علمی و آموزشی «راهکارهایی برای شناسایی و دفع حمله DDoS»، نتیجه ی تحقیق و پژوهش، گردآوری، ترجمه و نگارش هیئت تحریریه پورتال یو سی (شما می توانید) می باشد.