diff --git a/README.md b/README.md index e69de29..5906fd9 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,28 @@ +# Ghaymah SecOps Final Exam + +**المسار:** SecOps — Security Operations +**اسم الطالب:** عبد الرحمن +**اسم المستودع:** `ghaymah-exam-AbdulRhmanAbdulGhaffar-SecOps` + +--- + +## هيكل المشروع والحلول: + +1. **[Q1: Security Audit](./q1-audit/)** + - قائمة تدقيق أمني من 15 بنداً لمنصة غيمة. + - سكربت Bash للتدقيق والتأكد الآلي (`health-check.sh`). + +2. **[Q2: Attack Simulation & Incident Response](./q2-incident-response/)** + - تحليل التسلسل الزمني لهجوم Brute Force. + - خطة الاستجابة للحوادث (IRP). + - آليات الوقاية وقواعد Wazuh. + +3. **[Q3: Privacy Assessment - mithal.space](./q3-privacy/)** + - تقرير الخصوصية عبر DevTools ومقارنته بالمحركات الأخرى. + +4. **[Q4: Lightweight SIEM System](./q4-siem/)** + - محرك تحليل السجلات بـ Python واجهة Dashboard بـ HTML. + - آليات النشر والتخزين على Ghaymah Block Storage. + +5. **[Q5: Ransomware Recovery Plan](./q5-ransomware/)** + - خطة أول 60 دقيقة وتطبيق استراتيجية 3-2-1 لـ Ghaymah Backup. diff --git a/q1-audit/audit-checklist.md b/q1-audit/audit-checklist.md index e69de29..541a1ef 100644 --- a/q1-audit/audit-checklist.md +++ b/q1-audit/audit-checklist.md @@ -0,0 +1,17 @@ +# قائمة التدقيق الأمني (15 بنداً) — ghaymah.systems + +1. **فحص ثغرات الـ Images:** الاعتماد على Trivy أو Grype داخل pipeline الـ CI/CD لفحص حاويات Ghaymah وتحديد الـ CVEs الحرجة قبل التوزيع. +2. **الحد من صلاحيات Root:** إجبار الحاويات تشتغل بـ Non-root UID (مثلاً `USER 10001`) لمنع الـ Container Escape. +3. **تحديد حدود الموارد (Resource Limits):** ضبط `limits` و `requests` للـ CPU والـ RAM لكل حاوية لتفادي هجمات DoS على النودز. +4. **تقليل المساحة المعرضة للهجوم (Attack Surface):** إغلاق كل المنافذ غير الضرورية وتكليف الـ WAF بإدارة منفذي 80 و443 فقط. +5. **تقسيم الشبكة السحابية (VPC Segmentation):** فصل سيرفرات الـ API عن قواعد البيانات عبر Private Subnets داخل غيمة. +6. **التشفير الداخلي (mTLS):** إجبار الاتصال بين الـ Microservices باستخدام TLS 1.3 ومفاتيح متبادلة. +7. **الوقاية من الـ SQLi والـ Injection:** استخدام ORMs مع حظر الاستعلامات المباشرة (Raw SQL Queries) وتقييم المدخلات. +8. **تعزيز آليات الجلسات (JWT Security):** توقيع الـ Tokens بـ RS256 مع عمر افتراضي لا يتعدى 15 دقيقة وتفعيل الـ Refresh Tokens. +9. **حماية البيانات الحساسة أثناء المعالجة:** عدم إظهار الـ Stack Traces أو الأخطاء التفصيلية للمستخدم في بيئة الإنتاج. +10. **تعطيل DTDs لمنع هجمات XXE:** ضبط الـ XML Parsers بتعطيل المراجع الخارجية كلياً. +11. **تطبيق صارم لـ RBAC:** التحقق من صلاحيات الحساب (Authorization) على مستوى كل Endpoint وليس فقط عند التسجيل. +12. **تشفير البيانات المخزنة (KMS):** ربط جميع وحدات Ghaymah Block Storage بمفاتيح تشفير AES-256 يتم تدويرها تلقائياً. +13. **حماية النسخ الاحتياطية من الحذف:** تفعيل خيار الـ Immutability للـ Snapshots الخاصة بالتخزين. +14. **تطبيق الـ Least Privilege في الـ IAM:** عدم منح أي IAM Role صلاحية `*` وإعطاء الصلاحيات على مستوى المورد (Resource Level). +15. **التدوير الدوري للـ Secrets:** ربط التطبيق بـ Vault أو Ghaymah Secrets Manager لتدوير الباسوردات ومفاتيح الـ API كل 90 يوماً. diff --git a/q1-audit/health-check.sh b/q1-audit/health-check.sh index e69de29..ff4ec2c 100644 --- a/q1-audit/health-check.sh +++ b/q1-audit/health-check.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# Ghaymah Infrastructure Health Check +# Author: SecOps Team + +TARGET="ghaymah.systems" +LOG_FILE="/var/log/ghaymah_audit.log" + +echo "[i] Starting automated check for $TARGET at $(date)" >> $LOG_FILE + +# 1. Port Check +for port in 80 443 22 8080; do + nc -zx2 -w2 $TARGET $port &>/dev/null + if [ $? -eq 0 ]; then + echo "[WARN] Port $port is reachable on $TARGET" >> $LOG_FILE + fi +done + +# 2. Check TLS Expiry +EXP_DAYS=$(echo | openssl s_client -servername $TARGET -connect $TARGET:443 2>/dev/null | openssl x509 -noout -dates | grep notAfter | cut -d= -f2) +echo "[INFO] Certificate Expiry Date: $EXP_DAYS" >> $LOG_FILE + +# 3. Check Configuration File Permissions +CONFIG_PERM=$(stat -c "%a" /etc/ghaymah/config.json 2>/dev/null) +if [ "$CONFIG_PERM" != "600" ]; then + echo "[ALERT] Insecure perms on config file: $CONFIG_PERM (Expected 600)" >> $LOG_FILE +fi diff --git a/q2-incident-response/attack-timeline.md b/q2-incident-response/attack-timeline.md index e69de29..a00e194 100644 --- a/q2-incident-response/attack-timeline.md +++ b/q2-incident-response/attack-timeline.md @@ -0,0 +1,7 @@ +# تحليل التسلسل الزمني للهجوم (Attack Timeline) + +* **T00: Reconnaissance:** قام المهاجم بمسح الـ Endpoints واكتشف واجهة `/api/v1/auth/login`. +* **T05: Attack Phase:** بدأ المهاجم إرسال طلبات مكثفة (Credential Stuffing) مستغلاً غياب الـ Rate Limiting على الرابط. +* **T18: Compromise:** نجح الهجوم بتخمين الحساب التابع للأدمن وحصل على `JWT Bearer Token`. +* **T22: Escalation:** تم استخدام الـ Token للوصول لـ Endpoint غير محمية بالقدر الكافي (`/api/v1/users/export`). +* **T25: Exfiltration:** استخراج بيانات المستخدمين وتسريبها خارج الشبكة. diff --git a/q2-incident-response/ghaymah-prevention.md b/q2-incident-response/ghaymah-prevention.md index e69de29..7188a97 100644 --- a/q2-incident-response/ghaymah-prevention.md +++ b/q2-incident-response/ghaymah-prevention.md @@ -0,0 +1,4 @@ +# آليات الوقاية على منصة غيمة + +* **Network Level:** ضبط قواعد الـ Rate Limiting على Ghaymah API Gateway بحيث لا تسمح بأكثر من 5 محاولات فاشلة لكل دقيقة بنفس الـ IP. +* **Container Level:** حظر الوصول المباشر للـ Containers إلا من خلال الـ Ingress Controller، وتفعيل سياقات الأمان (SecurityContext) لمنع أي تغيير في ملفات النظام. diff --git a/q2-incident-response/irp-plan.md b/q2-incident-response/irp-plan.md index e69de29..afc9267 100644 --- a/q2-incident-response/irp-plan.md +++ b/q2-incident-response/irp-plan.md @@ -0,0 +1,11 @@ +# خطة الاستجابة للحوادث (Incident Response Plan) + +* **الاحتواء (Containment):** + 1. إلغاء صلاحية كافة الـ JWT Tokens الحالية بتغيير الـ Secret Key فوراً. + 2. حظر الـ IP المهاجم على مستوى الـ Edge Firewall / WAF. +* **الاستئصال (Eradication):** + 1. إجبار كافة الحسابات المعتمدة على تغيير كلمات المرور. + 2. سد الثغرة في الـ API بتطبيق Rate Limiting على مسار الدخول. +* **التعافي (Recovery):** + 1. إعادة تشغيل الخدمة ومراقبة حركة المرور الموجهة للـ API لمدة 48 ساعة. +* **الدروس المستفادة:** إجبار تفعيل الـ MFA لجميع الحسابات ذات الصلاحيات العالية. diff --git a/q2-incident-response/wazuh-rule.xml b/q2-incident-response/wazuh-rule.xml index e69de29..ec04ca1 100644 --- a/q2-incident-response/wazuh-rule.xml +++ b/q2-incident-response/wazuh-rule.xml @@ -0,0 +1,11 @@ + + + 5710 + /api/v1/auth/login + 401 + 8 + 60 + + Possible Brute Force Attack detected on Ghaymah Auth API + + diff --git a/q3-privacy/comparison.md b/q3-privacy/comparison.md index e69de29..d38ed44 100644 --- a/q3-privacy/comparison.md +++ b/q3-privacy/comparison.md @@ -0,0 +1,11 @@ +# مقارنة الخصوصية والتوصيات الأمنية + +### المقارنة مع محركات البحث الأخرى: +* **Mithal:** لا يتبع البيانات، لا يستخدم Trackers، بحاجة لتعديل إعدادات الـ Security Headers. +* **DuckDuckGo:** حماية ممتازة، لكنه يعتمد جزئياً على بنية تحتية من أطراف أخرى (مثل نتائج Bing). +* **Brave Search:** مستقل بالكامل، حماية ممتازة للهيدرز والتشفير، لا يحتفظ بالسجلات. + +### التحسينات المقترحة: +1. تفعيل سياسة **Content-Security-Policy (CSP)** كأولوية قصوى. +2. إضافة وسوم `Secure; HttpOnly; SameSite=Strict` لجميع الـ Cookies. +3. تفعيل **HSTS Preloading** لإجبار التشفير دائماً. diff --git a/q3-privacy/devtools-findings.md b/q3-privacy/devtools-findings.md index e69de29..1740ae2 100644 --- a/q3-privacy/devtools-findings.md +++ b/q3-privacy/devtools-findings.md @@ -0,0 +1,6 @@ +# نتائج فحص mithal.space عبر DevTools + +* **الـ Cookies:** الـ Session Cookies تنقصها وسمة `SameSite=Strict` مما يجعلها عرضة لهجمات CSRF. +* **الـ Trackers:** لا توجد أي أدوات تتبع من أطراف ثالثة (مثل Google Analytics أو Facebook Pixel). +* **التشفير:** استخدام TLS ممتاز، لكن يوصى بإغلاق دعم التشفيرات القديمة (TLS 1.0/1.1) نهائياً. +* **الـ Security Headers:** غياب هيدر الـ `Content-Security-Policy` و`Permissions-Policy`. diff --git a/q3-privacy/privacy-report.md b/q3-privacy/privacy-report.md index e69de29..a8463b4 100644 --- a/q3-privacy/privacy-report.md +++ b/q3-privacy/privacy-report.md @@ -0,0 +1,5 @@ +# تقرير تقييم الخصوصية (Privacy Assessment Report) + +**ملخص الفحص:** يمتلك موقع `mithal.space` بنيّة ممتازة تدعم خصوصية المستخدمين من حيث عدم مشاركة البيانات مع شركات الإعلانات، ولكن يعاني من ضعف في التكشيف الأمني لبعض الـ Headers. + +**التوصيات:** الموقع آمن لاستخدام المستخدم العادي بدون تتبع، ولكنه بحاجة لرفع مستوى الأمان ضد الهجمات الموجهة على الـ Client-side. diff --git a/q4-siem/dashboard.html b/q4-siem/dashboard.html index e69de29..48c646e 100644 --- a/q4-siem/dashboard.html +++ b/q4-siem/dashboard.html @@ -0,0 +1,37 @@ + + + + + Ghaymah SIEM Console + + + +

نظام مراقبة الأحداث الأمنية - Ghaymah SIEM

+ +
+ [تنبيه حرِج]: تم كشف محاولات اختراق نشطة على الـ API الخاص بتسجيل الدخول. +
+ +

عناوين IP المشبوهة

+ + + + + + + + + + + + + +
عنوان IPنوع التهديدالعددالإجراء
192.168.1.45Brute Force / API18 محاولةمستبعد تلقائياً
+ + diff --git a/q4-siem/siem_analyzer.py b/q4-siem/siem_analyzer.py index e69de29..beeab60 100644 --- a/q4-siem/siem_analyzer.py +++ b/q4-siem/siem_analyzer.py @@ -0,0 +1,24 @@ +import re +from collections import defaultdict + +LOG_FILE = "ghaymah_access.log" +FAILED_THRESHOLD = 5 + +ip_failures = defaultdict(int) + +log_pattern = re.compile(r'(?P\d+\.\d+\.\d+\.\d+) - - \[.*?\] "(?P\w+) (?P\S+) HTTP/.*?" (?P\d{3})') + +try: + with open(LOG_FILE, 'r') as f: + for line in f: + match = log_pattern.search(line) + if match: + data = match.groupdict() + if data['status'] == '401' and '/login' in data['path']: + ip_failures[data['ip']] += 1 + if ip_failures[data['ip']] >= FAILED_THRESHOLD: + print(f"[ALERT] High Brute Force Risk: {data['ip']} ({ip_failures[data['ip']]} failed attempts)") + if "select" in data['path'].lower() or "union" in data['path'].lower(): + print(f"[CRITICAL] Potential SQL Injection from {data['ip']}: {data['path']}") +except FileNotFoundError: + print(f"Log file {LOG_FILE} not found. Ready for deployment.") diff --git a/q4-siem/storage-deployment.md b/q4-siem/storage-deployment.md index e69de29..ad2af88 100644 --- a/q4-siem/storage-deployment.md +++ b/q4-siem/storage-deployment.md @@ -0,0 +1,5 @@ +# طريقة النشر على Ghaymah Block Storage + +1. إنشاء **Ghaymah Block Storage Volume** بمساحة مناسبة لجمع الـ Logs. +2. عمل `Mount` للـ Volume داخل المسار `/var/log/siem_logs` في سيرفر التحليل. +3. إعداد أداة `logrotate` لضمان ضغط السجلات وتفريغ المساحة بشكل دائم بدون التأثير على أداء الـ I/O. diff --git a/q5-ransomware/backup-strategy.md b/q5-ransomware/backup-strategy.md index e69de29..7a54f56 100644 --- a/q5-ransomware/backup-strategy.md +++ b/q5-ransomware/backup-strategy.md @@ -0,0 +1,10 @@ +# استراتيجية Ghaymah Backup & Recovery + +### 1. قاعدة 3-2-1: +* **3 نسخ:** النسخة التشغيلية، بالإضافة لنسختين إضافيتين. +* **2 وسائط:** تخزين نسخة على Ghaymah Block Storage ونسخة على Ghaymah Object Storage. +* **1 Off-site:** حفظ نسخة مشفرة في إقليم سحابي آخر (Cross-Region Replica) وتكون **Immutable** (غير قابلة للتعديل أو المسح). + +### 2. أهداف التعافي (RPO / RTO): +* **RPO:** ساعة واحدة فقط (فقدان أقصى للبيانات لا يتعدى آخر Snapshot). +* **RTO:** ساعتان كحد أقصى لإعادة كامل الأنظمة للعمل بكفاءة. diff --git a/q5-ransomware/emergency-first-hour.md b/q5-ransomware/emergency-first-hour.md index e69de29..edca01e 100644 --- a/q5-ransomware/emergency-first-hour.md +++ b/q5-ransomware/emergency-first-hour.md @@ -0,0 +1,6 @@ +# خطة الطوارئ (أول 60 دقيقة) + +* **[00 - 15 دقيقة]:** فصل سيرفرات الـ Block Storage المتأثرة فوراً عن الشبكة (Network Isolation) لمنع الانتشار التلقائي عبر الشبكة الداخلية. +* **[15 - 30 دقيقة]:** إيقاف جميع الـ Service Accounts ومفاتيح الـ API المربوطة بالخدمة مؤقتاً لحين حصر الإصابة. +* **[30 - 45 دقيقة]:** سحب نسخة من ذاكرة السيرفرات (RAM Dump) للحفظ الجنائي للأدلة واكتشاف آليات التشفير المستخدمة. +* **[45 - 60 دقيقة]:** بدء تقييم سلامة النسخ الاحتياطية وتحديد نقطة الاسترجاع المناسبة (Clean Restore Point). diff --git a/q5-ransomware/prevention-plan.md b/q5-ransomware/prevention-plan.md index e69de29..8dc5b88 100644 --- a/q5-ransomware/prevention-plan.md +++ b/q5-ransomware/prevention-plan.md @@ -0,0 +1,5 @@ +# خطة الوقاية لمنع تكرار هجمات الفدية + +1. **Snapshots غير القابلة للتغيير (Immutable Snapshots):** قفل الـ Snapshots بحيث لا يستطيع أي حساب (حتى الـ Root) مسحها قبل انقضاء فترة الاحتفاظ المحمية. +2. **تطبيق مبدأ Zero Trust:** منع وصول أي محطة عمل للـ Block Management إلا عبر VPN مخصص مع إجبار استخدام الـ MFA. +3. **مراقبة سلوك نظام الملفات (EDR):** تفعيل تنبيهات آليّة عند استهلاك الـ IOPS العالي المفاجئ أو تعديل امتدادات الملفات بكثرة في وقت قصير.