
Лёгкий монитор веб-атак. Один Go-бинарник + SQLite. Не OSSEC, не WAF.
Монитор веб-атак. Работает рядом с nginx / Caddy / приложением, читает access-логи и сообщает, когда сайт сканируют или эксплуатируют. Если этот процесс упадёт, сайт продолжит работать.
Это не Wazuh, не OSSEC и не WAF.
Команда — gpewebdefender. Хосты, токены, метки на карте, GeoIP и пути к логам задаются флагами или env-файлами — ничего о конкретной компании или сервере не компилируется в бинарь.
Если вы никогда не запускали это: прочитайте этот файл целиком один раз, затем выполните Метод A или Метод B. Не пропускайте раздел «Выберите схему».
Полная картина: dochub/index.html или /docs/ на запущенном менеджере. Начните с 03 · Установка и запуск.
Живая панель с реальной рабочей машины оператора. Ваши имена и метки будут такими, какими вы их настроите.
Выстрел происходит только при срабатывании оповещения — страна атакующего к поражённому хосту — затем он исчезает. Хосты остаются на карте. Лента — это те же события, пронумерованные.

Нажмите на строку. Плашка страны, метка типа атаки и поражённый сервер, плюс обычные поля (правило, MITRE, доказательства). Постоянных треков нет.

Отчёты → Аналитика. Те же оповещения, но в разбивке. 1 ч / 24 ч / 7 дн — это реальные часы. Нажмите на столбец или карточку хоста, чтобы перейти к поиску. CSV / JSON / Копировать экспортируют это окно (сессионная кука, ingest-токена в файле нет).





FTS5 на менеджере. Ключевое слово, IP, хост, тип. Сначала новые (нажмите Когда, чтобы изменить порядок). Без Elasticsearch.


| У вас есть | Установка |
|---|---|
| Ноутбук и любопытство | gpewebdefender demo — фейковые атаки, не ваш сайт |
| Один Linux-сервер, который уже пишет access-лог | All-in-one — менеджер читает этот лог. Без агента. |
| Небольшая дополнительная машина + один или несколько веб-серверов |
Не открывайте порт 8787 в интернет. По умолчанию слушает 127.0.0.1:8787. Используйте SSH-туннель, пока не поставите перед ним HTTPS + логин.
go build -o gpewebdefender.exe .\cmd\gpewebdefender
gpewebdefender.exe demo
Linux:
go build -o gpewebdefender ./cmd/gpewebdefender
./gpewebdefender demo
Откройте http://127.0.0.1:8787
Эти скриншоты карты — выдуманы. Прочитайте DocHub 04, прежде чем принимать панель за реальность.
Из этого репозитория, от root. Если вы на Windows, сначала соберите Linux-бинарник:
$env:GOOS="linux"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0"
go build -o gpewebdefender-linux-amd64 .\cmd\gpewebdefender
All-in-one (на этом сервере находится access-лог):
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 (сначала монитор, затем каждый веб-сервер):
# 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
Замените MONITOR, web-1 и путь к логу на свои значения.
Затем с вашего ноутбука:
ssh -L 8787:127.0.0.1:8787 user@THEBOX
Откройте http://127.0.0.1:8787/login и создайте первого администратора (человека). Это не ingest-токен.
/usr/local/bin/gpewebdefender и выполните chmod +x.useradd --system --home /var/lib/gpewebdefender --shell /usr/sbin/nologin gpewebdefenderrules/ и dochub/ в /var/lib/gpewebdefender/.deploy/env.example в /etc/gpewebdefender/env. Вставьте длинный случайный GWD_TOKEN. Права 640.deploy/gpewebdefender.service.example в systemd. При необходимости отредактируйте home / tail.systemctl daemon-reload && systemctl enable --now gpewebdefenderПримеры находятся в deploy/.
/login → первый администратор. Или один раз задайте SIEM_ADMIN_USER + SIEM_ADMIN_PASSWORD, затем удалите строку с паролем.US или 40.7,-74.0), по одной строке на агент --name..mmdb и передайте --geoip.deploy/nginx-gwd.conf.example. Запретите /api/ingest на публичном vhost. DocHub 15 и 18./api/ingest. Никогда не отправляйте пароли. DocHub .Если UI пуст: вы не в демо-режиме, и ни один --tail / агент ещё не отправил ни одной строки. journalctl -u gpewebdefender -n 50.
Всё, что появляется в access-логе:
.env, .git, phpMyAdmin, wp-login, actuators)--journal или auth.logkind=applogin / tenantlogin / secprobeОн не может видеть тела POST-запросов, если вы не логируете их (обычно не стоит).
nginx / Apache combined, или JSON от nginx / Caddy / Traefik. На JSON стоит перейти. См. DocHub 05.
Встроенный YAML в rules/. Дополнительные файлы: --rules path/to/more.yaml. Опциональная CMS-приманка: --rules packs (загружает packs/cms.yaml). Это не плагинный сканер.
Один статический Go-бинарник + SQLite. Отдельного сервера 2 CPU / 2 ГБ более чем достаточно. Никакой JVM, ни OpenSearch, ни Elasticsearch.
Это дерево — публичный продукт. В нём нет инвентаря, токенов или имён хостов.
go test ./...
set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0
go build -o gpewebdefender-linux-amd64 .\cmd\gpewebdefender
Не храните конфигурацию рабочего парка машин в этом репозитории.
| Split — менеджер на отдельной машине, по одному агенту на каждом веб- (или SSH-) хосте |
deploy/gpewebdefender-agent.service.example--name--tail--journal