Script PHP utilisé en local pour parser un fichier log d'accès Apache à la recherche de scans agressifs ou d'erreurs récurrentes 404, afin de configurer des filtres Fail2Ban adéquats.
<?php
/**
* Parseur minimaliste de logs d'accès Apache
* Recherche les adresses IP suspectes effectuant des requêtes sur wp-login, etc.
* Frédéric THIZY — Veille & Audit technique
*/
$logFile = '/var/log/apache2/access.log';
$suspectPatterns = ['wp-login.php', '.env', 'xmlrpc.php', 'shell', 'admin'];
$attackers = [];
if (file_exists($logFile)) {
$handle = fopen($logFile, "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
foreach ($suspectPatterns as $pattern) {
if (strpos($line, $pattern) !== false) {
// Extraction rapide de l'IP (premier terme de la ligne)
$parts = explode(' ', $line);
$ip = $parts[0];
if (!isset($attackers[$ip])) {
$attackers[$ip] = 0;
}
$attackers[$ip]++;
break;
}
}
}
fclose($handle);
}
// Tri par ordre décroissant de tentatives
arsort($attackers);
echo "Rapport des adresses IP suspectes détectées :\n";
foreach ($attackers as $ip => $count) {
echo "IP: " . htmlspecialchars($ip) . " - " . (int)$count . " tentatives suspectes\n";
}
} else {
echo "Fichier log introuvable.";
}