210 أسطر
6.1 KiB
Markdown
210 أسطر
6.1 KiB
Markdown
# خطة الاستجابة للحوادث - Incident Response Plan
|
|
|
|
## نوع الحادثة
|
|
هجوم Brute Force ناجح على API Login أدى إلى تسريب بيانات
|
|
|
|
---
|
|
|
|
## المرحلة 1: الاحتواء (Containment) - أول 30 دقيقة
|
|
|
|
### الإجراءات الفورية:
|
|
|
|
```bash
|
|
# 1. إلغاء جميع الـ JWT tokens النشطة
|
|
# في قاعدة البيانات أو Redis
|
|
redis-cli FLUSHDB # إذا كانت sessions في Redis
|
|
|
|
# أو عبر API إداري
|
|
curl -X POST https://app.ghaymah.systems/api/admin/invalidate-all-tokens \
|
|
-H "Authorization: Bearer $ADMIN_TOKEN"
|
|
|
|
# 2. حظر IP المهاجم
|
|
# في iptables
|
|
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
|
|
|
|
# أو في nginx
|
|
echo "deny 192.168.1.100;" >> /etc/nginx/conf.d/blocked-ips.conf
|
|
sudo nginx -s reload
|
|
|
|
# 3. تعطيل الحساب المخترق
|
|
UPDATE users SET status = 'suspended',
|
|
password_hash = 'COMPROMISED_RESET_REQUIRED'
|
|
WHERE username = 'admin';
|
|
```
|
|
|
|
### قائمة التحقق:
|
|
- [ ] إلغاء جميع الـ tokens
|
|
- [ ] حظر IP المهاجم
|
|
- [ ] تعطيل الحساب المخترق
|
|
- [ ] إبلاغ فريق الأمن
|
|
- [ ] توثيق وقت الاكتشاف
|
|
|
|
---
|
|
|
|
## المرحلة 2: التحقيق (Investigation) - 1-4 ساعات
|
|
|
|
### جمع الأدلة:
|
|
|
|
```bash
|
|
# 1. حفظ الـ logs
|
|
cp /var/log/nginx/access.log /incident/access.log.$(date +%Y%m%d)
|
|
cp /var/log/nginx/error.log /incident/error.log.$(date +%Y%m%d)
|
|
|
|
# 2. تحليل الطلبات المشبوهة
|
|
grep "POST /api/login" /var/log/nginx/access.log | \
|
|
awk '{print $1}' | sort | uniq -c | sort -rn | head -20
|
|
|
|
# 3. تتبع نشاط المهاجم بعد الدخول
|
|
grep "192.168.1.100" /var/log/nginx/access.log | \
|
|
grep -E "200|201" > /incident/attacker-activity.log
|
|
|
|
# 4. تحديد البيانات المسربة
|
|
grep "192.168.1.100" /var/log/nginx/access.log | \
|
|
grep -E "/api/users|/api/export"
|
|
```
|
|
|
|
### الأسئلة المطلوب الإجابة عليها:
|
|
1. متى بدأ الهجوم؟
|
|
2. كم محاولة تمت قبل النجاح؟
|
|
3. ما البيانات التي تم الوصول إليها؟
|
|
4. هل يوجد backdoors؟
|
|
5. هل تأثرت أنظمة أخرى؟
|
|
|
|
---
|
|
|
|
## المرحلة 3: الاستئصال (Eradication) - 4-8 ساعات
|
|
|
|
### الإجراءات:
|
|
|
|
```bash
|
|
# 1. إعادة تعيين كلمات مرور جميع المستخدمين
|
|
# إرسال بريد إلكتروني لجميع المستخدمين
|
|
|
|
# 2. فحص النظام من backdoors
|
|
# فحص cron jobs
|
|
crontab -l
|
|
cat /etc/crontab
|
|
|
|
# فحص authorized_keys
|
|
cat ~/.ssh/authorized_keys
|
|
|
|
# فحص الملفات المعدلة مؤخراً
|
|
find /app -mtime -1 -type f
|
|
|
|
# 3. تحديث التبعيات
|
|
npm audit fix
|
|
# أو
|
|
pip install --upgrade -r requirements.txt
|
|
```
|
|
|
|
### قائمة التحقق:
|
|
- [ ] إعادة تعيين كلمات المرور
|
|
- [ ] فحص backdoors
|
|
- [ ] مراجعة صلاحيات المستخدمين
|
|
- [ ] تحديث التبعيات الأمنية
|
|
|
|
---
|
|
|
|
## المرحلة 4: الاستعادة (Recovery) - 8-24 ساعة
|
|
|
|
### خطوات الاستعادة:
|
|
|
|
1. **تفعيل الحماية الجديدة:**
|
|
```javascript
|
|
// إضافة Rate Limiting
|
|
const rateLimit = require('express-rate-limit');
|
|
app.use('/api/login', rateLimit({
|
|
windowMs: 15 * 60 * 1000,
|
|
max: 5,
|
|
message: 'محاولات كثيرة، حاول لاحقاً'
|
|
}));
|
|
```
|
|
|
|
2. **تفعيل Account Lockout:**
|
|
```javascript
|
|
// قفل الحساب بعد 5 محاولات فاشلة
|
|
if (failedAttempts >= 5) {
|
|
await lockAccount(userId, 30 * 60 * 1000); // 30 دقيقة
|
|
}
|
|
```
|
|
|
|
3. **إعادة تشغيل الخدمات:**
|
|
```bash
|
|
# إعادة نشر التطبيق على غيمة
|
|
git push origin main # النشر التلقائي
|
|
```
|
|
|
|
### قائمة التحقق:
|
|
- [ ] تفعيل Rate Limiting
|
|
- [ ] تفعيل Account Lockout
|
|
- [ ] إضافة CAPTCHA
|
|
- [ ] تفعيل MFA للحسابات الإدارية
|
|
- [ ] إعادة تشغيل الخدمات
|
|
- [ ] اختبار الحماية الجديدة
|
|
|
|
---
|
|
|
|
## المرحلة 5: إبلاغ المتأثرين - 24-48 ساعة
|
|
|
|
### نموذج البريد الإلكتروني:
|
|
|
|
```
|
|
الموضوع: إشعار أمني مهم - [اسم التطبيق]
|
|
|
|
عزيزي المستخدم،
|
|
|
|
نود إبلاغك بحادثة أمنية وقعت بتاريخ [التاريخ].
|
|
تم الوصول غير المصرح به إلى بعض بيانات المستخدمين.
|
|
|
|
البيانات المتأثرة:
|
|
- الاسم
|
|
- البريد الإلكتروني
|
|
- [أي بيانات أخرى]
|
|
|
|
الإجراءات المتخذة:
|
|
1. تم إيقاف الهجوم فوراً
|
|
2. تم تعزيز الحماية
|
|
3. تم إعادة تعيين جميع كلمات المرور
|
|
|
|
ما يجب عليك فعله:
|
|
1. تغيير كلمة المرور فوراً
|
|
2. تفعيل المصادقة الثنائية
|
|
3. مراقبة حساباتك الأخرى
|
|
|
|
نعتذر عن أي إزعاج.
|
|
|
|
فريق الأمن
|
|
```
|
|
|
|
---
|
|
|
|
## المرحلة 6: الدروس المستفادة - أسبوع
|
|
|
|
### اجتماع Post-Mortem:
|
|
|
|
| السؤال | الإجابة |
|
|
|--------|---------|
|
|
| ما الذي حدث؟ | هجوم brute force ناجح |
|
|
| لماذا حدث؟ | عدم وجود rate limiting + كلمة مرور ضعيفة |
|
|
| كيف اكتشفناه؟ | مراجعة يدوية للـ logs |
|
|
| كم استغرق الاحتواء؟ | [X] دقيقة |
|
|
| ما الذي يجب تحسينه؟ | إضافة تنبيهات تلقائية |
|
|
|
|
### التحسينات المطلوبة:
|
|
1. [ ] تفعيل Rate Limiting على جميع APIs
|
|
2. [ ] فرض سياسة كلمات مرور قوية
|
|
3. [ ] تفعيل MFA إلزامياً للإداريين
|
|
4. [ ] إضافة تنبيهات للنشاط المشبوه
|
|
5. [ ] تدريب الفريق على الاستجابة للحوادث
|
|
|
|
---
|
|
|
|
## جهات الاتصال
|
|
|
|
| الدور | الاسم | الهاتف | البريد |
|
|
|-------|-------|--------|--------|
|
|
| قائد الحادثة | [الاسم] | [الرقم] | [البريد] |
|
|
| فريق DevOps | [الاسم] | [الرقم] | [البريد] |
|
|
| المستشار القانوني | [الاسم] | [الرقم] | [البريد] |
|
|
| دعم غيمة | - | - | support@ghaymah.systems |
|