add the main file structure requirements
هذا الالتزام موجود في:
558
q5-ransomware-response/prevention-plan.md
Normal file
558
q5-ransomware-response/prevention-plan.md
Normal file
@@ -0,0 +1,558 @@
|
||||
# خطة وقاية شاملة لمنع تكرار هجوم Ransomware
|
||||
|
||||
---
|
||||
|
||||
## 1. نظرة عامة
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ طبقات الحماية من Ransomware │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ طبقة 1: الوقاية │ │
|
||||
│ │ (منع الدخول - Access Prevention) │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ طبقة 2: الكشف │ │
|
||||
│ │ (اكتشاف مبكر - Early Detection) │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ طبقة 3: الاحتواء │ │
|
||||
│ │ (تقليل الضرر - Damage Limitation) │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ طبقة 4: الاستعادة │ │
|
||||
│ │ (العودة للعمل - Recovery) │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. طبقة الوقاية (Prevention)
|
||||
|
||||
### أ. إدارة الهوية والوصول (IAM)
|
||||
|
||||
```yaml
|
||||
# سياسة IAM صارمة
|
||||
iam_policy:
|
||||
# مبدأ أقل صلاحية
|
||||
principle: least_privilege
|
||||
|
||||
# المصادقة متعددة العوامل
|
||||
mfa:
|
||||
required: true
|
||||
methods:
|
||||
- authenticator_app
|
||||
- hardware_key
|
||||
enforce_for:
|
||||
- all_admin_accounts
|
||||
- api_access
|
||||
- ssh_access
|
||||
|
||||
# سياسة كلمات المرور
|
||||
password_policy:
|
||||
min_length: 14
|
||||
require_uppercase: true
|
||||
require_lowercase: true
|
||||
require_numbers: true
|
||||
require_symbols: true
|
||||
max_age_days: 90
|
||||
prevent_reuse: 12
|
||||
|
||||
# مراجعة الصلاحيات
|
||||
access_review:
|
||||
frequency: monthly
|
||||
auto_revoke_inactive: 30d
|
||||
```
|
||||
|
||||
**التنفيذ على غيمة:**
|
||||
```bash
|
||||
# تفعيل MFA لجميع المستخدمين
|
||||
ghaymah iam policy update \
|
||||
--require-mfa true \
|
||||
--apply-to all-users
|
||||
|
||||
# إنشاء أدوار محددة
|
||||
ghaymah iam role create \
|
||||
--name developer \
|
||||
--permissions "read:code,write:code,read:logs" \
|
||||
--deny "admin:*,delete:*"
|
||||
|
||||
ghaymah iam role create \
|
||||
--name operator \
|
||||
--permissions "read:*,restart:services" \
|
||||
--deny "delete:*,modify:iam"
|
||||
```
|
||||
|
||||
### ب. أمان الشبكة
|
||||
|
||||
```yaml
|
||||
# Network Security Configuration
|
||||
network_security:
|
||||
# جدار الحماية
|
||||
firewall:
|
||||
default_policy: deny
|
||||
allowed_inbound:
|
||||
- port: 443
|
||||
source: "0.0.0.0/0"
|
||||
protocol: tcp
|
||||
- port: 22
|
||||
source: "10.0.0.0/8" # VPN فقط
|
||||
protocol: tcp
|
||||
|
||||
# تقسيم الشبكة
|
||||
segmentation:
|
||||
- name: production
|
||||
cidr: "10.1.0.0/16"
|
||||
access: restricted
|
||||
- name: backup
|
||||
cidr: "10.2.0.0/16"
|
||||
access: isolated # معزولة تماماً
|
||||
- name: management
|
||||
cidr: "10.3.0.0/16"
|
||||
access: admin_only
|
||||
|
||||
# VPN إجباري للإدارة
|
||||
vpn:
|
||||
required_for: admin_access
|
||||
type: wireguard
|
||||
mfa: required
|
||||
```
|
||||
|
||||
**Network Policies:**
|
||||
```yaml
|
||||
# kubernetes network policy
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: isolate-backup-storage
|
||||
spec:
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app: backup-storage
|
||||
policyTypes:
|
||||
- Ingress
|
||||
- Egress
|
||||
ingress:
|
||||
- from:
|
||||
- podSelector:
|
||||
matchLabels:
|
||||
role: backup-agent
|
||||
ports:
|
||||
- port: 443
|
||||
egress: [] # لا اتصال خارجي
|
||||
```
|
||||
|
||||
### ج. أمان النقاط الطرفية (Endpoint Security)
|
||||
|
||||
```yaml
|
||||
endpoint_security:
|
||||
# مكافح الفيروسات
|
||||
antivirus:
|
||||
enabled: true
|
||||
real_time_scan: true
|
||||
scheduled_scan: daily
|
||||
|
||||
# كشف التهديدات
|
||||
edr:
|
||||
enabled: true
|
||||
behavioral_analysis: true
|
||||
ransomware_protection: true
|
||||
|
||||
# التحديثات التلقائية
|
||||
patching:
|
||||
auto_update: true
|
||||
critical_patches: immediate
|
||||
regular_patches: weekly
|
||||
reboot_window: "02:00-04:00"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. طبقة الكشف (Detection)
|
||||
|
||||
### أ. نظام SIEM والمراقبة
|
||||
|
||||
```yaml
|
||||
# تكوين المراقبة
|
||||
monitoring:
|
||||
# مصادر السجلات
|
||||
log_sources:
|
||||
- nginx_access
|
||||
- nginx_error
|
||||
- auth_logs
|
||||
- app_logs
|
||||
- system_logs
|
||||
- audit_logs
|
||||
|
||||
# قواعد الكشف
|
||||
detection_rules:
|
||||
- name: mass_file_encryption
|
||||
description: كشف تشفير ملفات جماعي
|
||||
condition: |
|
||||
file_operations.encrypt > 100
|
||||
AND time_window < 5m
|
||||
severity: critical
|
||||
action: alert_and_isolate
|
||||
|
||||
- name: suspicious_process
|
||||
description: عملية مشبوهة
|
||||
condition: |
|
||||
process.name IN ['vssadmin', 'wmic', 'bcdedit']
|
||||
OR process.command CONTAINS 'shadow'
|
||||
severity: high
|
||||
action: alert
|
||||
|
||||
- name: unusual_network_activity
|
||||
description: نشاط شبكة غير طبيعي
|
||||
condition: |
|
||||
outbound_connections > baseline * 3
|
||||
OR connection_to_tor = true
|
||||
severity: high
|
||||
action: alert
|
||||
```
|
||||
|
||||
### ب. تنبيهات Prometheus
|
||||
|
||||
```yaml
|
||||
# prometheus-alerts.yaml
|
||||
groups:
|
||||
- name: ransomware_detection
|
||||
rules:
|
||||
- alert: MassFileModification
|
||||
expr: |
|
||||
rate(file_modifications_total[5m]) > 1000
|
||||
for: 1m
|
||||
labels:
|
||||
severity: critical
|
||||
annotations:
|
||||
summary: "🚨 كشف تعديل ملفات جماعي"
|
||||
description: "أكثر من 1000 ملف تم تعديله في 5 دقائق"
|
||||
action: "عزل النظام فوراً"
|
||||
|
||||
- alert: SuspiciousFileExtension
|
||||
expr: |
|
||||
increase(files_with_extension{ext=~".*encrypted.*|.*locked.*|.*crypto.*"}[5m]) > 10
|
||||
for: 0m
|
||||
labels:
|
||||
severity: critical
|
||||
annotations:
|
||||
summary: "🔒 كشف امتدادات ملفات مشبوهة"
|
||||
description: "ملفات بامتدادات ransomware معروفة"
|
||||
|
||||
- alert: BackupDeletionAttempt
|
||||
expr: |
|
||||
backup_deletion_attempts > 0
|
||||
for: 0m
|
||||
labels:
|
||||
severity: critical
|
||||
annotations:
|
||||
summary: "⚠️ محاولة حذف النسخ الاحتياطية"
|
||||
description: "كشف محاولة حذف النسخ الاحتياطية"
|
||||
```
|
||||
|
||||
### ج. File Integrity Monitoring (FIM)
|
||||
|
||||
```yaml
|
||||
# تكوين مراقبة سلامة الملفات
|
||||
fim_config:
|
||||
monitored_paths:
|
||||
- path: /etc
|
||||
recursive: true
|
||||
alert_on: [create, modify, delete]
|
||||
- path: /var/www
|
||||
recursive: true
|
||||
alert_on: [modify, delete]
|
||||
- path: /home
|
||||
recursive: true
|
||||
alert_on: [mass_modify] # أكثر من 100 ملف
|
||||
|
||||
baseline:
|
||||
update_frequency: daily
|
||||
time: "03:00"
|
||||
|
||||
exclusions:
|
||||
- "*.log"
|
||||
- "*.tmp"
|
||||
- "/var/cache/*"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. طبقة الاحتواء (Containment)
|
||||
|
||||
### أ. العزل التلقائي
|
||||
|
||||
```python
|
||||
# auto_isolate.py - سكربت العزل التلقائي
|
||||
|
||||
import subprocess
|
||||
import requests
|
||||
from datetime import datetime
|
||||
|
||||
def isolate_system(reason: str):
|
||||
"""عزل النظام تلقائياً عند كشف تهديد"""
|
||||
|
||||
timestamp = datetime.now().isoformat()
|
||||
|
||||
# 1. قطع الاتصال بالشبكة
|
||||
subprocess.run([
|
||||
"ghaymah", "network", "isolate",
|
||||
"--project", "production",
|
||||
"--reason", reason
|
||||
])
|
||||
|
||||
# 2. إيقاف الخدمات غير الحرجة
|
||||
subprocess.run([
|
||||
"ghaymah", "services", "stop",
|
||||
"--exclude", "backup,monitoring",
|
||||
"--project", "production"
|
||||
])
|
||||
|
||||
# 3. تفعيل وضع القراءة فقط للتخزين
|
||||
subprocess.run([
|
||||
"ghaymah", "storage", "readonly",
|
||||
"--volume", "prod-data",
|
||||
"--enable"
|
||||
])
|
||||
|
||||
# 4. إرسال تنبيه
|
||||
send_alert({
|
||||
"type": "system_isolated",
|
||||
"reason": reason,
|
||||
"timestamp": timestamp,
|
||||
"severity": "critical"
|
||||
})
|
||||
|
||||
# 5. بدء النسخ الاحتياطي الطارئ
|
||||
subprocess.run([
|
||||
"ghaymah", "backup", "create",
|
||||
"--emergency",
|
||||
"--source", "prod-data",
|
||||
"--destination", "emergency-backups"
|
||||
])
|
||||
|
||||
def send_alert(alert: dict):
|
||||
"""إرسال تنبيه للفريق"""
|
||||
webhook_url = os.environ.get("ALERT_WEBHOOK")
|
||||
requests.post(webhook_url, json=alert)
|
||||
```
|
||||
|
||||
### ب. Immutable Backups (نسخ احتياطية غير قابلة للتعديل)
|
||||
|
||||
```yaml
|
||||
# تكوين النسخ الاحتياطية غير القابلة للتعديل
|
||||
immutable_backup:
|
||||
enabled: true
|
||||
|
||||
# فترة عدم القابلية للتعديل
|
||||
retention_lock:
|
||||
min_days: 7
|
||||
max_days: 365
|
||||
|
||||
# حماية من الحذف
|
||||
deletion_protection:
|
||||
enabled: true
|
||||
require_mfa: true
|
||||
require_approval: 2 # موافقة شخصين
|
||||
cooling_period: 72h # فترة انتظار قبل الحذف
|
||||
|
||||
# التشفير
|
||||
encryption:
|
||||
algorithm: AES-256-GCM
|
||||
key_management: customer_managed
|
||||
key_rotation: 90d
|
||||
```
|
||||
|
||||
**التنفيذ:**
|
||||
```bash
|
||||
# إنشاء bucket مع حماية WORM
|
||||
ghaymah storage bucket create secure-backups \
|
||||
--worm-enabled \
|
||||
--retention-days 30 \
|
||||
--deletion-protection \
|
||||
--require-mfa-delete
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. طبقة الاستعادة (Recovery)
|
||||
|
||||
### أ. خطة استمرارية الأعمال
|
||||
|
||||
```yaml
|
||||
business_continuity:
|
||||
# أولوية الاستعادة
|
||||
recovery_priority:
|
||||
tier_1: # أول 4 ساعات
|
||||
- name: "قاعدة البيانات الرئيسية"
|
||||
rto: 1h
|
||||
- name: "API الأساسي"
|
||||
rto: 2h
|
||||
|
||||
tier_2: # 4-8 ساعات
|
||||
- name: "واجهة المستخدم"
|
||||
rto: 4h
|
||||
- name: "خدمات الدفع"
|
||||
rto: 4h
|
||||
|
||||
tier_3: # 8-24 ساعة
|
||||
- name: "التقارير"
|
||||
rto: 12h
|
||||
- name: "الأرشيف"
|
||||
rto: 24h
|
||||
|
||||
# موقع الاستعادة البديل
|
||||
dr_site:
|
||||
location: me-jeddah-1
|
||||
sync_frequency: hourly
|
||||
failover_time: 30m
|
||||
```
|
||||
|
||||
### ب. Runbook الاستعادة
|
||||
|
||||
```markdown
|
||||
## Runbook: استعادة من Ransomware
|
||||
|
||||
### المتطلبات المسبقة
|
||||
- [ ] تأكيد عزل الأنظمة المتأثرة
|
||||
- [ ] تحديد آخر نسخة احتياطية سليمة
|
||||
- [ ] تجهيز بيئة الاستعادة
|
||||
|
||||
### خطوات الاستعادة
|
||||
|
||||
1. **إنشاء بيئة نظيفة**
|
||||
```bash
|
||||
ghaymah project create recovery-env --from-template secure-base
|
||||
```
|
||||
|
||||
2. **استعادة قاعدة البيانات**
|
||||
```bash
|
||||
ghaymah backup restore \
|
||||
--source secure-backups/db-latest \
|
||||
--destination recovery-env/database \
|
||||
--verify
|
||||
```
|
||||
|
||||
3. **استعادة الملفات**
|
||||
```bash
|
||||
ghaymah backup restore \
|
||||
--source secure-backups/files-latest \
|
||||
--destination recovery-env/storage \
|
||||
--verify
|
||||
```
|
||||
|
||||
4. **اختبار الخدمات**
|
||||
```bash
|
||||
ghaymah test run --suite smoke-test --project recovery-env
|
||||
```
|
||||
|
||||
5. **تبديل DNS**
|
||||
```bash
|
||||
ghaymah dns update \
|
||||
--domain app.example.com \
|
||||
--target recovery-env
|
||||
```
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. التدريب والتوعية
|
||||
|
||||
### برنامج التدريب
|
||||
|
||||
| الفئة | التدريب | التكرار |
|
||||
|-------|---------|---------|
|
||||
| جميع الموظفين | التوعية بالتصيد | ربع سنوي |
|
||||
| فريق IT | الاستجابة للحوادث | شهري |
|
||||
| المطورين | البرمجة الآمنة | ربع سنوي |
|
||||
| الإدارة | إدارة الأزمات | نصف سنوي |
|
||||
|
||||
### محاكاة الهجمات
|
||||
|
||||
```yaml
|
||||
# جدول تمارين المحاكاة
|
||||
simulation_exercises:
|
||||
- name: "تمرين Ransomware"
|
||||
frequency: quarterly
|
||||
scope: full_organization
|
||||
objectives:
|
||||
- اختبار خطة الاستجابة
|
||||
- قياس وقت الاكتشاف
|
||||
- اختبار الاستعادة
|
||||
|
||||
- name: "اختبار التصيد"
|
||||
frequency: monthly
|
||||
scope: random_sample
|
||||
objectives:
|
||||
- قياس الوعي
|
||||
- تحديد نقاط الضعف
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. ملخص خطة الوقاية
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ ملخص خطة الوقاية الشاملة │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 🛡️ الوقاية: │
|
||||
│ ✓ MFA إجباري لجميع الحسابات │
|
||||
│ ✓ تقسيم الشبكة وعزل النسخ الاحتياطية │
|
||||
│ ✓ تحديثات أمنية تلقائية │
|
||||
│ ✓ سياسة أقل صلاحية │
|
||||
│ │
|
||||
│ 🔍 الكشف: │
|
||||
│ ✓ SIEM مع قواعد كشف Ransomware │
|
||||
│ ✓ مراقبة سلامة الملفات (FIM) │
|
||||
│ ✓ تنبيهات فورية │
|
||||
│ │
|
||||
│ 🚧 الاحتواء: │
|
||||
│ ✓ عزل تلقائي عند الكشف │
|
||||
│ ✓ نسخ احتياطية غير قابلة للتعديل (WORM) │
|
||||
│ ✓ وضع القراءة فقط للتخزين │
|
||||
│ │
|
||||
│ 🔄 الاستعادة: │
|
||||
│ ✓ قاعدة 3-2-1 للنسخ الاحتياطي │
|
||||
│ ✓ RPO: 1 ساعة | RTO: 4 ساعات │
|
||||
│ ✓ اختبار استعادة دوري │
|
||||
│ │
|
||||
│ 📚 التدريب: │
|
||||
│ ✓ توعية ربع سنوية │
|
||||
│ ✓ محاكاة هجمات │
|
||||
│ ✓ تمارين استجابة للحوادث │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. قائمة التحقق النهائية
|
||||
|
||||
### أسبوعياً
|
||||
- ✅ مراجعة تنبيهات SIEM
|
||||
- ✅ التحقق من نجاح النسخ الاحتياطي
|
||||
- ✅ فحص تحديثات الأمان
|
||||
|
||||
### شهرياً
|
||||
- ✅ اختبار استعادة عشوائي
|
||||
- ✅ مراجعة صلاحيات المستخدمين
|
||||
- ✅ تحديث قواعد الكشف
|
||||
|
||||
### ربع سنوياً
|
||||
- ✅ تمرين محاكاة Ransomware
|
||||
- ✅ مراجعة خطة الاستجابة
|
||||
- ✅ تدريب الموظفين
|
||||
|
||||
### سنوياً
|
||||
- ✅ تدقيق أمني شامل
|
||||
- ✅ تحديث خطة استمرارية الأعمال
|
||||
- ✅ مراجعة العقود مع المزودين
|
||||
المرجع في مشكلة جديدة
حظر مستخدم