NWarila/secure-rockylinux9-template
GitHub: NWarila/secure-rockylinux9-template
基于 Packer 和 Ansible 的生产级安全加固 Rocky Linux 9 虚拟机模板构建方案,专为 Proxmox VE 提供开箱即用的 STIG 合规黄金镜像。
Stars: 0 | Forks: 0
# 安全的 Rocky Linux 9 模板
[](https://github.com/NWarila/Secure-RockyLinux9-Template/actions/workflows/packer.yaml)
[](https://github.com/NWarili/Secure-RockyLinux9-Template/actions/workflows/security.yaml)
[](https://github.com/pre-commit/pre-commit)
[](https://conventionalcommits.org)
[](LICENSE)
一个生产级、经过安全加固的 Rocky Linux 9 虚拟机模板,使用
[HashiCorp Packer](https://www.packer.io/) 为
[Proxmox VE](https://www.proxmox.com/en/proxmox-virtual-environment/overview) 构建。此模板
集成了
[Proxmox-Packer-Framework](https://github.com/NWarila/Proxmox-Packer-Framework),以生成
准备用于企业部署的黄金镜像。
## 功能特性
| 类别 | 工具 |
|---|---|
| **OS 加固** | CIS 对齐的分区,挂载选项 (`nodev`, `noexec`, `nosuid`) |
| **配置 provision** | 用户拥有的 Kickstart 模板,Ansible 后配置 |
| **基础设施** | Proxmox VE 集成,UEFI/OVMF 启动,TPM 2.0,Cloud-Init |
| **格式化** | `packer fmt`, markdownlint, yamllint, `.editorconfig` |
| **安全** | Trivy (HIGH/CRITICAL), Gitleaks, CodeQL, `detect-private-key` |
| **提交质量** | 通过 pre-commit hook 强制执行 Conventional Commits |
| **CI/CD** | GitHub Actions (构建,安全扫描,发布自动化) |
| **依赖管理** | Dependabot (GitHub Actions ecosystem) |
## 前置条件
| 工具 | 版本 | 用途 |
|---|---|---|
| [Packer](https://www.packer.io/) | >= 1.15 | VM 模板构建器 |
| [Ansible](https://docs.ansible.com/) | latest | 构建后 provision |
| [pre-commit](https://pre-commit.com/) | >= 4.0.0 | Git hook 框架 |
| [Gitleaks](https://github.com/gitleaks/gitleaks) | >= 8.24.0 | 密钥检测 |
| [yamllint](https://github.com/adrienverge/yamllint) | latest | YAML linting |
| [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) | latest | Markdown linting |
## 快速开始
### 1. 克隆仓库
```
git clone https://github.com/NWarila/Secure-RockyLinux9-Template.git
cd Secure-RockyLinux9-Template
```
### 2. 安装 Pre-Commit Hooks
```
pip install pre-commit
pre-commit install --hook-type pre-commit --hook-type pre-push --hook-type commit-msg
```
### 3. 配置环境
在你的 GitHub 仓库设置中设置所需的 secrets(或在本地导出以进行测试):
| 变量 | 描述 |
|---|---|
| `PROXMOX_HOSTNAME` | Proxmox API 端点 (secret) |
| `PROXMOX_PACKER_FRAMEWORK_TOKEN_ID` | API token ID (secret) |
| `PROXMOX_PACKER_FRAMEWORK_SECRET` | API token secret (secret) |
| `PROXMOX_NODE` | 目标 Proxmox 节点 (secret) |
| `PROXMOX_SKIP_TLS_VERIFY` | 跳过 TLS 验证 (变量,默认 `false`) |
| `DEPLOY_USER_NAME` | 部署用户账户名称 (secret) |
| `DEPLOY_USER_PASSWORD` | 部署用户密码 (secret) |
| `DEPLOY_USER_PUBLIC_KEY` | 部署用户 SSH 公钥 (secret) |
### 4. 自定义模板
编辑 `packer/systems.auto.pkrvars.hcl` 以匹配你的环境(VM ID、网络、存储池等)。
如果你需要修改固定的分区方案或 Kickstart 安装模板,请自定义 `packer/ks.pkrtpl.hcl`。
如果你需要调整用户拥有的 Ansible 入口点,请自定义 `packer/rocky-linux-9.yml`。
## 项目结构
```
.
├── packer/ # Consumer-owned Packer inputs
│ ├── ks.pkrtpl.hcl # Kickstart template (framework contract)
│ ├── rocky-linux-9.yml # Post-build hardening playbook
│ └── systems.auto.pkrvars.hcl # Packer variables (VM configuration)
├── .config/ # Linter and tool configurations
│ ├── .markdownlint.json # Markdown linting rules
│ └── .yamllint.yaml # YAML linting rules
├── .github/
│ ├── CODEOWNERS # Code review ownership
│ ├── FUNDING.yml # Sponsorship configuration
│ ├── dependabot.yml # Automated dependency updates
│ ├── pull_request_template.md
│ ├── ISSUE_TEMPLATE/ # Structured issue forms
│ └── workflows/
│ ├── packer.yaml # Build & validate pipeline
│ ├── security.yaml # Trivy + Gitleaks scanning
│ ├── codeql.yaml # CodeQL SAST analysis
│ └── release-please.yaml # Automated versioning
├── .vscode/ # Editor workspace configuration
│ ├── extensions.json # Recommended extensions
│ ├── settings.json # Editor settings
│ └── tasks.json # Build & validation tasks
├── .editorconfig # Cross-editor formatting
├── .gitattributes # Line endings, linguist, export-ignore
├── .gitignore # Allowlist-style ignore rules
├── .pre-commit-config.yaml # Git hook definitions
├── .release-please-manifest.json
├── release-please-config.json
├── CHANGELOG.md # Auto-generated changelog
├── CODE_OF_CONDUCT.md # Contributor Covenant
├── CONTRIBUTING.md # Contribution guidelines
├── LICENSE # MIT License
├── README.md
├── SECURITY.md # Security policy & disclosure
└── SUPPORT.md # Support scope & guidelines
```
## 开发者工作流
### Pre-Commit 钩子
每次提交和推送都会运行自动化检查:
- **文件质量** - 尾部空格、行尾、大文件、合并冲突
- **密钥检测** - Gitleaks 扫描硬编码的密钥
- **Packer 格式化** - `packer fmt -check` 强制执行规范的 HCL 风格
- **YAML linting** - 根据严格的规则验证所有 YAML 文件
- **Markdown linting** - 强制执行一致的文档风格
- **Conventional Commits** - 提交消息必须遵循规范
### VS Code 任务
按 `Ctrl+Shift+B` 运行 **Full Validation** 组合任务,或运行单个任务:
- **Packer: Format** / **Format Check** / **Init** / **Validate**
- **YAML Lint** / **Markdown Lint**
- **Trivy: Security Scan**
- **Pre-Commit: Run All**
## CI/CD 流水线
| 工作流 | 触发器 | 用途 |
|---|---|---|
| **Packer Build** | 推送到 `main`,手动 | 格式化、验证并构建 VM 模板 |
| **Security Scan** | 推送、PR、每周计划 | Trivy 文件系统/密钥扫描 + Gitleaks |
| **CodeQL Analysis** | 推送、PR、每周计划 | GitHub Actions 工作流的静态分析 |
| **Release Please** | 推送到 `main` | 自动化语义版本控制和变更日志 |
## VM 模板规格
| 组件 | 配置 |
|---|---|
| **OS** | Rocky Linux 9.6 (x86_64) |
| **Boot** | UEFI (OVMF), TPM 2.0 |
| **CPU** | 2 核,主机直通 |
| **内存** | 4096 MB |
| **磁盘** | 100 GB (LVM,安全加固分区) |
| **网络** | virtio 适配器,VLAN 标记 |
| **Provisioning** | Kickstart (用户拥有的模板) + Cloud-Init + Ansible |
### 磁盘分区 (CIS 对齐)
| 分区 | 大小 | 挂载点 | 选项 |
|---|---|---|---|
| EFI | 1024 MB | `/boot/efi` | - |
| Boot | 1024 MB | `/boot` | - |
| Root | 10240 MB | `/` | - |
| Home | 4096 MB | `/home` | `nodev,nosuid` |
| Opt | 2048 MB | `/opt` | `nodev` |
| Tmp | 4096 MB | `/tmp` | `nodev,noexec,nosuid` |
| Var | 2048 MB | `/var` | `nodev` |
| Var-Tmp | 1000 MB | `/var/tmp` | `nodev,noexec,nosuid` |
| Var-Log | 4096 MB | `/var/log` | `nodev,noexec,nosuid` |
| Var-Audit | 500 MB | `/var/log/audit` | `nodev,noexec,nosuid` |
## 安全
有关漏洞披露政策,请参阅 [SECURITY.md](SECURITY.md)。
## 许可证
本项目基于 [MIT License](LICENSE) 授权。
标签:Ansible, ATTACK-Python-Client, CIS Benchmark, Cloud-Init, DevSecOps, GitHub Actions, Golden Image, HashiCorp Packer, Kickstart, Packer, PE 加载器, Proxmox VE, Rocky Linux, STIG, TPM 2.0, UEFI, 上游代理, 人工智能安全, 代码安全, 企业级部署, 合规性, 无线安全, 服务器配置, 漏洞枚举, 系统加固, 系统提示词, 网络安全, 网络安全审计, 自动化运维, 自动笔记, 虚拟化, 镜像构建, 防御基线, 隐私保护