Un système SIEM (Security Information and Event Management) complet développé avec Spring Boot, offrant une surveillance en temps réel des événements de sécurité, la détection d'intrusions et la gestion des alertes.
- Fonctionnalités
- Prérequis
- Installation
- Configuration
- Lancement
- Utilisation
- Architecture
- API Endpoints
- Générateur de logs Python
- Dépannage
- 📊 Dashboard temps réel - Visualisation des métriques de sécurité avec graphiques interactifs
- 🔔 Gestion des alertes - Détection automatique des menaces (brute force, DDoS, port scan)
- 📝 Logs centralisés - Collecte et analyse des logs de sécurité
- 🖥️ Gestion des appareils - Inventaire et surveillance des équipements réseau
- 👥 Gestion des utilisateurs - Authentification sécurisée avec rôles (Admin/Analyst)
- 🌙 Mode sombre - Interface adaptative jour/nuit
- 🔄 WebSocket - Mise à jour en temps réel sans rechargement de page
Avant de commencer, assurez-vous d'avoir installé :
| Logiciel | Version minimale | Téléchargement |
|---|---|---|
| Java JDK | 21 ou supérieur | Oracle JDK ou OpenJDK |
| Maven | 3.8+ | Apache Maven |
| MySQL | 8.0+ | MySQL Community |
| Python (optionnel) | 3.8+ | Python.org |
# Vérifier Java
java -version
# Vérifier Maven
mvn -version
# Vérifier MySQL
mysql --version
# Vérifier Python (optionnel)
python --version# Si vous avez reçu un fichier ZIP
unzip siem-project.zip
cd siem-project
# Ou si vous clonez depuis Git
git clone <url-du-repo>
cd siem-projectCréez une nouvelle base de données nommée siemdb.
# Se connecter à MySQL
mysql -u root -p
# Créer la base de données
CREATE DATABASE siemdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# Vérifier
SHOW DATABASES;
# Quitter
EXIT;💡 Note : La base de données sera automatiquement créée au premier lancement si elle n'existe pas (grâce à
createDatabaseIfNotExist=true).
# Depuis le répertoire du projet
mvn clean install -DskipTestsModifiez le fichier src/main/resources/application.properties selon votre environnement :
# Configuration MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/siemdb?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=VOTRE_MOT_DE_PASSE
# Port du serveur (défaut: 8081)
server.port=8081# Seuils de détection
siem.detection.brute-force.threshold=5 # Tentatives avant alerte brute force
siem.detection.port-scan.threshold=10 # Sondes avant alerte port scan
siem.detection.ddos.threshold=100 # Paquets droppés avant alerte DDoS
siem.detection.alert-cooldown-minutes=5 # Délai entre alertes similaires# Depuis le répertoire du projet
mvn spring-boot:run# Compiler le projet
mvn clean package -DskipTests
# Lancer le JAR
java -jar target/siem-project-0.0.1-SNAPSHOT.jar- Importez le projet comme Maven Project
- Localisez la classe
SiemProjectApplication.java - Clic droit → Run As → Java Application (ou Spring Boot App)
Une fois lancé, vous devriez voir dans la console :
Started SiemProjectApplication in X.XXX seconds
Tomcat started on port(s): 8081 (http)
Ouvrez votre navigateur et accédez à :
http://localhost:8081
| Rôle | Nom d'utilisateur | Mot de passe |
|---|---|---|
| Admin | admin |
admin123 |
| Analyst | analyst |
analyst123 |
⚠️ Important : Changez ces mots de passe en production !
| Page | URL | Description |
|---|---|---|
| Dashboard | /dashboard |
Vue d'ensemble avec KPIs et graphiques |
| Logs | /logs |
Liste des événements de sécurité |
| Alertes | /alerts |
Alertes de sécurité actives |
| Appareils | /devices |
Gestion des équipements |
| Paramètres | /settings |
Configuration du profil et utilisateurs |
siem-project/
├── src/
│ ├── main/
│ │ ├── java/com/siemapp/
│ │ │ ├── config/ # Configuration Spring
│ │ │ ├── controller/ # Contrôleurs MVC et REST
│ │ │ ├── dto/ # Objets de transfert de données
│ │ │ ├── engine/ # Moteur de détection
│ │ │ ├── model/ # Entités JPA
│ │ │ ├── repository/ # Repositories Spring Data
│ │ │ ├── security/ # Configuration sécurité
│ │ │ └── service/ # Services métier
│ │ └── resources/
│ │ ├── static/ # CSS, JS, images
│ │ ├── templates/ # Templates Thymeleaf
│ │ └── application.properties
│ └── test/ # Tests unitaires
├── python-scripts/ # Générateur de logs Python
├── docs/ # Documentation
├── pom.xml # Dépendances Maven
└── README.md
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/logs |
Récupérer tous les logs |
| POST | /api/logs |
Créer un nouveau log |
| GET | /api/logs/{id} |
Récupérer un log par ID |
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/alerts |
Récupérer toutes les alertes |
| PUT | /api/alerts/{id}/status |
Mettre à jour le statut |
| PUT | /api/alerts/{id}/resolve |
Résoudre une alerte |
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/devices |
Lister les appareils |
| POST | /api/devices |
Ajouter un appareil |
| DELETE | /api/devices/{id} |
Supprimer un appareil |
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/dashboard/stats |
Statistiques générales |
| GET | /api/dashboard/recent-logs |
Logs récents |
Un script Python est fourni pour générer des logs de test réalistes.
# Aller dans le dossier des scripts
cd python-scripts
# Installer les dépendances
pip install -r requirements.txt# Lancer le générateur
python main.py
# Ou utiliser le CLI
python cli generate --count 100Modifiez python-scripts/config.py pour ajuster :
- L'URL de l'API (
http://localhost:8081/api/logs) - La fréquence de génération
- Les types d'événements
Solution :
- Vérifiez que MySQL est en cours d'exécution
- Vérifiez les identifiants dans
application.properties - Testez la connexion :
mysql -u root -p
Solution : Changez le port dans application.properties :
server.port=8082Solution : Installez Java 21 ou supérieur :
# Vérifier la version
java -version
# Définir JAVA_HOME si nécessaire
export JAVA_HOME=/chemin/vers/jdk-21Solution :
# Nettoyer le cache Maven
mvn clean install -USolution :
- Vérifiez les logs dans la console
- Assurez-vous que la base de données est accessible
- Redémarrez l'application
mvn clean package -DskipTestsmvn testmvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"- Développé dans le cadre d'un projet SIEM académique
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Les contributions sont les bienvenues ! N'hésitez pas à :
- Fork le projet
- Créer une branche (
git checkout -b feature/AmazingFeature) - Commit vos changements (
git commit -m 'Add AmazingFeature') - Push (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
🛡️ SIEM PRO - Sécurité en temps réel