# نظام أمني ذكي موزّع لكشف التسلل في البيئات السحابية
### Smart Distributed Intrusion Detection System (Smart-IDPS)

نظام كشف تسلل (IDS) موزّع، مبني على Apache Hadoop وApache Spark، يعمل على عنقود (Cluster) من ثلاث عقد فعلية، ويستخدم نموذج تعلّم آلي هرمي ثنائي المرحلة (Random Forest) لتصنيف حركة الشبكة إلى طبيعية أو مهاجمة، وتحديد نوع الهجوم عند اكتشافه.

---

## 1. لمحة عامة عن المشروع

يهدف المشروع إلى بناء نظام قادر على:
- تجميع سجلات حركة الشبكة من سيرفرات افتراضية متعددة عبر Apache Kafka
- تخزينها بشكل موزّع ومتسامح مع الأعطال عبر Hadoop HDFS
- تحليلها وتصنيفها في الوقت الفعلي عبر Apache Spark ونموذج تعلّم آلي مدرَّب مسبقاً
- إثبات الجدوى الهندسية لاستخدام بيئة موزّعة (Spark على عنقود من 3 عقد) مقارنة بالمعالجة المركزية (Single-Node)، من خلال تجارب مقارنة موثّقة (زمن التدريب، الاستدلال، الدقة، وقابلية التوسّع)

---

## 2. بنية العنقود (Cluster Architecture)

| العقدة | الدور | المكوّنات المستضافة |
|---|---|---|
| **k1** | العقدة الرئيسية (Master) | Spark Master, Hadoop NameNode, Kafka, Zookeeper |
| **k2** | عقدة عاملة (Worker) | Spark Worker, Hadoop DataNode,  |
| **k3** | عقدة عاملة (Worker) | Spark Worker, Hadoop DataNode, PostgreSQL |

كل عقدة تُدار عبر ملف `docker-compose.yml` مستقل ضمن مجلدها الخاص (`k1/`, `k2/`, `k3/`)، وتتصل ببعضها عبر شبكة داخلية باستخدام عناوين IP الثابتة للأجهزة.

---

## 3. تدفّق البيانات (Data Flow)

آلية التشغيل (Setup & Run)

### المتطلبات الأساسية
- Docker وDocker Compose على كل عقدة من الثلاث
- اتصال شبكي بين العقد الثلاث (نفس الشبكة الداخلية)
- تحديث عناوين IP في ملفات `docker-compose.yml` لتطابق عناوين الأجهزة الفعلية الحالية

### خطوات التشغيل

**1. على العقدة الرئيسية (k1):**
```bash
cd k1/
sudo docker compose up -