cyberaar/cyberaar-toolkit
GitHub: cyberaar/cyberaar-toolkit
基于Ansible的Linux服务器安全加固工具包,提供基线审计、自动化加固和可视化报告的完整流水线。
Stars: 9 | Forks: 3
# cyberaar-toolkit
[](https://www.gnu.org/licenses/gpl-3.0)
[](CONTRIBUTING.md)
[](https://github.com/cyberaar/cyberaar-toolkit/issues)
[](https://github.com/cyberaar/cyberaar-toolkit/releases)
[](https://galaxy.ansible.com/ui/repo/published/cyberaar/hardening/)
[](https://github.com/cyberaar/cyberaar-toolkit/actions/workflows/molecule.yml)
[](https://github.com/cyberaar/cyberaar-toolkit/actions/workflows/baseline-build.yml)
[](https://github.com/cyberaar/cyberaar-toolkit/pkgs/container/ee-hardening)
**cyberaar-toolkit** 是一项由志愿者推动的开放式协作,旨在收集和共享**最佳实践**,以保护塞内加尔的关键基础设施免受网络威胁。
受近期塞内加尔公共系统遭受攻击的启发,我们团结了塞内加尔人才(本土及侨民)和全球盟友,共同构建一个**活的、生产就绪的工具包**,提供法语和英语版本。
## 目录
- [内容概览](#whats-inside)
- [仓库结构](#repository-structure)
- [前置条件](#prerequisites)
- [交付成果 0 — Docker 执行环境](#deliverable-0--docker-execution-environment-no-install)
- [交付成果 0b — 安全仪表板](#deliverable-0b--security-dashboard)
- [交付成果 1 — 基线审计脚本](#deliverable-1--baseline-audit-script-cyberaar-baselinesh)
- [交付成果 2 — Ansible 加固集合](#deliverable-2--ansible-hardening-collection)
- [三步流水线](#the-three-step-pipeline)
- [步骤 1 — 加固前基线](#step-1--pre-hardening-baseline)
- [步骤 2 — 系统加固](#step-2--system-hardening)
- [步骤 3 — 加固后基线](#step-3--post-hardening-baseline)
- [运行流水线](#running-the-pipeline)
- [加固角色参考](#hardening-roles-reference)
- [标签参考](#tag-reference)
- [清单与变量配置](#inventory--variable-configuration)
- [敏感变量](#sensitive-variables)
- [报告输出](#report-output)
- [实践与知识库](#practices--knowledge-base) *(→ [cyberaar/Aar-Act](https://github.com/cyberaar/Aar-Act))*
- [目标与目标领域](#goal--target-sectors)
- [如何贡献](#how-to-contribute)
- [许可证](#license)
- [贡献者](#contributors)
## 内容概览
| 交付成果 | 描述 | 版本 |
|-------------|-------------|---------|
| `scripts/cyberaar-baseline.sh` | 独立 bash 脚本 — 对 Linux 服务器执行 96 项安全检查,生成 HTML + JSON 报告及 Ansible 修复计划 | v4.2.0 |
| `ansible-hardening/` | Ansible 集合 (`cyberaar.hardening`) — 51 个符合 CIS 标准的加固角色,适用于 RHEL 9 系列和 Ubuntu/Debian | v2.0.0 |
| `execution-environment/` | Docker 镜像 — 自包含的 EE,内置 Ansible + 集合 + playbook,无需本地安装 | `ghcr.io/cyberaar/ee-hardening` |
| `dashboard/index.html` | 单文件 Web 仪表板 — 可视化多台主机的基线 JSON 报告,支持前后对比、PDF 导出 | 零依赖 |
这三者是独立的:可以单独运行基线脚本,直接使用 Ansible 集合,或者拉取 Docker 镜像以获得零安装体验。
## 仓库结构
```
cyberaar-toolkit/
├── dashboard/
│ └── index.html # Single-file security dashboard (zero dependencies)
├── execution-environment/
│ ├── Containerfile # Docker image definition (build from repo root)
│ └── README.md # EE usage guide
├── scripts/
│ ├── cyberaar-baseline.sh # Standalone audit script (v4.2.0) — generated bundle
│ ├── build.sh # Rebuilds cyberaar-baseline.sh from src/
│ ├── run-hardening.sh # Pipeline runner (wraps ansible-playbook)
│ ├── README.md # Baseline checker full reference
│ └── src/ # Source layout (edit here, not in the bundle)
│ ├── main.sh # Shebang, CLI args, install/uninstall
│ ├── run.sh # Execution entry point
│ ├── lib/ # core.sh, ansible_map.sh, remote.sh
│ ├── checks/ # 8 files — one per check section
│ └── renderers/ # terminal.sh, json.sh, html.sh
├── ansible-hardening/
│ ├── galaxy.yml # Collection metadata (cyberaar.hardening v2.0.0)
│ ├── requirements.yml # ansible.posix + community.general
│ ├── inventory/
│ │ ├── hosts # INI inventory (rhel_servers / ubuntu_servers / dmz_servers)
│ │ └── group_vars/
│ │ ├── all.yml # Global defaults
│ │ ├── linux_servers.yml # Shared Linux defaults
│ │ ├── rhel_servers.yml # RHEL-specific vars + IP prefix
│ │ ├── ubuntu_servers.yml # Ubuntu-specific vars + IP prefix
│ │ └── dmz_servers.yml # Stricter thresholds for DMZ hosts
│ ├── playbooks/
│ │ ├── 0_execute_full_pipeline.yml # Pipeline orchestrator (imports all 3 steps)
│ │ ├── 1_execute_baseline_before.yml # Pre-hardening audit
│ │ ├── 2_configure_hardening.yml # Hardening roles (RHEL9 + Ubuntu)
│ │ └── 3_execute_baseline_after.yml # Post-hardening audit
│ └── roles/ # 51 hardening roles (parallel RHEL9 + Ubuntu)
└── .github/ # Issue templates, PR template
```
## 前置条件
### 控制节点(运行 Ansible 的地方)
```
# Python 3.8+ 和 Ansible 2.14+
pip install ansible
# Required Ansible collections (运行一次)
ansible-galaxy collection install -r ansible-hardening/requirements.yml
# 安装: ansible.posix >=1.5.4 | community.general >=8.0.0
```
### 受管节点(正在加固的服务器)
- **RHEL 9 系列**: RHEL 9, AlmaLinux 9, Rocky Linux 9
- **Ubuntu/Debian**: Ubuntu 20.04, 22.04, 24.04 — Debian 11, 12
- 已安装 Python 3
- 具有 sudo 权限的管理员用户的 SSH 访问权限
- 无需代理 — 通过 SSH 推送
## 交付成果 0 — Docker 执行环境(无需安装)
如果您不想在本地安装 Ansible,请拉取预构建的 Docker 镜像:
```
docker pull ghcr.io/cyberaar/ee-hardening:latest
```
**对远程主机进行 Dry-run 加固(不做任何更改):**
```
docker run --rm -it \
-v ~/.ssh:/root/.ssh:ro \
-v $(pwd)/ansible-hardening/inventory:/inventory:ro \
ghcr.io/cyberaar/ee-hardening:latest \
ansible-playbook \
-i /inventory/hosts \
--extra-vars "target=myserver" \
-u admin -b --check \
/usr/share/cyberaar/playbooks/2_configure_hardening.yml
```
**完整流水线(基线 → 加固 → 基线):**
```
docker run --rm -it \
-v ~/.ssh:/root/.ssh:ro \
-v $(pwd)/ansible-hardening/inventory:/inventory:ro \
-v $(pwd)/reports:/reports \
ghcr.io/cyberaar/ee-hardening:latest \
ansible-playbook \
-i /inventory/hosts \
--extra-vars "target=myserver baseline_output_dir=/reports" \
-u admin -b \
/usr/share/cyberaar/playbooks/0_execute_full_pipeline.yml
```
## 交付成果 0b — 安全仪表板
`dashboard/index.html` 是一个单文件、零依赖的 Web 仪表板,用于可视化整个服务器群的基线报告。无需安装,无需服务器,无需互联网连接。
### 功能
| 功能 | 描述 |
|---|---|
| 服务器群概览 | 每台主机的得分环(绿色 ≥ 80%,琥珀色 ≥ 60%,红色 < 60%),PASS / WARN / FAIL 计数,按最差优先排序 |
| 前后增量 | 加载同一台主机的加固前后报告 — 自动显示得分增量标签 |
| 主机详情面板 | 点击任意主机卡片 — 滑入式面板显示完整检查表 |
| 状态筛选 | 在详情面板内按 FAIL / WARN / PASS 筛选检查项 |
| Ansible 修复 | 可直接复制预填了主机名和清单路径的 `ansible-playbook` 命令 |
| PDF 导出 | 浏览器打印 → PDF(标题和面板自动隐藏) |
| 完全离线 | 无 CDN,无 npm,无构建步骤 — 适用于物理隔离环境 |
### 步骤 1 — 生成 JSON 报告
```
# 直接在本地机器上运行
sudo bash scripts/cyberaar-baseline.sh \
--json-out /tmp/before-$(hostname).json
# 或通过 Ansible (预加固)
ansible-playbook \
-i ansible-hardening/inventory/hosts \
--extra-vars "target=myserver" -u admin -b \
ansible-hardening/playbooks/1_execute_baseline_before.yml
# → 报告保存至 ansible-hardening/reports/before/myserver/report.json
```
### 步骤 2 — 打开仪表板
**Linux / macOS:**
```
xdg-open dashboard/index.html # Linux
open dashboard/index.html # macOS
```
**WSL2 (Windows Subsystem for Linux):**
```
# 选项 A — 通过 Windows 资源管理器打开
explorer.exe dashboard/index.html
# 选项 B — 获取 Windows 路径并粘贴到浏览器
wslpath -w $(pwd)/dashboard/index.html
# 输出: \\wsl$\Ubuntu\...\dashboard\index.html
# 将该路径粘贴到 Chrome / Edge 地址栏
```
**任意平台 — 本地提供:**
```
python3 -m http.server 8080 --directory dashboard/
# 然后在浏览器中打开 http://localhost:8080
```
### 步骤 3 — 加载报告
1. 点击右上角的 **Load Reports** 或将 `.json` 文件拖放到拖放区
2. 仪表板按 `host` 字段对报告进行分组 — 可一次加载多台主机的报告
3. 前后对比:加载同一台主机的两份报告 — 仪表板会根据日期自动检测并显示得分增量
**Ansible 流水线运行后报告的位置:**
```
ansible-hardening/reports/before//report.json ← pre-hardening
ansible-hardening/reports/after//report.json ← post-hardening
```
### 步骤 4 — 探索
- **服务器群视图** — 所有主机一屏显示,得分最差的排在前面
- **点击主机卡片** — 打开包含所有 96 项检查的详情面板
- **筛选** 按 FAIL / WARN / PASS 以关注重点内容
- **Ansible 修复** 块显示了修复 FAIL/WARN 项目的准确命令
- **导出 PDF** — 点击右上角的按钮,然后使用浏览器的打印对话框
## 交付成果 1 — 基线审计脚本 (`cyberaar-baseline.sh`)
独立审计脚本跨 8 个部分运行 **96 项安全检查**,并生成:
- **终端输出** — 带颜色的 PASS / WARN / FAIL 及安全得分
- **HTML 报告** — 自包含文件,用于与管理层或审计人员共享
- **JSON 报告** — 机器可读,适用于 SIEM 或 CI 流水线摄取
- **Ansible 修复计划** — 针对每个失败检查的目标 `ansible-playbook` 命令,映射到正确的角色和标签
无需 Ansible — 纯 bash,除标准 Linux 工具外无其他依赖。
### 安装到 PATH(可选)
```
sudo bash scripts/cyberaar-baseline.sh --install
# 安装至 /usr/local/bin/cyberaar-baseline
```
### 运行本地审计
```
# 无需安装
sudo bash scripts/cyberaar-baseline.sh \
--html-out /tmp/report.html \
--json-out /tmp/report.json
# 安装至 PATH 后
sudo cyberaar-baseline --output-dir /var/log/cyberaar
# 远程单台主机
cyberaar-baseline --host 10.0.1.10 --user admin --output-dir /var/log/cyberaar
# 从 Ansible inventory 进行批量扫描
cyberaar-baseline --inventory ansible-hardening/inventory/hosts \
--user admin --output-dir /var/log/cyberaar
```
### 检查内容
跨 8 个部分的 96 项检查 — 每一项都映射到一个 CIS 基准控制项:
| 部分 | 检查项 | 覆盖重点 |
|---|---|---|
| 1. 系统与操作系统 | 10 | 操作系统支持、内核更新、SELinux/AppArmor、时间同步、GRUB 权限、Secure Boot、`/dev/shm`、Ctrl-Alt-Del |
| 2. 认证 | 16 | Root 锁定、空密码、密码期限/复杂度、faillock 锁定、Shell 超时、UID 0 审计、group/gshadow 权限、sudo use_pty、sudo 日志文件 |
| 3. SSH 加固 | 15 | 15 个 sshd_config 指令,包括加密算法、会话超时、Banner、PermitEmpty、HostbasedAuth、sshd_config 权限 |
| 4. 文件系统 | 12 | 全局可写文件、SUID 数量、noexec 挂载、粘滞位、crontab 权限、无主文件、SSH 密钥权限 |
| 5. 网络 | 12 | 防火墙、IP 转发、ICMP 重定向、SYN cookies、源路由、火星日志、rp_filter、IPv6 RA、禁用无线 |
| 6. 日志与审计 | 8 | auditd、rsyslog、logrotate、审计规则、日志大小、启动时 `audit=1`、journald 持久化、远程 syslog |
| 7. 完整性 | 8 | AIDE、rootkit 扫描器、可疑 cron、开放端口、软件包 GPG 检查、fail2ban、AIDE 数据库、cron 目录权限 |
| 8. 合规性 | 12 | 法律 Banner、/tmp 分区、/home+/var 分区、umask、ASLR、kptr_restrict、dmesg_restrict、ptrace、USB 黑名单、cron 服务、cron.allow/at.allow |
需要人工判断的检查会在输出中标记为 `(manual review required)` — 脚本会高亮显示它们,由操作员决定。
## 交付成果 2 — Ansible 加固集合
Ansible 集合 (`cyberaar.hardening`) 包含 **51 个加固角色**,以并行对的方式组织 — 每个控制区域都有一个 `_rhel9` 变体和一个 `_ubuntu` 变体(加上一些仅限 Ubuntu 的角色,如 `fail2ban`)。操作系统检测是自动的:playbook 根据 `ansible_os_family` 应用正确的角色集。
### 三步流水线
```
playbooks/0_execute_full_pipeline.yml
│
├── Step 1 — 1_execute_baseline_before.yml [tags: baseline, before]
│ ├── Copies cyberaar-baseline.sh to each remote host
│ ├── Runs the audit script
│ ├── Fetches HTML + JSON reports back to the control node
│ └── Reports saved to:
│ ansible-hardening/reports/before//
│
├── Step 2 — 2_configure_hardening.yml [tags: hardening]
│ ├── Verifies OS is supported (RedHat or Debian family)
│ ├── Detects OS family and applies the matching role set
│ ├── 51 roles applied in CIS dependency order:
│ │ kernel → MAC → auth → users → SSH → firewall →
│ │ network → ipv6 → wireless → crypto → audit →
│ │ journald → integrity → time → boot → banner →
│ │ services → updates → coredump → system →
│ │ mounts → secureboot → permissions → sudo →
│ │ cron → fail2ban
│ └── Each role is independently skippable via _disabled=true
│
└── Step 3 — 3_execute_baseline_after.yml [tags: baseline, after]
├── Re-runs the audit script on each remote host
├── Fetches updated HTML + JSON reports
├── Reports saved to:
│ ansible-hardening/reports/after//
└── Compare before/ vs after/ to measure hardening impact
```
**报告对比**:完整流水线运行后,并排打开 `reports/before//report.html` 和 `reports/after//report.html`,以查看每个控制类别的安全得分提升情况。
### 步骤 1 — 加固前基线
在进行任何更改**之前**捕获每台主机的安全态势。这是您的基线测量。
```
# 仅运行步骤 1
bash scripts/run-hardening.sh -u -t -s 1
# 或直接使用 ansible-playbook
ansible-playbook \
-u -b \
-i ansible-hardening/inventory/hosts \
--extra-vars "target=linux_servers" \
--tags baseline \
ansible-hardening/playbooks/1_execute_baseline_before.yml
```
报告本地保存到 `ansible-hardening/reports/before//`。
### 步骤 2 — 系统加固
对每台主机应用所有适用的符合 CIS 标准的加固角色。操作系统检测是自动的 — 您不需要分别为 RHEL 和 Ubuntu 主机运行。
```
# 试运行 (check mode — 不应用更改,始终从这里开始)
bash scripts/run-hardening.sh -u -t -s 2 -c
# 应用全部加固
bash scripts/run-hardening.sh -u -t -s 2
# 仅应用特定类别 (例如 SSH)
bash scripts/run-hardening.sh -u -t -T ssh
# 跳过角色而不修改 playbook
bash scripts/run-hardening.sh -u -t \
-- --extra-vars "linux_bootloader_password_rhel9_disabled=true"
```
### 步骤 3 — 加固后基线
重新对每台主机运行审计,以衡量加固的影响。JSON 输出也可以摄取到 SIEM 或仪表板中。
```
# 仅运行步骤 3
bash scripts/run-hardening.sh -u -t -s 3
# 或直接
ansible-playbook \
-u -b \
-i ansible-hardening/inventory/hosts \
--extra-vars "target=linux_servers" \
--tags baseline \
ansible-hardening/playbooks/3_execute_baseline_after.yml
```
报告保存到 `ansible-hardening/reports/after//`。
## 运行流水线
### `run-hardening.sh` 包装脚本(推荐)
该脚本通过向上遍历目录树自动发现 `ansible-hardening/` — 可以在仓库的任何位置运行它。
```
Usage: bash scripts/run-hardening.sh [options]
Options:
-u USER SSH admin user (default: ansible)
-t TARGET Ansible host or group (default: linux_servers)
-s STEP Step: 1 | 2 | 3 | all (default: 2)
-T TAGS Override tags for step 2 (default: hardening)
-K Prompt for sudo password
-c Check mode (--check --diff, no changes applied)
-h Show help
```
**常见工作流:**
```
# 1. 连通性检查
ansible -i ansible-hardening/inventory/hosts linux_servers -m ping
# 2. 在单台 Ubuntu 主机上试运行步骤 2
bash scripts/run-hardening.sh -u ubuntu -t ubuntu-vm-01 -s 2 -c
# 3. 完整 3 步管道试运行 (baseline → harden → baseline)
bash scripts/run-hardening.sh -u ubuntu -t ubuntu-vm-01 -s all -c
# 4. 对 Rocky Linux 主机应用完整管道
bash scripts/run-hardening.sh -u rockylinux -t rocky-vm-01 -s all
# 5. 仅对所有 Linux 服务器加固 SSH
bash scripts/run-hardening.sh -u ansible -t linux_servers -T ssh
# 6. 带有 sudo 密码提示的完整管道
bash scripts/run-hardening.sh -u ansible -t linux_servers -s all -K
```
日志自动保存到 `~/logs/-hardening-.log`。
### 直接使用 `ansible-playbook`
```
# 在单台主机上试运行步骤 2
ANSIBLE_LOG_PATH=~/logs/$(date +%Y-%m-%d)-hardening.log \
ansible-playbook --diff --check \
-u -b \
-i ansible-hardening/inventory/hosts \
--extra-vars "target=ubuntu-vm-01" \
--tags hardening \
ansible-hardening/playbooks/2_configure_hardening.yml
# 对整个组应用加固
ANSIBLE_LOG_PATH=~/logs/$(date +%Y-%m-%d)-hardening.log \
ansible-playbook --diff \
-u -b \
-i ansible-hardening/inventory/hosts \
--extra-vars "target=rhel_servers" \
--tags hardening \
ansible-hardening/playbooks/2_configure_hardening.yml
# 通过 0_execute_full_pipeline.yml 执行完整 3 步管道
ansible-playbook --diff \
-u -b \
-i ansible-hardening/inventory/hosts \
--extra-vars "target=linux_servers" \
ansible-hardening/playbooks/0_execute_full_pipeline.yml
```
## 加固角色参考
每个控制区域都有**两个并行角色** — 一个用于 RHEL 9 系列,一个用于 Ubuntu/Debian。两者在单个 play 中应用;正确的角色通过 `ansible_os_family` 自动激活。
| 控制区域 | RHEL 9 角色 | Ubuntu/Debian 角色 | CIS 部分 |
|---|---|---|---|
| 内核加固与 sysctl | `linux_kernel_hardening_rhel9` | `linux_kernel_hardening_ubuntu` | 3.x, 4.x |
| 强制访问控制 | `linux_selinux_rhel9` | `linux_apparmor_ubuntu` | 1.6 |
| 认证与 PAM | `linux_authselect_rhel9` | `linux_authselect_ubuntu` | 5.3 |
| 用户管理 | `linux_user_management_rhel9` | `linux_user_management_ubuntu` | 5.4, 5.5 |
| SSH 加固 | `linux_hardening_rhel9` | `linux_ssh_hardening_ubuntu` | 5.2 |
| 防火墙 | `linux_firewalld_rhel9` | `linux_firewall_ubuntu` | 3.5 |
| IP 转发 / 网络参数 | `linux_ip_forwarding_rhel9` | `linux_ip_forwarding_ubuntu` | 3.1, 3.2 |
| 加密策略 / TLS | `linux_crypto_policies_rhel9` | `linux_crypto_policies_ubuntu` | 1.10 |
| 审计与 rsyslog | `linux_auditing_rhel9` | `linux_auditing_ubuntu` | 4.1, 4.2 |
| 文件完整性 (AIDE) | `linux_aide_rhel9` | `linux_aide_ubuntu` | 1.4 |
| 时间同步 | `linux_chrony_rhel9` | `linux_chrony_ubuntu` | 2.1.1 |
| 引导加载程序密码 | `linux_bootloader_password_rhel9` | `linux_bootloader_password_ubuntu` | 1.5.2 |
| 登录 Banner | `linux_login_banner_rhel9` | `linux_login_banner_ubuntu` | 1.8 |
| 禁用不必要的服务 | `linux_disable_unnecessary_services_rhel9` | `linux_disable_unnecessary_services_ubuntu` | 2.1 |
| 自动更新 | `linux_dnf_automatic_rhel9` | `linux_unattended_upgrades_ubuntu` | 1.9 |
| 核心转储限制 | `linux_core_dumps_rhel9` | `linux_core_dumps_ubuntu` | 1.6.4 |
| 禁用 Ctrl-Alt-Del | `linux_ctrl_alt_del_rhel9` | `linux_ctrl_alt_del_ubuntu` | 1.6.1 |
| /tmp 与 /dev/shm 挂载 | `linux_tmp_mounts_rhel9` | `linux_tmp_mounts_ubuntu` | 1.1.x |
| Secure Boot | `linux_secure_boot_rhel9` | `linux_secure_boot_ubuntu` | 1.5.1 |
| 文件权限 | `linux_file_permissions_rhel9` | `linux_file_permissions_ubuntu` | 6.1 |
| Fail2ban | `linux_fail2ban_rhel9` | `linux_fail2ban_ubuntu` | — |
| 无线接口 | `linux_wireless_rhel9` | `linux_wireless_ubuntu` | 3.1.2 |
| Sudo 加固 | `linux_sudo_hardening_rhel9` | `linux_sudo_hardening_ubuntu` | 1.3.2–1.3.3 |
| Cron 加固 | `linux_cron_hardening_rhel9` | `linux_cron_hardening_ubuntu` | 5.1 |
| 禁用 IPv6 | `linux_ipv6_rhel9` | `linux_ipv6_ubuntu` | 3.3.1 |
| journald 加固 | `linux_journald_rhel9` | `linux_journald_ubuntu` | 4.2.1.x |
**RHEL 9 技术栈**: `firewalld`, `SELinux`, `dnf-automatic`, `authselect`, `grub2`
**Ubuntu/Debian 技术栈**: `ufw`, `AppArmor`, `unattended-upgrades`, `PAM`, `grub`
### 角色内部结构
每个角色使用双文件任务模式:
```
roles//
├── defaults/main.yml # All tunable variables with safe defaults
├── handlers/main.yml # Service restart / reload handlers
└── tasks/
├── main.yml # Gating only: checks _disabled, then imports tasks.yml
└── tasks.yml # Actual task implementation
```
**在不修改 playbook 的情况下禁用任何角色**:
```
# 通过 run-hardening.sh extra-vars
ansible-playbook ... --extra-vars "linux_bootloader_password_rhel9_disabled=true"
# 或在 group_vars/host_vars 中设置
linux_aide_ubuntu_disabled: true
```
## 标签参考
使用标签仅运行流水线的一部分。所有标签都适用于 `--tags` 和 `--skip-tags`。
| 标签 | 激活的角色 |
|-----|----------------|
| `hardening` | 所有加固角色 |
| `kernel`, `sysctl` | `linux_kernel_hardening_*`, `linux_ip_forwarding_*` |
| `mac` | `linux_selinux_rhel9`, `linux_apparmor_ubuntu` |
| `auth`, `pam` | `linux_authselect_*` |
| `users` | `linux_user_management_*` |
| `ssh` | `linux_ssh_hardening_*` |
| `firewall` | `linux_firewalld_rhel9`, `linux_firewall_ubuntu` |
| `network` | `linux_ip_forwarding_*`, 防火墙角色 |
| `ipv6` | `linux_ipv6_rhel9`, `linux_ipv6_ubuntu` |
| `crypto`, `tls` | `linux_crypto_policies_*` |
| `audit`, `logging` | `linux_auditing_*` |
| `journald` | `linux_journald_rhel9`, `linux_journald_ubuntu` |
| `integrity`, `aide` | `linux_aide_*` |
| `time`, `ntp` | `linux_chrony_*` |
| `boot`, `grub` | `linux_bootloader_password_*` |
| `secureboot` | `linux_secure_boot_*` |
| `banner` | `linux_login_banner_*` |
| `services` | `linux_disable_unnecessary_services_*` |
| `updates`, `patching` | `linux_dnf_automatic_rhel9`, `linux_unattended_upgrades_ubuntu` |
| `coredump` | `linux_core_dumps_*` |
| `system` | `linux_ctrl_alt_del_*` |
| `mounts`, `filesystem` | `linux_tmp_mounts_*`, `linux_file_permissions_*` |
| `permissions` | `linux_file_permissions_*` |
| `fail2ban` | `linux_fail2ban_rhel9`, `linux_fail2ban_ubuntu` |
| `wireless` | `linux_wireless_rhel9`, `linux_wireless_ubuntu` |
| `sudo` | `linux_sudo_hardening_rhel9`, `linux_sudo_hardening_ubuntu` |
| `cron` | `linux_cron_hardening_rhel9`, `linux_cron_hardening_ubuntu` |
| `baseline` | 基线审计步骤(步骤 1 和 3) |
| `before` | 仅步骤 1 |
| `after` | 仅步骤 3 |
## 清单与变量配置
### 清单文件 — `inventory/hosts` (INI 格式)
```
[rhel_servers]
rocky-vm-01 index="139"
[ubuntu_servers]
ubuntu-vm-01 index="132"
[dmz_servers]
# 此处的 hosts 通过 group_vars/dmz_servers.yml 接收更严格的阈值
[linux_servers:children]
rhel_servers
ubuntu_servers
# dmz_servers 故意排除 — 单独管理
```
每台主机的 `ansible_host` IP 派生自 `index` 变量,结合 `group_vars/rhel_servers.yml` 或 `group_vars/ubuntu_servers.yml` 中定义的网络前缀。
主机的命名约定遵循:`.---.corp.example.com`
- `site`: 地理代码(例如 `dk` = Dakar, `th` = Thiès)
- `env`: `pr` = prod, `st` = staging, `dv` = dev
- `os`: `rh` = RHEL, `ku` = Ubuntu
### 变量优先级(低 → 高)
```
group_vars/linux_servers.yml ← shared defaults
└── group_vars/rhel_servers.yml ← RHEL-specific overrides
└── group_vars/ubuntu_servers.yml ← Ubuntu-specific overrides
└── group_vars/dmz_servers.yml ← DMZ stricter overrides
└── host_vars/.yml ← per-host overrides
└── --extra-vars at runtime ← highest precedence
```
每个角色的 `defaults/main.yml` 都公开了所有可调参数。运行前请检查它们,以了解将在您的环境中应用什么。
## 敏感变量
引导加载程序密码**绝不能**提交或存储在清单中。在运行流水线之前立即在 Shell 中设置它,然后取消设置:
```
# 运行前设置
read -sr LINUX_BOOTLOADER_PASSWORD
export LINUX_BOOTLOADER_PASSWORD
# 运行管道
bash scripts/run-hardening.sh -u -t -s all
# 随后立即取消设置
unset LINUX_BOOTLOADER_PASSWORD
```
如果未设置 `LINUX_BOOTLOADER_PASSWORD`,`run-hardening.sh` 将发出警告,并且 `linux_bootloader_password_*` 角色将被自动跳过。
## 报告输出
运行步骤 1 和 3 后,HTML 和 JSON 报告将保存在本地:
```
ansible-hardening/reports/
├── before/
│ └── /
│ ├── report.html # Human-readable audit report (pre-hardening)
│ └── report.json # Machine-parseable report (pre-hardening)
└── after/
└── /
├── report.html # Human-readable audit report (post-hardening)
└── report.json # Machine-parseable report (post-hardening)
```
并排打开 `before/` 和 `after/` HTML 报告,以可视化每个控制类别的安全得分提升情况。JSON 报告可以摄取到 SIEM、Elasticsearch 或自定义仪表板中。
## 实践与知识库
社区维护的安全指南和模板已移至其自己的仓库:
**[cyberaar/Aar-Act](https://github.com/cyberaar/Aar-Act)** — 实践(英语)、翻译(法语)和塞内加尔特定示例。
## 目标与目标领域
构建一个**免费的、社区维护的安全工具包**,为以下领域提供实用的、适应环境的工具和指南:
- 政府与公共行政
- 能源与公用事业
- 金融与银行
- 电信与关键系统
- 医疗保健与交通
## 如何贡献
无需长期承诺 — 有 10 分钟时间时添加一个改进即可。
1. **浏览**现有部分或通过 [Issues](https://github.com/cyberaar/cyberaar-toolkit/issues) 建议新部分
2. **Fork** 本仓库或创建分支
3. **添加或编辑** — `ansible-hardening/roles/` 中的加固角色,或 [cyberaar/Aar-Act](https://github.com/cyberaar/Aar-Act) 中的指南
4. **提交** Pull Request — 添加加固控制项时引用 CIS 基准部分
5. 在贡献者列表中获得**荣誉**
新的加固角色应遵循 `linux__` 命名约定,并包含并行的 RHEL9 和 Ubuntu 实现。
**为基线脚本做贡献:** `cyberaar-baseline.sh` 是一个生成的包 — 请勿直接编辑它。编辑 `scripts/src/` 下的源文件,然后重新构建:
```
bash scripts/build.sh
bash -n scripts/cyberaar-baseline.sh # verify syntax
```
完整指南请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
**GNU General Public License v3.0**
本程序是自由软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它,许可证版本为 3 或(根据您的选择)任何更高版本。
完整文本请参见 [LICENSE](LICENSE) 文件。
© 2025–2026 CyberAar Team
## 贡献者
- [@Bantou96](https://github.com/Bantou96) — 创始人
- [@moustaphisene](https://github.com/moustaphisene) — 贡献者(CIS 差距覆盖:sudo, cron, wireless 加固角色)
- [Claude](https://claude.ai) (Anthropic) — AI 结对程序员
*#Cybersecurity #Senegal #AarAct #CyberAar*
标签:Ansible, CISA项目, DNS解析, Docker, GPT, PE 加载器, Web报告查看器, x64dbg, 仪表盘, 塞内加尔, 安全合规, 安全基线, 安全防御评估, 应用安全, 开源项目, 执行环境, 插件系统, 教学环境, 无线安全, 最佳实践, 法语, 漏洞管理, 社区驱动, 系统加固, 系统提示词, 网络代理, 网络安全, 自动化运维, 请求拦截, 逆向工具, 隐私保护