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