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

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

Reports → Insight. Те же алерты, разложенные по полочкам. 1h / 24h / 7d — это реальные часы. Кликните по столбцу или карточке хоста, чтобы перейти в Search. CSV / JSON / Copy экспортируют это окно (сессионная кука, ingest-токена в файле нет).





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


Status — по запросу. Кликните Check now (или Check all paired hosts), когда захотите увидеть нагрузку, память и диск. Менеджер отвечает сразу. Спаренный сенсор отвечает на следующем опросе команд (несколько секунд). Графики — это снимки, которые запросили вы — ничего не собирается в фоне. Спаривание — тот же процесс, что и блокировка (DocHub 20 / 21).
| У вас есть | Установка |
|---|---|
| Ноутбук и любопытство | gpewebdefender demo — фейковые атаки, не ваш сайт |
| Одна Linux-машина, которая уже пишет лог доступа | All-in-one — менеджер читает этот лог. Без агента. |
| Небольшая дополнительная машина + один или несколько веб-серверов | Split — менеджер на дополнительной машине, по одному агенту на каждый веб- (или SSH-) хост |
Не открывайте порт 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. Сначала соберите Linux-бинарник, если вы на Windows:
$env:GOOS="linux"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0"
go build -o gpewebdefender-linux-amd64 .\cmd\gpewebdefender
All-in-one (на этой машине есть лог доступа):
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 и путь к логу на ваши значения.
Необязательно позже — этот хост сможет принимать приказы на блокировку: Settings → Paired hosts → фраза + код, затем добавьте --code ABCD-2341 --block fail2ban в install-agent.sh. DocHub 20.
Затем со своего ноутбука:
ssh -L 8787:127.0.0.1:8787 user@THEBOX
Откройте http://127.0.0.1:8787/login и создайте первого admin (человека). Это не 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 gpewebdefenderdeploy/gpewebdefender-agent.service.example с тем же токеном, стабильным --name и --tail / --journal.Примеры лежат в deploy/.