defensia/agent

GitHub: defensia/agent

轻量级 Linux 服务器安全代理,集 SSH 防护、WAF、实时仪表板于一体,一键安装零配置即可实时检测并自动封禁多种攻击。

Stars: 0 | Forks: 0

# Defensia Agent [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Go](https://img.shields.io/badge/Go-1.22+-00ADD8?logo=go&logoColor=white)](https://go.dev) [![Platform](https://img.shields.io/badge/Platform-Linux-orange?logo=linux&logoColor=white)](https://github.com/defensia/agent) [![Version](https://img.shields.io/badge/version-v0.9.15-brightgreen)](https://github.com/defensia/agent/releases) [![Dashboard](https://img.shields.io/badge/Dashboard-defensia.cloud-0D1B2A)](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 分钟内看到第一个被拦截的攻击。 ## 仪表板 ![仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e2d702a76a213433.png)
事件流 & WAF 分析 ![事件](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c4cbb0a06e213437.png) ![WAF](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/ce4f3f1bf0213443.png)
## 检测内容 **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)
标签:AppImage, CISA项目, CrowdSec替代, DevSecOps, EDR, EVTX分析, EVTX分析, Fail2ban替代, Golang, Go语言, IP 地址批量处理, LangChain, OWASP Top 10, PE 加载器, SSH暴力破解防护, VPS防护, WAF, Web应用防火墙, 上游代理, 入侵防御, 威胁情报, 安全代理, 安全编程, 开发者工具, 插件系统, 日志审计, 程序破解, 端口扫描检测, 网络安全, 网络封禁, 脆弱性评估, 自动化防御, 请求响应过滤, 轻量级, 隐私保护, 零配置