
Documentation¶
Installation¶
Cette page détaille la procédure d'installation automatisée de l'application de surveillance des logs, ainsi que les étapes critiques de configuration post-installation.
Vue d'ensemble¶
Le script d'installation automatise le déploiement. Il réalise les opérations suivantes : 1. Système & Dépendances : Installation des paquets (Python, MariaDB, Git). 2. Environnement : Clonage du dépôt et création de l'environnement Python. 3. Base de Données : Configuration MariaDB et configuration des tables SQL 4. Sécurité Initiale : Création des comptes utilisateur et administrateur. 5. Démarrage : Lancement de l'application.
Installation¶
1. Création du script¶
Veuillez créer un fichier nommé install.sh sur votre serveur et y coller le contenu de ce script.
#!/bin/bash
REPO_URL="https://github.com/ShadowDev0/RENDUSAE302.git"
PORT=5000
DB_NAME="sae302"
DB_USER="root"
DB_PASS=""
APP_DB_USER="sae302"
APP_DB_PASS="sae302"
echo "1. Installation des paquets système..."
sudo apt-get update -y > /dev/null
sudo apt-get install -y git python3 python3-pip python3-venv mariadb-server libmariadb-dev pkg-config build-essential
echo "2. Vérification de MariaDB..."
sudo systemctl start mariadb
sudo systemctl enable mariadb
echo "3. Récupération du code..."
git clone $REPO_URL
echo "4. Installation dépendances Python..."
python3 -m venv logs
source logs/bin/activate
pip install --upgrade pip > /dev/null
pip install flask paramiko flask-mysql mysql-connector-python flask-sqlalchemy mariadb werkzeug > /dev/null
echo "5. Configuration de la Base de Données..."
cd RENDUSAE302
echo " -> Création de la DB '$DB_NAME'..."
sudo mysql -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;"
sudo mysql "$DB_NAME" < structure.sql
echo " -> Insertion des données de référence (Privilèges & Rôles)..."
sudo mysql "$DB_NAME" <<EOF
-- 1. On insère les privilèges (Logique binaire: 1, 2, 4)
INSERT IGNORE INTO privileges (id, description) VALUES (1, 'consultation des journaux');
INSERT IGNORE INTO privileges (id, description) VALUES (2, 'gestion des serveurs');
INSERT IGNORE INTO privileges (id, description) VALUES (4, 'administration des utilisateurs');
-- 2. On insère les rôles (1=User, 3=Manager, 7=Admin)
INSERT INTO roles (id, nom, privileges) VALUES (1, 'utilisateur', 1)
ON DUPLICATE KEY UPDATE nom='utilisateur', privileges=1;
INSERT INTO roles (id, nom, privileges) VALUES (2, 'gestionnaire', 3)
ON DUPLICATE KEY UPDATE nom='gestionnaire', privileges=3;
INSERT INTO roles (id, nom, privileges) VALUES (3, 'administrateur', 7)
ON DUPLICATE KEY UPDATE nom='administrateur', privileges=7;
EOF
echo " -> Création de l'admin par défaut..."
sudo mysql <<EOF
-- Création de l'utilisateur pour l'application
CREATE USER IF NOT EXISTS '${APP_DB_USER}'@'localhost' IDENTIFIED BY '${APP_DB_PASS}';
GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${APP_DB_USER}'@'localhost';
FLUSH PRIVILEGES;
EOF
ROOT_HASH=$(python3 -c "from werkzeug.security import generate_password_hash; print(generate_password_hash('root'))")
sudo mysql "$DB_NAME" <<EOF
INSERT INTO users (id, nom, mot_de_passe, role_id ) VALUES (1, 'root', "$ROOT_HASH", 3);
EOF
echo " -> Données initiales insérées."
echo "6. Lancement de l'application..."
sudo chmod +x run.py
./run.py
2. Exécution¶
Une fois le fichier créé, rendez le script exécutable et lancez l'installation en utilisant les commandes suivantes dans votre terminal.
¶
Configuration et Sécurisation (Post-Install)¶
Une fois le script terminé, l'application est accessible sur le localhost de votre serveur sur le port 5000.
URL d'accès :
http://localhost:5000
Étape 1 : Première connexion¶
Connectez-vous avec les identifiants par défaut générés par le script :
* Utilisateur : root
* Mot de passe : root
Étape 2 : Création d'un nouvel administrateur¶
Pour des raisons de sécurité, vous ne devez pas utiliser le compte générique par défaut.
- Rendez-vous dans le menu Utilisateurs.
- Cliquez sur le bouton pour Créer un nouvel utilisateur.
- Attribuez-lui le rôle Administrateur.
- Définissez un mot de passe fort.
Étape 3 : Vérification et Nettoyage¶
Cette étape est cruciale pour la sécurité de l'application.
- Déconnectez-vous du compte
root. - Connectez-vous avec votre nouvel administrateur.
- Vérifiez que vous avez accès à toutes les permissions (journaux, gestion serveurs, utilisateurs).
- Retournez dans la gestion des utilisateurs et supprimez le compte
root.
Mise en Production¶
Attention : Serveur de Développement Actuellement, l'application tourne via le serveur de développement intégré à Flask. Il est impératif de migrer l'application vers un serveur web robuste comme Apache ou Nginx pour la production.
Utilisation¶
Cette partie est dédiée au guide d'utilisation de la solution de centralisation des journaux.
Préambule - Configuration des clients¶
Pour permettre la remontée des logs, une relation de confiance SSH doit être établie entre le serveur SAE302 et les machines surveillées. L'application utilise l'utilisateur app_logs.
Étape 1 : Préparation de la Machine Cliente¶
Sur chaque machine à surveiller, exécutez les commandes suivantes pour créer l'utilisateur et configurer ses droits :
- Création de l'utilisateur
app_logs.
- Configuration des droits
sudo(viavisudo) pour autoriser la lecture des logs sans mot de passe.
Étape 2 : Génération de la Clé SSH (Serveur)¶
À réaliser une seule fois sur le serveur SAE302.
- Générez la paire de clés SSH.
Étape 3 : Propagation de la Clé¶
Depuis le serveur SAE302, envoyez la clé publique vers chaque client configuré.
- Copie de l'identité SSH.
Guide d'Utilisation¶
Rôles et Permissions¶
Les fonctionnalités sont restreintes selon le rôle de l'utilisateur.
| Fonctionnalité | Utilisateur | Gestionnaire | Administrateur |
|---|---|---|---|
| Connexion | Oui | Oui | Oui |
| Visualisation Logs | Oui | Oui | Oui |
| Gestion Serveurs | Non | Oui | Oui |
| Gestion Utilisateurs | Non | Non | Oui |
1. Visualiseur de Journaux¶
Accès : Menu Journaux
Permission requise : Tous les utilisateurs connectés.
Ce module agit comme un agrégateur de logs en temps réel. Il se connecte simultanément à tous les serveurs sélectionnés via SSH pour lire les dernières entrées du fichier /var/log/syslog.
Fonctionnalités Clés¶
- Sélection Multi-Cibles : Vous pouvez cocher un ou plusieurs serveurs. Le système va paralléliser les requêtes pour récupérer les données.
- Fusion Chronologique : Les lignes de logs provenant de différentes machines sont fusionnées et triées automatiquement de la plus récente à la plus ancienne.
- Identification Visuelle :
- Chaque ligne de log possède un fond coloré correspondant à la couleur définie dans la gestion des serveurs.
- La colonne "Serveur" indique clairement la provenance du message.
2. Gestion des Serveurs¶
Accès : Menu Servers
Permission requise : Gestionnaire ou Administrateur.
Ce module remplit deux fonctions critiques : la maintenance de l'inventaire du parc informatique et la surveillance instantanée de la disponibilité des hôtes.
Tableau de Bord de Disponibilité¶
Situé au bas de la page, la section "État des clients" offre une vue synthétique de l'état du réseau.
- Mécanisme de surveillance : À chaque chargement ou rafraîchissement de la page, le serveur SAE302 exécute une commande système
ping(ICMP) vers chaque IP enregistrée pour vérifier sa présence sur le réseau. - Indicateurs Visuels :
- EN LIGNE : La machine répond au Ping. Elle est prête pour la récupération des logs.
- HORS LIGNE : La machine ne répond pas (Machine éteinte, problème réseau ou pare-feu bloquant l'ICMP).
Note de performance : Le scan est effectué en temps réel. Si votre parc contient de nombreuses machines inactives, le chargement de la page peut être légèrement ralenti par les délais d'attente (timeout) des pings.
Gestion de clients¶
L'interface permet d'ajouter, modifier ou supprimer des machines surveillées.
-
Ajout d'un serveur :
- Via le bouton vert "Ajouter un serveur".
- Contrôle de saisie : L'adresse IP est validée techniquement. Une IP invalide (ex:
300.300.300.300) bloquera l'enregistrement. - Nom d'hôte : Doit être unique pour éviter les conflits dans la base de données.
-
Personnalisation :
- Une Couleur est attribuée à chaque machine (Vert, Rouge, Bleu, etc.). Cette couleur servira de repère visuel immédiat dans le Visualiseur de Journaux pour distinguer les lignes provenant de ce serveur spécifique.
-
Suppression :
- Possible via le bouton rouge. Une confirmation est demandée pour éviter les erreurs de manipulation.
3. Administration des Utilisateurs¶
Accès : Menu Utilisateurs
Permission requise : Administrateur uniquement.
Ce module permet la gestion complète du cycle de vie des comptes utilisateurs.
Niveaux de Rôles¶
Lors de la création ou de la modification d'un utilisateur, vous devez lui attribuer un rôle qui définira ses droits :
| Rôle | ID | Description des Droits |
|---|---|---|
| Utilisateur | 1 | Lecture seule. Peut uniquement consulter les journaux. |
| Gestionnaire | 2 | Opérationnel. Peut consulter les journaux et gérer le parc de serveurs (ajouter/supprimer des machines). |
| Administrateur | 3 | Accès total. Inclut la gestion des autres utilisateurs. |
Sécurités Intégrées¶
Pour prévenir les erreurs de manipulation critiques, l'interface applique des règles strictes sur l'utilisateur actuellement connecté : * Anti-Lockout : Vous ne pouvez pas supprimer votre propre compte. Le bouton de suppression est désactivé pour votre ligne. * Stabilité du Rôle : Vous ne pouvez pas modifier votre propre rôle (pour éviter de vous rétrograder accidentellement en simple utilisateur et perdre l'accès à l'administration).