mirror of
https://github.com/Oxbian/SIDPS.git
synced 2025-07-07 04:14:46 +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.
|
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.
|
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:
|
## Fonctionnalités clés:
|
||||||
|
|
||||||
- Rapidité
|
- Rapidité
|
||||||
- Interface web simple et intuitive
|
- 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)
|
- 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
|
## 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
|
La base de données SQL est structurée de la façon suivante:
|
||||||
docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest
|
- 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)
|
||||||
```
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
## Interface de tests d'alertes
|
## 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.
|
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 redis, et mettre les identifiants dans le script.
|
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 `redis` pour pouvoir ajouter / faire des requêtes à la base de données Redis.
|
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:
|
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
|
.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
|
## TODO
|
||||||
|
|
||||||
- Noyau d'analyse de l'IDS
|
- Noyau d'analyse de l'IDS
|
||||||
|
Reference in New Issue
Block a user