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报告查看器, 合规报告, 安全基线检查, 安全运营, 扫描框架, 无后门, 系统审计, 自动化运维, 逆向工具