EHArviv/python-linux-hardening-auditor
GitHub: EHArviv/python-linux-hardening-auditor
一款基于 Python 标准库开发的只读 Linux 安全基线审计工具,可执行多项系统加固检查并生成适配 SOC/SIEM 工作流的多格式报告。
Stars: 0 | Forks: 0
# Python Linux Hardening Auditor
一款 Python 安全自动化工具,可执行基础的只读 Linux 加固检查,并为 IT、安全、SOC、SIEM 及合规工作流生成多种报告格式。
## 功能
* 收集操作系统信息
* 检查 SSH root 登录配置
* 检查 SSH 密码认证配置
* 检查防火墙状态
* 列出开放的监听端口
* 识别 sudo 组用户
* 检查 `/tmp` 中的全局可写文件
* 检查包更新状态
* 计算总体风险评分
* 分配总体风险等级
* 仅运行选定的检查
* 生成 CSV 报告
* 生成 TXT 摘要报告
* 生成 JSON 报告
* 生成结构化安全发现
* 生成用于 SIEM 摄取的 NDJSON 事件
* 生成 HTML 报告
* 打印建议的修复操作,而不应用更改
* 通过命令行运行
* 包含单元测试
* 包含 GitHub Actions 工作流
## 项目结构
```
python-linux-hardening-auditor/
├── .github/
│ └── workflows/
│ └── python-check.yml
├── docs/
│ ├── screenshots/
│ │ └── .gitkeep
│ ├── audit-checks.md
│ ├── cis-style-categories.md
│ └── project-notes.md
├── reports/
│ └── .gitkeep
├── sample_outputs/
│ ├── linux_hardening_summary_example.txt
│ ├── linux_hardening_report_example.json
│ ├── findings_example.json
│ ├── events_example.ndjson
│ └── linux_hardening_report_example.html
├── src/
│ └── linux_auditor.py
├── tests/
│ └── test_risk_score.py
├── README.md
├── requirements.txt
└── .gitignore
```
## 安全提示
此工具是只读的。
它不会:
* 修改 SSH 设置
* 启用或禁用防火墙规则
* 修改用户
* 关闭端口
* 删除文件
* 自动应用加固
它仅进行检查和报告。
`suggest-remediation` 模式会打印建议的操作,但不会应用更改。
## 推荐环境
此工具专为 Linux 系统设计。
推荐的测试环境:
* WSL Ubuntu
* Ubuntu 虚拟机
* Kali 虚拟机
* Linux 实验机
* 测试服务器
该工具可以在 Windows 上运行,但某些特定于 Linux 的检查可能会被跳过或不可用。
## 安装
无需外部依赖。
此项目仅使用 Python 标准库模块。
```
pip install -r requirements.txt
```
## 基本用法
从项目根目录运行审计工具:
```
python src/linux_auditor.py
```
在将 Python 3 调用为 `python3` 的 Linux 系统上,请使用:
```
python3 src/linux_auditor.py
```
## 高级用法
运行所有检查并生成所有报告格式:
```
python src/linux_auditor.py --output reports --format all
```
仅运行选定的检查:
```
python src/linux_auditor.py --checks os,ssh,firewall --output reports --format all
```
仅生成 JSON 报告:
```
python src/linux_auditor.py --format json --output reports
```
仅生成 HTML 报告:
```
python src/linux_auditor.py --format html --output reports
```
打印建议的修复操作而不应用更改:
```
python src/linux_auditor.py --mode suggest-remediation --output reports --format txt
```
## 命令行选项
| 选项 | 描述 | 示例 |
| ---------- | ------------------------------------------------------------------------ | ---------------------------- |
| `--output` | 生成报告的输出目录 | `--output reports` |
| `--format` | 要生成的报告格式:`all`、`csv`、`txt`、`json`、`ndjson`、`html` | `--format json` |
| `--checks` | 要运行的逗号分隔的检查列表 | `--checks os,ssh,firewall` |
| `--mode` | 运行模式:`audit` 或 `suggest-remediation` | `--mode suggest-remediation` |
## 可用检查
该工具支持以下检查名称:
```
os
ssh
firewall
ports
sudo
tmp
updates
```
示例:
```
python src/linux_auditor.py --checks os,ssh,firewall
```
## 审计检查
该工具目前执行以下检查:
| 检查 | 类别 | 用途 |
| ------------------------------ | ------------- | ------------------------------------------------------------ |
| 操作系统 | 系统信息 | 收集 OS、内核、架构和主机名信息 |
| SSH Root 登录 | SSH 加固 | 检查直接 SSH root 登录是否看似被禁用 |
| SSH 密码认证 | SSH 加固 | 检查 SSH 密码认证是否看似被禁用 |
| 防火墙状态 | 网络安全 | 检查 UFW 防火墙状态 |
| 开放端口 | 网络暴露 | 使用 `ss` 或 `netstat` 列出正在监听的 TCP/UDP 服务 |
| Sudo 用户 | 用户权限 | 列出 sudo 组中的用户 |
| `/tmp` 中的全局可写文件 | 文件权限 | 检查 `/tmp` 中是否存在全局可写文件 |
| 包更新状态 | 补丁管理 | 检查是否有可用的包更新 |
更多详情请参见:
```
docs/audit-checks.md
docs/cis-style-categories.md
```
## 风险评分
该工具根据检查发现计算总体风险评分:
```
High = 10 points
Medium = 5 points
Low = 2 points
Info = 0 points
```
风险等级逻辑:
```
0-7 = Low
8-19 = Medium
20+ = High
```
风险评分出现在:
```
linux_hardening_summary.txt
linux_hardening_report.json
linux_hardening_report.html
console output
```
## 生成的报告
脚本会在 `reports/` 文件夹本地生成以下文件:
```
linux_hardening_report.csv
linux_hardening_summary.txt
linux_hardening_report.json
findings.json
events.ndjson
linux_hardening_report.html
```
这些生成的报告文件会被 Git 忽略,不应提交到代码仓库中。
## 报告类型
### CSV 报告
```
linux_hardening_report.csv
```
用于基于电子表格的审查、筛选、排序和手动分析。
### TXT 摘要
```
linux_hardening_summary.txt
```
用于人类可读的审计结果摘要。
### JSON 报告
```
linux_hardening_report.json
```
用于自动化、仪表板、API 或与其他工具的集成。
### Findings JSON
```
findings.json
```
用于以结构化格式表示安全发现。
每项发现包括:
* 发现 ID
* 检查名称
* 类别
* 状态
* 严重性
* 详情
* 建议
### NDJSON 事件
```
events.ndjson
```
用于 SIEM 风格的事件摄取。
每一行都是一个独立的 JSON 事件。
### HTML 报告
```
linux_hardening_report.html
```
用于具有摘要信息和详细检查项的可通过浏览器阅读的报告。
## 控制台输出示例
```
============================================================
Linux Security Hardening Auditor
============================================================
Risk Score: 7
Risk Level: Low
============================================================
INFO | Info | System Information | Operating System
SKIPPED | Info | SSH Hardening | SSH Configuration
SKIPPED | Info | Network Security | Firewall Status
SKIPPED | Info | Network Exposure | Open Ports
SKIPPED | Info | User Privileges | Sudo Users
PASS | Low | File Permissions | World-Writable Files in /tmp
PASS | Low | Patch Management | Package Update Status
============================================================
CSV report created: reports/linux_hardening_report.csv
TXT summary created: reports/linux_hardening_summary.txt
JSON report created: reports/linux_hardening_report.json
Findings JSON created: reports/findings.json
NDJSON events created: reports/events.ndjson
HTML report created: reports/linux_hardening_report.html
```
## JSON 报告结构示例
```
{
"tool_name": "Python Linux Hardening Auditor",
"report_type": "linux_security_hardening_audit",
"generated_at": "2026-06-18T13:00:00+00:00",
"host": "ubuntu-lab",
"platform": {
"system": "Linux",
"release": "6.5.0",
"machine": "x86_64"
},
"risk": {
"score": 17,
"level": "Medium"
},
"summary": {
"total_checks": 7,
"pass": 2,
"fail": 1,
"info": 2,
"skipped": 2,
"high": 1,
"medium": 1,
"low": 2,
"info_severity": 3
},
"checks": []
}
```
## 发现示例
```
{
"id": "FINDING-001",
"name": "SSH Root Login",
"category": "SSH Hardening",
"severity": "High",
"status": "FAIL",
"details": "Root login over SSH may not be disabled.",
"recommendation": "Set 'PermitRootLogin no' in /etc/ssh/sshd_config."
}
```
## NDJSON 事件示例
```
{"timestamp":"2026-06-18T13:00:00+00:00","event_type":"linux_hardening_check","host":"ubuntu-lab","category":"SSH Hardening","check_name":"SSH Root Login","status":"FAIL","severity":"High","message":"SSH Root Login returned FAIL with severity High.","recommendation":"Set 'PermitRootLogin no' in /etc/ssh/sshd_config."}
```
## 文档
附加文档存储在 `docs/` 文件夹中:
```
docs/audit-checks.md
docs/project-notes.md
docs/cis-style-categories.md
docs/screenshots/
```
## 示例输出
`sample_outputs/` 文件夹包含选定的示例输出文件,可以安全地在代码仓库中共享。
生成的报告会在 `reports/` 下本地创建,并被 Git 忽略。
示例文件:
```
sample_outputs/linux_hardening_summary_example.txt
sample_outputs/linux_hardening_report_example.json
sample_outputs/findings_example.json
sample_outputs/events_example.ndjson
sample_outputs/linux_hardening_report_example.html
```
## SOC / SIEM 输出
此项目生成安全运营中常用的多种输出格式:
* 用于基于电子表格审查的 CSV
* 用于人类可读摘要的 TXT
* 用于自动化、仪表板和 API 的 JSON
* 用于结构化安全发现的 `findings.json`
* 用于 SIEM/日志摄取工作流的 `events.ndjson`
* 用于浏览器可读报告的 HTML
## GitHub Actions
此项目包含一个 GitHub Actions 工作流,它可以:
* 检查 Python 语法
* 运行单元测试
* 在 Ubuntu runner 上运行审计工具
工作流文件:
```
.github/workflows/python-check.yml
```
## 测试
在本地运行单元测试:
```
python -m unittest discover -s tests
```
当前的测试涵盖:
* 风险评分计算
* 总体风险等级分类
## 要求
无需外部依赖。
此项目仅使用 Python 标准库模块:
* argparse
* csv
* html
* json
* platform
* subprocess
* datetime
* pathlib
* unittest
## 展现的技能
* Python 自动化
* Linux 安全基础
* Linux 加固检查
* 安全的只读命令执行
* SSH 配置审查
* 防火墙状态审查
* 开放端口审查
* Sudo 用户审查
* 文件权限审查
* 补丁管理意识
* 风险评分
* 使用 `argparse` 处理命令行参数
* CSV 报告生成
* TXT 摘要生成
* JSON 报告生成
* NDJSON 事件生成
* HTML 报告生成
* 结构化发现
* 单元测试
* GitHub Actions
* 对 SOC/SIEM 友好的输出格式
* IT/安全自动化工作流
## 简历描述示例
开发了一个 Python Linux 加固审计工具,该工具执行只读安全检查,审查 SSH 配置、防火墙状态、开放端口、sudo 用户、文件权限和包更新状态,计算风险评分,支持命令行选项,并为 IT、安全、SOC、SIEM 及合规工作流生成 CSV/TXT/JSON/NDJSON/HTML 报告。
标签:PE 加载器, Python, SQL, Web报告查看器, 合规报告, 安全基线检查, 安全运营, 扫描框架, 无后门, 系统审计, 自动化运维, 逆向工具