
Monitor leggero per attacchi web. Un singolo binario Go + SQLite. Non OSSEC, non un WAF.
Un monitor degli attacchi web. Si mette accanto a nginx / Caddy / all'app, segue i log di accesso e ti dice quando un sito viene sondato o sfruttato. Se questo processo muore, il sito continua a servire.
Non è Wazuh, non è OSSEC e non è un WAF.
Il comando è gpewebdefender. Host, token, puntatori sulla mappa, GeoIP e percorsi dei log sono flag o file env: nulla di specifico su un'azienda o un server è compilato dentro.
Se non l'hai mai eseguito: leggi questo file tutto d'un fiato una volta, poi segui il Metodo A o il Metodo B. Non saltare “Scegli la modalità”.
Quadro completo: dochub/index.html o /docs/ su un manager in esecuzione. Inizia da 03 · Installazione ed esecuzione.
Dashboard live da una macchina operatore reale. I tuoi nomi e i tuoi puntatori saranno quelli che configuri.
Un colpo parte solo quando scatta un alert — dal paese dell'attaccante verso l'host colpito — poi sparisce. Gli host restano sulla mappa. Il feed mostra gli stessi eventi, numerati.

Clicca su una riga. Cartellino del paese, indicatore del tipo di attacco e server colpito, più i campi consueti (regola, MITRE, evidenza). Nessuna traccia fissa.

Reports → Insight. Stessi alert, suddivisi. 1h / 24h / 7d è un orologio reale. Clicca su una barra o su una scheda host per cercare. CSV / JSON / Copia esportano quella finestra (cookie di sessione, nessun token di ingest nel file).





FTS5 sul manager. Parola chiave, IP, host, tipo. Prima i più recenti (clicca su Quando per invertire). Niente Elasticsearch.


| Hai | Installazione |
|---|---|
| Un laptop e curiosità | gpewebdefender demo — attacchi finti, non il tuo sito |
| Una macchina Linux che scrive già un log di accesso | All-in-one — il manager segue quel log. Nessun agente. |
| Una piccola macchina aggiuntiva + uno o più server web |
Non aprire la porta 8787 su internet. L'ascolto predefinito è 127.0.0.1:8787. Usa un tunnel SSH finché non metti davanti HTTPS + un login.
go build -o gpewebdefender.exe .\cmd\gpewebdefender
gpewebdefender.exe demo
Linux:
go build -o gpewebdefender ./cmd/gpewebdefender
./gpewebdefender demo
Apri http://127.0.0.1:8787
Quegli screenshot della mappa sono inventati. Vedi DocHub 04 prima di prendere una dashboard come realtà.
Da questo repository, come root. Compila prima un binario Linux se sei su Windows:
$env:GOOS="linux"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0"
go build -o gpewebdefender-linux-amd64 .\cmd\gpewebdefender
All-in-one (questa macchina ha il log di accesso):
chmod +x deploy/install-manager.sh deploy/install-agent.sh
sudo ./deploy/install-manager.sh --all-in-one \
--tail /var/log/nginx/access.log \
--journal \
--home 40.7,-74.0
Split (prima il monitor, poi ogni macchina web):
# on the monitor
sudo ./deploy/install-manager.sh --home 40.7,-74.0
# on a web / SSH box
scp root@MONITOR:/usr/local/bin/gpewebdefender /usr/local/bin/gpewebdefender
scp root@MONITOR:/etc/gpewebdefender/env /etc/gpewebdefender/env
sudo ./deploy/install-agent.sh \
--url http://MONITOR:8787 \
--name web-1 \
--tail /var/log/nginx/access.log \
--journal
Sostituisci MONITOR, web-1 e il percorso del log con i tuoi valori.
Poi dal tuo laptop:
ssh -L 8787:127.0.0.1:8787 user@THEBOX
Apri http://127.0.0.1:8787/login e crea il primo admin (una persona). Non è il token di ingest.
/usr/local/bin/gpewebdefender e fai chmod +x.useradd --system --home /var/lib/gpewebdefender --shell /usr/sbin/nologin gpewebdefenderrules/ e dochub/ in /var/lib/gpewebdefender/.deploy/env.example in /etc/gpewebdefender/env. Metti un GWD_TOKEN lungo e casuale. Modalità 640.deploy/gpewebdefender.service.example in systemd. Modifica home / tail se serve.systemctl daemon-reload && systemctl enable --now gpewebdefenderdeploy/gpewebdefender-agent.service.example con lo token, un stabile e / .Gli esempi sono in deploy/.
/login → primo admin. Oppure imposta SIEM_ADMIN_USER + SIEM_ADMIN_PASSWORD una volta, poi cancella la riga della password.US o 40.7,-74.0), una riga per ogni --name dell'agente..mmdb MaxMind / DB-IP e passa --geoip.deploy/nginx-gwd.conf.example. Nega /api/ingest sul vhost pubblico. DocHub 15 e 18./api/ingest. Non inviare mai password. DocHub .Se la UI è vuota: non sei in demo e nessun --tail / agente ha ancora inviato una riga. journalctl -u gpewebdefender -n 50.
Qualunque cosa compaia in un log di accesso:
.env, .git, phpMyAdmin, wp-login, actuator)--journal o auth.logkind=applogin / tenantlogin / secprobeNon può vedere il corpo delle POST a meno che non vengano loggati (di solito non dovresti).
nginx / Apache combined, oppure JSON di nginx / Caddy / Traefik. Vale la pena passare al JSON. Vedi DocHub 05.
YAML integrato in rules/. File extra: --rules path/to/more.yaml. Honey CMS opzionale: --rules packs (carica packs/cms.yaml). Non è uno scanner di plugin.
Un singolo binario Go statico + SQLite. Una macchina dedicata con 2 CPU / 2 GB è più che sufficiente. Niente JVM, niente OpenSearch, niente Elasticsearch.
Questo albero è il prodotto pubblico. Non contiene inventari, token o hostname.
go test ./...
set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0
go build -o gpewebdefender-linux-amd64 .\cmd\gpewebdefender
Tieni la configurazione della flotta in produzione fuori da questo repository.
| Split — manager sulla macchina aggiuntiva, un agente per ogni host web (o SSH) |
--name--tail--journal