mirror of
https://github.com/Oxbian/SIDPS.git
synced 2025-07-06 20:05:42 +02:00
feat: add demo docker-compose
This commit is contained in:
BIN
Demo/architecture.png
Normal file
BIN
Demo/architecture.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 72 KiB |
84
Demo/docker-compose.yml
Normal file
84
Demo/docker-compose.yml
Normal file
@ -0,0 +1,84 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
# Attaquant 1
|
||||
atk1:
|
||||
image: python:alpine3.20
|
||||
container_name: attaquant1
|
||||
command: sleep infinity
|
||||
networks:
|
||||
net_public:
|
||||
ipv4_address: 172.20.1.2
|
||||
restart: unless-stopped
|
||||
|
||||
# IDPS
|
||||
idps:
|
||||
image: python:alpine3.20
|
||||
container_name: idps
|
||||
command: sleep infinity
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- NET_RAW
|
||||
networks:
|
||||
net_public:
|
||||
ipv4_address: 172.20.1.3
|
||||
net_private:
|
||||
ipv4_address: 172.20.2.2
|
||||
restart: unless-stopped
|
||||
|
||||
# Cible
|
||||
cible:
|
||||
image: python:alpine3.20
|
||||
container_name: cible
|
||||
command: sleep infinity
|
||||
networks:
|
||||
net_private:
|
||||
ipv4_address: 172.20.2.3
|
||||
restart: unless-stopped
|
||||
|
||||
# Attaquant 2
|
||||
atk2:
|
||||
image: python:alpine3.20
|
||||
container_name: attaquant2
|
||||
command: sleep infinity
|
||||
networks:
|
||||
net_private:
|
||||
ipv4_address: 172.20.2.4
|
||||
restart: unless-stopped
|
||||
|
||||
ids:
|
||||
image: python:alpine3.20
|
||||
container_name: ids
|
||||
command: sleep infinity
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- NET_RAW
|
||||
networks:
|
||||
net_private:
|
||||
ipv4_address: 172.20.2.5
|
||||
# Network mode host obligatoire pour que la sonde puisse sniffer le réseau
|
||||
network_mode: host
|
||||
restart: unless-stopped
|
||||
|
||||
# BDD d'alertes
|
||||
alert_db:
|
||||
image: mysql:5.7
|
||||
container_name: alert_db
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_DATABASE: alert_db
|
||||
networks:
|
||||
net_private:
|
||||
ipv4_address: 172.20.2.10
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
net_public:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.20.1.0/24
|
||||
net_private:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.20.2.0/24
|
46
README.md
46
README.md
@ -3,46 +3,30 @@
|
||||
SIDPS est un outils de détection et de prévention d'intrusion.
|
||||
Il est capable de détecter & d'identifier différents types d'attaques réseaux, ainsi que de protéger contre certaines de ces attaques automatiquement.
|
||||
|
||||
**Attention, il s'agit d'un projet étudiant, dont le but est de réaliser une démonstration pour un projet Universitaire ! Ce projet ne sera probablement pas maintenu par la suite**
|
||||
**Attention, il s'agit d'un projet étudiant, dont le but est de réaliser une démonstration pour un projet Universitaire !**
|
||||
**Ce projet ne sera probablement pas maintenu par la suite**
|
||||
|
||||
## Fonctionnalités clés:
|
||||
|
||||
- Rapidité
|
||||
- Interface web simple et intuitive
|
||||
- Messages d'alertes interopérable suivant la norme [CEF (Common Event Format)](https://www.microfocus.com/documentation/arcsight/arcsight-smartconnectors-8.4/pdfdoc/cef-implementation-standard/cef-implementation-standard.pdf)
|
||||
- Détections de nombreuses attaques réseaux (scan, DOS, ...)
|
||||
- Détections de nombreuses attaques réseaux (scan, DOS, exfiltration de données...)
|
||||
|
||||
## Installation
|
||||
|
||||
Pour son fonctionnement, ce projet utilise une base de donnée [redis](https://redis.io/).
|
||||
Pour son fonctionnement, ce projet utilise une base de donnée [mysql](https://www.mysql.com/).
|
||||
|
||||
Un moyen simple d'avoir une base de donnée redis fonctionnel est d'utilisé docker:
|
||||
## Structure de la base de données SQL
|
||||
|
||||
```bash
|
||||
docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest
|
||||
```
|
||||
|
||||
Ou si vous souhaitez avoir une interface graphique pour Redis en plus de la base de donnée, vous pouvez installer un docker de [redis insight](https://redis.io/insight/).
|
||||
|
||||
```bash
|
||||
docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
|
||||
```
|
||||
|
||||
*Installation interface web & noyau de l'IDS*
|
||||
|
||||
## Structure de la base de données Redis
|
||||
|
||||
La base de données Redis est structurée de la façon suivante:
|
||||
- stream `logs:alertes` contenant toutes les alertes envoyés par le noyau de l'IDPS
|
||||
- stream `logs:correlations` contenant toutes les corrélations d'alertes, avec un message de corrélation et les alertes corrélées
|
||||
|
||||
Ces deux streams suivent la norme CEF, mais sont structurées sous la forme d'objet et non d'une seule chaine de caractère. Afin de faciliter le parsing par la suite.
|
||||
La base de données SQL est structurée de la façon suivante:
|
||||
- une table pour les alertes `alertes`, contenant toutes les alertes. Ces alertes sont décrites selon la [norme CEF](https://www.microfocus.com/documentation/arcsight/arcsight-smartconnectors-8.4/pdfdoc/cef-implementation-standard/cef-implementation-standard.pdf)
|
||||
|
||||
## Interface de tests d'alertes
|
||||
|
||||
Un script python `tests/cef-generator.py` permet de générer des alertes CEF dans la base de données Redis.
|
||||
Ce script peut être utile pour le développement d'interface d'affichage des alertes. Pour l'utiliser il faut une base de donnée redis, et mettre les identifiants dans le script.
|
||||
De plus, ce script à besoin de la librairie `redis` pour pouvoir ajouter / faire des requêtes à la base de données Redis.
|
||||
Un script python `tests/cef-generator.py` permet de générer des alertes CEF dans la base de données SQL.
|
||||
Ce script peut être utile pour le développement d'interface d'affichage des alertes. Pour l'utiliser il faut une base de donnée sql, et mettre les identifiants dans le script.
|
||||
De plus, ce script à besoin de la librairie `sql` pour pouvoir ajouter / faire des requêtes à la base de données Redis.
|
||||
|
||||
Pour cela, utiliser les commandes suivantes:
|
||||
|
||||
@ -58,6 +42,16 @@ Puis executer le script `tests/cef-generator.py` avec le python3 du l'environnem
|
||||
.venv/bin/python3 tests/cef-generator.py
|
||||
```
|
||||
|
||||
## Demo
|
||||
|
||||
Ce projet étant réaliser dans le cadre d'un cours à l'université, une démonstration est donc nécessaire.
|
||||
|
||||
Ci-dessous, le schéma de l'architecture réseau de la démonstration:
|
||||

|
||||
|
||||
Cette démonstration peut être déployer facilement grâce à un docker-compose `Demo/docker-compose.yml`.
|
||||
|
||||
|
||||
## TODO
|
||||
|
||||
- Noyau d'analyse de l'IDS
|
||||
|
Reference in New Issue
Block a user