cyberaar/cyberaar-toolkit

GitHub: cyberaar/cyberaar-toolkit

基于Ansible的Linux服务器安全加固工具包,提供基线审计、自动化加固和可视化报告的完整流水线。

Stars: 9 | Forks: 3

# cyberaar-toolkit [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![欢迎贡献](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](CONTRIBUTING.md) [![Issues](https://img.shields.io/github/issues/cyberaar/cyberaar-toolkit)](https://github.com/cyberaar/cyberaar-toolkit/issues) [![Release](https://img.shields.io/github/v/release/cyberaar/cyberaar-toolkit)](https://github.com/cyberaar/cyberaar-toolkit/releases) [![Galaxy](https://img.shields.io/badge/galaxy-cyberaar.hardening-blue?logo=ansible)](https://galaxy.ansible.com/ui/repo/published/cyberaar/hardening/) [![Molecule CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/f326862f7b024930.svg)](https://github.com/cyberaar/cyberaar-toolkit/actions/workflows/molecule.yml) [![Baseline Build](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/af26724c3b024934.svg)](https://github.com/cyberaar/cyberaar-toolkit/actions/workflows/baseline-build.yml) [![EE Image](https://img.shields.io/badge/ghcr.io-cyberaar%2Fee--hardening-blue?logo=docker)](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, 仪表盘, 塞内加尔, 安全合规, 安全基线, 安全防御评估, 应用安全, 开源项目, 执行环境, 插件系统, 教学环境, 无线安全, 最佳实践, 法语, 漏洞管理, 社区驱动, 系统加固, 系统提示词, 网络代理, 网络安全, 自动化运维, 请求拦截, 逆向工具, 隐私保护