defensia/agent
GitHub: defensia/agent
轻量级 Linux 服务器安全代理,集 SSH 防护、WAF、实时仪表板于一体,一键安装零配置即可实时检测并自动封禁多种攻击。
Stars: 0 | Forks: 0
# Defensia Agent
[](https://opensource.org/licenses/MIT)
[](https://go.dev)
[](https://github.com/defensia/agent)
[](https://github.com/defensia/agent/releases)
[](https://defensia.cloud)
**你的服务器此刻正遭受攻击,只是你尚未察觉。**
平均而言,一台 Linux VPS 在上线 4 分钟内就会收到首次自动化攻击 —— SSH 暴力破解、端口扫描、Web 利用。大多数开发者意识到时,往往为时已晚。
Defensia 是一个轻量级的 Go agent,可以实时检测所有攻击并自动拦截。一条命令即可安装,无需配置。
```
curl -fsSL https://defensia.cloud/install.sh | sudo bash -s -- --token
```
→ **[在 defensia.cloud 获取你的 token](https://defensia.cloud)**
→ 首次攻击将在 15 分钟内显示在你的仪表板中。
## 为什么选择 Defensia
| | fail2ban | CrowdSec | Defensia |
|--|---------|---------|---------|
| 实时仪表板 | ❌ | 部分 | ✅ |
| 一条命令安装 | ❌ | ❌ | ✅ |
| WAF (15 种 OWASP 类型) | ❌ | 部分 | ✅ |
| 网络封禁共享 | ❌ | ✅ | ✅ |
| 零配置 | ❌ | ❌ | ✅ |
| 需要社区 Hub | ❌ | ✅ | ❌ |
- **fail2ban** 只能事后拦截。Defensia 让你实时看到正在发生的一切。
- **CrowdSec** 需要社区 Hub 和复杂的设置。Defensia 只需一个 agent,一个仪表板。
- 你将在安装后的 15 分钟内看到第一个被拦截的攻击。
## 仪表板

## 检测内容
**SSH 与暴力破解** — 监控 `auth.log` 中的登录失败尝试,通过 iptables 自动封禁
**Web 应用防火墙 (WAF)** — 覆盖 Nginx/Apache 日志中的 15 种 OWASP 攻击类型:
| 攻击类型 | 模式 |
|-------------|------|
| SQL 注入 | 即时封禁 |
| XSS 尝试 | 即时封禁 |
| 路径遍历 | 即时封禁 |
| RCE 尝试 (含 Log4Shell) | 即时封禁 |
| Web shell 访问 | 即时封禁 |
| SSRF 尝试 | 即时封禁 |
| ShellShock (CVE-2014-6271) | 即时封禁 |
| `.env` / 配置探测 | 即时封禁 |
| Header 注入 | 即时封禁 |
| 通用 Web 利用 | 即时封禁 |
| WordPress 暴力破解 | 阈值 (10 次 / 2 分钟) |
| xmlrpc 滥用 | 阈值 (5 次 / 1 分钟) |
| 扫描器 Bot | 阈值 (5 次 / 5 分钟) |
| 404 泛洪 | 阈值 (30 次 / 5 分钟) |
| 已知扫描器 User-Agents (sqlmap, nikto, nmap...) | 即时封禁 |
**GeoIP 封禁** — 从仪表板屏蔽整个国家/地区
**网络传播** — 在一台服务器上检测到的封禁将立即应用于你的所有服务器
**安全扫描器** — 检测易受攻击的软件版本和配置错误
**系统指标** — 向仪表板报告 CPU、内存、磁盘、网络信息
## 安装
```
curl -fsSL https://defensia.cloud/install.sh | sudo bash -s -- --token
```
**卸载:**
```
curl -fsSL https://defensia.cloud/install.sh | sudo bash -s -- --uninstall
```
**支持的系统:** Ubuntu 20+, Debian 11+, CentOS 7+, RHEL 8+, Amazon Linux 2023
**要求:** `iptables`, `systemd` (或 upstart/sysvinit), root 权限
## 工作原理
```
auth.log / web access logs
│
▼
Watcher goroutines
│ Detect brute force, SQLi, XSS, SSRF, path traversal, web shells...
│ Instant-ban or threshold (configurable per type from dashboard)
▼
BanIP → iptables -I INPUT 1 -s -j DROP
│
├──► POST /api/v1/agent/bans → dashboard + propagates to all your servers
│
└──► WebSocket receives ban.created from other servers → BanIP instantly
```
Agent 永远不会封禁保留 IP(`127.x`、`10.x`、`192.168.x`)、你自己服务器的 IP 或 Defensia API endpoint —— 即使后端以某种方式发送了错误的规则。
## 单服务器 WAF 配置 *(v0.9.3+)*
每种攻击类型都可以从仪表板独立配置(Server → Settings → WAF)。更改在 60 秒内同步。
- **启用/禁用类型** — 禁用与你的技术栈无关的规则(例如在非 WordPress 服务器上的 `wp_bruteforce`)
- **仅检测模式** — 记录事件但不封禁。适用于仅审计策略或强制执行前的测试
- **自定义阈值** — 覆盖 `wp_bruteforce`、`xmlrpc_abuse`、`scanner_detected`、`404_flood` 的默认值
`null` WAF 配置 → 激活全部 15 种类型,使用默认阈值(完全向后兼容)。
## 配合 Docker 化的 Web 服务器使用 WAF
如果你的 Web 服务器运行在 Docker 内,请将日志目录绑定挂载到主机:
```
services:
nginx:
image: nginx
volumes:
- /var/log/nginx:/var/log/nginx # ← required for WAF detection
```
Agent 会通过容器内的 `nginx -T` 自动发现日志,将其映射到主机路径,并开始追踪。无需额外配置。
```
journalctl -u defensia-agent | grep webwatcher
# [webwatcher] 正在监控 /var/log/nginx/app.access.log (app.example.com)
# [webwatcher] docker: 正在从 container nginx 监控 /var/log/nginx/api.access.log
# [webwatcher] 正在监控 2 个日志文件,覆盖 3 个域名
```
## 常见问题
### 安装时出现 `"Peer's Certificate issuer is not recognized"`
影响 CentOS 7、RHEL 7 以及自 2024 年以来未更新 `ca-certificates` 的系统。
```
curl -sk https://letsencrypt.org/certs/isrgrootx1.pem \
-o /tmp/isrg-root-x1.pem
export CURL_CA_BUNDLE=/tmp/isrg-root-x1.pem
curl -fsSL https://defensia.cloud/install.sh | bash -s -- --token
```
### Agent 在仪表板中显示 `203/EXEC`
二进制文件丢失或不可执行。请从备份恢复:
```
cp /usr/local/bin/defensia-agent.bak /usr/local/bin/defensia-agent
chmod 755 /usr/local/bin/defensia-agent
systemctl reset-failed defensia-agent && systemctl start defensia-agent
```
如果 `systemctl start` 失败并提示 `start-limit-hit`:
```
grep -q StartLimitIntervalSec /etc/systemd/system/defensia-agent.service || \
sed -i '/^\[Unit\]/a StartLimitIntervalSec=0' /etc/systemd/system/defensia-agent.service
systemctl daemon-reload && systemctl reset-failed defensia-agent && systemctl start defensia-agent
```
## 更新日志
| 版本 | 变更 |
|---------|---------|
| v0.9.15 | 修复:`"signal: terminated"` 时的错误回滚 —— systemd 在重启时会终止调用进程,现已正确处理为成功 |
| v0.9.14 | 修复:从更新器中移除 `updateServiceFile()` —— 导致每次更新时出现回归循环 |
| v0.9.13 | 修复:将 `StartLimitIntervalSec=0` 移至 `[Unit]` 部分以防止 start-limit-hit |
| v0.9.12 | 改进更新器诊断;失败事件 payload 中增加 `recent_logs` |
| v0.9.10 | 修复:延长健康检查窗口;同步时清理过期的封禁 |
| v0.9.9 | 修复:更新器中的跨设备重命名失败问题 |
| v0.9.8 | 修复:预检使用 `check` 子命令;原子回滚 |
| v0.9.7 | 通过绑定挂载检测 Docker 容器日志 |
| v0.9.6 | 新增 `web_exploit` 检测 (Spring4Shell, Log4Shell, Struts OGNL...) |
| v0.9.5 | 原子二进制替换 + 15 秒重启后健康检查;崩溃时回滚 |
| v0.9.3 | 单服务器 WAF 配置:启用/禁用类型、仅检测模式、自定义阈值 |
| v0.9.2 | XSS, SSRF, web shell, header injection 检测 |
| v0.9.0 | 初始 WAF:SQLi, path traversal, RCE, shellshock, env/config probe, wp_bruteforce, xmlrpc, 404_flood, scanner |
| v0.6.x | 暴力破解检测、GeoIP、僵尸进程、自动更新、IP 安全性 |
## 许可证
MIT — 详见 [LICENSE](LICENSE)
事件流 & WAF 分析
 标签:AppImage, CISA项目, CrowdSec替代, DevSecOps, EDR, EVTX分析, EVTX分析, Fail2ban替代, Golang, Go语言, IP 地址批量处理, LangChain, OWASP Top 10, PE 加载器, SSH暴力破解防护, VPS防护, WAF, Web应用防火墙, 上游代理, 入侵防御, 威胁情报, 安全代理, 安全编程, 开发者工具, 插件系统, 日志审计, 程序破解, 端口扫描检测, 网络安全, 网络封禁, 脆弱性评估, 自动化防御, 请求响应过滤, 轻量级, 隐私保护, 零配置