Aller au contenu

shema_sae302.png

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.

chmod +x install.sh
./install.sh

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.

  1. Rendez-vous dans le menu Utilisateurs.
  2. Cliquez sur le bouton pour Créer un nouvel utilisateur.
  3. Attribuez-lui le rôle Administrateur.
  4. Définissez un mot de passe fort.

Étape 3 : Vérification et Nettoyage

Cette étape est cruciale pour la sécurité de l'application.

  1. Déconnectez-vous du compte root.
  2. Connectez-vous avec votre nouvel administrateur.
  3. Vérifiez que vous avez accès à toutes les permissions (journaux, gestion serveurs, utilisateurs).
  4. 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 :

  1. Création de l'utilisateur app_logs.
sudo useradd -m app_logs
sudo passwd app_logs
  1. Configuration des droits sudo (via visudo) pour autoriser la lecture des logs sans mot de passe.
app_logs ALL=(root) NOPASSWD: /usr/bin/cat /var/log/*

Étape 2 : Génération de la Clé SSH (Serveur)

À réaliser une seule fois sur le serveur SAE302.

  1. Générez la paire de clés SSH.

ssh-keygen -t rsa -b 4096
2. Vérifiez la présence de la clé publique.

ls -l ~/.ssh/id_rsa.pub

Étape 3 : Propagation de la Clé

Depuis le serveur SAE302, envoyez la clé publique vers chaque client configuré.

  1. Copie de l'identité SSH.
ssh-copy-id app_logs@<IP_DU_CLIENT>

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.

  1. 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.
  2. 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.
  3. 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).