sondt/edge-guardian

GitHub: sondt/edge-guardian

一款零依赖的单二进制 Linux 边缘防护与监控工具,通过日志检测扫描器与暴力破解并在 nftables 层封禁恶意 IP,同时提供站点健康监控和实时告警。

Stars: 0 | Forks: 0

# Edge Guardian **一个专为 Linux 服务器设计的轻量级、单二进制 edge guardian。** 它可以从日志中检测扫描器 和暴力破解攻击,在防火墙层面封禁源 IP,监控每个站点的健康状况(5xx / 延迟 / 流量),并实时发送通知通知 —— 零外部依赖,一行命令即可完成安装。 ## 为什么选择 edge-guardian 每台公共服务器都会遭到自动化扫描器的猛烈攻击,它们不断探测 `.php`、`.env`、 `/wp-login.php`、开放端口以及 SSH 凭证。现有的工具虽然能解决这些问题,但都有 各自的妥协:`fail2ban` 只能看到单一主机且严重依赖日志规则; CrowdSec 功能强大,但却引入了 agent + 本地 API + bouncer + collections, 增加了学习与运维成本。 edge-guardian 专注于做一件事:**提供从“我正在被扫描”到“那些 IP 已被封禁且我收到了通知”最简单的路径** —— 你只需将一个单一的静态二进制文件扔到服务器上,将其指向某个日志,然后就可以抛诸脑后了。 ## 功能 | 功能 | 状态 | |---|---| | HTTP 扫描器检测(Web 服务器访问日志) | 已实现 | | 带有自动过期时间的 nftables IP 封禁 | 已实现 | | 实时 Telegram + 邮件 (Resend) 告警(可选 GeoIP/ASN) | 已实现 | | 状态持久化 + 重启后防火墙自动重置 | 已实现 | | CIDR 白名单 | 已实现 | | 试运行(仅检测,不拦截)模式 | 已实现 | | 通过控制 socket(实时)或离线方式执行 `edge-guardian unban ` | 已实现 | | 内置本地仪表板(Chi + templ + HTMX,嵌入式) | 已实现 | | SSH 暴力破解检测(auth.log / journald) | 已实现 | | 漏洞特征检测(SQLi / 路径遍历 / RCE / Log4Shell),默认关闭 | 已实现 | | 基于 User-Agent 的恶意爬虫检测(sqlmap / nikto / nuclei / masscan…),默认关闭 | 已实现 | | 频率滥用 / 轻量级 DoS 检测(基于单 IP 的请求泛洪),默认关闭 | 已实现 | | 端口扫描检测(不同端口计数)+ 蜜罐端口 | 已实现 | | 公共黑名单导入(FireHOL, Spamhaus)→ nftables interval set | 已实现 | | 边缘健康监控(分站点的 5xx / 请求率 / p95 延迟 + 性能下降/宕机告警),默认关闭 | 已实现 | | 通过 `nginx -T` + `$host` 解析进行站点自动发现(按域名拆分统计数据) | 已实现 | | 错误请求日志查看器(`/errors`:包含 host、路径、状态码、IP、UA 和 GeoIP 信息的 4xx/5xx 日志;支持过滤与分页) | 已实现 | | 封禁原因中包含绝对路径(带 host 前缀)+ 通知中包含 GeoIP 位置信息 | 已实现 | | 启动时自愈 nftables input chain(始终放行 loopback + established) | 已实现 | | 可选的自更新(systemd timer)+ 安装程序中交互式的 `$host` 日志配置 | 已实现 | | 多语言落地页(EN · FR · DE · ES · 中文 · VI) | 已实现 | | 逐步升级封禁 + 一行命令安装 + `.deb`/`.rpm` + Docker 镜像 | 已实现 | ## 快速开始 一行命令安装(Linux 环境,需要 nftables + root 权限)。默认以 **dry-run** 模式启动,因此在您将 `detection.dry_run` 设置为 `false` 之前,它只会进行观察而不会拦截: ``` curl -fsSL https://raw.githubusercontent.com/sondt/edge-guardian/main/install.sh | sudo bash ``` 或者手动构建并安装: ``` # 构建(Go 1.26+)。支持从任何 OS 交叉编译——包括在你的 Mac 上为 Linux 机器编译: GOOS=linux GOARCH=amd64 go build -o edge-guardian ./cmd/edge-guardian sudo install -m 0755 edge-guardian /usr/local/bin/edge-guardian # 配置 sudo mkdir -p /etc/edge-guardian /var/lib/edge-guardian sudo cp config.example.toml /etc/edge-guardian/config.toml sudo $EDITOR /etc/edge-guardian/config.toml # set Telegram token + allowlist # 初始化防火墙表(idempotent) sudo bash setup-nftables.sh # 作为服务运行 sudo cp edge-guardian.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now edge-guardian sudo journalctl -u edge-guardian -f ``` 所有选项都在 [`config.example.toml`](config.example.toml) 中进行了内联文档说明。 ## 工作原理 ``` Internet -> nginx / sshd / kernel -> logs | (tail, follows rotation) v edge-guardian --> match? allowlisted? threshold? | yes +--> nft add element @blocklist (timeout) +--> Telegram notification nftables: ip saddr @blocklist drop ``` edge-guardian 运行在日志能显示**真实客户端 IP** 的位置 —— 通常是 边缘节点/负载均衡节点。被封禁的 IP 会在网络层被直接丢弃,因此它们 永远无法再次访问您的应用程序。 ## 文档 - **配置说明** — 每个配置项都在 [`config.example.toml`](config.example.toml) 中有内联文档说明。 - **贡献指南** — [`CONTRIBUTING.md`](CONTRIBUTING.md)(包含构建、测试以及仅适用于 Linux 的 Docker 测试工具)。 - **安全政策** — 请按照 [`SECURITY.md`](SECURITY.md) 中的说明私下报告漏洞。 ## 许可证 基于 Apache License 2.0 发布 — 详见 [`LICENSE`](LICENSE)。 ## 贡献 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
标签:CISA项目, EVTX分析, Go语言, 入侵防御, 插件系统, 日志审计, 服务器运维, 监控工具, 程序破解, 红队行动, 网络安全, 请求拦截, 配置错误, 防火墙, 隐私保护