Les deux types de logs essentiels
access.log : l'historique complet de toutes les requêtes HTTP. Pour chaque ligne : adresse IP, date et heure, URL demandée, code de réponse, navigateur utilisé.
error.log : les erreurs serveur (codes 4xx, 5xx), les tentatives bloquées, les problèmes de configuration. C'est votre premier indicateur de problèmes.
Anatomie d'une ligne de log
185.220.101.42 - - [25/May/2026:03:15:22] "GET /wp-admin/setup-config.php HTTP/1.1" 403 0 "-" "python-requests/2.28.0"
Décodage : IP connue du réseau Tor · 3h15 du matin (horaire typique de scan) · tentative d'accès à un fichier d'installation WP inexistant · 403 = accès refusé (votre .htaccess fonctionne) · python-requests = bot automatisé, pas un humain.
Ce que vous devez surveiller
- Codes 401/403 répétés depuis la même IP : tentatives de force brute ou scan
- 404 en masse vers
/wp-admin/,/admin/,/phpmyadmin/: scan automatisé - User-agents suspects :
python-requests,masscan,sqlmap - Pics de trafic à des heures atypiques : signes possibles de DDoS
Commandes pratiques en SSH
Trouver toutes les tentatives d'accès bloquées à wp-admin :
grep "wp-admin" access.log | grep " 403 " | awk '{print $1}' | sort | uniq -c | sort -rn
Voir les 50 dernières lignes en temps réel :
tail -f -n 50 access.log
Cadre légal
Les logs contiennent des adresses IP — c'est-à-dire des données personnelles selon la LPD. Mentionnez leur collecte dans votre politique de confidentialité et définissez une durée de conservation (généralement 30 à 90 jours). Au-delà, suppression ou anonymisation.
Exercice pratique
✅ À faire maintenant : connectez-vous en SSH à votre serveur. Exécutez tail -n 100 access.log pour voir les 100 dernières lignes. Identifiez trois patterns différents : un visiteur humain, un robot légitime (Googlebot), et une tentative automatisée.