# QuickstartInstalează, pornește, urmărește — sub zece minute de la prima comandă până la IP-uri blocate.

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.

```sh
doas install -m 0755 abusive_http_watch.pl /usr/local/sbin/abusive_http_watch
```

Daemonul 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.

```sh
doas mkdir -p /var/www/run
doas chown _www:_www /var/www/run
```

Fiș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.

```sh
ABUSIVE_DEBUG=1 abusive_http_watch /var/www/logs/access.log
```

Output-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:

```sh
cat /var/www/run/abusive_http_hosts
```

Ar 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:

```pf
table <abusive> persist file "/var/www/run/abusive_http_hosts"
block in quick on egress from <abusive> label abusive
```

Reîncarcă `pf`:

```sh
doas pfctl -f /etc/pf.conf
```

Tabelul 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:

```cron
*/2 * * * * /sbin/pfctl -t abusive -T replace -f /var/www/run/abusive_http_hosts
```

Pe 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](../operations/) pentru script). Activează și pornește:

```sh
doas rcctl enable abusive_http_watch
doas rcctl start abusive_http_watch
```

Daemonul 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ă:

```sh
wc -l /var/www/run/abusive_http_hosts
doas pfctl -t abusive -T show | wc -l
```

Numerele 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](../operations/) pentru troubleshooting.
