甲方安全基线:配置规范与自动化核查落地指南

甲方安全基线:配置规范与自动化核查落地指南

一、甲方安全基线的核心定位与落地目标

安全基线是甲方 IT 资产、系统与业务的最小安全准入标准,既是《网络安全法》《数据安全法》、等保 2.0 等合规要求的落地载体,也是抵御 80% 基础攻击(弱口令、配置不当、未授权访问等)的核心防御底座。

当前甲方安全团队落地基线体系普遍面临四大痛点:照搬网上的基线模板,与自身业务场景不适配,无法真正落地;人工核查效率低、覆盖不全,等保测评前只能临时抱佛脚;核查出的不合规项无人跟进,整改不了了之;自动化工具要么采购成本高、厂商绑定严重,要么适配性差、达不到预期效果。

本文核心目标,是输出可直接复用的全场景基线配置规范,手把手讲解业内最优开源工具的全流程部署与实操,搭建完整的不合规项整改闭环体系,帮助甲方实现基线管理的标准化、核查自动化、整改闭环化、合规常态化

二、甲方安全基线核心配置规范

本章节所有配置项100% 对齐网络安全等级保护 2.0 三级合规要求,全量区分【强制项】(合规必选,缺项直接影响等保测评)和【推荐项】(安全增强,适配核心资产),每一项均提供「标准要求 + 分步配置操作 + 一键核查命令 + 风险说明」,适配甲方 90% 以上的主流 IT 环境,无任何模糊表述,可直接落地执行。

2.1 基线配置前置通用规则

  1. 分级适配规则:核心级资产(核心业务、敏感数据生产资产)强制项 + 推荐项全量执行;重要级资产(一般生产、内部管理系统)全量强制项 + 高风险推荐项执行;普通级资产(测试环境、办公终端)核心强制项执行。
  2. 配置生效规则:所有配置修改前必须备份原配置文件,先在测试环境验证无业务影响后,再灰度推广至生产环境。
  3. 合规追溯规则:每一项配置均对应明确的等保控制点,可直接用于等保测评举证。

2.2 Linux 操作系统核心基线配置

适配版本:CentOS 7+/Rocky Linux 8+/RHEL 7+/Ubuntu 20.04+

2.2.1 身份鉴别类

【配置项 ID】LINUX-OS-001

【合规依据】等保 2.0 三级 8.1.2.1 身份鉴别控制点

【标准要求】【强制项】密码长度≥12 位,必须包含大写字母、小写字母、数字、特殊字符 4 类中的 3 类及以上;连续 5 次登录失败锁定账号 10 分钟;密码最长使用期限 90 天,禁止重复使用前 5 次历史密码;root 用户强制遵守密码规则。

【配置操作】

  1. 编辑系统认证核心配置文件:

    复制代码
    vi /etc/pam.d/system-auth
  2. password段替换原有配置,添加密码复杂度规则:

    复制代码
    password    required    pam_cracklib.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
    # 参数说明:retry=3 密码错误最多重试3次;minlen=12 最小长度12位;enforce_for_root 强制root遵守规则
  3. auth段顶部添加登录失败锁定规则:

    复制代码
    auth        required    pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=600
    # 参数说明:deny=5 连续5次失败锁定;unlock_time=600 锁定时长10分钟;root用户同步锁定
  4. 编辑密码有效期全局配置:

    复制代码
    vi /etc/login.defs
  5. 修改对应参数为标准值:

    复制代码
    PASS_MAX_DAYS   90    # 密码最长使用90天
    PASS_MIN_DAYS   1     # 密码修改最小间隔1天
    PASS_MIN_LEN    12    # 密码最小长度12位
    PASS_WARN_AGE   7     # 过期前7天提醒
  6. 同步配置 SSH 远程登录规则,确保远程访问生效:

    复制代码
    vi /etc/pam.d/sshd
    # 同步添加上述auth段的pam_tally2.so锁定规则、password段的复杂度规则
  7. 重启 SSH 服务使配置生效:

    复制代码
    systemctl restart sshd

【核查验证命令】

复制代码
# 1. 验证密码复杂度配置
cat /etc/pam.d/system-auth | grep pam_cracklib
# 2. 验证登录锁定配置
cat /etc/pam.d/system-auth | grep pam_tally2
# 3. 验证密码有效期配置
cat /etc/login.defs | grep PASS_

【风险说明】不配置该规则,易出现弱口令、空口令账号,攻击者可通过暴力破解获取服务器权限,是等保测评核心扣分项,也是 80% 以上服务器入侵事件的入口。

【注意事项】修改前必须保留一个 root 权限会话,避免配置错误导致无法远程登录;配置仅对新创建 / 修改密码的账号生效,需同步通知存量用户修改密码。


【配置项 ID】LINUX-OS-002

【合规依据】等保 2.0 三级 8.1.2.1 身份鉴别控制点

【标准要求】【强制项】禁止 root 账号直接远程登录,仅允许普通账号通过 sudo 提权操作;禁用空密码账号登录。

【配置操作】

  1. 编辑 SSH 配置文件:

    复制代码
    vi /etc/ssh/sshd_config
  2. 修改对应参数为标准值:

    复制代码
    PermitRootLogin no                # 禁止root远程登录
    PermitEmptyPasswords no           # 禁止空密码账号登录
  3. 创建普通管理账号并配置 sudo 权限:

    复制代码
    # 创建管理账号
    useradd ops_admin
    # 设置账号密码
    passwd ops_admin
    # 添加sudo权限
    echo "ops_admin ALL=(ALL) ALL" >> /etc/sudoers
  4. 重启 SSH 服务生效:

    复制代码
    systemctl restart sshd

【核查验证命令】

复制代码
# 验证SSH配置
cat /etc/ssh/sshd_config | grep -E "PermitRootLogin|PermitEmptyPasswords"
# 验证sudo权限
cat /etc/sudoers | grep ops_admin

【风险说明】root 账号直接暴露在公网,是攻击者暴力破解的首要目标,一旦被破解将直接获取服务器最高权限,属于等保测评一票否决项。

2.2.2 访问控制类

【配置项 ID】LINUX-OS-003

【合规依据】等保 2.0 三级 8.1.2.2 访问控制控制点

【标准要求】【强制项】关闭非必需的高危服务与端口;严格管控系统关键文件权限;默认 umask 设置为 027。

【配置操作】

  1. 关闭高危非必需服务:

    复制代码
    # 关闭telnet、ftp、rsh等高危服务
    systemctl stop telnet vsftpd rsh.socket rlogin.socket rexec.socket
    systemctl disable telnet vsftpd rsh.socket rlogin.socket rexec.socket
  2. 配置全局 umask 权限:

    复制代码
    # 编辑全局配置文件
    vi /etc/profile
    # 末尾添加配置
    umask 027
    # 生效配置
    source /etc/profile
    # 同步配置到登录环境
    echo "umask 027" >> /etc/bashrc
    echo "umask 027" >> /etc/csh.cshrc
  3. 关键文件权限加固:

    复制代码
    # 系统账号配置文件权限
    chmod 644 /etc/passwd
    chmod 400 /etc/shadow
    chmod 644 /etc/group
    chmod 400 /etc/gshadow
    # 启动配置与sudo文件权限
    chmod 600 /boot/grub2/grub.cfg
    chmod 440 /etc/sudoers

【核查验证命令】

复制代码
# 查看已开启的监听端口
netstat -tulpn | grep LISTEN
# 验证umask配置
umask
# 验证关键文件权限
ls -l /etc/passwd /etc/shadow /etc/sudoers

【风险说明】非必需服务开启会扩大攻击面,关键文件权限配置不当会导致账号信息泄露、权限被篡改,直接威胁系统安全。

2.2.3 安全审计类

【配置项 ID】LINUX-OS-004

【合规依据】等保 2.0 三级 8.1.2.3 安全审计控制点

【标准要求】【强制项】开启 auditd 审计服务,覆盖用户登录、权限变更、关键文件修改、高危命令执行等行为;审计日志至少留存 6 个月,禁止本地日志被篡改或删除。

【配置操作】

  1. 安装并启用 auditd 审计服务:

    复制代码
    yum install -y audit audit-libs
    systemctl start auditd
    systemctl enable auditd
  2. 编辑审计规则配置文件:

    复制代码
    vi /etc/audit/rules.d/audit.rules
  3. 添加等保要求的核心审计规则:

    复制代码
    # 1. 用户登录与登出审计
    -w /var/log/lastlog -p wa -k login_log
    -w /var/run/utmp -p wa -k login_session
    -w /var/log/secure -p wa -k login_auth
    
    # 2. 权限变更审计
    -w /etc/sudoers -p wa -k privilege_change
    -w /etc/passwd -p wa -k user_change
    -w /etc/shadow -p wa -k password_change
    -w /etc/group -p wa -k group_change
    
    # 3. 关键文件修改审计
    -w /etc/ssh/sshd_config -p wa -k ssh_config_change
    -w /etc/hosts -p wa -k hosts_config_change
    
    # 4. 高危系统命令执行审计
    -a always,exit -F arch=b64 -S execve -F euid=0 -k root_cmd_exec
    -a always,exit -F arch=b32 -S execve -F euid=0 -k root_cmd_exec
  4. 重启 auditd 服务加载规则:

    复制代码
    service auditd restart
  5. 配置日志留存时长与轮转规则:

    复制代码
    vi /etc/audit/auditd.conf
  6. 修改日志留存参数:

    复制代码
    max_log_file = 100        # 单个日志文件最大100M
    num_logs = 50              # 最多保留50个日志文件
    max_log_file_action = ROTATE  # 日志满后自动轮转
    space_left_action = SYSLOG  # 磁盘空间不足时告警
    action_mail_acct = root     # 告警邮件接收人

【核查验证命令】

复制代码
# 验证auditd服务状态
systemctl status auditd
# 查看已加载的审计规则
auditctl -l
# 查看审计日志留存配置
cat /etc/audit/auditd.conf | grep -E "max_log_file|num_logs"

【风险说明】未开启审计服务,发生安全事件后无法追溯攻击路径与操作行为,是等保测评核心扣分项,同时无法满足《网络安全法》日志留存 6 个月的强制要求。

2.2.4 入侵防范与系统加固类

【配置项 ID】LINUX-OS-005

【合规依据】等保 2.0 三级 8.1.2.4 入侵防范控制点

【标准要求】【强制项】开启内核 SYN 洪水防护、禁止 ICMP 重定向、开启 IP 源路由验证;核心资产高危安全补丁 72 小时内完成更新;【推荐项】开启 SELinux 强制模式。

【配置操作】

  1. 编辑内核参数配置文件:

    复制代码
    vi /etc/sysctl.conf
  2. 添加内核加固参数:

    复制代码
    # 开启SYN洪水攻击防护
    net.ipv4.tcp_syncookies = 1
    # 开启IP源路由验证,防IP欺骗
    net.ipv4.conf.all.rp_filter = 1
    net.ipv4.conf.default.rp_filter = 1
    # 禁止ICMP重定向报文,防中间人攻击
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.default.accept_redirects = 0
    net.ipv4.conf.all.secure_redirects = 0
    net.ipv4.conf.default.secure_redirects = 0
    # 禁止IP源路由
    net.ipv4.conf.all.accept_source_route = 0
    net.ipv4.conf.default.accept_source_route = 0
    # 开启地址空间随机化,防缓冲区溢出攻击
    kernel.randomize_va_space = 2
  3. 加载内核参数生效:

    复制代码
    sysctl -p
  4. 配置系统补丁更新规则:

    复制代码
    # 安装yum-cron自动更新服务
    yum install -y yum-cron
    # 编辑配置文件,开启安全补丁自动更新
    vi /etc/yum/yum-cron.conf
    # 修改参数:update_cmd = security
    # 修改参数:apply_updates = yes
    # 启动服务
    systemctl start yum-cron
    systemctl enable yum-cron
  5. 【推荐项】SELinux 强制模式开启:

    复制代码
    # 编辑配置文件
    vi /etc/selinux/config
    # 修改参数:SELINUX=enforcing
    # 重启系统生效
    reboot

【核查验证命令】

复制代码
# 验证内核参数配置
sysctl -a | grep -E "tcp_syncookies|rp_filter|accept_redirects"
# 验证SELinux状态
getenforce
# 验证yum-cron服务状态
systemctl status yum-cron

【风险说明】内核参数未加固,服务器易遭受 SYN 洪水、IP 欺骗、中间人攻击,未及时更新安全补丁会导致攻击者利用高危漏洞获取服务器权限。


2.3 Windows Server 操作系统核心基线配置

适配版本:Windows Server 2016/2019/2022

2.3.1 账户与密码策略

【配置项 ID】WIN-OS-001

【合规依据】等保 2.0 三级 8.1.2.1 身份鉴别控制点

【标准要求】【强制项】密码长度≥12 位,必须包含大小写字母、数字、特殊字符;密码最长使用期限 90 天,禁止重复使用前 10 次历史密码;连续 5 次登录失败锁定账号 30 分钟,锁定复位时间 30 分钟;禁用 Guest 账户,重命名 Administrator 默认账户。

【配置操作】

方式一:图形化组策略配置
  1. 按下Win+R,输入gpedit.msc,打开本地组策略编辑器

  2. 依次展开路径:计算机配置 → Windows 设置 → 安全设置 → 账户策略 → 密码策略 ,按以下标准配置:

    表格

    策略项 标准配置值
    密码必须符合复杂性要求 已启用
    密码长度最小值 12 个字符
    密码最短使用期限 1 天
    密码最长使用期限 90 天
    强制密码历史 10 个记住的密码
    用可还原的加密来存储密码 已禁用
  3. 继续展开:账户策略 → 账户锁定策略 ,按以下标准配置:

    表格

    策略项 标准配置值
    账户锁定阈值 5 次无效登录
    账户锁定时间 30 分钟
    重置账户锁定计数器 30 分钟
  4. 继续展开:本地策略 → 安全选项 ,配置账户加固:

    • 账户:Guest 账户状态 → 已禁用
    • 账户:重命名管理员账户 → 自定义非默认名称(如 ops_super_admin)
  5. 关闭组策略编辑器,执行gpupdate /force强制刷新组策略生效

方式二:命令行配置
  1. 创建安全配置模板sec.inf,内容如下:

    复制代码
    [Unicode]
    Unicode=yes
    [System Access]
    MinimumPasswordAge = 1
    MaximumPasswordAge = 7776000
    MinimumPasswordLength = 12
    PasswordComplexity = 1
    PasswordHistorySize = 10
    ClearTextPassword = 0
    LockoutBadCount = 5
    LockoutDuration = 1800
    ResetLockoutCount = 1800
    [Version]
    signature="$CHICAGO$"
    Revision=1
  2. 执行命令导入配置并生效:

    复制代码
    secedit /configure /db sec.sdb /cfg sec.inf /overwrite
    gpupdate /force
  3. 执行命令禁用 Guest 账户、重命名管理员账户:

    复制代码
    net user Guest /active:no
    wmic useraccount where name='Administrator' rename ops_super_admin

【核查验证命令】

复制代码
# 导出当前安全配置
secedit /export /cfg current_sec.inf
# 查看密码与锁定策略配置
type current_sec.inf | findstr "MinimumPasswordLength LockoutBadCount"
# 查看账户状态
net user

【风险说明】弱口令、默认管理员账号是 Windows 服务器入侵的首要入口,该配置是等保测评必查项,未配置将直接导致等保不通过,极易被暴力破解获取系统最高权限。

2.3.2 审核策略与日志留存

【配置项 ID】WIN-OS-002

【合规依据】等保 2.0 三级 8.1.2.3 安全审计控制点

【标准要求】【强制项】开启全类别安全审核;安全日志至少留存 6 个月,日志满时自动归档,禁止直接覆盖。

【配置操作】

  1. 打开本地组策略编辑器gpedit.msc,依次展开:计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 审核策略 ,按以下标准配置:

    表格

    策略项 标准配置值
    审核账户登录事件 成功、失败
    审核账户管理 成功、失败
    审核目录服务访问 成功、失败
    审核登录事件 成功、失败
    审核对象访问 成功、失败
    审核策略更改 成功、失败
    审核特权使用 成功、失败
    审核系统事件 成功、失败
  2. 配置日志留存规则:

    • 按下Win+R,输入eventvwr.msc,打开事件查看器
    • 依次展开:Windows 日志 → 安全,右键选择「属性」
    • 日志最大大小设置为4194240KB(4GB)
    • 日志满时操作选择「按需要覆盖事件(存档最早的事件)」
    • 勾选「日志满时自动存档」,设置存档路径为非系统盘
  3. 执行gpupdate /force刷新配置生效【核查验证命令】

    查看审核策略配置

    auditpol /get /category:*

【风险说明】未开启全量审核,发生入侵事件后无法追溯攻击行为,日志留存时长不满足要求将直接违反《网络安全法》,导致等保测评不通过。

2.3.3 远程桌面与系统加固

【配置项 ID】WIN-OS-003

【合规依据】等保 2.0 三级 8.1.2.4 入侵防范控制点

【标准要求】【强制项】修改远程桌面默认 3389 端口;开启网络级别身份验证 NLA;限制远程登录用户组;空闲会话 30 分钟自动断开;开启 Windows Defender 防火墙与实时防护。

【配置操作】

  1. 远程桌面安全加固:

    • 右键「此电脑」→「属性」→「远程设置」
    • 勾选「允许远程连接到此计算机」,勾选「仅允许运行使用网络级别身份验证的远程桌面的计算机连接」
    • 点击「选择用户」,仅添加授权的远程管理用户组,移除 Everyone、Administrators 等默认组
  2. 修改远程桌面默认端口(注册表配置):

    复制代码
    # 打开注册表编辑器
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 33989 /f
    # 重启远程桌面服务生效
    net stop TermService /y
    net start TermService
  3. 配置空闲会话断开规则:

    • 打开组策略编辑器gpedit.msc
    • 依次展开:计算机配置 → 管理模板 → Windows 组件 → 远程桌面服务 → 远程桌面会话主机 → 会话时间限制
    • 配置「设置活动但空闲的远程桌面服务会话的时间限制」为已启用,空闲时间限制设置为 30 分钟
  4. 防火墙与安全防护开启:

    复制代码
    # 开启Windows Defender防火墙
    netsh advfirewall set allprofiles state on
    # 开启Windows Defender实时防护
    powershell Set-MpPreference -DisableRealtimeMonitoring $false

【核查验证命令】

复制代码
# 查看远程桌面端口配置
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
# 查看防火墙状态
netsh advfirewall show allprofiles state

【风险说明】默认 3389 端口是攻击者扫描爆破的首要目标,未开启 NLA 易遭受中间人攻击,未限制远程用户会导致未授权访问风险。


2.4 数据库核心基线配置

2.4.1 MySQL 数据库

【配置项 ID】MYSQL-001

【合规依据】等保 2.0 三级 8.1.2.1 身份鉴别、8.1.2.2 访问控制控制点

【标准要求】【强制项】禁用匿名账户、空密码账户;删除测试数据库与测试权限;所有账号配置 12 位以上强密码;禁止业务账号授予 ALL PRIVILEGES 权限;超级管理员账号仅允许本地 / 指定 IP 登录,禁止全网 (0.0.0.0) 访问。

【配置操作】

  1. 登录 MySQL 数据库:

    复制代码
    mysql -uroot -p
  2. 清理风险账户与测试环境:

    复制代码
    -- 查看所有用户与权限
    SELECT user,host,authentication_string FROM mysql.user;
    -- 删除匿名账户
    DELETE FROM mysql.user WHERE user='';
    -- 删除空密码账户
    DELETE FROM mysql.user WHERE authentication_string='';
    -- 删除测试数据库与测试权限
    DROP DATABASE IF EXISTS test;
    DELETE FROM mysql.db WHERE Db='test' OR Db='test_%';
  3. 开启密码复杂度校验:

    复制代码
    -- MySQL5.7 安装密码校验插件
    INSTALL PLUGIN validate_password SONAME 'validate_password.so';
    -- MySQL8.0 安装密码校验组件
    INSTALL COMPONENT 'file://component_validate_password';
    
    -- 配置密码复杂度参数
    SET GLOBAL validate_password_length=12;
    SET GLOBAL validate_password_policy=1;
    SET GLOBAL validate_password_mixed_case_count=1;
    SET GLOBAL validate_password_number_count=1;
    SET GLOBAL validate_password_special_char_count=1;
  4. 限制管理员账号登录范围:

    复制代码
    -- 禁止root全网访问,仅允许本地登录
    RENAME USER 'root'@'%' TO 'root'@'localhost';
    -- 如需远程管理,仅允许指定固定IP登录
    RENAME USER 'root'@'%' TO 'root'@'192.168.1.100';
    -- 刷新权限生效
    FLUSH PRIVILEGES;
  5. 业务账号最小权限配置:

    复制代码
    -- 禁止使用:GRANT ALL PRIVILEGES ON *.* TO 'biz_user'@'%';
    -- 正确配置:仅授予业务库所需最小权限,限制登录IP段
    GRANT SELECT,INSERT,UPDATE,DELETE ON biz_db.* TO 'biz_user'@'192.168.1.%';
    FLUSH PRIVILEGES;
  6. 写入配置文件永久生效,编辑/etc/my.cnf

    复制代码
    [mysqld]
    validate_password_length=12
    validate_password_policy=1
    validate_password_mixed_case_count=1
    validate_password_number_count=1
    validate_password_special_char_count=1

【核查验证 SQL】

复制代码
-- 查看所有用户与登录权限
SELECT user,host FROM mysql.user;
-- 查看密码复杂度配置
SHOW VARIABLES LIKE 'validate_password%';
-- 查看指定用户权限详情
SHOW GRANTS FOR 'biz_user'@'192.168.1.%';

【风险说明】权限过大的账号、匿名账户、弱口令是数据库拖库、数据泄露的核心原因,该配置是等保测评必查项,未配置将直接导致合规不通过,同时面临敏感数据泄露风险。


【配置项 ID】MYSQL-002

【合规依据】等保 2.0 三级 8.1.2.3 安全审计控制点

【标准要求】【强制项】开启数据库审计日志,记录登录、权限变更、drop/alter/delete 等高危操作;日志至少留存 6 个月,远程同步至日志服务器。

【配置操作】

  1. 编辑/etc/my.cnf配置文件,添加审计日志配置:

    复制代码
    [mysqld]
    # 开启通用查询日志
    general_log = ON
    general_log_file = /var/log/mysql/mysql-general.log
    # 开启慢查询日志(含高危操作)
    slow_query_log = ON
    slow_query_log_file = /var/log/mysql/mysql-slow.log
    long_query_time = 2
    # 开启错误日志
    log_error = /var/log/mysql/mysql-error.log
    # 开启二进制日志(操作审计)
    log_bin = /var/log/mysql/mysql-bin.log
    binlog_format = ROW
    expire_logs_days = 180  # 日志留存180天(6个月)
  2. 创建日志目录并授权:

    复制代码
    mkdir -p /var/log/mysql
    chown mysql:mysql /var/log/mysql
    chmod 700 /var/log/mysql
  3. 重启 MySQL 服务生效:

    复制代码
    systemctl restart mysqld

【核查验证 SQL】

复制代码
-- 查看日志配置状态
SHOW VARIABLES LIKE '%log%';

【风险说明】未开启审计日志,发生数据泄露、篡改事件后无法追溯操作人与操作行为,日志留存时长不满足等保要求,将直接导致测评不通过。

2.4.2 Redis 缓存数据库

【配置项 ID】REDIS-001

【合规依据】等保 2.0 三级 8.1.2.1 身份鉴别、8.1.2.2 访问控制控制点

【标准要求】【强制项】开启强密码认证,密码长度≥16 位;修改默认 6379 端口;绑定指定 IP,禁止 0.0.0.0 监听;禁用高危命令;禁止以 root 用户运行实例。

【配置操作】

  1. 编辑 Redis 配置文件redis.conf

    复制代码
    vi /etc/redis/redis.conf
  2. 按以下标准修改配置:

    复制代码
    # 1. 开启强密码认证
    requirepass 【16位以上大小写+数字+特殊字符的强密码】
    
    # 2. 修改默认端口
    port 26379
    
    # 3. 绑定指定IP,禁止全网监听
    bind 127.0.0.1 192.168.1.100
    
    # 4. 开启保护模式
    protected-mode yes
    
    # 5. 禁用/重命名高危命令
    rename-command FLUSHALL ""
    rename-command FLUSHDB ""
    rename-command CONFIG ""
    rename-command KEYS ""
    rename-command EVAL ""
    
    # 6. 禁止以root用户运行,指定普通用户
    user redis
    group redis
    
    # 7. 禁用持久化文件世界可读权限
    dir /var/lib/redis
  3. 创建 Redis 运行用户与数据目录:

    复制代码
    useradd -s /sbin/nologin redis
    chown -R redis:redis /var/lib/redis
    chown -R redis:redis /etc/redis
  4. 重启 Redis 服务生效:

    复制代码
    systemctl restart redis

【核查验证命令】

复制代码
# 登录Redis验证配置
redis-cli -h 127.0.0.1 -p 26379 -a 【密码】
# 验证高危命令是否禁用
CONFIG GET requirepass

【风险说明】未配置密码、全网监听的 Redis 实例是攻击者的首要目标,极易被入侵植入挖矿程序、窃取缓存中的敏感数据,是攻防演练中最高发的风险点之一。


2.5 中间件核心基线配置

2.5.1 Nginx 中间件

【配置项 ID】NGINX-001

【合规依据】等保 2.0 三级 8.1.2.4 入侵防范、8.1.2.3 安全审计控制点

【标准要求】【强制项】隐藏 Nginx 版本号;强制开启 HTTPS,禁用不安全协议与加密套件;开启访问日志,日志留存至少 6 个月;禁用非业务必需的 HTTP 方法;配置请求限流。

【配置操作】

  1. 编辑 Nginx 主配置文件nginx.conf

    复制代码
    vi /etc/nginx/nginx.conf
  2. 全局安全配置(http 块内):

    复制代码
    http {
        # 1. 隐藏版本号与报错信息
        server_tokens off;
        server_info off;
    
        # 2. 开启访问日志与错误日志,配置留存规则
        access_log /var/log/nginx/access.log main;
        error_log /var/log/nginx/error.log warn;
        # 日志轮转配置(/etc/logrotate.d/nginx),留存180天
        # 配置内容:rotate 26、daily、missingok、notifempty、compress
    
        # 3. 全局请求限流配置
        limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
        limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
    
        # 4. 禁用非业务必需的HTTP方法
        if ($request_method !~ ^(GET|POST|HEAD)$) {
            return 403;
        }
    
        # 5. 防XSS、点击劫持等安全头配置
        add_header X-Frame-Options SAMEORIGIN always;
        add_header X-Content-Type-Options nosniff always;
        add_header X-XSS-Protection "1; mode=block" always;
        add_header Content-Security-Policy "default-src 'self'" always;
    
        # 6. HTTPS全局安全配置
        ssl_protocols TLSv1.2 TLSv1.3; # 禁用SSLv3、TLS1.0/1.1
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        # 开启HSTS强制HTTPS访问
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    
        # 站点server配置
        server {
            listen 80;
            server_name example.com;
            # 强制跳转HTTPS
            return 301 https://$server_name$request_uri;
        }
    
        server {
            listen 443 ssl http2;
            server_name example.com;
            ssl_certificate /etc/nginx/cert/example.com.pem;
            ssl_certificate_key /etc/nginx/cert/example.com.key;
    
            # 应用限流规则
            limit_req zone=req_limit burst=20 nodelay;
            limit_conn conn_limit 50;
    
            # 禁止敏感目录、备份文件访问
            location ~* \.(bak|sql|zip|tar|gz)$ {
                return 403;
            }
            location ~ /\.git {
                return 403;
            }
        }
    }
  3. 配置日志轮转规则,编辑/etc/logrotate.d/nginx

    复制代码
    /var/log/nginx/*.log {
        daily
        missingok
        rotate 180
        compress
        delaycompress
        notifempty
        create 640 nginx nginx
        sharedscripts
        postrotate
            if [ -f /run/nginx.pid ]; then
                kill -USR1 `cat /run/nginx.pid`
            fi
        endscript
    }
  4. 验证配置无误后重载生效:

    复制代码
    nginx -t
    nginx -s reload

【核查验证命令】

复制代码
# 验证Nginx配置
nginx -t
# 查看版本号是否隐藏
curl -I http://127.0.0.1
# 验证HTTPS协议配置
openssl s_client -connect example.com:443 -tls1_1

【风险说明】泄露版本号会让攻击者针对对应版本的高危漏洞发起攻击,未开启 HTTPS 会导致数据明文传输被窃听,未配置限流易遭受 CC 攻击导致服务不可用。

2.5.2 Tomcat 中间件

【配置项 ID】TOMCAT-001

【合规依据】等保 2.0 三级 8.1.2.1 身份鉴别、8.1.2.4 入侵防范控制点

【标准要求】【强制项】删除默认管理控制台、示例页面与文档;禁用 AJP 连接器;修改默认端口;隐藏 Tomcat 版本号;禁止以 root 用户运行;开启访问日志,日志留存至少 6 个月。

【配置操作】

  1. 清理默认风险文件:

    复制代码
    # 进入Tomcat安装目录
    cd /usr/local/tomcat
    # 删除管理控制台、示例页面、文档目录
    rm -rf webapps/manager webapps/host-manager webapps/docs webapps/examples
    # 清空默认ROOT页面
    rm -rf webapps/ROOT/*
  2. 编辑核心配置文件conf/server.xml

    复制代码
    vi /usr/local/tomcat/conf/server.xml
  3. 端口与连接器加固:

    复制代码
    <!-- 1. 修改默认HTTP端口8080为自定义端口 -->
    <Connector port="18080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="18443"
               maxParameterCount="1000"
               />
    
    <!-- 2. 注释禁用AJP连接器(默认8009端口) -->
    <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
    
    <!-- 3. 禁用默认shutdown端口与指令 -->
    <Server port="-1" shutdown="SHUTDOWN">
  4. 隐藏 Tomcat 版本号:

    复制代码
    # 进入lib目录
    cd /usr/local/tomcat/lib
    # 解压版本配置文件
    unzip catalina.jar org/apache/catalina/util/ServerInfo.properties
    # 编辑配置文件,修改版本信息
    vi org/apache/catalina/util/ServerInfo.properties
    # 修改为:server.info=WebServer server.number=
    # 重新打包jar包
    jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties
    # 删除临时文件
    rm -rf org
  5. 访问日志与留存配置,编辑conf/server.xml

    复制代码
    <!-- 开启全量访问日志,配置日志格式 -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".log"
           pattern="%h %l %u %t &quot;%r&quot; %s %b"
           rotatable="true"
           maxDays="180" /> <!-- 日志留存180天 -->
  6. 禁止以 root 用户运行 Tomcat:

    复制代码
    # 创建普通运行用户
    useradd -s /sbin/nologin tomcat
    # 授权Tomcat目录
    chown -R tomcat:tomcat /usr/local/tomcat
    # 修改启动脚本,指定运行用户
    vi /usr/local/tomcat/bin/startup.sh
    # 末尾添加:su - tomcat -c /usr/local/tomcat/bin/catalina.sh start
  7. 重启 Tomcat 服务生效【核查验证方法】

    查看监听端口

    netstat -tulpn | grep java

    查看版本号是否隐藏

    curl -I http://127.0.0.1:18080

    验证管理控制台是否可访问

    curl http://127.0.0.1:18080/manager/html

【风险说明】默认管理控制台存在弱口令、未授权访问风险,AJP 连接器存在高危漏洞(CVE-2020-1938),以 root 用户运行一旦被入侵将直接获取服务器最高权限。


2.6 云原生核心基线配置

2.6.1 Docker 容器

【配置项 ID】DOCKER-001

【合规依据】等保 2.0 三级 8.1.2.2 访问控制、8.1.2.4 入侵防范控制点

【标准要求】【强制项】禁止容器以 root 用户运行;禁止使用特权模式;禁止挂载宿主机敏感目录;限制容器 CPU、内存资源;开启容器日志审计。

【配置操作】

  1. 编辑 Docker 守护进程配置文件/etc/docker/daemon.json

    复制代码
    vi /etc/docker/daemon.json
  2. 全局安全配置:

    复制代码
    {
        "userns-remap": "default",  # 开启用户命名空间隔离,容器root映射为宿主机普通用户
        "log-driver": "json-file",
        "log-opts": {
            "max-size": "100m",
            "max-file": "50"
        },
        "icc": false,  # 禁止容器间默认互通
        "live-restore": true,
        "userland-proxy": false,
        "no-new-privileges": true  # 禁止容器内权限提升
    }
  3. 重启 Docker 服务生效:

    复制代码
    systemctl daemon-reload
    systemctl restart docker
  4. 容器运行安全规范(强制执行):

    复制代码
    # 错误示例(禁止使用)
    docker run -d --privileged -v /etc:/host/etc --net=host nginx
    
    # 正确示例(符合基线要求)
    docker run -d \
      --user 1000:1000 \  # 以普通用户运行
      --memory 1G --cpus 0.5 \  # 限制资源使用
      --no-new-privileges \  # 禁止权限提升
      --cap-drop ALL \  # 禁用所有Linux capabilities
      --cap-add NET_BIND_SERVICE \  # 仅授予业务必需权限
      -v /data/nginx:/usr/share/nginx/html:ro \  # 数据卷只读挂载
      -p 80:80 \
      nginx
  5. 镜像安全规范:

    • 仅使用 Docker Hub 官方镜像、厂商可信镜像,禁止未知来源镜像
    • 镜像最小化构建,移除 curl、wget、gcc 等非必需工具
    • 禁止在 Dockerfile 中硬编码密码、密钥等敏感信息
    • 构建前使用 Trivy/Clair 扫描镜像漏洞,修复高危漏洞后再上线【核查验证命令】

    验证Docker daemon配置

    docker info | grep -E "userns-remap|No New Privileges"

    查看容器运行配置

    docker inspect 容器ID | grep -E "Privileged|User|Memory"

【风险说明】特权模式、root 用户运行的容器,一旦被入侵可直接逃逸获取宿主机最高权限,是云原生环境最高发的安全风险点。

2.6.2 Kubernetes 集群

【配置项 ID】K8S-001

【合规依据】等保 2.0 三级 8.1.2.2 访问控制、8.1.2.3 安全审计控制点

【标准要求】【强制项】开启 RBAC 权限控制,禁用匿名访问;开启 API Server 审计日志,留存至少 6 个月;etcd 数据开启静态加密;禁止特权容器、root 用户运行 Pod。

【配置操作】

  1. API Server 安全加固,编辑/etc/kubernetes/manifests/kube-apiserver.yaml

    复制代码
    spec:
      containers:
      - command:
        - kube-apiserver
        # 1. 开启RBAC权限控制
        - --authorization-mode=RBAC,Node
        # 2. 禁用匿名访问
        - --anonymous-auth=false
        # 3. 开启审计日志,留存180天
        - --audit-log-path=/var/log/kubernetes/audit/audit.log
        - --audit-log-maxage=180
        - --audit-log-maxbackup=50
        - --audit-log-maxsize=100
        # 4. etcd数据静态加密
        - --encryption-provider-config=/etc/kubernetes/encryption-config.yaml
        # 5. 禁用不安全端口
        - --insecure-port=0
  2. 配置 etcd 数据加密,创建/etc/kubernetes/encryption-config.yaml

    复制代码
    apiVersion: apiserver.config.k8s.io/v1
    kind: EncryptionConfiguration
    resources:
      - resources:
        - secrets
        - configmaps
        providers:
        - aescbc:
            keys:
            - name: key1
              secret: 【32位随机加密密钥】
        - identity: {}
  3. Pod 安全标准配置,创建集群级 Pod 安全策略,禁止风险配置:

    复制代码
    apiVersion: policy/v1
    kind: PodSecurityPolicy
    metadata:
      name: restricted-psp
    spec:
      privileged: false  # 禁止特权容器
      allowPrivilegeEscalation: false  # 禁止权限提升
      runAsUser:
        rule: MustRunAsNonRoot  # 禁止root用户运行
      seLinux:
        rule: RunAsAny
      supplementalGroups:
        rule: MustRunAs
        ranges:
          - min: 1000
            max: 65535
      fsGroup:
        rule: MustRunAs
        ranges:
          - min: 1000
            max: 65535
      volumes:
        - 'configMap'
        - 'emptyDir'
        - 'persistentVolumeClaim'
        - 'secret'
        - 'downwardAPI'
  4. RBAC 最小权限配置规范:

    • 禁止给普通用户、ServiceAccount 配置 cluster-admin 集群管理员权限
    • 禁止给 Pod 配置默认 ServiceAccount,非必需场景禁用 automountServiceAccountToken
    • 命名空间级权限隔离,禁止跨命名空间授权
  5. 重启 kubelet 服务使 API Server 配置生效【核查验证命令】

    验证API Server配置

    kubectl describe pod kube-apiserver -n kube-system | grep command

    验证匿名访问是否禁用

    kubectl get --insecure-skip-tls-verify --server=https://apiserver-ip:6443/api

    查看Pod安全策略

    kubectl get psp

【风险说明】API Server 未做安全加固是 K8s 集群被入侵的首要入口,未开启 RBAC、匿名访问开启会导致集群完全失控,未加密的 etcd 会导致集群所有敏感配置、密钥泄露。


2.7 基线配套管理规则

  1. 版本迭代与变更机制:基线规范固定每季度常规迭代,遇合规新规发布、高危漏洞爆发、业务架构重大调整时,启动紧急变更流程,所有变更均需留存跨部门评审记录。
  2. 业务例外审批流程:因业务兼容性无法满足基线要求的,需提交例外申请,明确豁免项、风险评估、配套防控措施、有效期,经业务、运维、安全部门联合评审通过后方可生效,豁免有效期最长不超过 6 个月,到期自动复核。
  3. 核查频率匹配规则:核心级资产每日自动化核查,重要级资产每周核查,普通级资产每月核查,等保测评、攻防演练前需执行全量专项核查。

三、自动化基线核查脚本

通过网盘分享的文件:基线脚本.zip

链接: https://pan.baidu.com/s/1dn_2ZngIcixdEMQq2g6Oag?pwd=tiwy 提取码: tiwy

--来自百度网盘超级会员v4的分享

获取到资产信息后ai分析报告即可

四、基线不合规项整改闭环体系落地

自动化核查只是手段,整改闭环才是最终目的,本章节搭建全流程可落地的整改管理体系,解决 "核查不改、闭环失效" 的核心痛点。

4.1 整改闭环全流程设计

搭建不合规项分级分类→工单派发→整改执行→自动复核→归档留存→持续优化的全流程闭环管理体系,确保每一条不合规项都有跟进、有结果、可审计。

4.2 不合规项分级整改策略

基于风险等级与资产重要性,制定差异化整改要求,避免一刀切:

  • 高风险项:核心资产不合规项,存在直接被入侵风险或违反合规强制条款,24 小时内完成整改,整改后立即复核;
  • 中风险项:重要资产不合规项,存在明确安全隐患,7 个工作日内完成整改;
  • 低风险项:普通资产不合规项,不影响核心安全与合规,30 个工作日内完成整改。

4.3 典型不合规项加固实操方案

针对核查中高频出现的不合规项,给出可直接执行的加固方案,降低整改门槛:

  1. Linux 密码复杂度不符合要求 编辑/etc/pam.d/system-auth文件,修改配置:

    复制代码
    password required pam_cracklib.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
  2. Redis 未设置密码认证 编辑redis.conf配置文件,添加配置:

    复制代码
    requirepass 【16位以上强密码】
    rename-command FLUSHALL ""
    rename-command CONFIG ""

    重启 Redis 服务生效。

  3. Nginx 泄露版本号 编辑nginx.conf配置文件,在 http 块中添加:

    复制代码
    server_tokens off;

    执行nginx -t验证配置无误后,nginx -s reload重载生效。

  4. Tomcat 开启了默认管理控制台进入 Tomcat 的 webapps 目录,删除 manager、host-manager、docs、examples 目录,重启 Tomcat 生效。

4.4 业务例外豁免管理机制

针对因业务架构、兼容性问题无法整改的不合规项,必须执行规范的例外审批流程:

  • 申请条件:仅针对业务必需、无替代方案、整改会导致业务不可用的场景;
  • 申请流程:资产负责人提交申请,明确豁免项、风险评估报告、配套防控措施、豁免有效期;
  • 审批要求:必须经业务、运维、安全部门负责人三方联合评审通过后方可生效;
  • 管控要求:豁免有效期最长不超过 6 个月,到期前 15 个工作日自动触发复核,所有申请与审批记录全程留存。

4.5 整改复核与闭环管理

  • 自动复核机制:整改工单完成后,自动触发 OpenSCAP 专项核查,验证不合规项是否修复,修复成功的工单自动闭环,修复失败的退回重改;
  • 超期告警升级:工单超期未完成的,自动推送告警给整改负责人;超期 3 个工作日升级至部门负责人;超期 7 个工作日同步至公司管理层与合规部门;
  • 审计留痕:整改全流程的工单记录、操作日志、复核结果、审批记录,全部留存至少 6 个月,可追溯、可导出。

4.6 整改赋能支撑体系

  • 配套加固脚本库:针对高频不合规项,编写标准化加固脚本,降低整改难度;
  • 培训与宣贯:定期面向运维、研发、业务部门开展基线培训,明确管控要求与责任边界;
  • 常见问题 FAQ:整理核查与整改中的常见问题与解决方案,形成手册供相关人员查阅。

五、甲方基线体系落地避坑指南

  1. 安全与业务冲突,基线推行受阻避坑方案:基线制定前充分调研业务需求,提前与业务、运维部门对齐;采用分级分类差异化管控,先在测试环境、非核心资产试点验证,确认无影响后再推广至生产;建立规范的例外审批流程,给业务特殊场景留合规出口。

  2. 资产覆盖不全,影子资产成为核查盲区避坑方案:将基线合规纳入资产上线审批流程,未纳入 CMDB、未通过基线核查的资产禁止上线;OpenSCAP 对接 CMDB 自动同步资产清单;每季度执行全网资产探测,补全影子资产并纳入管控。

  3. 自动化核查权限过高,引入新的安全风险避坑方案:创建专用只读核查账号,禁止使用管理员 /root 账号执行核查;所有核查命令仅执行只读操作,严禁包含写入、修改指令;核查账号凭证定期轮换,所有操作全程日志审计。

  4. 规则库不适配,出现大量误报 / 漏报避坑方案:所有规则上线前必须先在测试环境验证;针对业务特殊配置裁剪规则库;建立误报反馈机制,定期优化规则,提升核查准确率。

  5. 整改闭环失效,工单下发后无人跟进避坑方案:明确资产负责人与整改责任人,责任到人;将资产合规率纳入部门与个人绩效考核;定期向管理层汇报各业务线合规率排名与整改进度;提供配套技术支持,降低整改门槛。

  6. 等保审计无留痕,合规举证不足避坑方案:基线配置与合规条款一一映射,形成对照表;基线制定、评审、变更全流程记录留存;核查报告、整改工单、例外审批记录至少留存 6 个月,可随时导出用于审计。

六、基线体系效果度量与持续优化

6.1 核心量化度量指标

通过可量化的指标,直观呈现基线体系的建设价值,核心分为 4 大类:

  • 合规类指标:整体资产合规率、核心资产合规率、基线强制项合规通过率、等保测评基线项一次性通过率;
  • 整改类指标:不合规项整改率、整改及时率、超期未整改项占比、例外豁免项占比;
  • 安全类指标:基线相关安全事件发生率、高危基线风险闭环时长、攻防演练中基线相关风险点占比;
  • 运营类指标:人工核查工作量下降比例、基线核查全流程耗时、运维团队整改响应时长。

6.2 持续优化机制

基线体系不是一成不变的,需建立长效优化机制:

  • 基线规则迭代:每季度组织跨部门评审完成常规更新,遇合规新规、高危漏洞、业务架构调整时启动紧急变更,同步更新基线与核查规则;
  • 核查能力优化:持续拓展资产覆盖范围,适配新的业务场景,定期优化规则降低误报率,提升批量核查效率;
  • 运营流程优化:每季度复盘运营情况,收集业务、运维部门反馈,优化整改与审批流程,降低安全管控对业务的影响。

6.3 管理层汇报核心逻辑

向管理层汇报时,核心围绕三大价值展开,避免堆砌技术细节:

  • 合规价值:呈现当前合规率、等保达标情况,明确基线体系规避了合规处罚风险;
  • 安全价值:呈现基线相关安全事件的下降情况,明确基线体系抵御了 80% 的基础攻击,降低了企业安全风险;
  • 运营价值:呈现人工核查工作量的下降情况、整改效率的提升情况,明确基线体系降低了安全运营的人力成本。

七、结尾总结

安全基线是甲方企业安全防御体系的 "地基",是合规管控的刚性底线,也是实战攻防中最基础、最有效的防护手段。

本文从甲方落地的实际需求出发,输出了可直接复用的全场景核心基线配置规范,手把手讲解了 OpenSCAP 开源工具的全流程部署与自动化核查实操,搭建了完整的不合规项整改闭环体系,同时梳理了落地过程中的高频踩坑点与避坑方案。

对于甲方企业而言,基线规范的制定是前提,自动化核查是落地的核心,整改闭环是价值实现的关键。只有搭建起 "制定 - 核查 - 整改 - 优化" 的全流程闭环体系,才能真正让基线规范落地生效,实现从 "被动救火" 到 "主动防御" 的安全体系升级,同时满足等保 2.0 等合规要求,为企业的业务发展筑牢安全底座。

相关推荐
半路_出家ren3 小时前
Nginx基础学习
运维·网络·网络协议·学习·nginx·网络安全
缘友一世4 小时前
GOAD(game of Activate Directory)本地(ubuntu24.04+virtual box)部署
网络安全·域渗透
Chockmans1 天前
春秋云境CVE-2021-44915
web安全·网络安全·春秋云境·cve-2021-44915
Codefengfeng1 天前
【目录爆破+权限提升】
网络安全
JS_SWKJ1 天前
MQTT协议如何穿透单向网闸?IoT/IIoT场景下的安全“破壁”之道
网络安全
黑战士安全1 天前
基于Ollama的自动化渗透测试框架:设计方案
web安全·网络安全·渗透测试
山川绿水1 天前
Buuctf——[GYCTF2020]Ezsqli
web安全·网络安全·ctf
WHD3061 天前
苏州服务器维修哪家好/公司推荐
linux·ubuntu·centos·计算机外设·电脑·unix·安全架构
波兰的蓝1 天前
《内网渗透实战:红日 1 号全流程复现(Web 入侵 / 提权 / 横向移动 / 黄金票据)》
web安全·网络安全