آیا سرور لینوکسی شما تحت حمله DDoS است؟

شما چه  یک وبلاگ نویس، صاحب یک فروشگاه تجارت الکترونیک، یا مدیر یک وب سایت باشید، همه می دانند که در دنیای اینترنت محور امروزی، داشتن یک وب سایت قوی می تواند یکی از دلایل  موفقیت اقتصادی باشد. با رشد روزافزون کسب‌وکارها که برای افزایش فروش به موتورهای جستجو و ترافیک وب متکی هستند، این ریسک همیشه موجود دارد که از سوی بازدید کنندگان مخرب یا همان هکر ها مورد سوء استفاده قرار گیرند. یکی از  تهدید های که  به ویژه در سال های اخیر رایج تر شده است حملات DDoS است.
اما حمله DDoS چیست، چگونه می توان آنها را شناسایی کرد و برای محافظت از وب سایت خود در برابر آنها چه کاری می توانید انجام دهید؟
در این راهنما، ما نگاهی به علائم رایج حمله DDoS و همچنین اقداماتی که می‌توانید برای کاهش آسیب‌های ناشی از آن‌ها در سرور مجازی یا سرور اختصاصی خود انجام دهید، خواهیم داشت.

DDoS چیست؟

در صوریتکه از همراه هان همیشگی پویاسازان هستید با حملات DDos در مقالات قبلی اشنا شده اید. DDoSبه طور کلی  یا Distributed Denial of Service، یک حمله هماهنگ با استفاده از یک یا چند آدرس IP است که برای فلج کردن وب سایت از طریق غیرقابل دسترس کردن سرور آن طراحی شده است. این کار با بارگذاری بیش از حد منابع سرور و استفاده از تمام اتصالات، پهنای باند و توان عملیاتی موجود انجام می شود. درست مانند هنگام رانندگی، در صورت وجود ترافیک زیاد، زمان سفر شما از نقطه A به نقطه B کندتر خواهد بود. با غرق کردن  سروری در اتصالات بیشتر از توان آن، سرور دچار گرفتگی می شود و باعث می شود که قادر به پردازش درخواست های قانونی نباشد. حتی سرورهای مقاوم نیز نمی توانند تعداد اتصالاتی را که یک DDoS می تواند ایجاد کند، را تحمل کنند.

در حالی که ابزارهای مختلفی برای انجام یک حمله DDoS وجود دارد، از ایجاد سیل HTTP گرفته تا اتصالات طولانی Slowloris، اکثریت قریب به اتفاق نیاز به اتصال زنده به سرور شما دارند.
خبر خوب این است که از آنجایی که این ارتباطات زنده هستند، شما می توانید آنها را در حین ایجاد شدن ببینید. با استفاده از چند دستور ساده، نه تنها می‌توانید تعیین کنید که آیا DDoS اتفاق می‌افتد، بلکه می‌توانید اطلاعات مورد نیاز برای کمک به کاهش این حملات را به دست آورید.

نحوه بررسی DDoS 

اگر نگران این هستید که سرور شما ممکن است تحت حمله DDoS قرار گرفته باشد ، اولین کاری که باید انجام دهید این است که به بارگذاری روی سرور خود نگاه کنید. به سادگی  با دستور  uptime یا دستور top شما می توانید وضعیت فعلی سرور خود را  چک کنید.

اما بار یا load  قابل قبول چیست؟

خوب، این به منابع CPU یا threads  موجود بستگی دارد. با این حال، به طور معمول، قانون یک نقطه در هر موضوع را می شود در نظر گرفت (one point per thread).

برای تعیین لود فعلی خود می توانید از دستور زیر استفاده کنید. این دستور، که تعداد پردازنده های منطقی (threads) را برمی گرداند.

grep processor /proc/cpuinfo | wc –l

 

در طول یک حمله DDoS، ممکن است lode   سرور خود را  دو برابر، سه برابر یا حتی بیشتر از حداکثر باری که باید داشته باشید مشاهده کنید.
برای شروع، از دو دستور زیر استفاده کنید تا زمان آپ تایم و بار سرور خود را مشاهده کنید.

میانگین بار، بار را در فواصل زیر نمایش می دهد: میانگین 1 دقیقه، میانگین 5 دقیقه و میانگین 15 دقیقه. در این تصویر ، میانگین بار بیش از 7 می تواند نگران کننده باشد.

برخلاف مثال بالا، گاهی اوقات سرور شما از طریق یک اتصال پشتیبان مانند IPMI به خوبی پاسخ می‌دهد، اما همچنان هنگام اتصال از طریق یک رابط عمومی کند است. برای تعیین اینکه آیا این مورد است، باید ترافیک شبکه خود را بررسی کنید. این را می توان با یکی از چندین ابزار از جمله nload، bmon، iftop، vnstat و ifstat انجام داد. انتخاب شما به سیستم عامل شما بستگی دارد، اما همه این ابزارها را می توان از طریق مدیر بسته  (apt، yum و غیره) بر روی سرور خود نصب کنید.

چگونه بررسی کنیم که کدام IP به سرور شما متصل می شود

از آنجایی که اکثر حملات DDoS نیاز به اتصال به سرور شما دارند، می توانید بررسی کنید و ببینید که چند و کدام آدرس IP به طور همزمان به سرور شما متصل می شوند. این را می توان با استفاده از netstat تعیین کرد، دستوری که برای ارائه تمام جزئیات استفاده می شود. اگرچه در این مثال، ما فقط به IP های خاصی که اتصالات ایجاد می کنند، تعداد IP ها و احتمالاً زیرشبکه هایی که آنها بخشی از آنها هستند علاقه مند هستیم. برای شروع، دستور زیر را در ترمینال خود وارد کنید:

netstat -ntu|awk ‘{print $5}’|cut -d: -f1 -s|sort|uniq -c|sort -nk1 –r

زمانی که این دستور به درستی وارد شود، فهرست نزولی نشان می دهد که کدام IP به سرور شما متصل است و هر کدام چند اتصال دارد. نتایج ممکن است شامل داده‌های اشتباه یا  نا درست  نیز باشد که به‌عنوان اطلاعات غیر IP ظاهر می‌شوند و می‌توان آنها را نادیده گرفت. مانند عدد اخر در تصویر بالا
با نگاهی به نتایج خود، اتصالات لیست شده را مشاهده خواهید کرد که از 1 تا 50 اتصال در هر IP متغیر است. 50 اتصال می تواند برای ترافیک عادی کاملاً رایج باشد. با این حال، اگر تعدادی IP با بیش از 100 اتصال مشاهده می کنید، این  همان چیزی است که باید بررسی کنید.
ممکن است IP های شناخته شده، یک یا چند مورد از IP های خود سرور یا حتی IP شخصی خود را با اتصالات زیاد مشاهده کنید. در بیشتر موارد، اینها را می توان نادیده گرفت، زیرا معمولاً وجود دارند. زمانی که IP های ناشناخته با صدها یا هزاران اتصال را می بینید باید نگران باشید، زیرا این می تواند نشانه حمله باشد.

کاهش حمله DDoS


هنگامی که تصور می کنید یک  IP ها به سرور شما حمله می کنند، می توانید ان  ip را با چند دستور ساده مسدود کنید.

برای شروع، از دستور زیر استفاده کنید و آدرس IP را که می‌خواهید مسدود کنید جایگزین «ipaddress» کنید.

route add ipaddress reject

هنگامی که IP خاصی را در سرور مسدود کردید، می توانید با استفاده از موارد زیر بررسی کنید که آیا IP با موفقیت مسدود شده است:

route -n |grep ipaddress

همچنین می‌توانید با وارد کردن دستورات زیر، یک آدرس IP را با استفاده از iptables روی سرور بلاک کنید :

iptables -A INPUT 1 -s IPADDRESS -j DROP/REJECT

service iptables restart

service iptables save

پس از وارد کردن این سری دستورات، باید تمام اتصالات httpd را از بین ببرید و سرویس های httpd را مجددا راه اندازی کنید. این را می توان با وارد کردن انجام داد:

killall -KILL httpd

service httpd startssl

اگر بیش از یک آدرس IP ناشناخته تعداد زیادی اتصال ایجاد می کند، هر یک از این فرآیندها می تواند برای همه IP های متخلف تکرار شود.

نکته : دستورات گفته شده  مربوط به  iptables  در صورتیکه از سایر فایروال ها بر روی سرور لینوکسی خود استفاده می کنید نیاز است دستور ات مربوط به همان فایروال را برای بلاک کردن ای پی و ریست آن استفاده کنید.

DDoS با استفاده از IP های متعدد

در حالی که یک حمله بر روی یک  سرویس سرور  از یک IP واحد که اتصالات متعدد ایجاد می کند می تواند به راحتی تشخیص داده و رفع شود، پیشگیری از DDoS پیچیده تر می شود زیرا مهاجمان از اتصالات کمتری استفاده می کنند که در تعداد بیشتری از IP های مهاجم پخش شده است. در این موارد، حتی زمانی که سرور شما تحت DDoS باشد، اتصالات فردی کمتری را مشاهده خواهید کرد. با ظهور اینترنت اشیا (IoT)، این نوع حملات رایج تر شده اند. با هک کردن و استفاده از دستگاه‌ها، ابزارها و ابزارهای «هوشمند» که دارای قابلیت اتصال به اینترنت هستند، عوامل مخرب شبکه‌هایی از IPهای موجود ساخته‌اند که به آنها بات‌نت گفته می‌شود و می‌توانند در حملات DDoS هماهنگ علیه اهداف خاص مستقر شوند.
بنابراین، اگر تعداد زیادی IP ناشناخته را پیدا کنید که فقط اتصالات تکی ایجاد می کنند، چه کاری می توانید انجام دهید؟ در این مثال، تعیین اینکه آیا این ترافیک طبیعی است یا یک حمله هماهنگ، می تواند دشوار باشد.
برای شروع، می‌خواهید تعیین کنید که آیا این اتصالات از زیرشبکه‌های مشترک می‌آیند: مشترک همان /16 یا /24 است. می‌توانید از دو دستور بعدی برای فهرست کردن زیرشبکه‌های حاوی IPهای متصل و تعداد IP در هر زیرشبکه استفاده کنید.(برای مثال برای /16 باید ای پی را به صورت (xxx.xxx.0.0) وارد کرد و  برای /24 با ید ای پی را به صورت  xxx.xxx.xxx.0 وارد کرد )

netstat -ntu|awk ‘{print $5}’|cut -d: -f1 -s |cut -f1,2 -d’.’|sed ‘s/$/.0.0/’|sort|uniq -c|sort -nk1 –r

این دستور هر IP را که با همان دو اکتت شروع می شود نشان می دهد: به عنوان مثال. 192.168.xxx.xxx.

netstat -ntu|awk ‘{print $5}’|cut -d: -f1 -s |cut -f1,2,3 -d’.’|sed ‘s/$/.0/’|sort|uniq -c|sort -nk1 –r

این دستور هر IP را که با همان سه  اکتت شروع می شود نشان می دهد: به عنوان مثال. 192.168.1.xxx

 

هنگامی که تشخیص دادید که آیا واقعاً تحت یک حمله DDoS چند IP هستید، مراحل کاهش آن مانند مواردی است که در بالا برای مبارزه با حملات IP منفرد استفاده می شود، اما برای بسیاری از IP ها تکرار می شود.

این تکنیک ها تنها تعدادی از ابزارهای موجود برای بررسی حملات احتمالی هستند. در حالی که ابزارهای پیشرفته تری در دسترس هستند، این روش ها می توانند نتایج سریع و آسانی را برای تعیین اینکه آیا ممکن است حمله DDoS را تجربه می کنید ارائه دهند. اطلاعاتی که این دستورات ارائه می دهند حتی زمانی که مورد حمله قرار نگرفته اند مفید است و آشنایی با آنها می تواند به تقویت کمربند ابزار هر مدیری کمک کند.

مطالب مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.