feat: complete all SecOps tasks with full content

هذا الالتزام موجود في:
AbdulRhmanAbdulGhaffar
2026-07-27 14:53:15 +03:00
الأصل 582bf1214d
التزام f113a14171
16 ملفات معدلة مع 213 إضافات و0 حذوفات

عرض الملف

@@ -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.

عرض الملف

@@ -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 يوماً.

عرض الملف

@@ -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

عرض الملف

@@ -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:** استخراج بيانات المستخدمين وتسريبها خارج الشبكة.

عرض الملف

@@ -0,0 +1,4 @@
# آليات الوقاية على منصة غيمة
* **Network Level:** ضبط قواعد الـ Rate Limiting على Ghaymah API Gateway بحيث لا تسمح بأكثر من 5 محاولات فاشلة لكل دقيقة بنفس الـ IP.
* **Container Level:** حظر الوصول المباشر للـ Containers إلا من خلال الـ Ingress Controller، وتفعيل سياقات الأمان (SecurityContext) لمنع أي تغيير في ملفات النظام.

عرض الملف

@@ -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 لجميع الحسابات ذات الصلاحيات العالية.

عرض الملف

@@ -0,0 +1,11 @@
<group name="ghaymah_api,">
<rule id="100500" level="10">
<if_sid>5710</if_sid>
<match>/api/v1/auth/login</match>
<string>401</string>
<frequency>8</frequency>
<timeframe>60</timeframe>
<same_source_ip />
<description>Possible Brute Force Attack detected on Ghaymah Auth API</description>
</rule>
</group>

عرض الملف

@@ -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** لإجبار التشفير دائماً.

عرض الملف

@@ -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`.

عرض الملف

@@ -0,0 +1,5 @@
# تقرير تقييم الخصوصية (Privacy Assessment Report)
**ملخص الفحص:** يمتلك موقع `mithal.space` بنيّة ممتازة تدعم خصوصية المستخدمين من حيث عدم مشاركة البيانات مع شركات الإعلانات، ولكن يعاني من ضعف في التكشيف الأمني لبعض الـ Headers.
**التوصيات:** الموقع آمن لاستخدام المستخدم العادي بدون تتبع، ولكنه بحاجة لرفع مستوى الأمان ضد الهجمات الموجهة على الـ Client-side.

عرض الملف

@@ -0,0 +1,37 @@
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<title>Ghaymah SIEM Console</title>
<style>
body { background-color: #0f172a; color: #f8fafc; font-family: monospace; padding: 20px; }
.alert-box { background-color: #991b1b; padding: 15px; border-radius: 5px; margin-bottom: 20px; }
table { width: 100%; border-collapse: collapse; margin-top: 10px; }
th, td { border: 1px solid #334155; padding: 10px; text-align: right; }
th { background-color: #1e293b; }
</style>
</head>
<body>
<h2>نظام مراقبة الأحداث الأمنية - Ghaymah SIEM</h2>
<div class="alert-box">
<strong>[تنبيه حرِج]:</strong> تم كشف محاولات اختراق نشطة على الـ API الخاص بتسجيل الدخول.
</div>
<h3>عناوين IP المشبوهة</h3>
<table>
<tr>
<th>عنوان IP</th>
<th>نوع التهديد</th>
<th>العدد</th>
<th>الإجراء</th>
</tr>
<tr>
<td>192.168.1.45</td>
<td>Brute Force / API</td>
<td>18 محاولة</td>
<td><b style="color: #ef4444;">مستبعد تلقائياً</b></td>
</tr>
</table>
</body>
</html>

عرض الملف

@@ -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<ip>\d+\.\d+\.\d+\.\d+) - - \[.*?\] "(?P<method>\w+) (?P<path>\S+) HTTP/.*?" (?P<status>\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.")

عرض الملف

@@ -0,0 +1,5 @@
# طريقة النشر على Ghaymah Block Storage
1. إنشاء **Ghaymah Block Storage Volume** بمساحة مناسبة لجمع الـ Logs.
2. عمل `Mount` للـ Volume داخل المسار `/var/log/siem_logs` في سيرفر التحليل.
3. إعداد أداة `logrotate` لضمان ضغط السجلات وتفريغ المساحة بشكل دائم بدون التأثير على أداء الـ I/O.

عرض الملف

@@ -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:** ساعتان كحد أقصى لإعادة كامل الأنظمة للعمل بكفاءة.

عرض الملف

@@ -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).

عرض الملف

@@ -0,0 +1,5 @@
# خطة الوقاية لمنع تكرار هجمات الفدية
1. **Snapshots غير القابلة للتغيير (Immutable Snapshots):** قفل الـ Snapshots بحيث لا يستطيع أي حساب (حتى الـ Root) مسحها قبل انقضاء فترة الاحتفاظ المحمية.
2. **تطبيق مبدأ Zero Trust:** منع وصول أي محطة عمل للـ Block Management إلا عبر VPN مخصص مع إجبار استخدام الـ MFA.
3. **مراقبة سلوك نظام الملفات (EDR):** تفعيل تنبيهات آليّة عند استهلاك الـ IOPS العالي المفاجئ أو تعديل امتدادات الملفات بكثرة في وقت قصير.