Abusive HTTP Watch

Abusive HTTP Watch to daemon w języku Perl, który podąża za access-logiem serwera web, wykrywa złośliwe sondy HTTP przez kuratowany zestaw tokenów regex i zapisuje podejrzane źródłowe IP do pliku blocklisty typu append-only. Plik ten jest następnie konsumowany przez firewall (tabela pf, lista Require Apache, lista deny nginx itd.).

W tej sekcji

  • Quickstart — zainstalować daemona, wskazać go na access-log i w ciągu kilku minut zobaczyć, jak IP lądują na blockliście.
  • Konfiguracja — pełna referencja zmiennych środowiskowych, format pliku whitelist i to, jak blocklista jest konsumowana przez warstwę firewall.
  • Operacje — obsługa rotacji logów, eventów syslog, lifecycle daemona pod rc.d, troubleshooting znanych obrazów błędów z produkcji.

Kiedy tego potrzebujesz

Prowadzisz serwer web (Apache, nginx, OpenLiteSpeed, cokolwiek), a access-log jest pełen sond na wp-login.php, .env, /etc/passwd, tokenów eksploatacji PHP i prób SQL-injection. Chcesz zablokować te źródłowe IP na firewallu, zanim ukradną pasmo, CPU lub — gorzej — natrafią na realną podatność.

Jeśli to twoja sytuacja, daemon jest dokładnie do tego.

Wymagania wstępne

  • Nowoczesny system POSIX (OpenBSD, FreeBSD lub Linux).
  • Perl 5 (daemon używa wyłącznie modułów ze standardowej biblioteki).
  • Firewall, który potrafi skonsumować płaską listę IP:
    • OpenBSD pf z tabelą <abusive>
    • Linux nftables set lub ipset
    • Apache mod_authz_host z Require not ip ...
    • dyrektywy deny nginx
  • Uprawnienia zapisu do katalogu runtime dla pliku blocklisty.

Gdy to wszystko jest dostępne, Quickstart to mniej więcej dziesięć minut pracy.