מערכת Network Intrusion Detection System (NIDS) מקצה לקצה בזמן אמת.
משלבת מנוע לכידה וניתוח ב-Python (Scapy) בארכיטקטורת Multi-threaded, יחד עם DPI, זיהוי אנומליות ב-Sliding Window, מנגנוני סיכול אקטיביים (Active Defense), וסטאק ניטור מנוהל קוד (Dashboard as Code) ב-Docker (Grafana + Loki + Promtail).
NetGuard מספקת מענה שלם לניטור, ניתוח ותגובה לאירועי אבטחה ברשת בשכבות 3, 4 ו-7 של מודל ה-OSI.
הארכיטקטורה מבוססת צינור נתונים רציף (Pipeline) המפריד בין לכידת החבילות, עיבודן בזמן אמת, והזנתן למערכת הוויזואליזציה:
📡 Network Traffic ➔
🐍 Python Engine (Sniffer + Worker + GC) ➔
📄 JSON Logs File
📊 Auto-Provisioned Grafana ⬅️
🗄️ Loki DB ⬅️
🔄 Promtail Shipper
python_sniffer/
├── grafana/
│ └── dashboards/ # Standard JSON Dashboards (Git Version-Controlled)
│ ├── dashboard-Live Security Log Stream.json
│ ├── dashboard-Security Events Distribution.json
│ ├── dashboard-Threat Timeline & Severity Levels.json
│ ├── dashboard-Top Suspicious Source IPs.json
│ └── dashboard-Total Security Alerts.json
├── provisioning/ # Grafana Automated Provisioning Configs
│ ├── dashboards/
│ │ └── dashboards.yml
│ └── datasources/
│ └── datasources.yml
├── logs/ # Runtime Log Directory (Ignored by Git)
├── .env.example
├── .gitignore
├── docker-compose.yml
├── main.py # NIDS Core Engine (Thread-Safe & GC Refactored)
├── promtail-config.yml
├── requirements.txt
└── test_attack.py # Traffic Simulator| Domain | Feature | Status | Description |
|---|---|---|---|
| 📡 Network | Real-time L2-L7 Sniffing | ✅ | לכידה וניתוח של תעבורת IP, TCP, UDP ו-DNS בזמן אמת תוך מניעת הצפת זיכרון (store=0). |
| 🛡️ Cyber Security | Sliding-Window Detection | ✅ | זיהוי DoS (SYN Flood) וסריקת פורטים מבוסס חלון זמן נייד מדויק. |
| ⚡ Active Defense | Dynamic IP Isolation | ✅ | מנגנון סיכול אקטיבי המבודד כתובות תוקפות לזמן קצוב (Blacklist עם תפוגה אוטומטית). |
| 🔍 DPI Engine | Deep Packet Inspection | ✅ | סריקת Raw Payload ברמת ה-Bytes לזיהוי מחרוזות חשודות (SQLi, Credentials, Path Traversal). |
| ⚙️ Architecture | Producer-Consumer & Thread-Safety | ✅ | שימוש ב-Queue מוגבל, מנעולי threading.Lock ו-Thread רקע ייעודי (Garbage Collector) למניעת זליגות זיכרון. |
| 📊 Observability & IaC | Dashboard as Code (Grafana + Loki) | ✅ | חמישה דשבורדים מוגדרים מראש בפורמט JSON סטנדרטי הנטענים אוטומטית בעליית ה-Container דרך קבצי ה-Provisioning. |
| 📝 Logging | Structured JSON Dual-Stream | ✅ | פלט קונסולה צבעוני במקביל לכתיבת לוגים במבנה JSON מובנה המותאם לאיסוף ע"י Promtail. |
| 🧪 Testing | Traffic Attack Simulator | ✅ | סקריפט סימולציה (test_attack.py) ליצירת תעבורת תקיפה סינתטית לאימות מנגנוני הזיהוי. |
queue.Queue(maxsize=10000) המונעת Packet Loss באירועי עומס.threading.Lock) למניעת Data Race, לצד חסימה דינמית וזמנית של כתובות IP תוקפות.grafana/dashboards/ וטעינתם האוטומטית ל-Grafana בעליית ה-Container.{
"timestamp": "2026-08-06T10:30:15.123456",
"level": "WARNING",
"message": "[PORT SCAN DETECTED] Host 10.0.0.4 scanned 18 unique ports",
"logger": "NetworkGuardian",
"src_ip": "10.0.0.4",
"event_type": "PORT_SCAN",
"details": "18 ports scanned"
}## 1. Clone the repository git clone https://github.com/Raz-Eini/python_sniffer.git cd python_sniffercp .env.example .env # Set your Grafana password in .env
docker compose up -d
python -m venv .venv ..venv\Scripts\activate # On Windows source .venv/bin/activate # On Linux/Mac pip install -r requirements.txt
sudo .venv/bin/python main.py
python main.py
python test_attack.py
📊 גישה ל-Grafana: היכנס בדפדפן ל-http://localhost:3000 (שם משתמש: admin, סיסמה מוגדרת ב-.env). כל הדשבורדים כבר יופיעו טעונים ומוכנים לשימוש!
הפרויקט מופץ תחת רישיון MIT – חופשי לשימוש ושינוי למטרות לימודיות ומחקריות.
👨💻 Raz Eini (2026)