الهجمات الموزعة (DDoS) تهدف إلى إغراق السيرفر بطلبات ضخمة في نفس الوقت، مما يؤدي إلى توقف الموقع أو بطء شديد. في هذا الدليل، سنتعلم طرق الحماية والتخفيف من الهجوم باستخدام أكواد عملية.
1️⃣ استخدام iptables لمنع الهجمات الأساسية
# حظر أي IP يرسل أكثر من 20 طلب في الثانية
iptables -N DDOS
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j DDOS
iptables -A DDOS -m recent --set
iptables -A DDOS -m recent --update --seconds 1 --hitcount 20 -j DROP
شرح الكود:
- إنشاء سلسلة
DDOSلمراقبة الاتصالات الجديدة. - أي IP يرسل أكثر من 20 طلب/ثانية يتم حظره تلقائيًا.
2️⃣ تفعيل Rate Limiting على Nginx
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; server {
location / {
limit_req zone=one burst=20 nodelay;
proxy_pass http://127.0.0.1:8080;
}
}
}
هذا يحدد الحد الأقصى لطلبات كل IP إلى 10 طلبات/ثانية مع السماح بحد أقصى مؤقت 20 طلب.
3️⃣ حماية Apache من DDoS باستخدام mod_evasive
تثبيت mod_evasive:
sudo apt-get install libapache2-mod-evasive
sudo a2enmod evasive
إعداد التكوين:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
DOSEmailNotify "admin@yourdomain.com"
</IfModule>
يقوم هذا بحظر أي IP يحاول إرسال طلبات متكررة بسرعة عالية وإرسال إشعار للمدير.
4️⃣ استخدام Fail2Ban لمراقبة السيرفر
إعداد فلاتر DDoS لـ Nginx:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*
ignoreregex =
ملف jail.local:
[nginx-ddos]
enabled = true
port = http,https
filter = nginx-ddos
logpath = /var/log/nginx/access.log
maxretry = 50
bantime = 3600
هذا يراقب طلبات Nginx ويمنع أي IP يرسل طلبات متكررة بشكل مشبوه.
5️⃣ حماية الخادم باستخدام Cloudflare (Layer 7)
- تفعيل “Under Attack Mode” في Cloudflare.
- إعداد Rate Limiting لكل URL حساس:
curl -X POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/rate_limits" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
--data '{
"match": {"request":{"url":"*","methods":["GET","POST"]}},
"threshold": 100,
"period": 60,
"action":{"mode":"challenge"}
}'
أي IP يتجاوز 100 طلب في دقيقة واحدة سيتم توجيهه إلى Challenge Captcha.
6️⃣ استخدام Python لمراقبة الهجوم على السيرفر
يمكنك مراقبة معدل الوصول لكل IP مباشرة:
import time
from collections import defaultdictrequest_counts = defaultdict(list)
MAX_REQUESTS = 50
TIME_WINDOW = 10 # ثوانيdef log_request(ip):
now = time.time()
request_counts[ip].append(now)
# إزالة الطلبيات القديمة
request_counts[ip] = [t for t in request_counts[ip] if now - t < TIME_WINDOW]
if len(request_counts[ip]) > MAX_REQUESTS:
block_ip(ip)def block_ip(ip):
print(f"حظر IP: {ip}")
# أو تنفيذ أمر iptables مباشر
# os.system(f"iptables -A INPUT -s {ip} -j DROP")
هذا الكود يسمح بمراقبة IPs بشكل مباشر وحظر أي IP يتجاوز الحد في نافذة زمنية قصيرة.
7️⃣ نصائح إضافية لتخفيف DDoS
- استخدم CDN لتوزيع الحمل وتقليل الضغط على السيرفر.
- تفعيل HTTP/2 وKeep-Alive مع مراقبة الوقت لتجنب استنزاف الموارد.
- إخفاء معلومات السيرفر مثل نوع Apache أو Nginx.
- مراقبة اللوجات بشكل دوري لاكتشاف أي سلوك غير طبيعي.
بهذه الطرق والأكواد، يمكنك حماية موقعك من الهجمات الموزعة سواء كانت على مستوى الشبكة (Layer 3) أو على مستوى التطبيق (Layer 7)، مع حلول عملية قابلة للتنفيذ على أي سيرفر Linux.