
Moniteur d'attaques web léger. Un seul binaire Go + SQLite. Pas OSSEC, pas un WAF.
Un moniteur d'attaques web. Il se place à côté de nginx / Caddy / de l'application, suit les journaux d'accès, et vous prévient lorsqu'un site est sondé ou exploité. Si ce processus s'arrête, le site continue de servir.
Ce n'est ni Wazuh, ni OSSEC, ni un WAF.
La commande est gpewebdefender. Les hôtes, jetons, épingles de carte, GeoIP et chemins de journaux sont des drapeaux ou des fichiers d'environnement — rien concernant une entreprise ou un serveur spécifique n'est compilé.
Si vous n'avez jamais exécuté ceci : lisez ce fichier de haut en bas une fois, puis faites la méthode A ou la méthode B. Ne sautez pas « Choisissez une forme ».
Vue complète : dochub/index.html ou /docs/ sur un gestionnaire en cours d'exécution. Commencez à 03 · Installation et exécution.
Tableau de bord en direct depuis une boîte d'exploitation réelle. Vos noms et épingles seront ceux que vous configurez.
Un tir ne se déclenche que lors d'une alerte — pays de l'attaquant vers l'hôte qui a été touché — puis il disparaît. Les hôtes restent sur la plaque. Le flux correspond aux mêmes événements, numérotés.

Cliquez sur une ligne. Plaque pays, marque du type d'attaque, et le serveur qui a été touché, plus les champs habituels (règle, MITRE, preuve). Aucune piste permanente.

Rapports → Aperçu. Mêmes alertes, ventilées. 1h / 24h / 7j est une horloge réelle. Cliquez sur une barre ou une carte d'hôte pour rechercher. CSV / JSON / Copier exporte cette fenêtre (cookie de session, aucun jeton d'ingestion dans le fichier).





FTS5 sur le gestionnaire. Mot-clé, IP, hôte, type. Plus récent en premier (cliquez sur Quand pour inverser). Pas d'Elasticsearch.


| Vous avez | Installation |
|---|---|
| Un ordinateur portable et de la curiosité | gpewebdefender demo — fausses attaques, pas votre site |
| Un serveur Linux qui écrit déjà un journal d'accès | Tout-en-un — le gestionnaire suit ce journal. Aucun agent. |
N'ouvrez pas le port 8787 sur Internet. L'écoute par défaut est 127.0.0.1:8787. Utilisez un tunnel SSH jusqu'à ce que vous placiez HTTPS + une connexion devant.
go build -o gpewebdefender.exe .\cmd\gpewebdefender
gpewebdefender.exe demo
Linux :
go build -o gpewebdefender ./cmd/gpewebdefender
./gpewebdefender demo
Ouvrez http://127.0.0.1:8787
Ces captures de carte sont inventées. Consultez DocHub 04 avant de considérer un tableau de bord comme une réalité.
Depuis ce dépôt, en root. Compilez d'abord un binaire Linux si vous êtes sous Windows :
$env:GOOS="linux"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0"
go build -o gpewebdefender-linux-amd64 .\cmd\gpewebdefender
Tout-en-un (cette machine possède le journal d'accès) :
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
Fractionné (surveillez d'abord, puis chaque machine web) :
# sur le moniteur
sudo ./deploy/install-manager.sh --home 40.7,-74.0
# sur une machine web / SSH
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
Remplacez MONITOR, web-1 et le chemin du journal par vos valeurs.
Ensuite, depuis votre ordinateur portable :
ssh -L 8787:127.0.0.1:8787 user@THEBOX
Ouvrez http://127.0.0.1:8787/login et créez le premier admin (une personne). Ce n'est pas le jeton d'ingestion.
/usr/local/bin/gpewebdefender et chmod +x.useradd --system --home /var/lib/gpewebdefender --shell /usr/sbin/nologin gpewebdefenderrules/ et dochub/ dans /var/lib/gpewebdefender/.deploy/env.example vers /etc/gpewebdefender/env. Placez un long GWD_TOKEN aléatoire. Mode 640.deploy/gpewebdefender.service.example vers systemd. Modifiez home / tail si nécessaire.systemctl daemon-reload && systemctl enable --now gpewebdefenderDes exemples se trouvent dans deploy/.
/login → premier admin. Ou définissez SIEM_ADMIN_USER + SIEM_ADMIN_PASSWORD une fois, puis supprimez la ligne du mot de passe.US ou 40.7,-74.0), une ligne par agent --name..mmdb MaxMind / DB-IP et passez --geoip.deploy/nginx-gwd.conf.example. Refusez /api/ingest sur le vhost public. DocHub 15 et 18./api/ingest. N'envoyez jamais de mots de passe. DocHub .Si l'interface est vide : vous n'êtes pas en mode démo, et aucun --tail / agent n'a encore envoyé de ligne. journalctl -u gpewebdefender -n 50.
Tout ce qui apparaît dans un journal d'accès :
.env, .git, phpMyAdmin, wp-login, actuators)--journal ou auth.logkind=applogin / tenantlogin / secprobeIl ne peut pas voir les corps de POST à moins que vous ne les journalisiez (vous ne devriez généralement pas le faire).
nginx / Apache combined, ou JSON nginx / Caddy / Traefik. Le JSON vaut la peine d'être adopté. Voir DocHub 05.
YAML intégré dans rules/. Fichiers supplémentaires : --rules path/to/more.yaml. Honey CMS facultatif : --rules packs (charge packs/cms.yaml). Pas un scanner de plugins.
Un binaire Go statique + SQLite. Une machine dédiée 2 CPU / 2 Go est largement suffisante. Pas de JVM, pas d'OpenSearch, pas d'Elasticsearch.
Cet arbre est le produit public. Il ne contient ni inventaire, ni jetons, ni noms d'hôtes.
go test ./...
set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0
go build -o gpewebdefender-linux-amd64 .\cmd\gpewebdefender
Conservez la configuration de la flotte en production hors de ce dépôt.
| Une petite machine supplémentaire + un ou plusieurs serveurs web | Fractionné — gestionnaire sur la machine supplémentaire, un agent par hôte web (ou SSH) |
deploy/gpewebdefender-agent.service.example--name--tail--journal