Final Submission for SecOps Exam

هذا الالتزام موجود في:
Ammar Yaser Al-Sayyed Abdullah
2026-07-26 17:39:55 +03:00
التزام 28bfbea3de
13 ملفات معدلة مع 358 إضافات و0 حذوفات

عرض الملف

@@ -0,0 +1,27 @@
# Security Audit Checklist for Ghaymah Platform
## 1. Container Security
* **1.1 Base Image Scanning:** استخدام الصور الرسمية والموثوقة فقط في ghaymah Container Registry وتفعيل الفحص الآلي للثغرات قبل النشر.
* **1.2 Least Privilege Execution:** إعداد Dockerfile لضمان عدم تشغيل التطبيق بصلاحيات الـ Root داخل حاويات غيمة لمنع تصعيد الصلاحيات.
* **1.3 Immutable Containers:** ضبط نظام ملفات الحاوية على Read-Only لمنع المهاجمين من كتابة أي نصوص برمجية خبيثة داخل الحاوية أثناء التشغيل.
## 2. Network Security
* **2.1 Network Segmentation:** استخدام قواعد الشبكة في غيمة لفصل حاويات الـ Frontend عن الـ Backend، بحيث لا يُسمح بالوصول المباشر لقاعدة البيانات من الخارج.
* **2.2 TLS/SSL Encryption:** فرض استخدام بروتوكول HTTPS لجميع الاتصالات الخارجية، وتكوين شهادات SSL لتتجدد تلقائياً.
* **2.3 Minimal Exposed Ports:** حظر جميع المنافذ افتراضياً، وفتح المنافذ الضرورية فقط للخدمات (مثل 80 و 443) وإغلاق منافذ الإدارة (مثل 22) عن الإنترنت العام.
## 3. OWASP Top 5
* **3.1 Broken Access Control:** تطبيق سياسة "الرفض الافتراضي" والتأكد من التحقق من صلاحيات المستخدم في كل طلب API يُرسل للتطبيق.
* **3.2 Cryptographic Failures:** تشفير البيانات الحساسة باستخدام أدوات إدارة الأسرار وعدم تخزينها كنصوص واضحة في متغيرات البيئة على غيمة.
* **3.3 Injection:** استخدام الاستعلامات المجهزة للتعامل مع مدخلات المستخدمين قبل تخزينها في قواعد بيانات غيمة.
* **3.4 Insecure Design:** إجراء "نمذجة التهديدات" للتطبيق قبل النشر على غيمة لاكتشاف العيوب المنطقية في التصميم.
* **3.5 Security Misconfiguration:** إزالة أي خدمات غير ضرورية، تعطيل رسائل الخطأ التفصيلية في بيئة الإنتاج، وتطبيق إعدادات الأمان الافتراضية لمنصة غيمة.
## 4. Data Security
* **4.1 Encryption at Rest:** تفعيل خاصية التشفير لأقراص التخزين ghaymah Block Storage لضمان سرية البيانات.
* **4.2 Automated Backup Strategy:** جدولة النسخ الاحتياطي التلقائي عبر ghaymah Backup وتطبيق قاعدة (3-2-1) لضمان توافر البيانات.
## 5. IAM
* **5.1 MFA:** فرض المصادقة الثنائية على جميع حسابات المطورين ومديري النظام.
* **5.2 RBAC:** تعيين الصلاحيات بناءً على الأدوار الوظيفية الدقيقة.
* **5.3 Audit Logging:** تفعيل تسجيل الأحداث لجميع محاولات الدخول وحفظها في مساحة تخزين منفصلة وآمنة على غيمة.

عرض الملف

@@ -0,0 +1,46 @@
#!/bin/bash
echo "🔒 Starting Security Audit Check..."
echo "------------------------------------"
echo "🔍 [1] Checking Risky Open Ports..."
OPEN_PORTS=$(netstat -tuln | awk '{print $4}' | grep -E ':(22|3306|21)$')
if [ -z "$OPEN_PORTS" ]; then
echo "✅ PASS: No unauthorized risky ports are open."
else
echo "❌ WARNING: The following risky ports are exposed:"
echo "$OPEN_PORTS"
fi
echo "------------------------------------"
echo "🌐 [2] Checking SSL Certificate Expiry for mithal.space..."
DOMAIN="mithal.space"
EXPIRY_DATE=$(echo | openssl s_client -servername $DOMAIN -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -dates | grep notAfter | cut -d= -f2)
if [ -n "$EXPIRY_DATE" ]; then
EXPIRY_SEC=$(date -d "$EXPIRY_DATE" +%s)
NOW_SEC=$(date +%s)
DAYS_LEFT=$(( ($EXPIRY_SEC - $NOW_SEC) / 86400 ))
if [ $DAYS_LEFT -gt 30 ]; then
echo "✅ PASS: SSL certificate is valid. Expires in $DAYS_LEFT days."
else
echo "⚠️ WARNING: SSL certificate expires soon (in $DAYS_LEFT days)!"
fi
else
echo "❌ ERROR: Could not retrieve SSL certificate."
fi
echo "------------------------------------"
echo "📁 [3] Checking Sensitive File Permissions..."
SENSITIVE_FILE=".env"
if [ -f "$SENSITIVE_FILE" ]; then
PERMISSIONS=$(stat -c "%a" "$SENSITIVE_FILE")
if [ "$PERMISSIONS" -le 600 ]; then
echo "✅ PASS: Permissions for $SENSITIVE_FILE are secure ($PERMISSIONS)."
else
echo "❌ WARNING: Permissions for $SENSITIVE_FILE are too open ($PERMISSIONS)!"
fi
else
echo " INFO: No $SENSITIVE_FILE found."
fi
echo "------------------------------------"
echo "🏁 Security Audit Check Completed."