Paulo-Marcos-Lucio/sentinela
GitHub: Paulo-Marcos-Lucio/sentinela
一款 Python 编写的 Web 应用非侵入式安全诊断工具,自动检测安全配置缺陷并生成映射 OWASP Top 10:2025 的专业报告。
Stars: 0 | Forks: 0
# 🛡️ Sentinela
### Web 应用非侵入式安全诊断 — 附带可直接交付客户的报告。
*只需几秒钟,即可发现您的应用服务器在互联网上暴露了哪些信息:安全头、TLS/证书、Cookies、CORS、HTTP 方法、信息泄露以及 DNS/电子邮件安全 — 映射至 **OWASP Top 10:2025**,并以专业报告的形式交付。*
[](https://github.com/Paulo-Marcos-Lucio/sentinela/actions/workflows/ci.yml)
[](https://www.python.org/)
[](LICENSE)
[](https://github.com/astral-sh/ruff)
[](https://mypy-lang.org/)
[](https://owasp.org/Top10/2025/)
## 📌 问题背景
大多数中小型企业(PMEs)和金融科技公司中的数据泄露和安全事故,**并非**始于复杂的入侵技术。它们往往源于基础配置不当:遗忘在网站根目录的 `.env` 文件、即将过期的证书、缺少 `HttpOnly` 的会话 Cookies、将认证数据返回给任意来源的 CORS、缺乏 SPF 记录从而成为网络钓鱼跳板的域名。
这些“基础问题”恰恰是优秀的诊断工具能够在攻击者动手**之前**发现的盲点,而这正是 **Sentinela** 能够实现自动化的地方:它将一次扫描转化为技术团队能看懂、管理层能读懂的专业报告。
## ✨ Sentinela 检查内容
| 模块 | 分析内容 | OWASP 2025 |
| --- | --- | --- |
| **安全头 (Cabeçalhos)** | HSTS, CSP, X-Content-Type-Options, X-Frame-Options / clickjacking, Referrer-Policy, Permissions-Policy, COOP, 遗留的 X-XSS-Protection | A02 |
| **TLS / 证书** | 遗留协议 (TLS 1.0/1.1), 过期/即将过期的证书, 主机名不匹配, 弱 RSA 密钥, 过时的签名, 不可信的证书链 | A04 |
| **传输安全** | HTTP → HTTPS 重定向 | A04 |
| **Cookies** | `Secure`, `HttpOnly`, `SameSite` 标志 | A01 / A04 / A07 |
| **CORS** | 来源反射, 带凭据的通配符, 过于宽松的策略 | A01 |
| **HTTP 方法** | `TRACE` (XST), 暴露的写操作方法 (`PUT`/`DELETE`) | A02 |
| **信息泄露** | 泄露的服务器/技术栈版本, 目录遍历 | A02 |
| **DNS / 电子邮件** | SPF, DMARC (策略), CAA, DNSSEC | A02 / A04 / A07 |
| **敏感路由** 🔒 | `.git`, `.env`, `.svn`, `server-status`, `phpinfo`, `security.txt` — **侵入式, 需主动开启** | A02 |
每个发现都包含**严重性** (基于 CVSS 评分区间)、**证据**、**影响**、**实用修复建议**和**参考链接** (OWASP, MDN, RFC),此外还提供 **OWASP Top 10:2025 + CWE** 分类映射。
## 🚀 安装说明
要求 **Python 3.10+**。
```
# 从源代码开始
git clone https://github.com/Paulo-Marcos-Lucio/sentinela.git
cd sentinela
pip install .
# 或者,用于开发(包含 ruff, mypy, pytest)
pip install -e ".[dev]"
```
或者,通过 Docker 在隔离环境中运行,无需安装:
```
docker build -t sentinela .
docker run --rm sentinela scan exemplo.com.br
```
## 🧑💻 使用说明
```
# 标准扫描(非侵入式),输出到终端
sentinela scan exemplo.com.br
# 生成专业 HTML 报告(客户的交付物)
sentinela scan https://exemplo.com.br -f html -o relatorio-exemplo.html
# 一次生成多种格式
sentinela scan exemplo.com.br -f console -f markdown -f json
# 包含侵入式检查 — 仅限获得书面授权
sentinela scan exemplo.com.br --autorizado
# 在 CI/CD 中使用:如果发现高严重性或更高严重性的问题,则 pipeline 失败
sentinela scan exemplo.com.br --falhar-em alta
# 列出所有检查
sentinela checagens
```
`scan` 的主要选项:
| 选项 | 描述 |
| --- | --- |
| `-f, --formato` | `console` (默认), `markdown`, `html`, `json`。可重复使用。 |
| `-o, --saida` | 指定文件格式的输出文件。 |
| `--autorizado` | 启用**侵入式**检查。请在获得授权的情况下使用。 |
| `--falhar-em` | `nenhum`/`baixa`/`media`/`alta`/`critica` — 在 CI 中返回退出代码 1。 |
| `--timeout` | 单次请求超时时间 (默认 15秒)。 |
| `--pular` / `--somente` | 过滤运行的检查项 (按 ID)。 |
📄 **查看真实的示例报告:** [`docs/exemplo-relatorio.md`](docs/exemplo-relatorio.md)
## 🗺️ 如何在咨询业务中创造价值
Sentinela 被设计为业务接洽的**第一步**,而不是最后一步:
1. **快速诊断** — 运行非侵入式扫描并交付 HTML 报告。阻力小,影响大:让客户直观地*看到*问题。
2. **确定优先级** — 发现的问题已按严重程度排序,并附带实用修复建议,可直接转化为修复计划。
3. **修复与复测** — 应用修复方案后,新的扫描可证明风险已降低 (复测是行业内标准的交付物)。
4. **持续合规** — 定期执行扫描,作为 LGPD 漏洞管理持续性的证明。
## 🏗️ 架构设计
分层项目架构,每项检查相互隔离且可测试:
```
src/sentinela/
├── core/ # modelos, motor, cliente HTTP, configuração, pontuação
├── checks/ # uma checagem por arquivo, todas herdando de Checker
├── report/ # renderizadores: console (rich), markdown, html (jinja2), json
├── knowledge/ # referências canônicas + taxonomia OWASP/CWE
└── cli.py # interface typer
```
检查模块**绝不**直接与网络交互:它们接收一个不可变的 `Probe` 对象,这使得它们无需连接互联网即可进行测试,并将超时/错误集中在一处处理。单个检查中的失败会被捕获并记录 — 绝不会导致整个扫描流程崩溃。
## ⚖️ 道德使用与授权
**本工具仅用于评估您拥有或获得明确书面授权进行测试的系统。**
- **默认模式为非侵入式**:仅观察服务器向普通访客暴露的内容 (安全头、TLS、公共 DNS 查询)。
- **侵入式模式** (`--autorizado`) 会探测敏感路径,仅在您声明拥有授权时才会运行。这是一种刻意的技术限制。
- 在巴西,未经授权访问计算机设备属于犯罪行为 (**第 12.737/2012 号法律**, 并由 **第 14.155/2021 号法律** 加重处罚)。**具有明确范围的书面授权**是界定行为合法性的关键。在处理发现的任何数据时,还应考虑 **《互联网民法》** (第 12.965/2014 号法律) 和 **LGPD** (第 13.709/2018 号法律)。
请负责任地使用。有关负责任的漏洞披露,请参阅 [`SECURITY.md`](SECURITY.md)。
## 🧭 路线图
- [ ] 检测过时的前端库 (fingerprint) — A03 供应链安全
- [ ] 验证第三方脚本的 Subresource Integrity (SRI)
- [ ] 悬空 CNAME (dangling CNAME) 警告 (面临子域名接管风险)
- [ ] 导出为 SARIF (集成至 GitHub Security)
- [ ] 扫描配置文件 (`--perfil rapido|completo`)
## 📄 开源许可证
[MIT](LICENSE) © 2026 Paulo Marcos Lucio.
### 👋 关于作者
**Paulo Marcos Lucio** — 开发者,拥有**受监管金融系统** (Pix, Open Finance, FAPI/mTLS 身份验证) 背景,目前专注于 **Web 应用安全**:漏洞诊断与修复、系统加固及故障预防。
**需要对您的 Web 应用进行安全诊断吗?**
[](https://www.linkedin.com/in/paulo-marcos-a07379174/)
[](mailto:pmlsp23@gmail.com)
[](https://paulo-marcos-lucio.github.io)
标签:LNA, OWASP标准, Python, Web安全, 安全合规, 插件系统, 无后门, 网络代理, 蓝队分析, 请求拦截, 逆向工具