Aller au contenu principal

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, pass
  • repeat_password, password_confirmation, new_password, old_password

Tokens et authentification :

  • secret, token, api_key, apikey, access_token, refresh_token
  • bearer, 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

  1. Vérifier l'augmentation des attaques
  2. Identifier les IPs récurrentes attaquantes
  3. Repérer les patterns d'attaques

Quand des attaques sont détectées

  1. Identifier la menace : Quel pattern a été matché ?
  2. Vérifier l'IP : Est-ce un récidiviste ?
  3. 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 :

  1. Vérifier si l'IP correspond à un administrateur légitime
  2. Si non, bloquer l'IP (attaque par force brute)
  3. 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 :

  1. Des tentatives d'exploitation de modules vulnérables
  2. Des uploads de fichiers malveillants
  3. 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 :

  1. Réduisez la période de rétention (modifiez LOG_RETENTION_DAYS dans SecurityLogger.php)
  2. Archivez les anciens logs
  3. 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 :

  1. Les permissions du répertoire /var/logs
  2. Que le serveur web peut écrire dans ce répertoire
  3. Que Monolog est correctement installé (composer install)

Voir aussi :