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**,并以专业报告的形式交付。* [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/Paulo-Marcos-Lucio/sentinela/actions/workflows/ci.yml) [![Python](https://img.shields.io/badge/Python-3.10%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Ruff](https://img.shields.io/badge/lint-ruff-261230.svg)](https://github.com/astral-sh/ruff) [![Checked with mypy](https://img.shields.io/badge/mypy-strict-2A6DB2.svg)](https://mypy-lang.org/) [![OWASP Top 10:2025](https://img.shields.io/badge/OWASP-Top%2010%3A2025-000000.svg)](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 应用进行安全诊断吗?** [![LinkedIn](https://img.shields.io/badge/LinkedIn-Conversar-0A66C2?logo=linkedin&logoColor=white)](https://www.linkedin.com/in/paulo-marcos-a07379174/) [![Email](https://img.shields.io/badge/E--mail-pmlsp23%40gmail.com-EA4335?logo=gmail&logoColor=white)](mailto:pmlsp23@gmail.com) [![Site](https://img.shields.io/badge/Site-paulo--marcos--lucio.github.io-0f766e)](https://paulo-marcos-lucio.github.io)
标签:LNA, OWASP标准, Python, Web安全, 安全合规, 插件系统, 无后门, 网络代理, 蓝队分析, 请求拦截, 逆向工具