Abusive HTTP Watch
Abusive HTTP Watch is a Perl daemon that tails a web access log,
detects malicious HTTP probes via a curated regex token set, and
writes offending source IPs to an append-only blocklist file. That
file is then consumed by the firewall (pf table, Apache Require
list, nginx deny list, etc.).
In this section
- Quickstart — Install the daemon, point it at an access log, see IPs accumulate in the blocklist within minutes.
- Configuration — Full environment-variable reference, whitelist file format, and how the blocklist is consumed by the firewall layer.
- Operations — Log-rotation handling, syslog
events, daemon lifecycle under
rc.d, troubleshooting common issues seen in production.
When you need this
You run a web server (Apache, nginx, OpenLiteSpeed, whatever) and
the access log is full of probes for wp-login.php, .env,
/etc/passwd, PHP exploitation tokens, and SQL-injection attempts.
You want those source IPs blocked at the firewall before they cost
you bandwidth, CPU, or — worse — find an actual vulnerability.
If that is your situation, this is what the daemon is for.
Prerequisites
- A modern POSIX system (OpenBSD, FreeBSD, or Linux).
- Perl 5 (the daemon uses only standard library modules).
- A firewall capable of consuming a flat list of IPs:
- OpenBSD
pfwith a<abusive>table - Linux
nftablesset oripset - Apache
mod_authz_hostwithRequire not ip ... - nginx
denydirective blocks
- OpenBSD
- Write access to a runtime directory for the blocklist file.
If you have all of that, the Quickstart is roughly ten minutes of work.