78 أسطر
3.2 KiB
Markdown
78 أسطر
3.2 KiB
Markdown
# هيكل المشروع
|
|
|
|
- **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/
|
|
```
|
|
|
|
ستظهر لوحة التحكم وتعرض جميع التنبيهات التي اكتشفها النظام. |