Logs de sécurité
Sentinel enregistre tous les événements de sécurité pour vous aider à surveiller les menaces contre votre boutique.
Emplacement des logs
Les logs sont stockés dans : /var/logs/sentinel-YYYY-MM-DD.log
Exemple : /var/logs/sentinel-2025-12-17.log
Types de logs
Sentinel génère plusieurs types de logs selon les événements détectés.
1. Détection d'attaque (Signature URI)
Lorsqu'une signature malveillante est détectée dans une requête :
[2025-12-17 14:35:22] [WARNING] ATTACK DETECTED - Pattern: (.*)select(.*)sleep(.*)
{
"ip": "192.168.1.100",
"uri": "/index.php?id=1 AND SELECT SLEEP(5)",
"method": "GET",
"signature_pattern": "(.*)select(.*)sleep(.*)",
"signature_target": "/modules/vulnerable/",
"request_body_sample": "SELECT SLEEP(5)",
"get_params": {"id": "1 AND SELECT SLEEP(5)"},
"post_params": {},
"user_agent": "Mozilla/5.0...",
"timestamp": "2025-12-17 14:35:22"
}
2. Échecs de connexion
Tentatives de connexion échouées au back-office :
[2025-12-17 10:15:30] [WARNING] FAILED LOGIN ATTEMPT - Email: admin@test.com
{
"ip": "192.168.1.50",
"uri": "/admin/index.php?controller=AdminLogin",
"method": "POST",
"user_agent": "Mozilla/5.0...",
"timestamp": "2025-12-17 10:15:30"
}
3. Requêtes POST
Toutes les requêtes POST sont enregistrées avec leur payload :
[2025-12-17 11:20:15] [INFO] POST REQUEST
{
"ip": "192.168.1.75",
"uri": "/admin/index.php?controller=AdminProducts",
"method": "POST",
"user_agent": "Mozilla/5.0...",
"timestamp": "2025-12-17 11:20:15",
"post_data": {
"name": "Nouveau produit",
"price": "19.99"
},
"raw_body": "name=Nouveau+produit&price=19.99"
}
4. Requêtes PUT/PATCH/DELETE
Requêtes de modification/suppression via API :
[2025-12-17 12:30:45] [INFO] PUT REQUEST
{
"ip": "192.168.1.80",
"uri": "/api/products/123",
"method": "PUT",
"user_agent": "APIClient/1.0",
"timestamp": "2025-12-17 12:30:45",
"raw_body": "{\"price\": \"24.99\"}"
}
5. Auto Prepend File
Accès directs aux fichiers PHP (voir Protection Auto Prepend) :
[2025-12-17 13:45:10] [INFO] AUTO PREPEND FILE
{
"ip": "192.168.1.90",
"uri": "/modules/oldmodule/upload.php",
"method": "POST",
"user_agent": "curl/7.68.0",
"timestamp": "2025-12-17 13:45:10",
"source": "auto_prepend",
"post_data": {"action": "upload"},
"files": {
"file": {
"name": "shell.php",
"size": 1234,
"type": "application/x-php"
}
}
}
Rotation des logs
- Fréquence : Quotidienne (nouveau fichier chaque jour)
- Rétention : 7 jours (fichiers plus anciens automatiquement supprimés)
- Nomenclature :
sentinel-YYYY-MM-DD.log
Visualiser les logs
Via ligne de commande
Voir les événements du jour :
tail -f /var/logs/sentinel-$(date +%Y-%m-%d).log
Compter les attaques :
grep "ATTACK DETECTED" /var/logs/sentinel-*.log | wc -l
Trouver les attaques d'une IP spécifique :
grep "192.168.1.100" /var/logs/sentinel-*.log
Patterns d'attaque les plus courants :
grep "ATTACK DETECTED" /var/logs/sentinel-*.log | \
grep -oP 'Pattern: [^"]*' | \
sort | uniq -c | sort -rn | head -10
Voir tous les échecs de connexion :
grep "FAILED LOGIN ATTEMPT" /var/logs/sentinel-*.log
Voir les accès Auto Prepend File :
grep "AUTO PREPEND FILE" /var/logs/sentinel-*.log
Voir toutes les requêtes POST du jour :
grep "POST REQUEST" /var/logs/sentinel-$(date +%Y-%m-%d).log
Protection des données sensibles
Sentinel masque automatiquement les informations sensibles dans les logs :
Champs protégés :
Mots de passe :
password,passwd,pwd,motdepasse,motpasse,passrepeat_password,password_confirmation,new_password,old_password
Tokens et authentification :
secret,token,api_key,apikey,access_token,refresh_tokenbearer,auth,authorization,oauth,jwt,session
Clés privées :
private_key,priv_key,ssh_key,key,pem,certificate
Informations bancaires :
credit_card,card_number,cvv,cvv2,cvc,iban,swift
Autres :
ssn,pin,cookie,encryption_key,salt,hash,signature
Exemple :
Requête : username=admin&password=secret123&api_key=abc123
Loggé : username=admin&password=********&api_key=********
Que faire avec les logs
Surveillance quotidienne
- Vérifier l'augmentation des attaques
- Identifier les IPs récurrentes attaquantes
- Repérer les patterns d'attaques
Quand des attaques sont détectées
- Identifier la menace : Quel pattern a été matché ?
- Vérifier l'IP : Est-ce un récidiviste ?
- Agir :
- Bloquer l'IP au niveau du firewall
- Signaler au fournisseur d'hébergement
- Surveiller les patterns similaires
Analyser les échecs de connexion
Si vous voyez de nombreux échecs de connexion :
- Vérifier si l'IP correspond à un administrateur légitime
- Si non, bloquer l'IP (attaque par force brute)
- Envisager l'activation d'un système 2FA
Surveiller les accès directs aux fichiers PHP
Les logs Auto Prepend File peuvent révéler :
- Des tentatives d'exploitation de modules vulnérables
- Des uploads de fichiers malveillants
- Des accès à des fichiers qui ne devraient pas être accessibles directement
Analyse forensique
En cas d'incident de sécurité, les logs Sentinel permettent de :
1. Reconstituer la chronologie
# Tous les événements d'une IP suspecte
grep "192.168.1.100" /var/logs/sentinel-*.log | sort
2. Identifier le point d'entrée
# Premier événement de l'attaquant
grep "192.168.1.100" /var/logs/sentinel-*.log | head -1
3. Voir tous les fichiers ciblés
# Tous les fichiers PHP accédés directement
grep "AUTO PREPEND FILE" /var/logs/sentinel-*.log | grep "192.168.1.100"
4. Analyser les payloads
Les logs contiennent les payloads complets des requêtes POST, permettant de comprendre exactement ce que l'attaquant a tenté.
Résolution des problèmes
Aucun log créé
Vérifiez les permissions :
chmod 755 /var/logs
ls -la /var/logs
Logs trop volumineux
Si les logs deviennent trop volumineux :
- Réduisez la période de rétention (modifiez
LOG_RETENTION_DAYSdansSecurityLogger.php) - Archivez les anciens logs
- Envisagez de filtrer certains types de logs (par exemple, désactiver le log de toutes les requêtes POST)
Logs manquants après rotation
Si les logs disparaissent après rotation, vérifiez :
- Les permissions du répertoire
/var/logs - Que le serveur web peut écrire dans ce répertoire
- Que Monolog est correctement installé (
composer install)
Voir aussi :