دسته بندی:

نحوه نصب اسکریپت DDos Deflate

اسکریپت DDoS Deflate یک شل‌اسکریپت سبک است که هر چند ثانیه یا هر چند دقیقه تعداد اتصال‌های باز هر آی‌پی به سرور را می‌شمارد و هر آی‌پی که از حد تعیین‌شده عبور کند را برای مدت مشخصی در فایروال سرور (iptables، CSF یا فایروال APF) مسدود می‌کند. یعنی پیش‌نیازش داشتن یک فایروال فعال است؛ اگر هنوز CSF را راه نینداخته‌اید، نصب فایروال CSF را ببینید. نصبش پیچیده نیست، اما از همین ابتدا بدانید که این ابزار فقط برای حمله‌های کوچک و سطح اتصال مفید است و در برابر حمله حجمی که پهنای باند ورودی سرور را پر می‌کند، عملاً کاری از دستش برنمی‌آید.

DDoS Deflate دقیقاً چه می‌کند؟

منطق این اسکریپت ساده است: فهرست اتصال‌های TCP و UDP سرور را می‌گیرد، آی‌پی طرف مقابل را جدا می‌کند و تعداد تکرار هر آی‌پی را می‌شمارد. هسته کار چیزی شبیه این دستور است:

ss -Hntu | awk '{print $6}' | sort | uniq -c | sort -nr

هر آی‌پی که تعداد اتصال‌هایش از مقدار NO_OF_CONNECTIONS بیشتر شود، به‌صورت خودکار در فایروال بلاک می‌شود و پس از پایان BAN_PERIOD دوباره آزاد می‌گردد. همین و بس؛ نه تحلیل محتوای درخواست دارد، نه تشخیص الگوی حمله، نه محدودسازی نرخ درخواست در لایه هفت.

قبل از نصب، خودتان وضعیت را ببینید

پیش از هر کاری روی سرور مجازی لینوکسی یا سرور فیزیکی‌تان با SSH وارد شوید و همان کاری را که اسکریپت انجام می‌دهد دستی اجرا کنید تا بفهمید اصلاً با چه چیزی طرف هستید:

  • ss -Hntu | awk '{print $6}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
  • روی سیستم‌های قدیمی‌تر: netstat -ntu | awk 'NR>2 {print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
  • فشار روی کارت شبکه: vnstat -l -i eth0 یا iftop -i eth0
  • اگر vnstat روی سرور نصب نیست، مراحل نصب و خواندن گزارش‌هایش در نصب Vnstat در Directadmin و Cpanel آمده است.

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

نصب اسکریپت DDoS Deflate

نسخه اصلی این اسکریپت روی دامنه deflate.medialayer.com منتشر می‌شد و آن دامنه امروز دیگر اصلاً وجود ندارد؛ آدرس http://www.inetbase.com/scripts/ddos/install.sh هم که در آموزش‌های قدیمی زیاد تکرار شده، دیگر در دسترس نیست. نسخه‌ای که هنوز نگهداری می‌شود، فورک jgmdev/ddos-deflate در گیت‌هاب است که پشتیبانی از IPv6، تشخیص خودکار فایروال و اجرا به‌صورت سرویس systemd را اضافه کرده است. نصب آن با کاربر root:

  • wget https://github.com/jgmdev/ddos-deflate/archive/master.zip -O ddos.zip
  • unzip ddos.zip
  • cd ddos-deflate-master
  • ./install.sh

روی دبیان و اوبونتو بهتر است پیش‌نیازها را از قبل نصب کنید تا اسکریپت نصب گیر نکند: apt install dnsutils net-tools tcpdump dsniff grepcidr. نصب‌کننده خودش تشخیص می‌دهد که سیستم شما systemd دارد یا init.d یا فقط cron، و بر همان اساس سرویس یا کران‌جاب را می‌سازد.

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

پیکربندی و فایل‌های مهم

پس از نصب، این مسیرها را بشناسید:

  • /etc/ddos/ddos.conf — فایل پیکربندی اصلی
  • /etc/ddos/ignore.ip.list — لیست سفید آی‌پی‌ها؛ از بازه و نشانه‌گذاری CIDR هم پشتیبانی می‌کند
  • /etc/ddos/ignore.host.list — لیست سفید بر اساس نام میزبان
  • /var/log/ddos.log — گزارش رویدادها و بلاک‌ها

مهم‌ترین متغیرها در فایل پیکربندی: NO_OF_CONNECTIONS (آستانه بلاک، پیش‌فرض ۱۵۰)، BAN_PERIOD (مدت بلاک بر حسب ثانیه، پیش‌فرض ۶۰۰)، FREQ (فاصله اجرای کران‌جاب بر حسب دقیقه)، DAEMON_FREQ (فاصله بررسی در حالت سرویس بر حسب ثانیه)، FIREWALL (پیش‌فرض auto؛ مقدارهای معتبر دیگر apf، csf، ipfw و iptables هستند)، ONLY_INCOMING و EMAIL_TO برای دریافت هشدار ایمیلی. توضیح کامل هر گزینه در man ddos آمده است.

هشدار مهم: قبل از فعال‌سازی، حتماً آی‌پی خودتان، آی‌پی دفتر، سرویس مانیتورینگ و CDN را در ignore.ip.list بگذارید. آستانه بیش از حد پایین باعث می‌شود اسکریپت آی‌پی‌های سالم — و حتی SSH خودتان — را بلاک کند. پس از تغییر پیکربندی در حالت سرویس، systemctl restart ddos را اجرا کنید؛ در حالت کران‌جاب نیازی به ری‌استارت نیست.

کار با اسکریپت از خط فرمان

  • ddos -h نمایش راهنما
  • ddos -v نمایش اتصال‌های فعال
  • ddos -b فهرست آی‌پی‌های بلاک‌شده فعلی
  • ddos -u 203.0.113.10 رفع بلاک یک آی‌پی
  • ddos -t وضعیت سرویس و شناسه پروسه

گزینه ddos -k بلافاصله همه آی‌پی‌های بالاتر از آستانه را بلاک می‌کند؛ این دستور مخرب است و اگر لیست سفید را کامل نکرده باشید ممکن است دسترسی خودتان را قطع کند. اول با ddos -v خروجی را ببینید، بعد اجرا کنید.

محدودیت‌هایی که باید صادقانه بدانید

DDoS Deflate در سه حالت کارساز نیست. اول، حمله حجمی: وقتی حجم ترافیک UDP یا SYN از ظرفیت لینک شبکه بیشتر شود، بسته‌ها پیش از رسیدن به فایروال روی همان لینک تلف می‌شوند؛ بلاک کردن آی‌پی روی خودِ سرور دیگر فایده‌ای ندارد و کار باید در بالادست، یعنی سمت مرکز داده یا سرویس پاک‌سازی ترافیک، انجام شود. دوم، حمله لایه هفت: درخواست‌های HTTP معتبر و کم‌تعداد که سرور را با پردازش سنگین زمین می‌زنند، هرگز به آستانه اتصال نمی‌رسند. سوم، آی‌پی‌های مشترک: کاربران پشت NAT یا پروکسی به‌راحتی قربانی بلاک اشتباه می‌شوند. اگر پشت Cloudflare هستید، تا وقتی ENABLE_CLOUDFLARE را فعال نکنید اسکریپت فقط آی‌پی‌های خود Cloudflare را می‌بیند و می‌شمارد.

برای سرویس‌های پرترافیک، ظرفیت واقعی و پهنای باند اختصاصی یک سرور فیزیکی — در کنار فیلتر شدن ترافیک در بالادست شبکه — تفاوت خیلی بیشتری می‌سازد تا یک اسکریپت شمارنده اتصال.

جایگزین‌های امروزی‌تر

اگر امروز از صفر شروع می‌کنید، معمولاً این‌ها انتخاب بهتری هستند:

  • CSF به همراه LFD: فایروال کاملی است که علاوه بر محدودیت تعداد اتصال هر آی‌پی (CT_LIMIT)، شناسایی حمله‌های ورود ناموفق، بلاک دائم و لیست‌های اشتراکی را هم دارد.
  • fail2ban: لاگ سرویس‌ها (SSH، وب‌سرور، ایمیل) را می‌خواند و بر اساس الگو بلاک می‌کند؛ برای حمله لایه هفت بسیار مناسب‌تر از شمارش اتصال است.
  • محدودسازی نرخ در وب‌سرور: دستورهایی مانند limit_req و limit_conn در Nginx، یا ماژول‌های مشابه در آپاچی و LiteSpeed.
  • ماژول‌های هسته: nftables یا iptables به همراه connlimit و hashlimit، برای اعمال محدودیت مستقیم در هسته و بدون اسکریپت واسط.

در عمل ترکیب یک فایروال درست، محدودسازی نرخ در وب‌سرور و فیلترینگ بالادستی مرکز داده جواب می‌دهد، نه یک ابزار به‌تنهایی. اگر تنظیم و آزمودن این لایه‌ها را به کسی می‌سپارید، خدمات مدیریت سرور دقیقاً برای همین کار است.

حذف اسکریپت

برای حذف، به همان پوشه‌ای که از آرشیو استخراج کرده‌اید بروید و اسکریپت حذف را اجرا کنید: cd ddos-deflate-master و سپس ./uninstall.sh. آدرس قدیمی uninstall.ddos روی دامنه inetbase.com نیز دیگر در دسترس نیست. پس از حذف، فایروال را یک بار بررسی کنید تا قانون بلاکی از اسکریپت باقی نمانده باشد: iptables -L -n --line-numbers.

جمع‌بندی

نصب DDoS Deflate ساده است و برای مهار سریع چند آی‌پی پرتکرار ارزش دارد، به‌شرطی که لیست سفید را کامل کنید و آستانه را متناسب با ترافیک واقعی سرویس‌تان بگذارید. اما آن را دفاع کامل در برابر DDoS نبینید؛ این اسکریپت یک لایه کوچک از یک معماری چندلایه است و مهم‌ترین لایه، همیشه فیلترینگ بالادست شبکه است.