تعد معظم خطط الاستضافة بحماية من DDoS. وهذا يعني عادةً ترشيح فيضانات كبيرة من الحزم غير المفيدة (الطبقتان 3 و4) قبل وصولها إلى خادمك. لكنه لا يوقف ألف متصفح "حقيقي" يحمّلون أبطأ صفحة لديك في وقت واحد. هجمات طبقة التطبيقات (الطبقة 7) هذه تبدو كزوار عاديين، وعليك التعامل معها بنفسك. راجع ما هي حماية DDoS للخلفية.
اعرف الفرق
- الفيضانات الحجمية: تملأ أنبوب الشبكة. يرشّحها المضيف أو المزوّد الأعلى.
- هجمات البروتوكول: تستنزف جداول الاتصال. تتولاها الشبكة غالباً.
- هجمات الطبقة 7: طلبات HTTP تبدو سليمة وتستهلك المعالج أو قاعدة البيانات أو العمال. وهي تصل إلى تطبيقك.
الخطوة 1: حدّ المعدل في Nginx
حدّد سرعة الطلبات من عنوان واحد. عرّف منطقة في كتلة http وطبّقها على موقعك.
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=connip:10m;
server {
location / {
limit_req zone=perip burst=20 nodelay;
limit_conn connip 20;
}
location = /login {
limit_req zone=perip burst=3 nodelay;
}
}
استخدم حداً أشد بكثير لتسجيل الدخول والبحث، لأنهما مكلفان.
الخطوة 2: خزّن مؤقتاً ما تستطيع
الصفحة المخزّنة مؤقتاً تكاد لا تكلّف شيئاً عند تقديمها. فعّل التخزين المؤقت عبر FastCGI أو الوكيل للزيارات المجهولة، ولو لمدة 30 إلى 60 ثانية. فهو يحوّل فيضاً من الطلبات المتطابقة إلى حفنة من الطلبات الفعلية.
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=site:50m inactive=10m;
fastcgi_cache site;
fastcgi_cache_valid 200 60s;
fastcgi_cache_use_stale updating error timeout;
الخطوة 3: اضبط مهلاً معقولة
هجمات الاتصال البطيء تُبقي العمال مشغولين. قصّر الحدود.
client_body_timeout 10s;
client_header_timeout 10s;
send_timeout 15s;
keepalive_timeout 15s;
client_max_body_size 5m;
الخطوة 4: احظر المكرّرين بـ fail2ban
احظر العناوين التي تتجاوز محدّد المعدل. يسجّل Nginx الطلبات المرفوضة في سجل الأخطاء، ويمكن لمرشح مطابقتها.
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
logpath = /var/log/nginx/error.log
maxretry = 10
findtime = 60
bantime = 1h
الخطوة 5: ضع وكيلاً أمامك عندما يشتد الأمر
يمكن لوكيل عكسي أو CDN مع تحديات للروبوتات امتصاص هجمات لا يتحملها VPS واحد. تذكّر حماية الأصل كما في إبقاء IP الأصل سراً، وإلا التفّ المهاجمون عليه.
كن مستعداً قبل أن يحدث
- اعرف أبطأ صفحاتك وأصلحها أو خزّنها مؤقتاً.
- أبقِ المراقبة قائمة لتلاحظ الارتفاع الحاد بسرعة.
- ضع خطة: حدود أشد، وصفحة صيانة، وخادم أكبر.
أساسيات دليل UFW وfail2ban تكمّل هذا الدليل.