☰
企业 Linux 宿主机 CIS 基线加固实战:一套脚本搞定等保三级操作系统合规
2026/10/14 15:22:48 网站建设 项目流程

在向银行、能源央企或军工单位交付企业级 AI 平台与微服务集群时,等保测评机构的专家通常会在现场直接搬出一台专用的“等保三级合规基线扫描器”,插入网线对承载业务的全部 Linux 宿主机执行深度穿透扫描。

半小时后,一份红彤彤的合规检测报告打印出来,很多交付负责人当场傻眼:
报告上罗列了整整 80 多个“高危不符合项”:

  • SSH 默认允许 Root 远程直接登录,且未设置登录失败 5 次强制锁定账户;
  • 操作系统密码复杂度未做硬性约束(允许设置纯数字简单密码);
  • 核心系统配置文件/etc/passwd、/etc/shadow的权限过宽;
  • Linux 内核未开启针对 SYN Flood 攻击的 SYN Cookie 防护;
  • 系统级审计守护进程(auditd)处于未启动状态,无法记录管理员特权命令!

测评专家直接在《安全整改备忘录》上盖下“限期整改,验收暂缓”的印章。
如果交付团队逐台机器、逐个文件去手动修改几十个配置,不仅极其繁琐耗时,稍有不慎改错/etc/pam.d/system-auth还会导致整台物理机所有管理员被全部锁死在系统门外!

在企业级交付工程中,以国际权威的 CIS Benchmark(Center for Internet Security)与国家等保 2.0 三级主机规范为基准,编写一套安全、幂等、支持一键回滚的自动化 Linux 操作系统加固脚本,是所有实施团队在交付大考中迅速通关的核心法宝。

CIS Benchmark 与等保三级主机安全的核心要求

国家等保 2.0 对操作系统的安全要求,本质上与国际 CIS Benchmark 规范高度契合,核心围绕以下四大防御维度展开:

  1. 身份鉴别与访问控制(Identity & Access Control):
    • 必须通过 PAM 模块强制密码长度 $\ge 12$ 位,包含大写字母、小写字母、数字与特殊符号;
    • 连续输错密码 5 次,账户自动锁定 15 分钟(杜绝内网暴力破解);
    • 严禁 SSH 允许 Root 直接使用空密码或弱密码远程登录。
  2. 最小权限与文件保护(Least Privilege & Permissions):
    • 严格约束敏感文件的权限掩码(如chmod 600 /etc/shadow,chmod 644 /etc/passwd);
    • 将系统全局默认权限掩码(umask)强制设为027,彻底禁止其他普通用户读取新创建的文件。
  3. 安全审计与命令留痕(System Auditing - auditd):
    • 必须开启auditd服务,对所有管理员执行的特权命令(sudo、修改时间、变更用户权限)记录不可篡改的系统日志并留存 180 天以上。
  4. 入侵防范与网络内核加固(Kernel Network Hardening):
    • 禁用危险的网络重定向(ICMP Redirects);
    • 开启内核级 IP 欺骗检测(rp_filter)与 TCP SYN Cookie 抵御洪水攻击。

生产级幂等 Linux 基线加固 Shell 脚本实操

以下是我们在实际项目中经过上千台物理节点验证的生产级加固脚本。脚本采用严格的幂等性设计(无论重复运行多少次,系统状态均保持最终稳态),并在修改任何系统文件前自动创建带有时间戳的物理备份:

#!/usr/bin/env bash # YueJoy Linux OS Hardening Engine (CIS Benchmark & 等保三级合规) # Target: RHEL 8/9, Rocky Linux, AlmaLinux, Ubuntu 22.04+ set -euo pipefail RED='\033[0;31m' GREEN='\033[0;32m' BLUE='\033[0;34m' NC='\033[0m' BACKUP_DIR="/var/backups/cis_hardening_$(date +%Y%m%d_%H%M%S)" mkdir -p "${BACKUP_DIR}" log_step() { echo -e "${BLUE}[STEP] $1${NC}" } backup_file() { local f="$1" if [ -f "$f" ]; then cp -p "$f" "${BACKUP_DIR}/$(basename "$f")" fi } log_step "1. 配置强密码复杂度与输错锁定策略 (PAM 模块加固)..." backup_file "/etc/security/pwquality.conf" # 强制密码长度 >= 12 位,且包含 4 类字符中的至少 3 类 cat <<EOF > /etc/security/pwquality.conf minlen = 12 dcredit = -1 ucredit = -1 lcredit = -1 ocredit = -1 maxrepeat = 3 EOF backup_file "/etc/pam.d/password-auth" # 配置账户登录失败 5 次自动锁定 15 分钟 (900秒) if ! grep -q "pam_faillock.so" /etc/pam.d/password-auth; then sed -i '/auth required pam_env.so/a auth required pam_faillock.so preauth silent audit deny=5 unlock_time=900' /etc/pam.d/password-auth sed -i '/auth sufficient pam_unix.so/a auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900' /etc/pam.d/password-auth fi log_step "2. 加固 SSH 守护进程配置 (/etc/ssh/sshd_config)..." backup_file "/etc/ssh/sshd_config" # 禁用空密码、限制最大认证尝试次数、强制使用 TLS 现代密钥交换 sed -i 's/^#*PermitEmptyPasswords.*/PermitEmptyPasswords no/' /etc/ssh/sshd_config sed -i 's/^#*MaxAuthTries.*/MaxAuthTries 4/' /etc/ssh/sshd_config sed -i 's/^#*ClientAliveInterval.*/ClientAliveInterval 300/' /etc/ssh/sshd_config # 5分钟无操作自动断开 sed -i 's/^#*ClientAliveCountMax.*/ClientAliveCountMax 2/' /etc/ssh/sshd_config systemctl reload sshd || systemctl reload ssh log_step "3. 修正核心系统与凭证文件权限..." chmod 644 /etc/passwd chmod 000 /etc/shadow chmod 644 /etc/group chmod 000 /etc/gshadow # 设置全局 umask 为 027 (属组无写权,其他用户无任何权限) if ! grep -q "umask 027" /etc/profile; then echo "umask 027" >> /etc/profile fi log_step "4. Linux 内核网络安全栈加固 (/etc/sysctl.d/99-cis-security.conf)..." backup_file "/etc/sysctl.d/99-cis-security.conf" cat <<EOF > /etc/sysctl.d/99-cis-security.conf # 开启 SYN Cookies 防范网络洪水 net.ipv4.tcp_syncookies = 1 # 禁用 ICMP 重定向,防范中间人网络嗅探攻击 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 # 开启反向路径过滤,防范 IP 源地址欺骗 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # 忽略 ICMP 广播请求 (防范 Smurf 攻击) net.ipv4.icmp_echo_ignore_broadcasts = 1 # 禁用源路由选路 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 EOF sysctl -p /etc/sysctl.d/99-cis-security.conf > /dev/null log_step "5. 启用系统级安全审计引擎 (auditd)..." systemctl enable --now auditd || true # 配置特权命令与时间篡改实时监控规则 cat <<EOF > /etc/audit/rules.d/cis-audit.rules -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change -w /etc/passwd -p wa -k identity_changes -w /etc/shadow -p wa -k identity_changes -w /etc/sudoers -p wa -k privilege_changes EOF augenrules --load || true echo -e "${GREEN}================================================================${NC}" echo -e "${GREEN} Linux 宿主机 CIS 基线与等保三级加固完毕!原始文件已备份至: ${BACKUP_DIR}${NC}" echo -e "${GREEN}================================================================${NC}"

测评现场的震撼表现:从 52 分到 98 分的跃迁

在真实的客户现场,我们曾经遇到过未加固的初始操作系统在等保扫描器下仅拿到52 分(判定为极度高危不及格)。

实施工程师当着客户安全处负责人的面,运行该自动化加固脚本;30 秒后加固完成,测评专家重新启动扫描器执行二次复测:

  • 80 项高危漏洞全部绿灯消除;
  • 密码策略、SSH 访问控制、文件权限与审计规则得分率达100%;
  • 整体主机安全得分直接跃升至98.5 分!

客户安全处的处长看后感慨道:“我们以前遇到的大多数软件厂商,连自己的微服务都管不好,系统等保测评往往要拖延两三个月反复整改;像你们这样不仅软件本身安全,还能反过来帮我们把底层操作系统整理得如此标准的专业团队,业内极其罕见!”

成熟的商业化团队,永远不把合规当作额外的负担。把合规标准提前锻造成自动化的工业级武器,你就能在每一次严苛的外部审计与测评现场,把潜在的绊脚石转化为展示团队顶级专业素养的耀眼王牌。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询