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.";
}