甲方安全基线:配置规范与自动化核查落地指南
一、甲方安全基线的核心定位与落地目标
安全基线是甲方 IT 资产、系统与业务的最小安全准入标准,既是《网络安全法》《数据安全法》、等保 2.0 等合规要求的落地载体,也是抵御 80% 基础攻击(弱口令、配置不当、未授权访问等)的核心防御底座。
当前甲方安全团队落地基线体系普遍面临四大痛点:照搬网上的基线模板,与自身业务场景不适配,无法真正落地;人工核查效率低、覆盖不全,等保测评前只能临时抱佛脚;核查出的不合规项无人跟进,整改不了了之;自动化工具要么采购成本高、厂商绑定严重,要么适配性差、达不到预期效果。
本文核心目标,是输出可直接复用的全场景基线配置规范,手把手讲解业内最优开源工具的全流程部署与实操,搭建完整的不合规项整改闭环体系,帮助甲方实现基线管理的标准化、核查自动化、整改闭环化、合规常态化。
二、甲方安全基线核心配置规范
本章节所有配置项100% 对齐网络安全等级保护 2.0 三级合规要求,全量区分【强制项】(合规必选,缺项直接影响等保测评)和【推荐项】(安全增强,适配核心资产),每一项均提供「标准要求 + 分步配置操作 + 一键核查命令 + 风险说明」,适配甲方 90% 以上的主流 IT 环境,无任何模糊表述,可直接落地执行。
2.1 基线配置前置通用规则
- 分级适配规则:核心级资产(核心业务、敏感数据生产资产)强制项 + 推荐项全量执行;重要级资产(一般生产、内部管理系统)全量强制项 + 高风险推荐项执行;普通级资产(测试环境、办公终端)核心强制项执行。
- 配置生效规则:所有配置修改前必须备份原配置文件,先在测试环境验证无业务影响后,再灰度推广至生产环境。
- 合规追溯规则:每一项配置均对应明确的等保控制点,可直接用于等保测评举证。
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 用户强制遵守密码规则。
【配置操作】
-
编辑系统认证核心配置文件:
vi /etc/pam.d/system-auth -
在
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遵守规则 -
在
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用户同步锁定 -
编辑密码有效期全局配置:
vi /etc/login.defs -
修改对应参数为标准值:
PASS_MAX_DAYS 90 # 密码最长使用90天 PASS_MIN_DAYS 1 # 密码修改最小间隔1天 PASS_MIN_LEN 12 # 密码最小长度12位 PASS_WARN_AGE 7 # 过期前7天提醒 -
同步配置 SSH 远程登录规则,确保远程访问生效:
vi /etc/pam.d/sshd # 同步添加上述auth段的pam_tally2.so锁定规则、password段的复杂度规则 -
重启 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 提权操作;禁用空密码账号登录。
【配置操作】
-
编辑 SSH 配置文件:
vi /etc/ssh/sshd_config -
修改对应参数为标准值:
PermitRootLogin no # 禁止root远程登录 PermitEmptyPasswords no # 禁止空密码账号登录 -
创建普通管理账号并配置 sudo 权限:
# 创建管理账号 useradd ops_admin # 设置账号密码 passwd ops_admin # 添加sudo权限 echo "ops_admin ALL=(ALL) ALL" >> /etc/sudoers -
重启 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。
【配置操作】
-
关闭高危非必需服务:
# 关闭telnet、ftp、rsh等高危服务 systemctl stop telnet vsftpd rsh.socket rlogin.socket rexec.socket systemctl disable telnet vsftpd rsh.socket rlogin.socket rexec.socket -
配置全局 umask 权限:
# 编辑全局配置文件 vi /etc/profile # 末尾添加配置 umask 027 # 生效配置 source /etc/profile # 同步配置到登录环境 echo "umask 027" >> /etc/bashrc echo "umask 027" >> /etc/csh.cshrc -
关键文件权限加固:
# 系统账号配置文件权限 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 个月,禁止本地日志被篡改或删除。
【配置操作】
-
安装并启用 auditd 审计服务:
yum install -y audit audit-libs systemctl start auditd systemctl enable auditd -
编辑审计规则配置文件:
vi /etc/audit/rules.d/audit.rules -
添加等保要求的核心审计规则:
# 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 -
重启 auditd 服务加载规则:
service auditd restart -
配置日志留存时长与轮转规则:
vi /etc/audit/auditd.conf -
修改日志留存参数:
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 强制模式。
【配置操作】
-
编辑内核参数配置文件:
vi /etc/sysctl.conf -
添加内核加固参数:
# 开启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 -
加载内核参数生效:
sysctl -p -
配置系统补丁更新规则:
# 安装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 -
【推荐项】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 默认账户。
【配置操作】
方式一:图形化组策略配置
-
按下
Win+R,输入gpedit.msc,打开本地组策略编辑器 -
依次展开路径:计算机配置 → Windows 设置 → 安全设置 → 账户策略 → 密码策略 ,按以下标准配置:
表格
策略项 标准配置值 密码必须符合复杂性要求 已启用 密码长度最小值 12 个字符 密码最短使用期限 1 天 密码最长使用期限 90 天 强制密码历史 10 个记住的密码 用可还原的加密来存储密码 已禁用 -
继续展开:账户策略 → 账户锁定策略 ,按以下标准配置:
表格
策略项 标准配置值 账户锁定阈值 5 次无效登录 账户锁定时间 30 分钟 重置账户锁定计数器 30 分钟 -
继续展开:本地策略 → 安全选项 ,配置账户加固:
- 账户:Guest 账户状态 → 已禁用
- 账户:重命名管理员账户 → 自定义非默认名称(如 ops_super_admin)
-
关闭组策略编辑器,执行
gpupdate /force强制刷新组策略生效
方式二:命令行配置
-
创建安全配置模板
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 -
执行命令导入配置并生效:
secedit /configure /db sec.sdb /cfg sec.inf /overwrite gpupdate /force -
执行命令禁用 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 个月,日志满时自动归档,禁止直接覆盖。
【配置操作】
-
打开本地组策略编辑器
gpedit.msc,依次展开:计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 审核策略 ,按以下标准配置:表格
策略项 标准配置值 审核账户登录事件 成功、失败 审核账户管理 成功、失败 审核目录服务访问 成功、失败 审核登录事件 成功、失败 审核对象访问 成功、失败 审核策略更改 成功、失败 审核特权使用 成功、失败 审核系统事件 成功、失败 -
配置日志留存规则:
- 按下
Win+R,输入eventvwr.msc,打开事件查看器 - 依次展开:Windows 日志 → 安全,右键选择「属性」
- 日志最大大小设置为
4194240KB(4GB) - 日志满时操作选择「按需要覆盖事件(存档最早的事件)」
- 勾选「日志满时自动存档」,设置存档路径为非系统盘
- 按下
-
执行
gpupdate /force刷新配置生效【核查验证命令】查看审核策略配置
auditpol /get /category:*
【风险说明】未开启全量审核,发生入侵事件后无法追溯攻击行为,日志留存时长不满足要求将直接违反《网络安全法》,导致等保测评不通过。
2.3.3 远程桌面与系统加固
【配置项 ID】WIN-OS-003
【合规依据】等保 2.0 三级 8.1.2.4 入侵防范控制点
【标准要求】【强制项】修改远程桌面默认 3389 端口;开启网络级别身份验证 NLA;限制远程登录用户组;空闲会话 30 分钟自动断开;开启 Windows Defender 防火墙与实时防护。
【配置操作】
-
远程桌面安全加固:
- 右键「此电脑」→「属性」→「远程设置」
- 勾选「允许远程连接到此计算机」,勾选「仅允许运行使用网络级别身份验证的远程桌面的计算机连接」
- 点击「选择用户」,仅添加授权的远程管理用户组,移除 Everyone、Administrators 等默认组
-
修改远程桌面默认端口(注册表配置):
# 打开注册表编辑器 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 -
配置空闲会话断开规则:
- 打开组策略编辑器
gpedit.msc - 依次展开:计算机配置 → 管理模板 → Windows 组件 → 远程桌面服务 → 远程桌面会话主机 → 会话时间限制
- 配置「设置活动但空闲的远程桌面服务会话的时间限制」为已启用,空闲时间限制设置为 30 分钟
- 打开组策略编辑器
-
防火墙与安全防护开启:
# 开启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) 访问。
【配置操作】
-
登录 MySQL 数据库:
mysql -uroot -p -
清理风险账户与测试环境:
-- 查看所有用户与权限 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_%'; -
开启密码复杂度校验:
-- 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; -
限制管理员账号登录范围:
-- 禁止root全网访问,仅允许本地登录 RENAME USER 'root'@'%' TO 'root'@'localhost'; -- 如需远程管理,仅允许指定固定IP登录 RENAME USER 'root'@'%' TO 'root'@'192.168.1.100'; -- 刷新权限生效 FLUSH PRIVILEGES; -
业务账号最小权限配置:
-- 禁止使用:GRANT ALL PRIVILEGES ON *.* TO 'biz_user'@'%'; -- 正确配置:仅授予业务库所需最小权限,限制登录IP段 GRANT SELECT,INSERT,UPDATE,DELETE ON biz_db.* TO 'biz_user'@'192.168.1.%'; FLUSH PRIVILEGES; -
写入配置文件永久生效,编辑
/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 个月,远程同步至日志服务器。
【配置操作】
-
编辑
/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个月) -
创建日志目录并授权:
mkdir -p /var/log/mysql chown mysql:mysql /var/log/mysql chmod 700 /var/log/mysql -
重启 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 用户运行实例。
【配置操作】
-
编辑 Redis 配置文件
redis.conf:vi /etc/redis/redis.conf -
按以下标准修改配置:
# 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 -
创建 Redis 运行用户与数据目录:
useradd -s /sbin/nologin redis chown -R redis:redis /var/lib/redis chown -R redis:redis /etc/redis -
重启 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 方法;配置请求限流。
【配置操作】
-
编辑 Nginx 主配置文件
nginx.conf:vi /etc/nginx/nginx.conf -
全局安全配置(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; } } } -
配置日志轮转规则,编辑
/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 } -
验证配置无误后重载生效:
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 个月。
【配置操作】
-
清理默认风险文件:
# 进入Tomcat安装目录 cd /usr/local/tomcat # 删除管理控制台、示例页面、文档目录 rm -rf webapps/manager webapps/host-manager webapps/docs webapps/examples # 清空默认ROOT页面 rm -rf webapps/ROOT/* -
编辑核心配置文件
conf/server.xml:vi /usr/local/tomcat/conf/server.xml -
端口与连接器加固:
<!-- 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"> -
隐藏 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 -
访问日志与留存配置,编辑
conf/server.xml:<!-- 开启全量访问日志,配置日志格式 --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".log" pattern="%h %l %u %t "%r" %s %b" rotatable="true" maxDays="180" /> <!-- 日志留存180天 --> -
禁止以 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 -
重启 Tomcat 服务生效【核查验证方法】
查看监听端口
netstat -tulpn | grep java
查看版本号是否隐藏
curl -I http://127.0.0.1:18080
验证管理控制台是否可访问
【风险说明】默认管理控制台存在弱口令、未授权访问风险,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、内存资源;开启容器日志审计。
【配置操作】
-
编辑 Docker 守护进程配置文件
/etc/docker/daemon.json:vi /etc/docker/daemon.json -
全局安全配置:
{ "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 # 禁止容器内权限提升 } -
重启 Docker 服务生效:
systemctl daemon-reload systemctl restart docker -
容器运行安全规范(强制执行):
# 错误示例(禁止使用) 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 -
镜像安全规范:
- 仅使用 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。
【配置操作】
-
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 -
配置 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: {} -
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' -
RBAC 最小权限配置规范:
- 禁止给普通用户、ServiceAccount 配置 cluster-admin 集群管理员权限
- 禁止给 Pod 配置默认 ServiceAccount,非必需场景禁用 automountServiceAccountToken
- 命名空间级权限隔离,禁止跨命名空间授权
-
重启 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 基线配套管理规则
- 版本迭代与变更机制:基线规范固定每季度常规迭代,遇合规新规发布、高危漏洞爆发、业务架构重大调整时,启动紧急变更流程,所有变更均需留存跨部门评审记录。
- 业务例外审批流程:因业务兼容性无法满足基线要求的,需提交例外申请,明确豁免项、风险评估、配套防控措施、有效期,经业务、运维、安全部门联合评审通过后方可生效,豁免有效期最长不超过 6 个月,到期自动复核。
- 核查频率匹配规则:核心级资产每日自动化核查,重要级资产每周核查,普通级资产每月核查,等保测评、攻防演练前需执行全量专项核查。
三、自动化基线核查脚本
通过网盘分享的文件:基线脚本.zip
链接: https://pan.baidu.com/s/1dn_2ZngIcixdEMQq2g6Oag?pwd=tiwy 提取码: tiwy
--来自百度网盘超级会员v4的分享


获取到资产信息后ai分析报告即可
四、基线不合规项整改闭环体系落地
自动化核查只是手段,整改闭环才是最终目的,本章节搭建全流程可落地的整改管理体系,解决 "核查不改、闭环失效" 的核心痛点。
4.1 整改闭环全流程设计
搭建不合规项分级分类→工单派发→整改执行→自动复核→归档留存→持续优化的全流程闭环管理体系,确保每一条不合规项都有跟进、有结果、可审计。
4.2 不合规项分级整改策略
基于风险等级与资产重要性,制定差异化整改要求,避免一刀切:
- 高风险项:核心资产不合规项,存在直接被入侵风险或违反合规强制条款,24 小时内完成整改,整改后立即复核;
- 中风险项:重要资产不合规项,存在明确安全隐患,7 个工作日内完成整改;
- 低风险项:普通资产不合规项,不影响核心安全与合规,30 个工作日内完成整改。
4.3 典型不合规项加固实操方案
针对核查中高频出现的不合规项,给出可直接执行的加固方案,降低整改门槛:
-
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 -
Redis 未设置密码认证 编辑
redis.conf配置文件,添加配置:requirepass 【16位以上强密码】 rename-command FLUSHALL "" rename-command CONFIG ""重启 Redis 服务生效。
-
Nginx 泄露版本号 编辑
nginx.conf配置文件,在 http 块中添加:server_tokens off;执行
nginx -t验证配置无误后,nginx -s reload重载生效。 -
Tomcat 开启了默认管理控制台进入 Tomcat 的 webapps 目录,删除 manager、host-manager、docs、examples 目录,重启 Tomcat 生效。
4.4 业务例外豁免管理机制
针对因业务架构、兼容性问题无法整改的不合规项,必须执行规范的例外审批流程:
- 申请条件:仅针对业务必需、无替代方案、整改会导致业务不可用的场景;
- 申请流程:资产负责人提交申请,明确豁免项、风险评估报告、配套防控措施、豁免有效期;
- 审批要求:必须经业务、运维、安全部门负责人三方联合评审通过后方可生效;
- 管控要求:豁免有效期最长不超过 6 个月,到期前 15 个工作日自动触发复核,所有申请与审批记录全程留存。
4.5 整改复核与闭环管理
- 自动复核机制:整改工单完成后,自动触发 OpenSCAP 专项核查,验证不合规项是否修复,修复成功的工单自动闭环,修复失败的退回重改;
- 超期告警升级:工单超期未完成的,自动推送告警给整改负责人;超期 3 个工作日升级至部门负责人;超期 7 个工作日同步至公司管理层与合规部门;
- 审计留痕:整改全流程的工单记录、操作日志、复核结果、审批记录,全部留存至少 6 个月,可追溯、可导出。
4.6 整改赋能支撑体系
- 配套加固脚本库:针对高频不合规项,编写标准化加固脚本,降低整改难度;
- 培训与宣贯:定期面向运维、研发、业务部门开展基线培训,明确管控要求与责任边界;
- 常见问题 FAQ:整理核查与整改中的常见问题与解决方案,形成手册供相关人员查阅。
五、甲方基线体系落地避坑指南
-
安全与业务冲突,基线推行受阻避坑方案:基线制定前充分调研业务需求,提前与业务、运维部门对齐;采用分级分类差异化管控,先在测试环境、非核心资产试点验证,确认无影响后再推广至生产;建立规范的例外审批流程,给业务特殊场景留合规出口。
-
资产覆盖不全,影子资产成为核查盲区避坑方案:将基线合规纳入资产上线审批流程,未纳入 CMDB、未通过基线核查的资产禁止上线;OpenSCAP 对接 CMDB 自动同步资产清单;每季度执行全网资产探测,补全影子资产并纳入管控。
-
自动化核查权限过高,引入新的安全风险避坑方案:创建专用只读核查账号,禁止使用管理员 /root 账号执行核查;所有核查命令仅执行只读操作,严禁包含写入、修改指令;核查账号凭证定期轮换,所有操作全程日志审计。
-
规则库不适配,出现大量误报 / 漏报避坑方案:所有规则上线前必须先在测试环境验证;针对业务特殊配置裁剪规则库;建立误报反馈机制,定期优化规则,提升核查准确率。
-
整改闭环失效,工单下发后无人跟进避坑方案:明确资产负责人与整改责任人,责任到人;将资产合规率纳入部门与个人绩效考核;定期向管理层汇报各业务线合规率排名与整改进度;提供配套技术支持,降低整改门槛。
-
等保审计无留痕,合规举证不足避坑方案:基线配置与合规条款一一映射,形成对照表;基线制定、评审、变更全流程记录留存;核查报告、整改工单、例外审批记录至少留存 6 个月,可随时导出用于审计。
六、基线体系效果度量与持续优化
6.1 核心量化度量指标
通过可量化的指标,直观呈现基线体系的建设价值,核心分为 4 大类:
- 合规类指标:整体资产合规率、核心资产合规率、基线强制项合规通过率、等保测评基线项一次性通过率;
- 整改类指标:不合规项整改率、整改及时率、超期未整改项占比、例外豁免项占比;
- 安全类指标:基线相关安全事件发生率、高危基线风险闭环时长、攻防演练中基线相关风险点占比;
- 运营类指标:人工核查工作量下降比例、基线核查全流程耗时、运维团队整改响应时长。
6.2 持续优化机制
基线体系不是一成不变的,需建立长效优化机制:
- 基线规则迭代:每季度组织跨部门评审完成常规更新,遇合规新规、高危漏洞、业务架构调整时启动紧急变更,同步更新基线与核查规则;
- 核查能力优化:持续拓展资产覆盖范围,适配新的业务场景,定期优化规则降低误报率,提升批量核查效率;
- 运营流程优化:每季度复盘运营情况,收集业务、运维部门反馈,优化整改与审批流程,降低安全管控对业务的影响。
6.3 管理层汇报核心逻辑
向管理层汇报时,核心围绕三大价值展开,避免堆砌技术细节:
- 合规价值:呈现当前合规率、等保达标情况,明确基线体系规避了合规处罚风险;
- 安全价值:呈现基线相关安全事件的下降情况,明确基线体系抵御了 80% 的基础攻击,降低了企业安全风险;
- 运营价值:呈现人工核查工作量的下降情况、整改效率的提升情况,明确基线体系降低了安全运营的人力成本。
七、结尾总结
安全基线是甲方企业安全防御体系的 "地基",是合规管控的刚性底线,也是实战攻防中最基础、最有效的防护手段。
本文从甲方落地的实际需求出发,输出了可直接复用的全场景核心基线配置规范,手把手讲解了 OpenSCAP 开源工具的全流程部署与自动化核查实操,搭建了完整的不合规项整改闭环体系,同时梳理了落地过程中的高频踩坑点与避坑方案。
对于甲方企业而言,基线规范的制定是前提,自动化核查是落地的核心,整改闭环是价值实现的关键。只有搭建起 "制定 - 核查 - 整改 - 优化" 的全流程闭环体系,才能真正让基线规范落地生效,实现从 "被动救火" 到 "主动防御" 的安全体系升级,同时满足等保 2.0 等合规要求,为企业的业务发展筑牢安全底座。