vpsik-lab/vpsGuard
GitHub: vpsik-lab/vpsGuard
一款轻量级的 VPS 安全代理,通过混合评分模型实时检测 SSH 暴力破解并结合威胁情报利用 nftables 自动阻断攻击者。
Stars: 0 | Forks: 0
# vpsGuard Agent
**用于保护 VPS 的轻量级智能安全 agent。**
检测 SSH brute-force,结合威胁情报(AbuseIPDB、AlienVault OTX)进行丰富,并通过 nftables 动态集阻止攻击者。
**二进制文件大小**:7.4 MB · **空闲 RAM**:~8 MB · **阻断延迟**:<100ms
## 这是什么?
vpsGuard **Agent** 是运行在您的 VPS 上的本地组件。
它监控 SSH 日志,使用混合模型对威胁活动进行评分,并阻止攻击者。
**Central Platform**(阶段 B — 开发中)将提供托管的威胁情报源,供 agent 拉取。
有关它们之间的接口,请参见 [`docs/AGENT-API-CONTRACT.md`](docs/AGENT-API-CONTRACT.md)。
## 功能
- **实时监控** — auth.log + systemd journal
- **混合评分** — 行为 (30%) + AbuseIPDB (25%) + OTX (20%) + 时间 (10%) + 中央数据源 (15%)
- **可配置阈值** — 阻断、速率限制、隔离分数 + 行为窗口/限制 + 时间 TTL 均可通过 `config.yaml` 配置
- **nftables 阻断** — 具有自动过期功能的动态集(IPv4 + IPv6 双栈)
- **IP 白名单** — 保护关键 IP 免受意外阻断
- **SHA256 验证** — install.sh 在安装前验证二进制校验和
- **离线工作** — 无需互联网即可完全正常运行
- **Telegram + 电子邮件警报** — 丰富的 HTML 通知
- **防篡改警报** — Watchdog 在配置校验和不匹配时立即触发 Telegram/电子邮件
- **每日报告** — 可选的每 24 小时通过 Telegram 发送包含安全摘要的报告
- **日志完整性** — 用于审计日志篡改检测的哈希链
- **自我保护** — Watchdog、systemd 沙盒、配置完整性、AppArmor profile
- **一条命令部署** — 30 秒内完成
- **完全卸载** — `bash install.sh --uninstall` 撤销所有操作
- **VPS 加固** — 可选的 `deploy/harden.sh`(SSH、UFW、BBR、sysctl、auditd、AppArmor、Docker、自动更新、进程记账)
- **持久化缓存** — SQLite IP 信誉缓存在服务重启后依然存在
- **CLI 管理** — `--list-blocked`、`--unblock `、`--status` 命令
- **Metrics endpoint** — Prometheus 文本格式 + JSON (`?format=json`) 的 `/metrics`
- **通过环境变量传递机密信息** — API 密钥和密码通过 `VPSGUARD_*` 环境变量传递(配置文件中无明文)
## 项目状态
| 阶段 | 组件 | 状态 | 描述 |
|-------|-----------|--------|-------------|
| **A** | Agent(本仓库) | ✅ **v0.3.0 — 稳定版** | 本地 SSH 保护、混合评分、nftables 阻断、VPS 加固、每日报告 |
| **B** | Central Platform | 🔜 开发中 | 托管的威胁情报源、agent 遥测、地理定向阻断 |
| **C** | Dashboard & Analytics | 📋 计划中 | Web dashboard、多 agent 管理、攻击可视化 |
Agent 可完全独立运行。阶段 B/C 是**独立的项目** —— 即使它们从未发布,Agent 的行为也不会受到影响。
## 许可证与版本
vpsGuard 是**开放核心**的:Agent 是免费的,并根据 **GNU AGPLv3** 开源。
| 功能 | 免费版 (AGPLv3) | 付费版 (Platform) |
|---------|---------------|-----------------|
| SSH brute-force 检测 | ✅ | ✅ |
| 本地混合评分 | ✅ | ✅ |
| nftables 自动阻断 | ✅ | ✅ |
| 威胁情报 (AbuseIPDB + OTX) | ✅ | ✅ |
| Telegram + 电子邮件警报 | ✅ | ✅ |
| 可配置阈值 | ✅ | ✅ |
| 所有源代码可用 | ✅ (AGPLv3) | ❌ (专有) |
| **中央威胁情报源** | ❌(需要 Platform) | ✅(基于提交) |
| 全球 IP 信誉网络 | ❌ | ✅ |
| 多 agent dashboard | ❌ | ✅ |
| 优先支持 | ❌ | ✅ |
**零遥测**:免费的 agent 绝不回传数据 —— 除非您配置了 AbuseIPDB/OTX API,否则不会进行任何外部连接。
## 快速开始
```
# 1. Build
git clone https://github.com/vpsik-lab/vpsGuard.git
cd vpsGuard
go build -ldflags="-s -w" -o vpsGuard ./cmd/vpsGuard/
# 2. Configure
cp config.yaml /etc/vpsGuard/config.yaml
# 编辑:设置 API keys、notification tokens 等。
# 提示:对于 secrets,请使用 env vars 而不是 plain-text。
# export VPSGUARD_ABUSEIPDB_KEY=your-key
# export VPSGUARD_TELEGRAM_TOKEN=your-token
# 3. Run
sudo ./vpsGuard -config /etc/vpsGuard/config.yaml
# 4. CLI management(在 agent 运行时)
sudo ./vpsGuard --list-blocked # view all blocked IPs
sudo ./vpsGuard --unblock 1.2.3.4 # unblock an IP
./vpsGuard --status # check agent health
curl http://127.0.0.1:9090/metrics # Prometheus metrics
curl http://127.0.0.1:9090/metrics?format=json # JSON metrics
```
或使用安装脚本:
```
# 需要 root/sudo:
curl -sSL https://raw.githubusercontent.com/vpsik-lab/vpsGuard/main/deploy/install.sh | sudo bash
```
对于无人值守安装(具有 sudo 权限的非 root 用户):
```
curl -sSL https://raw.githubusercontent.com/vpsik-lab/vpsGuard/main/deploy/install.sh | sudo bash -s -- --unattended
```
有关完整的安装选项,请参见 [`docs/AGENT-DEPLOYMENT.md`](docs/AGENT-DEPLOYMENT.md)。
## 文档
| 文档 | 描述 |
|-----|-------------|
| [`AGENT-ARCHITECTURE.md`](docs/AGENT-ARCHITECTURE.md) | 内部架构、组件、事件流 |
| [`AGENT-SCORING.md`](docs/AGENT-SCORING.md) | 评分公式、阈值、边缘情况 |
| [`AGENT-DEPLOYMENT.md`](docs/AGENT-DEPLOYMENT.md) | 安装、配置、管理、故障排除 |
| [`AGENT-API-CONTRACT.md`](docs/AGENT-API-CONTRACT.md) | Agent 与 Central Platform 之间的契约 |
| [`THREAT_MODEL.md`](docs/THREAT_MODEL.md) | 威胁模型、信任边界、攻击场景 |
| [`TEST-COVERAGE.md`](docs/TEST-COVERAGE.md) | 单元测试清单(19 个文件,136 个测试) |
| [`RFC-0001-event-model.md`](docs/RFC-0001-event-model.md) | 事件 schema 规范 |
## 质量
| 指标 | 状态 |
|--------|--------|
| **测试** | 跨 20 个文件的 146 个测试函数 —— 所有 12 个 package 均通过 |
| **竞态检测** | `go test -race ./...` ✅(CI 强制执行) |
| **静态分析** | `go vet ./...` ✅ |
| **构建** | `go build ./...` ✅ amd64 / arm64 / arm |
| **测试文档** | [`docs/TEST-COVERAGE.md`](docs/TEST-COVERAGE.md) |
## 要求
- Ubuntu 20.04+ 或 Debian 11+
- systemd
- nftables
## 项目结构
```
├── cmd/vpsGuard/main.go Entry point
├── internal/
│ ├── api/ Central feed pull client
│ ├── bootstrap/ System hardening
│ ├── config/ YAML config + validation
│ ├── engine/ Scorer, decision, memory
│ ├── firewall/ nftables manager
│ ├── monitor/ Log tailing, parsing, behavioral analysis
│ ├── notify/ Telegram + Email
│ ├── pipeline/ Event bus + event types
│ ├── rules/ YAML rules engine
│ ├── selfprotect/ Watchdog + health
│ └── threat/ AbuseIPDB, OTX, cache
├── deploy/
│ ├── install.sh One-command installer
│ ├── vpsGuard.service systemd unit
│ └── vpsGuard.logrotate Log rotation config
└── docs/ Documentation
```
## 许可证
GNU AGPLv3
标签:EVTX分析, nftables, VPS安全, 入侵防御, 威胁情报, 安全防护, 开发者工具, 日志审计, 自定义请求头, 防暴力破解