Aller au contenu principal

Chapitre 9.4 - Audit et Monitoring Sécurité

Objectifs d'Apprentissage​

À la fin de ce chapitre, vous serez capable de:

  • Utiliser les outils d'audit Linux
  • Monitorer les tentatives d'accès
  • Analyser les logs de sécurité
  • Détecter les activités suspectes
  • Configurer les alertes de sécurité
  • Comprendre les outils d'audit système

Audit Linux (auditd)​

Installation​

# Ubuntu/Debian
sudo apt install auditd audispd-plugins

# Red Hat/CentOS
sudo yum install audit

Service​

# Statut
sudo systemctl status auditd

# Démarrer
sudo systemctl start auditd

# Activer
sudo systemctl enable auditd

Règles d'Audit​

Voir les Règles​

# Liste des règles
sudo auditctl -l

# Voir règles chargées
sudo ausearch -i

Ajouter des Règles​

# Auditer accès fichier
sudo auditctl -w /etc/passwd -p rwxa -k passwd_access

# Auditer commandes sudo
sudo auditctl -w /usr/bin/sudo -p x -k sudo_commands

# Auditer connexions réseau
sudo auditctl -a always,exit -F arch=b64 -S connect -k network_connect

# Auditer changements permissions
sudo auditctl -w /etc -p wa -k etc_changes

Règles Permanentes​

# Fichier: /etc/audit/rules.d/audit.rules
# Format:
-w /etc/passwd -p rwxa -k passwd_access
-w /etc/shadow -p rwxa -k shadow_access
-w /usr/bin/sudo -p x -k sudo_commands

Recharger:

sudo systemctl restart auditd

Recherche dans les Logs​

ausearch​

# Rechercher par clé
sudo ausearch -k passwd_access

# Rechercher par utilisateur
sudo ausearch -ua user1

# Rechercher par type
sudo ausearch -m USER_LOGIN

# Rechercher récent
sudo ausearch -ts recent

# Rechercher période
sudo ausearch -ts 01/01/2024 00:00:00 -te 01/02/2024 00:00:00

aureport​

# Rapport résumé
sudo aureport

# Rapport par utilisateur
sudo aureport -u

# Rapport par type d'événement
sudo aureport -e

# Rapport échecs
sudo aureport --failed

# Rapport connexions
sudo aureport -au

Monitoring des Logs​

Logs de Sécurité​

# Ubuntu/Debian
sudo tail -f /var/log/auth.log

# Red Hat/CentOS
sudo tail -f /var/log/secure

# Tentatives échouées
sudo grep "Failed password" /var/log/auth.log

# Connexions SSH
sudo grep "sshd" /var/log/auth.log

# sudo
sudo grep "sudo" /var/log/auth.log

last et lastlog​

# Historique connexions
last
last -n 20 # 20 dernières

# Dernière connexion par utilisateur
lastlog

# Utilisateur spécifique
lastlog -u user1

who et w​

# Utilisateurs connectés
who
w

# Détails
w -f

Détection d'Intrusion​

Script de Monitoring​

#!/bin/bash
# Monitoring sécurité

LOG_FILE="/var/log/security-monitor.log"

log_event() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> "$LOG_FILE"
}

# Tentatives échec SSH
FAILED_SSH=$(grep "Failed password" /var/log/auth.log | wc -l)
if [ "$FAILED_SSH" -gt 10 ]; then
log_event "ALERTE: $FAILED_SSH tentatives SSH échouées"
fi

# Nouveaux utilisateurs
NEW_USERS=$(lastlog | grep -v "Never logged in" | wc -l)
log_event "Utilisateurs actifs: $NEW_USERS"

# Fichiers modifiés récemment
MODIFIED=$(find /etc -type f -mtime -1 2>/dev/null | wc -l)
if [ "$MODIFIED" -gt 0 ]; then
log_event "ATTENTION: $MODIFIED fichiers modifiés dans /etc"
fi

Alertes Automatiques​

#!/bin/bash
# Alertes sécurité par email

# Configuration
ALERT_EMAIL="admin@example.com"
THRESHOLD=10

# Tentatives SSH échouées
FAILED=$(grep "Failed password" /var/log/auth.log | tail -20 | wc -l)

if [ "$FAILED" -ge "$THRESHOLD" ]; then
echo "ALERTE: $FAILED tentatives SSH échouées" | \
mail -s "Alerte Sécurité SSH" "$ALERT_EMAIL"
fi

Outils de Monitoring​

fail2ban​

Protection contre brute force:

# Installer
sudo apt install fail2ban

# Configuration
sudo nano /etc/fail2ban/jail.local

# Activer
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Statut
sudo fail2ban-client status
sudo fail2ban-client status sshd

rkhunter​

Détection rootkits:

# Installer
sudo apt install rkhunter

# Mise à jour base de données
sudo rkhunter --update

# Scan
sudo rkhunter --check

# Scan rapide
sudo rkhunter --check --skip-keypress

chkrootkit​

Détection rootkits:

# Installer
sudo apt install chkrootkit

# Scan
sudo chkrootkit

Rapports de Sécurité​

Script de Rapport​

#!/bin/bash
# Rapport sécurité quotidien

REPORT="/var/log/security-report-$(date +%Y%m%d).txt"

{
echo "=== RAPPORT SÉCURITÉ $(date) ==="
echo
echo "=== Connexions ==="
last -n 20
echo
echo "=== Tentatives échouées ==="
grep "Failed password" /var/log/auth.log | tail -10
echo
echo "=== Utilisateurs avec sudo ==="
sudo -l | grep -E "^User|^Runas"
echo
echo "=== Services actifs ==="
systemctl list-units --type=service --state=running | head -20
echo
echo "=== Ports ouverts ==="
ss -tuln | grep LISTEN
} > "$REPORT"

# Envoyer par email
mail -s "Rapport Sécurité $(date +%Y-%m-%d)" admin@example.com < "$REPORT"

Cron pour Monitoring​

# /etc/cron.daily/security-check
#!/bin/bash
# Vérification sécurité quotidienne

# Scan rootkit
rkhunter --check --skip-keypress

# Vérifier intégrité fichiers
# (si AIDE installé)
# aide --check

# Rapport
/usr/local/bin/security-report.sh

Résumé​

Dans ce chapitre, vous avez appris:

auditd: Système d'audit Linux, règles, logs
Recherche: ausearch, aureport pour analyser logs
Monitoring: Logs auth, last, who, w
Détection: Scripts monitoring, alertes
Outils: fail2ban, rkhunter, chkrootkit
Rapports: Automatisation rapports sécurité
Pratique: Monitoring continu, alertes, rapports


Prochaines Étapes​

Module 10: Gestion des Paquets
Module 11: Monitoring et Logs


Chapitre créé le: Décembre 2024