尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【学习笔记】等保合规安全基线核查实战

【学习笔记】等保合规安全基线核查实战 这篇文章按五大核查对象拆解基线核查的全部要点每个对象给核查项、给命令、给整改动作最后讲清楚核查之后的整改闭环怎么建。文中命令均在 RHEL/CentOS 8、麒麟 V10、统信 UOS、MySQL 8.0、Oracle 19c、Tomcat 9 等现行主流版本上核对过语法可直接照做。01 基线核查为什么是测评的重头戏等保 2.0 的标准体系由三份国标构成GB/T 22239-2019《网络安全等级保护基本要求》、GB/T 25070-2019《安全设计技术要求》、GB/T 28448-2019《测评要求》。现场测评的方法只有三种访谈、核查、测试。其中核查查配置、看记录承接了绝大多数测评项。图 1基线核查在等保测评中的位置以三级系统安全计算环境的 11 个控制点为例身份鉴别、访问控制、安全审计、入侵防范这四个控制点的测评项几乎全部落在配置核查上——口令策略达不达标、审计日志开没开、默认账户改没改全是一行配置的事。基线过硬测评就顺基线松散访谈讲得再好也补不回来。法规锚点《网络安全法》第二十一条要求采取监测记录网络运行状态、网络安全事件的技术措施并按照规定留存网络日志不少于六个月三级系统依据《信息安全等级保护管理办法》每年至少测评一次《关键信息基础设施安全保护条例》自 2021 年 9 月 1 日施行后关基系统的配置核查要求进一步加严。02 八大通用核查项五类对象全部适用不管是主机、数据库还是防火墙总有一组核查项跨对象通用。把这八项做成默认基线模板新系统上线即套用是成本最低的合规方式。图 2八大通用核查项与等保 2.0 控制点映射三级两点说明其一等保 2.0 原文对多数条款是定性要求如应对登录的用户进行身份标识和鉴别8 位口令、90 天更换、5 次锁定这类具体数值来自测评实践与行业基线金融行业 JR/T 0071 系列、CIS Benchmarks 等数值可按行业要求从严调整。其二通用项落到不同对象上语法不同——下面分对象逐一展开。03 主机核查一Linux 实战图 3主机核查 Linux 与 Windows 对照总览3.1 身份鉴别口令三件套 失败锁定口令周期看/etc/login.defs复杂度看/etc/security/pwquality.conf。注意 login.defs 的PASS_MIN_LEN只在非 PAM 场景生效实际复杂度以 pwquality 为准# /etc/login.defs 口令周期PASS_MAX_DAYS 90PASS_MIN_DAYS 7PASS_WARN_AGE 7PASS_MIN_LEN 8# /etc/security/pwquality.conf 口令复杂度PAM 生效minlen 8dcredit -1ucredit -1lcredit -1ocredit -1maxrepeat 3enforcing 1登录失败锁定RHEL 8/麒麟 V10/统信 UOS 已用pam_faillock取代老的 pam_tally2后者在这些版本已移除。推荐做法是编辑/etc/security/faillock.conf后用 authselect 启用不必手改 PAM 文件# 1) 编辑 /etc/security/faillock.confdeny 5fail_interval 900unlock_time 900even_deny_rootroot_unlock_time 900# 2) 通过 authselect 启用RHEL 8 / 麒麟 V10 / 统信 UOSauthselect enable-feature with-faillockauthselect apply-changes核查与解锁命令# 查看指定用户的失败记录faillock --user root# 解锁整改后清零计数faillock --user zhangsan --reset# 核查 PAM 是否已挂载 faillockpassword-auth / system-authgrep pam_faillock /etc/pam.d/password-auth3.2 访问控制禁 root 远程 排查空口令SSH 侧四项基线改完systemctl restart sshd生效# /etc/ssh/sshd_configPermitRootLogin noMaxAuthTries 4PermitEmptyPasswords noClientAliveInterval 600ClientAliveCountMax 1# 说明禁止root远程登录 / 认证尝试上限4次 / 严禁空口令# 空闲600秒探测1次未响应即断开会话超时10分钟# 终端通用超时 /etc/profile.d/tmout.shTMOUT600readonly TMOUTexport TMOUT空口令与默认账户排查、umask 收紧# 排查空口令账户有输出即为高风险项awk -F: ($2 ){print 空口令账户: $1} /etc/shadow# 锁定/删除无用账户usermod -L demo_user # 锁定userdel -r demo_user # 删除# 默认 umask 收紧为 027echo umask 027 /etc/profile.d/umask.sh# 关键文件权限核查shadow 属主 root其他用户不可读写ls -l /etc/passwd /etc/shadow /etc/gshadow3.3 安全审计审计规则 远程转发 六个月留存审计分两层内核审计auditd 记录关键文件与调用和系统日志rsyslog 统一收集转发。规则写到/etc/audit/rules.d/audit.rules用augenrules加载重启不丢# /etc/audit/rules.d/audit.rules 关键文件监控-w /etc/passwd -p wa -k identity-w /etc/group -p wa -k identity-w /etc/shadow -p wa -k identity-w /etc/gshadow -p wa -k identity-w /etc/sudoers -p wa -k scope-w /etc/sudoers.d/ -p wa -k scope# 加载并核查augenrules --loadsystemctl enable --now auditdauditctl -s # 状态enabled1 即审计开启auditctl -l # 已加载规则列表远程转发与留存周期表示 TCP、单个表示 UDPlogrotate 按周轮转 26 份即约六个月# /etc/rsyslog.conf 远程转发TCPUDP*.* 192.168.10.10:514systemctl restart rsyslog# /etc/logrotate.conf 按周轮转 26 份 ≈ 6 个月weeklyrotate 263.4 入侵防范最小安装 SELinux 补丁# 最小安装核查看已启用服务与监听端口systemctl list-unit-files --stateenabledss -tulpn# SELinux 应为 Enforcinggetenforce# 永久生效/etc/selinux/config 中 SELINUXenforcing# 安全补丁RHEL 8 用 dnfdnf update --security -yrpm -qa --last | head -203.5 一键自查脚本只读不改动系统把上述核查项串成脚本测评前自己先跑一遍报告里的问题项清零再迎评#!/bin/bash# 等保 Linux 基线自查只读echo 1 口令策略 grep -E ^PASS_(MAX_DAYS|MIN_DAYS|WARN_AGE) /etc/login.defsgrep -E ^minlen|^[udlo]credit /etc/security/pwquality.confecho 2 登录失败锁定 grep -Ev ^#|^$ /etc/security/faillock.confecho 3 SSH 基线 sshd -T | grep -Ei permitrootlogin|maxauthtries|permitemptypasswordsecho 4 空口令账户 awk -F: ($2 ){print $1} /etc/shadowecho 5 审计与日志 systemctl is-active auditd rsyslogauditctl -s | head -3echo 6 留存周期 grep -E ^weekly|^rotate /etc/logrotate.conf04 主机核查二Windows 实战Windows 的口令与锁定策略看net accounts一条命令的输出即可判定整改既可以用命令行批量改也可以走组策略gpedit.msc计算机配置 → Windows 设置 → 安全设置 → 账户策略# 核查口令与锁定策略现状net accounts# 整改口令四项长度/有效期/最短天数/历史次数net accounts /minpwlen:8 /maxpwage:90 /minpwage:7 /uniquepw:5# 整改锁定策略5 次失败锁 15 分钟计数窗口 15 分钟net accounts /lockoutthreshold:5 /lockoutduration:15 /lockoutwindow:15审核策略用auditpol核查九类审核事件登录/账户登录/对象访问/策略更改/权限使用/详细跟踪/系统/账户管理/进程跟踪按测评要求开启成功或失败# 核查九类审核策略开启情况auditpol /get /category:*# 整改示例开启登录事件成功失败审核# 中文系统子类别名已本地化建议用组策略统一配置# gpedit.msc → 计算机配置 → Windows 设置 → 安全设置 → 高级审核策略# 导出本地安全策略做证据留存secedit /export /cfg C:\secpol.cfgfindstr /i password lockout C:\secpol.cfg账户治理与三项注册表基线重命名 Administrator 用 PowerShell 的 Rename-LocalUser比已淘汰的 wmic 更通用# 重命名内置 AdministratorPowerShell管理员Rename-LocalUser -Name Administrator -NewName secadmin# 禁用 Guestnet user guest /active:no# 关闭默认管理共享需重启 Server 服务或重启主机reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters ^/v AutoShareServer /t REG_DWORD /d 0 /f# 核查 RDP 是否启用 NLAUserAuthentication1 即开启$rk HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-TcpGet-ItemProperty $rk -Name UserAuthentication05 数据库核查三大产品 信创图 4数据库核查要点总览5.1 Oracle11g/12c/19c口令策略全部落在 Profile 上一条查询看全貌-- 口令策略全景关注 DEFAULT 与自建 ProfileSELECT profile, resource_name, limitFROM dba_profilesWHERE resource_type PASSWORDORDER BY profile, resource_name;整改与审计核查-- 整改失败 5 次锁定口令 90 天过期ALTER PROFILE DEFAULT LIMITFAILED_LOGIN_ATTEMPTS 5PASSWORD_LIFE_TIME 90;-- 核查审计开关重启实例后生效SELECT name, value FROM v$parameter WHERE name audit_trail;ALTER SYSTEM SET audit_trail DB,EXTENDED SCOPE SPFILE;-- 默认账户状态核查SELECT username, account_status FROM dba_usersWHERE account_status LIKE OPEN%;ALTER USER outln ACCOUNT LOCK;默认账户核查重点关注 dbsnmp、outln、xs$null 等账户状态不在用的锁定19c 建议同时启用统一审计Unified Auditing审计记录查unified_audit_trail。5.2 MySQL 8.08.0 的口令复杂度组件validate_password component注意与旧插件的变量名差异组件用点号命名-- 安装口令复杂度组件MySQL 8.0INSTALL COMPONENT file://component_validate_password;SHOW VARIABLES LIKE validate_password%;-- 整改SET PERSIST 重启不丢SET PERSIST validate_password.length 8;SET PERSIST validate_password.mixed_case_count 1;SET PERSIST validate_password.number_count 1;SET PERSIST validate_password.special_char_count 1;-- 口令自动过期全局默认 90 天SET PERSIST default_password_lifetime 90;登录失败限制用 connection_control 插件延迟单位是毫秒900000ms 15 分钟安全路径与监听地址核查-- 登录失败限制connection_control 插件INSTALL PLUGIN connection_control SONAME connection_control.so;INSTALL PLUGIN connection_control_failed_login_attemptsSONAME connection_control.so;SET PERSIST connection_control_failed_connections_threshold 5;-- 单位毫秒900000ms 15 分钟SET PERSIST connection_control_min_connection_delay 900000;-- 核查安全路径与匿名账户SHOW VARIABLES LIKE secure_file_priv;SELECT user, host FROM mysql.user;-- /etc/my.cnf [mysqld] 收敛监听bind-address 10.0.0.5审计提示MySQL 社区版不带审计插件企业版用 MySQL Enterprise Auditaudit_log 插件社区方案可选 Percona Server 的 audit_log 插件或 MariaDB 的 server_audit等保场景必须补齐——无审计是数据库核查的最常见高风险项。5.3 SQL Server-- 口令策略核查应为 1SELECT name, is_policy_checked, is_expiration_checkedFROM sys.sql_logins;ALTER LOGIN app_user WITH CHECK_POLICY ON;-- sa 治理改名并禁用ALTER LOGIN sa WITH NAME [sec_sa];ALTER LOGIN sa DISABLE;-- C2 审计官方要求重启实例后生效EXEC sys.sp_configure show advanced options, 1; RECONFIGURE;EXEC sys.sp_configure c2 audit mode, 1; RECONFIGURE;-- 新版本建议改用 SQL Server Audit 对象登录审计设为成功和失败5.4 信创数据库达梦 DM8 的SP_SET_PARA_VALUE体系与金仓 KingbaseES 的 kingbase.conf 配置核查逻辑与传统数据库同源口令策略、审计开关、权限模型三件事。两家均自带安全基线检查工具DM 的安全版本工具集、KingbaseES 的 sys_security 相关检查建议内置工具全量扫描 关键项手工复核报告直接作为测评证据附件。06 中间件核查直面互联网的第一入口图 5中间件核查要点总览6.1 Nginx# nginx.conf / conf.d/*.confserver_tokens off;ssl_protocols TLSv1.2 TLSv1.3;# TLS1.3 密套自动协商此处仅约束 TLS1.2ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;ssl_prefer_server_ciphers on;# 禁用不必要的 HTTP 方法if ($request_method ~* ^(PUT|DELETE)$) { return 403; }keepalive_timeout 30;client_max_body_size 10m;access_log /var/log/nginx/access.log main;改完先nginx -t验证语法再systemctl reload nginx日志走 logrotate 留存六个月。6.2 Tomcat9.xserver.xml 三处硬基线shutdown 端口改掉并换长随机串、AJP 只绑本机并设 secretGhostcat 漏洞 CVE-2020-1938 的标准修复、启用 HTTPS!-- 1. shutdown 端口与口令 --Server port8015 shutdownSTR0NG-R4nd0m-Secret!-- 2. AJP只绑本机 强制 secret修复 Ghostcat--Connector protocolAJP/1.3 port8009address127.0.0.1secretRequiredtrue secretAjp-S3cret-Key /!-- 3. HTTPS 连接器TLS 1.2--Connector port8443 protocolorg.apache.coyote.http11.Http11NioProtocolSSLEnabledtrue schemehttps securetrue SSLHostConfig protocolsTLSv1.2,TLSv1.3Certificate certificateKeystoreFileconf/keystore.jks //SSLHostConfig/Connector再删掉 webapps 下不用的 docs、examples、manager、host-manager 目录manager 若必须保留conf/tomcat-users.xml里配强口令并绑定内网访问。6.3 WebLogicWebLogic 核查重点控制台/console配置 IP 白名单与登录锁定、删除安装时自带的 samples/medrec 示例应用、部署目录权限最小化、管理通道切 SSL以及按季度跟 Oracle CPU关键补丁更新——WebLogic 历年反序列化漏洞CVE-2015-4852 及后续系列的根治手段就是补丁。07 网络设备核查网络设备的通用项与主机一致口令、锁定、SSH、SNMPv3、日志、NTP、关闭未用端口、配置备份落成各厂商命令。H3C Comware 7 的口令体系一条命令族搞定# H3C Comware 7 口令基线# 开头为说明无需输入password-control enable# 口令 90 天过期password-control aging 90# 最短 8 位至少含 3 类字符、每类至少 1 个password-control length minimum 8password-control composition type-number 3 type-length 1# 5 次失败锁定 15 分钟password-control login-attempt 5 exceed lock-time 15# 最多连续 3 个相同字符password-control complexity same-character 3华为 VRP 关闭 Telnet、启用 STelnet AAA# 华为 VRP关 Telnet用 STelnet AAAaaalocal-user secops password irreversible-cipher XXXXXXlocal-user secops privilege level 15local-user secops service-type sshstelnet server enablessh user secops authentication-type passwordssh user secops service-type stelnetuser-interface vty 0 4authentication-mode aaaprotocol inbound sshidle-timeout 15SNMP 一律用 v3关闭 v1/v2c 团体字尤其 public/privateCisco IOS 写法示例! Cisco IOSSNMPv3关闭 v1/v2c 团体字no snmp-server community public ROno snmp-server community private RWsnmp-server group SECGRP v3 privsnmp-server user secmon SECGRP v3auth sha Auth-Passw0rd priv aes 128 Priv-Passw0rd! 设备日志统一外发logging host 192.168.10.10ntp server 192.168.10.20另有两项容易漏NTP 统一时间源日志时间戳不一致审计证据直接作废和配置定期备份测评要查变更记录。08 云平台核查先分清责任边界等保 2.0 对云计算场景明确了责任共担云平台自身要过等保向云商索取平台的等保备案证明与测评报告结论租户负责自己实例内的操作系统、应用与数据配置。租户侧核查清单五条① IAM 账户治理开启密码策略与图 2 通用项对齐、主账号与子账号全部启用 MFA、按最小权限授权禁用长期 AccessKey 改用临时凭证。② 安全组最小开放管理端口22/3389/数据库端口禁止 0.0.0.0/0 全网放行按源 IP 收敛。③ 操作审计开启操作审计/日志服务并外发归档留存不少于 180 天满足六个月要求的下行线。④ 运维收口所有云上运维经堡垒机录像留存。⑤ 基线自动扫描用云安全中心/主机安全的基线检查能力内置等保 2.0 与 CIS 基线模板每月全量扫一次问题项与图 6 的整改闭环打通。09 核查之后整改、复测与持续合规图 6核查 → 整改 → 复测闭环核查报告出来只是开始。整改按风险分三级高危立即改空口令、明文管理通道、审计关闭——都是测评里的高风险判定项直接影响结论中危限期改口令策略、锁定阈值不达标低危排期改版本信息隐藏、banner 修改。每项整改后复测留证改前配置截图、改后配置截图、复测命令输出三件套归档测评师要什么给什么。频率上建议三级演进从迎评前的一次性突击走向季度周期核查最终落到配置漂移持续监控——基线固化后任何偏离默认配置的变更自动告警合规从运动式变成日常态。10 进阶基线即代码Baseline as Code人工核查不可持续终局是把基线写成代码。Ansible 示例——两条任务就能让百台主机的口令周期自动达标、偏离自动纠正# baseline.yml —— 口令周期基线偏离自动纠正- name: 等保口令基线hosts: allbecome: truetasks:- name: 确保 PASS_MAX_DAYS90ansible.builtin.lineinfile:path: /etc/login.defsregexp: ^PASS_MAX_DAYSline: PASS_MAX_DAYS 90- name: 确保审计服务运行并自启ansible.builtin.systemd:name: auditdstate: startedenabled: true# 执行ansible-playbook -i inventory baseline.yml配合 Git 版本管理与 CI 流水线基线模板的每次变更都有评审记录这本身就是等保安全建设管理部分要查的配置管理证据。基线核查没有高深技术拼的是清单化、命令化、闭环化。把这篇文章里的清单落成自己环境的模板核查从测评前熬夜变成每周半小时——这才是等保实战的正确姿势。参考文献等保合规安全基线核查实战
返回列表