PrivSecOpsLabs/network-hardening-scanner
GitHub: PrivSecOpsLabs/network-hardening-scanner
Stars: 0 | Forks: 0
# 网络加固扫描器
[](https://github.com/privsecops-lab/network-hardening-scanner/actions)
[](https://github.com/privsecops-lab/network-hardening-scanner)
[](https://www.python.org/)
[](LICENSE)
[](https://www.cisecurity.org/cis-benchmarks)
## 功能说明
网络加固扫描器是一个 Python CLI 工具,用于根据安全加固基线审计 Linux 主机或基于 Docker 的实验环境。它会枚举开放端口和运行中的服务,将实时状态与可配置的 CIS 基准对齐策略进行比较,对每个检查结果进行评分(通过 / 警告 / 失败),并输出包含修复指导的独立 HTML 报告。
该工具既可用于手动执行,也支持自动执行——GitHub Actions 工作流会在每次向 `main` 分支推送代码时,在故意配置错误的实验环境中运行扫描器,使安全回归在 CI 中可见。
**它解决的问题:** 手动检查加固状态容易出错且难以重复。此工具使加固评估可脚本化、可比对、可审计。
## 快速开始
```
# 克隆仓库
git clone git@github.com:privsecops-lab/network-hardening-scanner.git
cd network-hardening-scanner
# 构建并启动实验室(scanner + 目标虚拟机)
docker compose up --build
# 对目标运行扫描器
docker compose exec scanner python scan.py --target lab-target --output report.html
# 打开报告
open report.html # or xdg-open on Linux
```
要求:Docker 24+,Docker Compose v2。不需要本地 Python 安装。
## 架构
```
┌─────────────────────────────────────────────────┐
│ Docker Compose Lab │
│ │
│ ┌─────────────────┐ ┌───────────────────┐ │
│ │ scanner │────▶│ lab-target │ │
│ │ (Python CLI) │ │ (Ubuntu 22.04) │ │
│ │ │ │ deliberately │ │
│ │ • Nmap wrapper │ │ misconfigured: │ │
│ │ • netstat parse│ │ • open ports │ │
│ │ • baseline diff│ │ • weak SSH config │ │
│ │ • HTML reporter│ │ • exposed services│ │
│ └────────┬────────┘ └───────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ report.html │ ← scored findings + │
│ │ (self-contained│ remediation steps │
│ └─────────────────┘ │
└─────────────────────────────────────────────────┘
GitHub Actions runs this full scan on every push to main.
```
## 计分机制
扫描器从 `baseline/policy.yaml` 加载**加固基线**,并与实时扫描结果进行比较。每个检查会产生三种结果之一:
| 状态 | 含义 |
|------|------|
| ✅ 通过 | 实时状态与预期的安全配置匹配 |
| ⚠️ 警告 | 检测到偏差但不可立即利用 |
| ❌ 失败 | 明显的配置错误,需要修复 |
整体得分为加权百分比。失败项的权重是警告项的 3 倍。
### 示例策略检查(YAML)
```
checks:
- id: NET-001
description: SSH should not permit root login
category: SSH Hardening
severity: FAIL
check:
type: file_contains
path: /etc/ssh/sshd_config
pattern: "PermitRootLogin no"
- id: NET-002
description: Port 23 (Telnet) should not be open
category: Open Ports
severity: FAIL
check:
type: port_closed
port: 23
```
## 项目结构
```
network-hardening-scanner/
├── scanner/
│ ├── scan.py # CLI entrypoint
│ ├── nmap_wrapper.py # Nmap scan execution and parsing
│ ├── netstat_parser.py # Local service enumeration
│ ├── baseline_diff.py # Compare live state vs policy
│ └── reporter.py # HTML report generation
├── baseline/
│ └── policy.yaml # Hardening checks (CIS-aligned)
├── lab/
│ ├── Dockerfile.target # Deliberately misconfigured Ubuntu target
│ └── setup.sh # Installs and misconfigures services
├── .github/
│ └── workflows/
│ └── ci.yml # Runs scanner in CI on every push
├── docker-compose.yml
├── requirements.txt
└── README.md
```
## 标准对齐
加固检查来源于以下来源:
- **CIS Ubuntu Linux 22.04 LTS 基准 v1.0** — SSH 加固、防火墙规则、不必要的服务
- **NIST SP 800-123** — 通用服务器安全原则
- **Docker CIS 基准 v1.6** — 容器特定检查(应用于扫描器容器本身)
每个策略检查都会引用其源代码控制 ID(在 `policy.yaml` 中),以确保可追溯性。
## 路线图
- [x] 使用配置错误目标的 Docker Compose 实验环境
- [x] Nmap 封装与端口枚举
- [x] 基于 YAML 的策略基线
- [ ] 基线差异引擎与计分
- [ ] HTML 报告生成器
- [ ] GitHub Actions CI 集成
- [ ] CIS SSH 加固检查(NET-001 至 NET-012)
- [ ] 防火墙规则评估(ufw/iptables)
- [ ] JSON 报告导出以支持下游工具
- [ ] 可选、带开关控制的修复自动应用模式
## 团队
## 许可证
MIT — 参见 [LICENSE](LICENSE)。
*属于 [PrivSecOps 实验室](https://github.com/privsecops-lab) 项目组合的一部分。
标签:AES-256, Anthropic, CIS基准, CI集成, Docker, GitHub Actions, HTML报告, Linux主机审计, NIDS, Nmap, Python CLI, Scapy, 云存储安全, 安全合规, 安全回归测试, 安全基线, 安全防御评估, 容器化, 对称加密, 开源安全工具, 教学环境, 漏洞评估, 硬编码配置, 端口审计, 网络代理, 网络安全, 网络扫描, 自动化审计, 自动笔记, 虚拟驱动器, 逆向工程平台, 隐私保护