الهجمات على الجهاز: ما نفعله وما يمكنك فعله
كيف تبدو الهجمة على القناة وعلى التطبيق، وكيف تختلفان، وما يمكنك إعداده من جانبك، وكيف تدرك أن الأمر ليس هجومًا أصلًا.
آخر تحديث 23 أغسطس 2026
كلمة «هجوم» تبدو نفسها في حالتين مختلفتين تمامًا: عندما تتعرّض قناتك لفيضان من حركة المرور غير المرغوب فيها، وعندما تُسقط بضع مئات من الطلبات في الثانية تطبيقك. تُعالَج الحالتان بشكل مختلف، وأول ما يجب فعله هو تحديد أيّهما تواجه.
التمييز بين الحالتين
| العلامة | القناة مشبعة | التطبيق مُثقل |
|---|---|---|
| مخطط حركة المرور في «نظرة عامة» | يلامس الحد الأقصى | قيم طبيعية |
| المعالج | غير مُحمَّل | مُحمَّل بالكامل |
| SSH | لا يتصل | يعمل، لكن ببطء |
| سجلات خادم الويب | فارغة | آلاف الطلبات المتطابقة |
اطّلع على مخططات المعالج والذاكرة وحركة المرور في «نظرة عامة» على /hosting/vds/m/<id> خلال آخر 24 ساعة. إذا كانت حركة المرور طبيعية لكن المعالج مثبَّت عند الحد الأقصى، فهذا حمل على التطبيق، وعليك معالجته من جهتك.
ما يمكنك فعله
تحديد معدل الطلبات في nginx:
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn:10m;
server {
limit_req zone=perip burst=20 nodelay;
limit_conn conn 20;
client_body_timeout 10s;
client_header_timeout 10s;
}
تحديد الاتصالات في الجدار الناري:
ufw limit 22/tcp
تجد قواعد أكثر مرونة في مقالة nftables: هناك يمكنك أيضًا تحديد معدل الاتصالات الجديدة والاحتفاظ بقائمة عناوين محظورة مع مدة صلاحية.
ابحث عن المصدر في السجلات:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
ss -tn state established | awk '{print $4}' | cut -d: -f1 | sort | uniq -c | sort -rn | head
حظر عنوان أو شبكة مرة واحدة:
ufw deny from 203.0.113.0/24
يمكن لـ fail2ban أتمتة الحظر استنادًا إلى السجلات.
ما نقوم به
تُصفّي بنيتنا التحتية حركة المرور غير المرغوب فيها في طريقها إلى العقدة — قبل أن تستهلك نطاقك الترددي. يعمل هذا ضد الهجمات الحجمية على القناة ولا يتطلب أي إعداد من جهتك.
ما لا تفعله الحماية على مستوى العقدة: لا تحلّل منطق تطبيقك. الطلبات التي تبدو طبيعية من الخارج تصل إلى جهازك، ولا يحمي منها سوى إعدادك الخاص.
إذا أصبح جهازك مصدرًا لهجوم — مثلًا إذا اختُرِق ويشارك في حملة بريد مزعج لشخص آخر — فسيُقيَّد الوصول وفقًا لـ سياسة الاستخدام المقبول. تحقّق من جهازك بحثًا عن علامات الاختراق.
التخزين المؤقت والملفات الثابتة
أكثر تقنية فعالية ضد فيضان الطلبات هي ألا تحسب الشيء نفسه مرتين:
location /static/ {
expires 30d;
add_header Cache-Control "public";
}
خزّن الصفحات الثقيلة مؤقتًا من جهة التطبيق. الطلب الذي يُخدَم من التخزين المؤقت يكلّف أقل بمئات المرات.
أخطاء شائعة
- ضبط
limit_reqدونburst— فيُقطع المستخدمون العاديون الذين تجلب صفحتهم بضع عشرات من الملفات. - حظر العناوين واحدًا تلو الآخر يدويًا أثناء هجوم موزّع: فهي بالآلاف، ولن تلحق بها.
- حظر ICMP كليًا — فهو يعطّل التفاوض على حجم الحزم، انظر MTU.
- الخلط بين خطأ في شفرتك وبين هجوم: حلقة في الشيفرة، أو روبوت بحث يزحف إلى دليل نسيت استثناءه، أو إعادات محاولة لا نهائية من العميل.
اضبط حدودك مسبقًا، على جهاز هادئ. أثناء فيضان الطلبات لن تتمكن من ضبط قيم
rateوburst: ستعدّل الإعداد على غير هدى وعلى دفعات متفرقة.