APonder-Dev/sentinel-audit
GitHub: APonder-Dev/sentinel-audit
SentinelAudit 是一个跨平台的端点安全审计工具,通过只读收集主机遥测数据来识别安全加固盲点并生成带风险评分的结构化防御性报告。
Stars: 0 | Forks: 0
# SentinelAudit
SentinelAudit 是一个跨平台的 endpoint 安全审计与评估工具,旨在收集主机安全态势遥测数据,识别安全加固盲点,并生成结构化的防御性安全报告。
本项目专注于实用的防御性安全工程、运维可见性以及工具的渐进式成熟。
# 项目背景
SentinelAudit 的创建是围绕以下核心内容的网络安全与软件开发作品集的一部分:
- 防御性安全工具
- 基础设施可见性
- 主机审计
- 安全自动化
- 结构化工程工作流
- 文档驱动开发
目标是构建一个实用的运维工具,而不是一个通用的初学者项目。
SentinelAudit 在设计上特意通过真实的工程实践进行增量演进,包括:
- Feature branching
- Pull requests
- 语义化版本控制
- CI/CD 验证
- 自动化测试
- 结构化报告
- 安全发现分析
# 当前版本
## v0.3.0
SentinelAudit v0.3.0 显著扩展了发现引擎和遥测覆盖范围,新增了开放端口风险分析、特权进程审计、磁盘加密状态检查以及风险评分系统。
# 功能
## 遥测收集
- 收集系统信息
- 收集主机名和当前用户
- 收集操作系统详情
- 收集架构和处理器信息
- 收集本地 IP 地址
- 收集监听的网络端口
- 收集防火墙状态(Windows 和 Linux)
- 收集带有权限上下文的运行中进程列表
- 收集磁盘加密状态(BitLocker、FileVault、LUKS)
## 安全发现引擎
- 分析防火墙遥测数据
- 结合已知的高风险端口数据库分析监听端口
- 分析特权进程数量(SYSTEM/root)
- 分析跨平台的磁盘加密状态
- 基于严重程度生成安全发现(高、中、低、信息)
- 针对每个发现生成防御建议
- 生成以评估为导向的报告
- 识别不支持或失败的遥测收集状态
### 高风险端口检测
发现引擎在检测到以下端口处于监听状态时会将其标记:
| 端口 | 服务 | 严重程度 |
| --- | --- | --- |
| 21 | FTP | 高 |
| 23 | Telnet | 高 |
| 3389 | RDP | 高 |
| 4444 | Unknown (Metasploit default) | 高 |
| 5900 | VNC | 高 |
| 135 | MS-RPC | 中 |
| 139 | NetBIOS | 中 |
| 445 | SMB | 中 |
| 1433 | MSSQL | 中 |
| 1521 | Oracle DB | 中 |
| 3306 | MySQL | 中 |
| 5432 | PostgreSQL | 中 |
| 6379 | Redis | 中 |
| 27017 | MongoDB | 中 |
## 风险评分
SentinelAudit 会根据生成的所有安全发现的严重程度,为每次审计运行计算一个风险评分。
| 严重程度 | 扣分 |
| --- | --- |
| 高 | -20 |
| 中 | -10 |
| 低 | -5 |
| 信息 | 0 |
评分等级:
| 分数范围 | 评级 |
| --- | --- |
| 90 – 100 | 低风险 (Low Risk) |
| 70 – 89 | 中等风险 (Moderate Risk) |
| 50 – 69 | 较高风险 (Elevated Risk) |
| 0 – 49 | 高风险 (High Risk) |
风险评分会在每次审计后打印到控制台,并包含在 JSON 和 Markdown 报告输出中。
## 报告生成
- 导出 JSON 报告
- 导出 Markdown 报告
- 生成结构化的报告输出
- 生成以安全发现为导向的评估报告
- 在所有报告格式中包含风险评分摘要
- 在所有报告格式中包含进程审计结果
- 在所有报告格式中包含磁盘加密状态
- 支持自定义报告输出路径
- 支持生成脱敏报告
- 从导出的报告中隐去敏感的主机信息
## CLI 功能
- 选择报告输出格式
- 仅生成 JSON 报告
- 仅生成 Markdown 报告
- 同时生成两种报告格式
- 指定自定义输出路径
- 通过 CLI 显示版本信息
- 使用 --sanitize 生成脱敏报告
# 技术栈
- Python 3.12+
- Python 标准库
- Rich CLI 输出
- Pytest
- Ruff
- GitHub Actions CI/CD
# 项目结构
```
sentinel-audit/
├── .github/
│ └── workflows/
│ └── python-ci.yml
│
├── sentinel_audit/
│ ├── collectors/
│ │ ├── system_info.py
│ │ ├── network.py
│ │ ├── firewall.py
│ │ ├── processes.py
│ │ └── disk_encryption.py
│ ├── findings/
│ │ ├── firewall_findings.py
│ │ ├── network_findings.py
│ │ ├── process_findings.py
│ │ └── disk_encryption_findings.py
│ ├── reporting/
│ │ ├── json_report.py
│ │ └── markdown_report.py
│ ├── cli.py
│ ├── main.py
│ ├── sanitizer.py
│ └── scoring.py
│
├── reports/
├── tests/
├── requirements.txt
└── README.md
```
# 安装说明
## 克隆仓库
```
git clone https://github.com/APonder-Dev/sentinel-audit.git
cd sentinel-audit
```
## 创建虚拟环境
```
python -m venv .venv
```
## Windows 设置
```
.venv\Scripts\activate
pip install -r requirements.txt
```
## Linux/macOS 设置
```
source .venv/bin/activate
pip install -r requirements.txt
```
# 用法
## 默认执行
```
python -m sentinel_audit.main
```
## 仅生成 JSON 报告
```
python -m sentinel_audit.main --format json
```
## 仅生成 Markdown 报告
```
python -m sentinel_audit.main --format markdown
```
## 生成两种报告格式
```
python -m sentinel_audit.main --format both
```
## 自定义输出路径
```
python -m sentinel_audit.main --output reports/custom-audit
```
## 显示版本信息
```
python -m sentinel_audit.main --version
```
## 生成脱敏报告
```
python -m sentinel_audit.main --sanitize
```
脱敏报告会隐去以下敏感信息:
- 主机名
- 当前用户
- 本地 IP 地址
# 输出文件示例
生成的报告将保存至:
```
reports/sentinel-audit-report.json
reports/sentinel-audit-report.md
```
自定义输出示例:
```
reports/custom-audit.json
reports/custom-audit.md
```
# 安全发现示例
### 高风险端口发现
```
{
"severity": "high",
"title": "Risky port open: 3389/RDP",
"description": "Port 3389 (RDP) is listening on this host.",
"recommendation": "Restrict RDP access to VPN or jump hosts and enable NLA."
}
```
### 磁盘加密发现
```
{
"severity": "high",
"title": "Disk encryption is not enabled",
"description": "Full-disk encryption was not detected on this host.",
"recommendation": "Enable full-disk encryption immediately. Use BitLocker on Windows, FileVault on macOS, or LUKS on Linux to protect data at rest."
}
```
### 风险评分输出
```
{
"risk_score": {
"score": 60,
"label": "Elevated Risk"
}
}
```
### 脱敏输出
```
{
"hostname": "[REDACTED]",
"current_user": "[REDACTED]",
"ip_address": "[REDACTED]"
}
```
# 测试
## 运行 Ruff 代码检查
```
python -m ruff check .
```
## 运行自动化测试
```
python -m pytest
```
包含 29 个测试,覆盖发现分析、CLI 解析、脱敏和风险评分功能。
# CI/CD
SentinelAudit 包含 GitHub Actions CI 验证,用于:
- Ruff 代码检查
- Pytest 执行
- 多版本 Python 验证(3.11、3.12、3.13)
- Pull request 验证
# 安全考量
SentinelAudit 仅执行只读的本地系统检查。
本项目:
- 不利用系统漏洞
- 不攻击网络
- 不修改防火墙规则
- 不执行攻击性操作
某些收集器可能需要提升的权限,具体取决于操作系统和可用的系统工具。例如,在 Windows 上检查 BitLocker 状态可能需要管理员权限。
# 路线图
## 计划改进
- 添加带有可视化安全发现面板的 HTML 报告格式
- 添加 Windows 安全策略审计
- 添加 Linux 安全加固分析(CIS 基准检查)
- 添加扫描时间戳和唯一的扫描 ID
- 添加导出过滤控制
- 添加基于 Docker 的测试环境
- 添加发布验证工作流
- 添加基于插件的收集器架构
- 添加 macOS 防火墙 (pf) 支持
# 项目状态
**成熟度:** 早期活跃开发阶段
**版本:** v0.3.0
新增了开放端口风险分析、特权进程审计、磁盘加密状态检查,以及适用于所有平台的 0-100 风险评分系统。
# 开源协议
MIT License
标签:DevSecOps, SQL, 上游代理, 安全基线检查, 安全态势感知, 端点安全, 系统审计, 补丁管理, 逆向工具, 防御性安全