Abusive HTTP Watch

Abusive HTTP Watch est un daemon Perl qui suit un access log de serveur web, détecte les probes HTTP malveillantes via un jeu de tokens regex curé, et écrit les IP sources fautives dans un fichier blocklist append-only. Ce fichier est ensuite consommé par le pare-feu (table pf, liste Require d’Apache, liste deny nginx, etc.).

Dans cette section

  • Quickstart — Installer le daemon, le pointer sur un access log, voir les IP s’accumuler dans la blocklist en quelques minutes.
  • Configuration — Référence complète des variables d’environnement, format du fichier whitelist et comment la blocklist est consommée par la couche pare-feu.
  • Exploitation — Gestion de la rotation des logs, événements syslog, cycle de vie du daemon sous rc.d, troubleshooting des cas vus en production.

Quand vous en avez besoin

Vous exploitez un serveur web (Apache, nginx, OpenLiteSpeed, n’importe quoi) et l’access log est plein de probes vers wp-login.php, .env, /etc/passwd, des tokens d’exploitation PHP et des tentatives de SQL-injection. Vous voulez bloquer ces IP sources au pare-feu avant qu’elles ne coûtent de la bande passante, du CPU ou — pire — ne trouvent une véritable vulnérabilité.

Si c’est votre situation, c’est pour cela que le daemon est conçu.

Prérequis

  • Un système POSIX moderne (OpenBSD, FreeBSD ou Linux).
  • Perl 5 (le daemon n’utilise que les modules de la bibliothèque standard).
  • Un pare-feu capable de consommer une liste plate d’IP :
    • OpenBSD pf avec une table <abusive>
    • Linux nftables set ou ipset
    • Apache mod_authz_host avec Require not ip ...
    • Directives deny nginx
  • Accès en écriture à un répertoire runtime pour le fichier blocklist.

Si vous avez tout cela, le Quickstart prend environ dix minutes.