Skip to content

mohNetcyber/SIEM-Java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ SIEM PRO - Security Information and Event Management

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.

Java Spring Boot MySQL License


📋 Table des matières


✨ Fonctionnalités

  • 📊 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

📦 Prérequis

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 les installations

# Vérifier Java
java -version

# Vérifier Maven
mvn -version

# Vérifier MySQL
mysql --version

# Vérifier Python (optionnel)
python --version

🚀 Installation

1. Cloner ou extraire le projet

# 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-project

2. Configurer la base de données MySQL

Option A : Avec MySQL Workbench ou phpMyAdmin

Créez une nouvelle base de données nommée siemdb.

Option B : En ligne de commande

# 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).

3. Installer les dépendances Maven

# Depuis le répertoire du projet
mvn clean install -DskipTests

⚙️ Configuration

Configuration de la base de données

Modifiez 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

Configuration de la détection (optionnel)

# 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

▶️ Lancement

Méthode 1 : Avec Maven (Recommandée)

# Depuis le répertoire du projet
mvn spring-boot:run

Méthode 2 : Avec le JAR compilé

# Compiler le projet
mvn clean package -DskipTests

# Lancer le JAR
java -jar target/siem-project-0.0.1-SNAPSHOT.jar

Méthode 3 : Depuis un IDE (Eclipse/IntelliJ)

  1. Importez le projet comme Maven Project
  2. Localisez la classe SiemProjectApplication.java
  3. Clic droit → Run AsJava Application (ou Spring Boot App)

Vérifier le lancement

Une fois lancé, vous devriez voir dans la console :

Started SiemProjectApplication in X.XXX seconds
Tomcat started on port(s): 8081 (http)

🌐 Utilisation

Accéder à l'application

Ouvrez votre navigateur et accédez à :

http://localhost:8081

Comptes par défaut

Rôle Nom d'utilisateur Mot de passe
Admin admin admin123
Analyst analyst analyst123

⚠️ Important : Changez ces mots de passe en production !

Pages disponibles

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

🏗️ Architecture

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

🔌 API Endpoints

Logs

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

Alertes

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

Appareils

Méthode Endpoint Description
GET /api/devices Lister les appareils
POST /api/devices Ajouter un appareil
DELETE /api/devices/{id} Supprimer un appareil

Dashboard

Méthode Endpoint Description
GET /api/dashboard/stats Statistiques générales
GET /api/dashboard/recent-logs Logs récents

🐍 Générateur de logs Python

Un script Python est fourni pour générer des logs de test réalistes.

Installation

# Aller dans le dossier des scripts
cd python-scripts

# Installer les dépendances
pip install -r requirements.txt

Utilisation

# Lancer le générateur
python main.py

# Ou utiliser le CLI
python cli generate --count 100

Configuration

Modifiez 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

🔧 Dépannage

Problème : "Connection refused" à MySQL

Solution :

  1. Vérifiez que MySQL est en cours d'exécution
  2. Vérifiez les identifiants dans application.properties
  3. Testez la connexion : mysql -u root -p

Problème : Port 8081 déjà utilisé

Solution : Changez le port dans application.properties :

server.port=8082

Problème : "Java version not supported"

Solution : 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-21

Problème : Erreur Maven "Could not resolve dependencies"

Solution :

# Nettoyer le cache Maven
mvn clean install -U

Problème : Page blanche ou erreur 500

Solution :

  1. Vérifiez les logs dans la console
  2. Assurez-vous que la base de données est accessible
  3. Redémarrez l'application

📝 Notes de développement

Compiler sans tests

mvn clean package -DskipTests

Exécuter les tests

mvn test

Mode debug

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"

👥 Auteurs

  • Développé dans le cadre d'un projet SIEM académique

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.


🤝 Contribution

Les contributions sont les bienvenues ! N'hésitez pas à :

  1. Fork le projet
  2. Créer une branche (git checkout -b feature/AmazingFeature)
  3. Commit vos changements (git commit -m 'Add AmazingFeature')
  4. Push (git push origin feature/AmazingFeature)
  5. Ouvrir une Pull Request

🛡️ SIEM PRO - Sécurité en temps réel

About

Projet de SIEM avec Java JEE

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors