العودة إلى المدونة

ما هو هجوم DDoS وكيف تحمي موقعك وسيرفرك منه

فريق تحرير IM Host10 أكتوبر 20267 دقائق قراءة
ما هو هجوم DDoS وكيف تحمي موقعك وسيرفرك منه

هجوم DDoS (هجوم حجب الخدمة الموزع) هو إغراق السيرفر أو الموقع بطلبات من آلاف الأجهزة في نفس الوقت، حتى لا يستطيع الزوار الحقيقيون الوصول إليه. والحماية تعمل على طبقات: فلترة الشبكة عند شركة الاستضافة توقف الهجمات الضخمة وهجمات البروتوكول قبل أن تصل لسيرفرك، أما هجمات طبقة التطبيق التي تشبه التصفح العادي فتحتاج CDN أو WAF وتحديد معدل الطلبات والكاش من جهتك. لا توجد طبقة واحدة تحميك من كل الهجمات.

في هذا المقال: أنواع الهجمات الثلاثة، وما تقدر حماية الاستضافة على فلترته وما لا تقدر، وإعدادات nginx جاهزة، وقائمة خطوات ليوم الهجوم.

كيف يعمل هجوم DDoS؟

هجوم DoS العادي يأتي من مصدر واحد ويسهل حظره بالـ IP. أما DDoS فيأتي من شبكة botnet: آلاف الأجهزة المخترقة من كمبيوترات وراوترات وكاميرات وسيرفرات رخيصة، وكثيرًا ما تُؤجّر بالساعة. بعض الهجمات تستخدم التضخيم (amplification): المهاجم يرسل طلبات صغيرة بعنوان IP مزيف هو عنوانك إلى سيرفرات DNS أو NTP مفتوحة، فترد هذه السيرفرات بردود أكبر بكثير إليك. فتتحول كمية صغيرة من إنترنت المهاجم إلى سيل ضخم عندك.

الضحايا ليسوا الشركات الكبيرة فقط. المتاجر وقت العروض، وسيرفرات الألعاب، والمنتديات، والشركات التي تصلها رسالة ابتزاز "ادفع وإلا سيبقى موقعك متوقفًا" من الأهداف المتكررة. لا تدفع، لأنك بذلك تعلن أنك هدف يدفع.

أنواع هجمات DDoS الثلاثة

  • الهجمات الحجمية Volumetric (تُقاس بالبت في الثانية): فيضانات UDP وهجمات التضخيم التي تملأ خط الشبكة. لو منفذ سيرفرك 1 Gbps والهجوم 20 Gbps، فلن يفيدك أي إعداد على السيرفر، لأن الخط امتلأ قبل أن تصل الحزم للجدار الناري.

  • هجمات البروتوكول Protocol (تُقاس بالحزم في الثانية): مثل SYN flood و ACK flood والحزم المشوهة. تستنزف جداول الاتصالات في نظام التشغيل والجدران النارية بدل استهلاك سرعة الخط.

  • هجمات طبقة التطبيق L7 (تُقاس بالطلبات في الثانية): سيل من طلبات HTTP على صفحات مكلفة: البحث، وتسجيل الدخول، وسلة المشتريات، و wp-login.php و xmlrpc.php، وأي صفحة بدون كاش تنفذ استعلامات على قاعدة البيانات. كل طلب يبدو طبيعيًا، فبضع مئات من الطلبات في الثانية تكفي لإنهاك PHP وقاعدة البيانات على سيرفر صغير.

ماذا تفلتر حماية DDoS في الاستضافة وما الذي لا تقدر عليه

الحماية على مستوى الشبكة تعمل عند حافة شبكة المزود، قبل سيرفرك. تراقب أنماط المرور وتسقط الفيضانات الواضحة: ردود التضخيم، وعواصف الحزم، و SYN flood. وهذا هو المكان الوحيد الذي يمكن فيه إيقاف الهجمات الحجمية، لأن المرور حين يصل إلى الـ VPS يكون الخط قد امتلأ بالفعل.

ما لا تقدر عليه بثقة هو الحكم على طلبات HTTPS. هجوم L7 يصل كاتصالات TCP سليمة ومشفرة ومكتملة. بالنسبة لفلتر الشبكة، روبوت يفتح صفحة البحث 50 مرة في الثانية يشبه عميلًا نشيطًا. التفرقة بينهما تحتاج سياق التطبيق: الرابط، والكوكيز، ومعدل الطلبات لكل زائر، وسلوك المتصفح. وهذه مهمة CDN أو WAF وإعدادات سيرفر الويب عندك.

في IM HOST تأتي سيرفرات Cloud VPS بحماية DDoS على مستوى الشبكة مع موارد vCPU و RAM مخصصة لك، وكل سيرفر Linux VPS يشمل حماية DDoS مع صلاحيات root كاملة، فتقدر تضيف قواعد طبقة التطبيق التالية بنفسك. والاستضافة المشتركة تشمل أيضًا حماية من DDoS ومن محاولات التخمين brute-force، وشرحنا ما تضيفه على مستوى الموقع في مقال إجراءات الأمان الأساسية للاستضافة المشتركة.

طبقات الحماية العملية

1. ضع CDN أو WAF أمام الموقع

خدمة reverse proxy مثل Cloudflare تمتص جزءًا كبيرًا من هجمات L7 عند حافتها، وتقدم الصفحات المخزنة بدون أن تلمس سيرفرك، وتقدر تتحقق من الزوار المشبوهين. والخطة المجانية تشمل حماية أساسية من DDoS. اتبع دليلنا عن ربط Cloudflare بالموقع والاستضافة، وفيه خطوات وضع SSL الصحيح وإظهار IP الزائر الحقيقي التي ينساها كثيرون.

2. أخفِ عنوان IP الأصلي للسيرفر

الـ CDN يحميك فقط لو المهاجم لا يستطيع الوصول للسيرفر مباشرة. أشهر طرق التسريب: سجل A لدومين فرعي مثل mail أو ftp يشير للسيرفر الأصلي، والبريد المرسل من نفس الـ IP (يظهر في رؤوس الرسائل)، وسجلات DNS القديمة قبل استخدام CDN. بعد الانتقال خلف CDN، اسمح للمنفذين 80 و 443 فقط من نطاقات IP المنشورة للـ CDN، ولو انكشف الـ IP أثناء هجوم اسأل مزودك عن الانتقال لعنوان جديد.

3. حدد معدل الطلبات على الروابط المكلفة في nginx

وحدة limit_req في nginx تضع حدًا لعدد الطلبات لكل IP. المثال التالي يسمح بـ 10 طلبات في الثانية لكل IP مع هامش 20 طلبًا للموقع كله، و5 طلبات في الدقيقة لصفحة دخول ووردبريس. عدّل مسار PHP حسب الإصدار المثبت عندك، واحتفظ بقواعد location الحالية لو كانت مختلفة:

# /etc/nginx/conf.d/ratelimit.conf  (يُحمَّل داخل كتلة http)
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
limit_req_status 429;

# داخل كتلة server الخاصة بموقعك
location / {
    limit_req zone=perip burst=20 nodelay;
    try_files $uri $uri/ /index.php?$args;
}

location = /wp-login.php {
    limit_req zone=login burst=3 nodelay;
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}

اختبر الإعداد وطبّقه بدون توقف:

sudo nginx -t && sudo systemctl reload nginx

الطلبات المرفوضة تحصل على الكود 429. وانتبه لفخ مهم: خلف CDN تكون قيمة $binary_remote_addr هي IP الـ CDN وليس الزائر، فتحدد المعدل لكل الزوار معًا. فعّل وحدة real IP في nginx أولًا (set_real_ip_from و real_ip_header) كما في دليل Cloudflare.

4. استخدم الكاش لكل ما يمكن

الكاش الكامل للصفحات يحول طلبًا مكلفًا على PHP وقاعدة البيانات إلى مجرد قراءة ملف. الهجوم على صفحات مخزنة سهل التحمل، أما الهجوم على البحث والسلة وتسجيل الدخول بدون كاش فهو ما يوقف المواقع. عطّل xmlrpc.php لو لا يستخدمه شيء، وأضف تحققًا أو captcha للنماذج العامة.

5. أمّن السيرفر نفسه

افتح المنافذ التي تحتاجها فقط، وامنع الدخول بكلمة السر على SSH، واستخدم fail2ban لحظر التكرار المسيء. الأوامر موجودة في دليل تأمين سيرفر لينكس VPS بمفاتيح SSH و UFW و fail2ban. ولينكس يفعّل SYN cookies افتراضيًا وهي تساعد ضد هجمات SYN الصغيرة؛ تأكد بأمر sysctl net.ipv4.tcp_syncookies (القيمة يجب أن تكون 1).

هل هو هجوم DDoS أم مجرد ضغط زوار؟

الضغط الحقيقي له سبب: حملة إعلانية، أو ذكر في برنامج، أو عرض. أما مرور الهجوم فيظهر غالبًا كقفزة مفاجئة من عناوين كثيرة، وتكرار نفس الرابط أو نفس الـ user agent، وطلبات بدون referrer، ودول لا يأتي منها زوارك عادة. على السيرفر، هذه الأوامر تعرض حالة الاتصالات وأكثر العناوين والروابط طلبًا:

ss -s
ss -tn state syn-recv | wc -l
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
sudo awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

آلاف الاتصالات في حالة SYN-RECV، أو عدد قليل من الروابط يستحوذ على أغلب الطلبات، علامات هجوم وليست عملاء.

قائمة التصرف أثناء هجوم DDoS

  1. تأكد من النمط بالأوامر السابقة، واستبعد وجود خطأ برمجي أو زاحف بحث خرج عن السيطرة.

  2. تواصل مع مزود الاستضافة فورًا. أرسل وقت البداية، والـ IP أو الدومين المستهدف، وعينات من السجلات. في IM HOST فريق الدعم من المهندسين متاح 24/7.

  3. فعّل وضع الهجوم في الـ CDN أو قاعدة تحقق على المسار المستهدف.

  4. احظر أسوأ المصادر مؤقتًا: نطاقات IP أو شبكات أو دول، على الـ CDN وليس على السيرفر.

  5. شدد حدود الطلبات على الرابط المستهدف، وقدم نسخة مخزنة أو ثابتة منه إن أمكن.

  6. أبلغ عملاءك عبر السوشيال ميديا أو صفحة حالة مستضافة في مكان آخر.

  7. راجع بعد انتهاء الهجوم: أي رابط استُهدف، وهل تسرب الـ IP الأصلي، وأي حد كان سيوقفه أبكر.

أسئلة شائعة

هل يمكن إيقاف هجوم DDoS تمامًا؟

ليس بأداة واحدة. الفيضانات الكبيرة تُفلتر في شبكة المزود، وهجمات طبقة التطبيق يتعامل معها الـ CDN وتحديد المعدل والكاش. مع هذه الطبقات، يتحول أغلب الهجمات إلى بطء قصير بدل توقف كامل.

هل سيرفر VPS يأتي بحماية من DDoS؟

يختلف حسب المزود. في IM HOST، سيرفرات Linux VPS و Cloud VPS تشمل حماية DDoS، و Cloud VPS تحديدًا على مستوى الشبكة. أما قواعد طبقة التطبيق على سيرفر الويب فمسؤوليتك، لأنك المتحكم في الإعدادات.

هل خطة Cloudflare المجانية تكفي للحماية من DDoS؟

لكثير من المواقع الصغيرة والمتوسطة تغطي أغلب هجمات L7، بشرط أن يبقى IP السيرفر مخفيًا وأن يمنع السيرفر الوصول المباشر. الهجمات الموجهة جدًا على صفحات بدون كاش قد تحتاج قواعد أشد أو خطة مدفوعة.

كيف أعرف أن موقعي يتعرض لهجوم DDoS؟

ابحث عن قفزة مفاجئة في الزيارات بدون سبب تجاري، واتصالات كثيرة من عناوين أو دول غير معتادة، وتكرار نفس الروابط القليلة. سجل الوصول في السيرفر وأمر ss يكشفان ذلك خلال دقائق.

لو تحتاج فلترة على مستوى الشبكة أمام سيرفرك مع تحكم كامل في الجدار الناري وقواعد nginx، اطّلع على سيرفرات Cloud VPS من IM HOST. ومهندسونا يقدرون يراجعون إعداداتك معك قبل الهجوم القادم، لا أثناءه.

المزيد من مدونتنا

اكتشف المزيد من الأدلة العملية ورؤى الخدمات من فريق IM Host.

عرض كل المقالات