Quickstart
Acest ghid trece prin configurarea Abusive HTTP Watch împotriva unui access log real pe un sistem OpenBSD. Același flux funcționează cu mici adaptări și pe FreeBSD și Linux.
1. Instalează scriptul
Pune scriptul într-o cale de sistem și fă-l executabil.
doas install -m 0755 abusive_http_watch.pl /usr/local/sbin/abusive_http_watchDaemonul nu are dependențe externe de Perl — doar biblioteca standard (Fcntl, IO::Handle, Sys::Syslog, Socket). Dacă perl este pe sistem, scriptul rulează.
2. Creează directorul de runtime
Daemonul scrie blocklista într-un singur fișier. Alege o cale din care va citi firewallul.
doas mkdir -p /var/www/run
doas chown _www:_www /var/www/runFișierul de blocklistă (/var/www/run/abusive_http_hosts implicit) este creat la prima rulare dacă nu există.
3. Testează împotriva unui log actual
Înainte să cuplezi daemonul în sistem, lasă-l să ruleze direct împotriva unui access log pentru a-i vedea comportamentul.
ABUSIVE_DEBUG=1 abusive_http_watch /var/www/logs/access.logOutput-ul de debug ([dbg] ip=…, [dbg] token match ip=…, [dbg] count ip=… N/3) arată matcherul în timp real. Când un IP depășește pragul de hit-uri (implicit 3), vezi [added] <ip> -> /var/www/run/abusive_http_hosts.
Ctrl-C pentru a opri. Verifică blocklista:
cat /var/www/run/abusive_http_hostsAr trebui să vezi o listă scurtă de IP-uri — cei mai gălăgioși prober din fereastra de observare.
4. Atașează firewallul la blocklistă
Pe OpenBSD adaugă un tabel <abusive> care încarcă din fișier:
table <abusive> persist file "/var/www/run/abusive_http_hosts"
block in quick on egress from <abusive> label abusiveReîncarcă pf:
doas pfctl -f /etc/pf.confTabelul blochează acum tot din aceste IP-uri la firewall — nu se mai pierde CPU de server web pe ele.
Pentru ca intrările noi să fie preluate automat, reîncarcă tabelul la intervale scurte. Un cron simplu:
*/2 * * * * /sbin/pfctl -t abusive -T replace -f /var/www/run/abusive_http_hostsPe Linux echivalentul este un set nftables sau ipset, reîncărcat printr-un cron similar din același fișier.
5. Pornește ca daemon
Instalează scriptul rc.d (vezi
Operare pentru script). Activează și pornește:
doas rcctl enable abusive_http_watch
doas rcctl start abusive_http_watchDaemonul urmărește acum logul continuu și scrie blocklista. tail -f /var/log/daemon (sau facility-ul syslog configurat) arată evenimentele added în timp real.
6. Verifică
Așteaptă câteva minute, apoi verifică:
wc -l /var/www/run/abusive_http_hosts
doas pfctl -t abusive -T show | wc -lNumerele ar trebui să se potrivească. Dacă da, ai terminat — daemonul rulează, blocklista crește, firewallul filtrează.
Dacă fișierul de blocklistă rămâne gol după o oră-două pe un server web public, fie access logul tău este neobișnuit de curat (felicitări), fie daemonul nu citește calea pe care o crezi. Vezi Operare pentru troubleshooting.