轻量级 Web 攻击监控工具。单个 Go 二进制文件 + SQLite。不是 OSSEC,也不是 WAF。
一个Web 攻击监控器。它部署在 nginx / Caddy / 应用旁边,跟踪访问日志,并在站点被探测或利用时通知你。即使此进程终止,站点仍会继续提供服务。
它不是 Wazuh,不是 OSSEC,也不是 WAF。
命令是 gpewebdefender。主机、令牌、地图标记、GeoIP 和日志路径都是标志或环境文件——没有任何特定公司或服务器的信息被编译进去。
如果你从未运行过此程序: 从头到尾阅读本文件一次,然后执行方法 A 或方法 B。不要跳过“选择一种形态”。
完整说明:dochub/index.html 或运行中的管理器上的 /docs/。从 03 · 安装与运行 开始。
来自真实运营机器的实时仪表板。你的名称和标记将是你配置的任何内容。
只有当警报发生时才会发射光束——从攻击者国家到被击中的主机——然后消失。主机会保留在面板上。信息流是相同的事件,带编号。

点击一行。国家面板、攻击类型标记和被击中的服务器,以及常规字段(规则、MITRE、证据)。没有常驻轨迹。

报告 → 洞察。相同的警报,分类汇总。1h / 24h / 7d 是真实时钟。点击柱状图或主机卡片进行搜索。CSV / JSON / 复制 导出该时间窗口(会话 cookie,文件中没有摄取令牌)。





管理器上的 FTS5。关键词、IP、主机、类型。最新优先(点击 When 切换)。无需 Elasticsearch。


状态是按需的。当你需要负载、内存和磁盘信息时,点击 立即检查(或 检查所有已配对主机)。管理器立即响应。已配对的传感器会在其下一次命令轮询时响应(几秒钟)。图表是你请求的快照——后台不会抓取任何内容。配对流程与阻断相同(DocHub 20 / 21)。
| 你的情况 | 安装方式 |
|---|---|
| 一台笔记本电脑和好奇心 | gpewebdefender demo — 模拟攻击,不是你的站点 |
| 一台已经写入访问日志的 Linux 机器 | 一体化 — 管理器跟踪该日志。无需代理。 |
| 一台小型额外机器 + 一台或多台 Web 服务器 | 分离式 — 管理器在额外机器上,每台 Web(或 SSH)主机一个代理 |
不要将端口 8787 开放到互联网。默认监听为 127.0.0.1:8787。在配置 HTTPS + 登录之前,请使用 SSH 隧道。
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
一体化(此机器有访问日志):
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
分离式(先监控,然后每台 Web 机器):
# 在监控机上
sudo ./deploy/install-manager.sh --home 40.7,-74.0
# 在 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
将 MONITOR、web-1 和日志路径替换为你的值。
稍后可选——该主机可以接受阻断命令:设置 → 已配对主机 → 短语 + 代码,然后在 install-agent.sh 中添加 --code ABCD-2341 --block fail2ban。DocHub 20。
然后从你的笔记本电脑:
ssh -L 8787:127.0.0.1:8787 user@THEBOX
打开 http://127.0.0.1:8787/login 并创建第一个 admin(一个人)。那不是摄取令牌。
/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/。
/login → 第一个管理员。或者设置一次 SIEM_ADMIN_USER + SIEM_ADMIN_PASSWORD,然后删除密码行。US 或 40.7,-74.0),每个代理 --name 一行。.mmdb 并传递 --geoip。deploy/nginx-gwd.conf.example。在公共虚拟主机上拒绝 /api/ingest。DocHub 15 和 18。/api/ingest。切勿发送密码。DocHub 19。gpewebdefender pair --url … --name web-1 --code … --block fail2ban → 批准。DocHub 20。查看者和摄取令牌无法封禁。不是自动的。/.well-known/siem-canary,确认 GET /@vite/client 在公共主机上不是 200,POST kind=secprobe 以报告访问日志无法看到的 IDOR / webhooks / 评分滥用。切勿发送密码。如果 UI 为空:你不在演示模式,并且没有 --tail / 代理发送过一行。journalctl -u gpewebdefender -n 50。
任何出现在访问日志中的内容:
.env、.git、phpMyAdmin、wp-login、actuators)--journal 或 auth.log 监视 sshd / sudo/@vite、/@fs、/src/main.jsx、提供的 .js.map(200 即为泄漏)kind=applogin / tenantlogin / secprobe(IDOR、canary、webhook、评分滥用等)。DocHub 19 / 22。它无法看到 POST 正文,除非你记录它们(通常你不应该这样做)。
nginx / Apache combined,或 nginx / Caddy / Traefik JSON。JSON 值得切换。参见 DocHub 05。
rules/ 中的内置 YAML。额外文件:--rules path/to/more.yaml。可选 CMS 蜜罐:--rules packs(加载 packs/cms.yaml)。不是插件扫描器。
一个静态 Go 二进制文件 + SQLite。一台专用的 2 CPU / 2 GB 机器就足够了。没有 JVM,没有 OpenSearch,没有 Elasticsearch。
此目录树是公开产品。它没有清单、令牌或主机名。
go test ./...
set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0
go build -o gpewebdefender-linux-amd64 .\cmd\gpewebdefender
将实时集群配置排除在此仓库之外。