بهروزرسانی شده در ۱۲ مهر ۱۴۰۵
آموزش جامع و عملی تشخیص حملات DDoS در سرور (گامبهگام و ۱۰۰٪ کاربردی) 🛡️
حمله محرومسازی از سرویس یا DDoS (Distributed Denial of Service)، کابوس هر مدیر سرور و وبمستری است. در این نوع حمله، هکرها با استفاده از هزاران سیستم آلوده (باتنت)، ترافیک فیک و درخواستهای بیشماری را به سمت سرور شما روانه میکنند تا منابع (CPU، RAM و پهنای باند) کاملاً پر شده و سایت از دسترس کاربران واقعی خارج شود.
برای اینکه در نتایج جستجو بهترین عملکرد را داشته باشید، آپتایم سرور حیاتی است. تشخیص زودهنگام حمله، مرز بین «چند دقیقه کندی» و «ساعتها قطعی کامل» را مشخص میکند. در این مقاله از بلاگ نگارنوین، به جای تئوریبافی، یک آموزش کاملاً واقعی، فنی و گامبهگام را برای محیط لینوکس (که استاندارد سرورهای وب است) ارائه میدهیم تا دقیقاً بدانید روی سرور چه میگذرد.
فاز اول: علائم ظاهری (چگونه بفهمیم تحت حمله هستیم؟)
قبل از ورود به خط فرمان (ترمینال)، سرور با زبان بیزبانی به شما هشدار میدهد. اگر این علائم را دیدید، زنگ خطر به صدا درآمده است:
- افت شدید سرعت یا تایماوت: مواجهه مداوم با خطاهای
502 Bad Gateway،503 Service Unavailableیا504 Gateway Timeout. - قطع دسترسی ریموت: تلاش میکنید از طریق SSH (لینوکس) یا RDP (ویندوز) به سرور وصل شوید اما اتصال برقرار نمیشود یا به شدت با تاخیر همراه است.
- کرش کردن دیتابیس: خطاهایی مانند
Too many connectionsدر MySQL، نشاندهنده پر شدن استخر اتصالات (Connection Pool) توسط درخواستهای مخرب است.
فاز دوم: تشخیص حمله از طریق خط فرمان (آموزش عملی)
اگر موفق شدید (حتی با تاخیر یا از طریق کنسول VNC نگارنوین) به سرور لینوکسی خود متصل شوید، بلافاصله مراحل زیر را به ترتیب اجرا کنید.
گام اول: بررسی وضعیت منابع سیستم (Load Average)
ابتدا باید ببینیم آیا سرور واقعاً تحت فشار است یا مشکل از جای دیگری است. دستور زیر را وارد کنید:
Bash
uptime
تحلیل خروجی: در خروجی این دستور عبارتی به نام
load average: 15.2, 12.4, 8.5 میبینید. اگر سرور شما مثلاً ۴ هسته پردازشی (Core) دارد، عدد Load نباید به طور مداوم بالاتر از ۴ باشد. اگر این عدد ۱۰، ۲۰ یا ۵۰ بود، یعنی پردازنده شما در حال خفه شدن زیر بار درخواستهاست.گام دوم: شناسایی IPهای مهاجم با دستور Netstat (شاهکلید تشخیص)
برای اینکه ببینیم چه کسانی به سرور ما وصل هستند و هر کدام چند اتصال برقرار کردهاند، از این دستور جادویی و ترکیبی استفاده میکنیم:
Bash
netstat -anp | grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
تحلیل خروجی: این دستور، لیستی از IPها و تعداد اتصالات آنها را از کم به زیاد به شما نشان میدهد.
- حالت طبیعی: یک IP معمولی بین ۱ تا ۱۵ اتصال به سرور شما دارد.
- حالت حمله: اگر در انتهای لیست دیدید که یک یا چند IP خاص، بیش از ۱۰۰، ۵۰۰ یا ۱۰۰۰ اتصال همزمان برقرار کردهاند، آنها قطعاً مهاجم هستند یا بخشی از یک باتنت میباشند.
گام سوم: تشخیص حمله SYN Flood (حمله لایه ۴ شبکه)
یکی از کشندهترین حملات DDoS، ارسال درخواستهای ناقص (SYN) برای درگیر نگه داشتن پورتهای سرور است. برای بررسی این نوع حمله دستور زیر را وارد کنید:
Bash
netstat -n -p | grep SYN_REC | wc -l
تحلیل خروجی: این دستور تعداد اتصالاتِ “نیمهباز” را میشمارد. در یک سرور عادی، این عدد معمولاً بین
0 تا 5 است. اگر عدد خروجی بالاتر از ۱۰۰ یا ۲۰۰ بود، شما به طور قطع تحت حمله قدرتمند SYN Flood هستید و پورتهای شما در حال مسدود شدن هستند.گام چهارم: تشخیص حمله HTTP Flood از طریق لاگ وبسرور (لایه ۷)
گاهی اوقات هکرها به جای شبکه، مستقیماً وبسایت شما (لایه اپلیکیشن) را هدف میگیرند (مثلاً ارسال ۱۰۰ هزار درخواست به صفحه لاگین در یک دقیقه). در این حالت منابع سرور درگیر میشود اما شبکه عادی به نظر میرسد.
اگر از Nginx استفاده میکنید، دستور زیر را وارد کنید (برای Apache مسیر لاگ را به
/var/log/apache2/access.log تغییر دهید):Bash
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
تحلیل خروجی: این دستور ۱۰ تا از IPهایی که بیشترین درخواست را به سایت شما ارسال کردهاند، لیست میکند. اگر دیدید یک IP در چند دقیقه گذشته دهها هزار بار لاگ انداخته است، آن IP یک ربات مخرب لایه ۷ است.
گام پنجم: مانیتورینگ زنده پهنای باند با iftop

شاید حمله به قدری بزرگ باشد که لوله اینترنت (پهنای باند) سرور شما کاملاً پر شده باشد. برای دیدن مصرف زنده ترافیک، ابزار
iftop را نصب و اجرا کنید:Bash
yum install iftop # برای آلما لینوکس و سنت او اس
apt install iftop # برای اوبونتو و دبیان
iftop -n
تحلیل خروجی: در صفحه باز شده، میتوانید دقیقاً ببینید کدام IPها در همین لحظه در حال آپلود یا دانلود ترافیکهای سنگین (بر حسب مگابیت بر ثانیه) روی شبکه شما هستند.
فاز سوم: بعد از تشخیص چه کنیم؟ (اقدامات متقابل فوری)
حالا که IPها یا نوع حمله را شناسایی کردید، باید وارد عمل شوید:
- مسدود کردن IP مهاجم با فایروال:اگر چند IP خاص را شناسایی کردید، فوراً آنها را با
iptablesیا فایروال سرور (مانند CSF) بلاک کنید:Bashiptables -A INPUT -s [آدرس آیپی مهاجم] -j DROP - استفاده از شبکههای توزیع محتوا (CDN):ترافیک خود را به سرعت روی کلودفلر (Cloudflare) یا ابرآروان منتقل کنید و حالت Under Attack Mode را روشن کنید تا ترافیک رباتها فیلتر شود.
- محدودسازی اتصالات (Rate Limiting):در تنظیمات وبسرور خود (Nginx یا Litespeed) قانونی وضع کنید که هیچ کاربری نتواند بیش از مثلاً ۳۰ درخواست در ثانیه ارسال کند.
سخن پایانی و یک راهکار دائمی
تشخیص و دفع دستی حملات DDoS در سرورهای خام، کاری بسیار فرساینده و نیازمند مانیتورینگ ۲۴ ساعته است. حملات مدرن امروزی از نوع Volumetric (بالای ۱۰۰ گیگابیت بر ثانیه) هستند که فایروالهای نرمافزاری داخل سرور توانایی پردازش آنها را ندارند و سرور در همان ثانیه اول از دسترس خارج میشود.
بهترین راهکار؟ استفاده از زیرساختهای ایمن.
ما در نگارنوین، سرورهای مجازی و اختصاصی خود را در دیتاسنترهای مجهز به فایروالهای سختافزاری Anti-DDoS میزبانی میکنیم. این تجهیزات در لبه شبکه قرار دارند و ترافیک کثیف و حملات لایه ۳ و ۴ را پیش از اینکه حتی به پورت سرور شما برسند، شناسایی و دفع میکنند. با سرورهای نگارنوین، امنیت و آپتایم کسبوکار شما در برابر بزرگترین طوفانهای دیجیتال تضمین شده است.