# هيكل المشروع - **Log Sources** - تمثل مصادر السجلات (Logs) التي يجمع منها النظام البيانات. - في هذا المشروع سيتم استخدام **3 ملفات `.log` وهمية** لتجربة النظام ومحاكاة بيئة حقيقية، ويمكن توليدها بسهولة باستخدام ChatGPT. - أمثلة على المصادر: - `auth.log` : محاولات تسجيل الدخول. - `nginx.log` : طلبات خادم الويب. - `app.log` : أخطاء التطبيق. --- - **Log Collector (Python)** - مسؤول عن قراءة السجلات من جميع المصادر بشكل دوري. - يجمع كل سجل (Log Entry) ويمرره إلى مرحلة التحليل دون إجراء أي قرار أمني بنفسه. --- - **Parser + Detection Rules** - يقوم الـ Parser بتحليل كل Log واستخراج المعلومات المهمة مثل: - عنوان IP - الوقت - نوع الحدث - الرسالة - بعد ذلك يتم تطبيق مجموعة من **قواعد الكشف (Detection Rules)** لتحديد ما إذا كان الحدث طبيعياً أو مشبوهاً. - أمثلة على القواعد: - أكثر من **5 محاولات تسجيل دخول فاشلة** خلال دقيقة واحدة → **Brute Force**. - طلب يحتوي على كلمات مثل `UNION SELECT` أو `' OR 1=1` → **SQL Injection**. - محاولة الوصول إلى `/admin` أو ملفات حساسة بشكل متكرر → **Directory Enumeration**. - إرسال مرفق بريد إلكتروني بامتداد `.exe` أو `.bat` → **احتمال Malware**. - عدد كبير من الطلبات من نفس عنوان IP خلال فترة قصيرة → **Suspicious Activity**. --- - **Alerts Database / File** - عند اكتشاف حدث مشبوه، يتم إنشاء Alert يحتوي على: - الوقت - عنوان IP - نوع الهجوم - مستوى الخطورة (Low / Medium / High) - تُحفظ التنبيهات في ملف `alerts.json` (أو قاعدة بيانات في الأنظمة الأكبر) ليتم عرضها لاحقاً. --- - **Dashboard (HTML / CSS / JavaScript)** - واجهة رسومية تعرض التنبيهات التي اكتشفها النظام. - تعرض معلومات مثل: - عناوين IP المشبوهة. - نوع الهجوم. - مستوى الخطورة. - وقت اكتشاف الحدث. - يتم تحديث البيانات من ملف `alerts.json` الذي ينتجه برنامج Python. --- # تشغيل المشروع 1. شغّل برنامج تحليل السجلات: ```bash python siem.py ``` سيقوم البرنامج بقراءة ملفات الـ Logs وتحليلها وإنشاء ملف `alerts.json`. 2. بعد ذلك شغّل خادم HTTP لعرض لوحة التحكم: ```bash python -m http.server 8000 ``` 3. افتح المتصفح وانتقل إلى: ```text http://localhost:8000/dashboard/ ``` ستظهر لوحة التحكم وتعرض جميع التنبيهات التي اكتشفها النظام.