等保 2.0 三级合规实操手册:运维能看懂的主机与网络配置指南
等保 2.0 三级合规实操手册:运维能看懂的主机与网络配置指南

“拿到等保测评报告,看着‘身份鉴别不达标’‘日志留存不足’等问题,却不知道怎么改 —— 改了怕影响业务,不改又通不过测评”“等保条款里的‘安全审计’‘访问控制’太抽象,不知道对应到 Linux 服务器上该敲什么命令”—— 这是运维人员做等保合规最常见的困境:合规要求与日常运维操作脱节,想落地却找不到 “技术衔接点”。
等保 2.0 三级的核心不是 “新增复杂配置”,而是 “在现有运维基础上补充安全规则”—— 比如你每天用sshd管理服务器,现在只需多改 3 行配置就能满足 “身份鉴别” 要求;你熟悉的iptables,稍作调整就是 “网络访问控制” 的合规方案。本文从运维视角出发,每个合规点都对应 “命令 + 配置 + 脚本”,让你拿着手册就能动手改,改完就能通过测评。
一、先明确:运维必看的等保 2.0 三级核心要求(只挑 “能落地的技术项”)
等保 2.0 三级技术要求分 “物理环境、网络安全、主机安全、应用安全、数据安全”5 大类,其中主机、网络、数据、日志是运维能独立落地的核心领域,占技术合规分的 70%,先聚焦这 4 块(物理环境多由行政负责,应用安全需开发配合):
| 合规领域 | 核心技术要求(2025 年测评重点) | 运维操作关联点 | 整改难度 |
|---|---|---|---|
| 主机安全 | 1. 账号安全(密码复杂度、定期更换、禁用 root 远程);2. 进程 / 服务管控(关闭无用服务);3. 补丁管理(高危漏洞及时修复) | Linux/Windows 服务器日常管理(useradd、systemctl、yum) | ★★☆☆☆ |
| 网络安全 | 1. 访问控制(防火墙 ACL 规则、端口限制);2. 边界防护(DMZ 区划分、内外网隔离);3. 恶意代码防护(防火墙病毒过滤) | 路由器 / 交换机配置(iptables、VLAN)、防火墙管理 | ★★★☆☆ |
| 数据安全 | 1. 数据备份(核心数据定期备份、异地备份);2. 数据加密(敏感字段加密存储);3. 访问控制(数据库账号最小权限) | 数据库运维(mysqldump、MySQL 权限配置)、文件加密(openssl) | ★★★☆☆ |
| 日志审计 | 1. 日志留存(至少 6 个月);2. 日志内容(含用户操作、系统事件、安全事件);3. 日志分析(能定位异常操作) | 日志系统管理(rsyslog、ELK、日志轮转) | ★★★☆☆ |
核心认知:等保合规不是 “推翻现有运维”,而是 “给运维加安全规则”—— 比如你之前用yum update更系统补丁,现在只需多一步 “记录补丁修复日志”;你之前用iptables开端口,现在只需补充 “限制访问源 IP”,无需从零学新技能。
二、实操模块 1:主机安全配置(Linux/Windows,附命令模板)
主机安全是等保合规的 “基础分”,也是运维最易落地的部分,重点搞定 “账号、服务、补丁”3 个核心点,以 CentOS 7 和 Windows Server 2019 为例:
1. 账号安全(满足 “身份鉴别” 要求)
(1)Linux 服务器(CentOS 7)
| 合规要求 | 运维操作步骤 | 命令 / 配置示例 | 验证方法 |
|---|---|---|---|
| 密码复杂度:至少 8 位,含大小写 + 数字 + 特殊符号 | 1. 修改/etc/login.defs配置密码规则;2. 用pam_cracklib模块强制复杂度 | 1. vim /etc/login.defs:PASS_MIN_LEN 8PASS_MAX_DAYS 90(密码有效期 90 天)2. vim /etc/pam.d/system-auth:添加password required pam_cracklib.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1(d = 数字,u = 大写,o = 特殊符号,l = 小写) | 1. 新建用户测试:useradd testpasswd test,输入简单密码(如 123456),系统提示 “密码不符合要求” |
| 禁用 root 远程登录 | 1. 修改 sshd 配置文件;2. 重启 sshd 服务 | 1. vim /etc/ssh/sshd_config:PermitRootLogin no(默认可能是 yes)2. systemctl restart sshd | 1. 远程测试:ssh root@服务器IP,提示 “Permission denied”2. 用普通账号登录:ssh test@服务器IP,登录成功后sudo提权 |
| 账号定期清理(删除长期未登录账号) | 1. 用lastlog查看账号登录时间;2. 禁用 / 删除 3 个月未登录账号 | 1. 查看未登录账号:`lastlog | grep “Never logged in” 2. 禁用账号:usermod -L 账号名 3. 删除账号:userdel -r 账号名 `(-r 删除家目录) |
(2)Windows Server 2019
| 合规要求 | 运维操作步骤 | 操作路径 / 命令 | 验证方法 |
|---|---|---|---|
| 密码复杂度与有效期 | 1. 打开 “本地安全策略”;2. 配置密码策略 | 1. 运行secpol.msc→“账户策略”→“密码策略”2. 设 “密码长度最小值” 为 8,“密码最长使用期限” 为 90 天 | 1. 新建用户:“计算机管理”→“本地用户和组”→“用户”,新建用户时提示 “密码必须满足复杂度要求” |
| 禁用管理员远程登录 | 1. 修改组策略;2. 限制远程桌面用户组 | 1. 运行gpedit.msc→“计算机配置”→“Windows 设置”→“安全设置”→“本地策略”→“用户权限分配”→“允许通过远程桌面服务登录”2. 删除 “Administrators” 组,添加 “Remote Desktop Users” 组(只加普通账号) | 1. 用管理员账号远程登录:提示 “无法登录,因为该用户账号未被授权” |
2. 服务与进程管控(满足 “入侵防范” 要求)
Linux 服务器(CentOS 7)
-
核心操作:关闭无用服务(如 rpcbind、telnet、vsftpd),减少攻击面
-
步骤:
-
查看运行中的服务:systemctl list-units --type=service --state=running
-
关闭并禁用服务(以 rpcbind 为例):
systemctl stop rpcbind # 停止当前服务
systemctl disable rpcbind # 禁止开机启动
systemctl mask rpcbind # 彻底禁用(防止被意外启动)
- 验证:systemctl status rpcbind,显示 “inactive (dead)”
- 避坑点:关闭服务前先确认是否关联业务,比如httpd(Apache)若承载 Web 业务,不能关闭;可先在测试环境验证,再在生产环境操作(建议凌晨低峰期)。
3. 补丁管理(满足 “漏洞修复” 要求)
Linux 服务器(CentOS 7)
-
核心操作:定期扫描高危漏洞,24 小时内修复(等保要求)
-
步骤:
- 安装漏洞扫描工具(Lynis,开源免费):
yum install -y epel-release # 安装依赖源
yum install -y lynis # 安装Lynis
-
扫描服务器漏洞:lynis audit system,扫描完成后会输出 “高危漏洞列表”(如 “CVE-2021-44228 Log4j 漏洞”)
-
修复漏洞(以 Log4j 为例):
yum update log4j # 升级Log4j到安全版本
echo "Log4j补丁修复完成,版本:$(rpm -qa | grep log4j)" >> /var/log/patch.log # 记录修复日志(等保需留存)
- 验证:rpm -qa | grep log4j,显示安全版本(如log4j-2.17.0-1.el7.noarch)
- 运维技巧:用 Ansible 批量管理多台服务器,避免手动操作(附批量补丁脚本模板):
# ansible-patch.yml(批量升级系统补丁)
- name: 批量升级CentOS服务器补丁
hosts: all
tasks:
- name: 安装Lynis漏洞扫描工具
yum: name=lynis state=present
- name: 扫描高危漏洞
command: lynis audit system --quiet
register: lynis_result
- name: 输出漏洞结果到本地日志
local_action: copy content="{{ lynis_result.stdout }}" dest="/var/log/lynis_{{ inventory_hostname }}.log"
- name: 升级所有高危漏洞补丁
yum: name=* state=latest # 生产环境建议指定具体包名,避免意外升级影响业务
- name: 记录补丁日志
command: echo "补丁升级完成:$(date)" >> /var/log/patch.log
执行脚本:ansible-playbook -i 服务器IP列表 ansible-patch.yml
三、实操模块 2:网络安全配置(防火墙 + VLAN,附 ACL 规则)
网络安全是等保合规的 “边界分”,重点搞定 “防火墙访问控制、DMZ 区划分”,以 Linux iptables(软件防火墙)和华为交换机(硬件)为例:
1. 防火墙访问控制(满足 “网络边界防护” 要求)
Linux iptables 配置(CentOS 7)
-
核心需求:只开放业务必需端口(如 80/443 Web 端口、22 SSH 端口),拒绝所有其他端口访问;限制 SSH 登录源 IP(仅允许公司办公网)
-
步骤:
- 清空现有规则(生产环境建议先备份):
iptables-save > /etc/sysconfig/iptables.bak # 备份现有规则
iptables -F # 清空所有规则
iptables -X # 删除自定义链
- 配置基础规则(允许回环、已建立连接、ICMP):
iptables -A INPUT -i lo -j ACCEPT # 允许回环接口(本地通信)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许已建立连接
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # 允许ping(可选,方便运维排查)
- 配置业务端口规则(仅允许办公网访问 SSH):
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT # 仅公司办公网(192.168.1.0/24)可访问SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许所有IP访问Web(80端口)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许所有IP访问HTTPS(443端口)
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited # 拒绝所有其他入站请求
- 保存规则并设置开机启动:
service iptables save # 保存规则到/etc/sysconfig/iptables
systemctl enable iptables # 开机启动iptables
- 验证:iptables -L -n,查看规则是否生效;用非办公网 IP 访问 SSH,提示 “连接被拒绝”
华为交换机 VLAN 划分(DMZ 区配置)
-
核心需求:将 Web 服务器放在 DMZ 区,数据库服务器放在内网区,仅允许 DMZ 区访问内网区的 3306 端口(数据库),禁止内网区访问 DMZ 区
-
步骤:
- 创建 VLAN 并划分端口:
vlan batch 10 20 # 创建VLAN10(DMZ区)、VLAN20(内网区)
interface GigabitEthernet 0/0/1 # Web服务器连接端口
port access vlan 10 # 划入DMZ区(VLAN10)
interface GigabitEthernet 0/0/2 # 数据库服务器连接端口
port access vlan 20 # 划入内网区(VLAN20)
- 配置 ACL 规则(限制 VLAN 间访问):
acl number 3000 # 创建ACL 3000
rule permit tcp source vlan 10 destination vlan 20 destination-port eq 3306 # 允许DMZ区访问内网区3306端口
rule deny ip source vlan 20 destination vlan 10 # 禁止内网区访问DMZ区
interface Vlanif 10 # 进入DMZ区VLAN接口
traffic-filter outbound acl 3000 # 应用ACL规则
- 验证:在 Web 服务器(VLAN10)上telnet 数据库IP 3306,连接成功;在内网 PC(VLAN20)上ping Web服务器IP,提示 “请求超时”
2. 恶意代码防护(满足 “恶意代码防范” 要求)
- Linux 服务器:安装 ClamAV(开源杀毒软件),每周扫描一次
yum install -y clamav clamav-update # 安装ClamAV
freshclam # 更新病毒库
clamscan -r / --log=/var/log/clamav/scan.log # 全盘扫描,日志存到/var/log/clamav
# 设置定时任务(每周日凌晨2点扫描)
echo "0 2 * * 0 /usr/bin/clamscan -r / --log=/var/log/clamav/scan.log" >> /var/spool/cron/root
- 避坑点:扫描时排除业务目录(如/var/www/html),避免占用 IO 影响业务,可加–exclude=/var/www/html参数。
四、实操模块 3:数据安全配置(备份 + 加密,附脚本)
数据安全是等保合规的 “关键分”,重点搞定 “定期备份、敏感加密”,以 MySQL 数据库和 Linux 文件为例:
1. 数据备份(满足 “数据备份与恢复” 要求)
MySQL 数据库备份(每日全量 + 增量备份)
-
核心要求:核心数据每日全量备份,保留至少 6 个月;每月做 1 次异地备份(等保三级要求)
-
步骤:
- 编写全量备份脚本(mysql_full_backup.sh):
#!/bin/bash
BACKUP_DIR="/data/backup/mysql/full" # 本地备份目录
REMOTE_DIR="backup@192.168.2.100:/data/backup/mysql/remote" # 异地备份目录(另一台服务器)
DATE=$(date +%Y%m%d)
# 创建备份目录
[ ! -d $BACKUP_DIR ] && mkdir -p $BACKUP_DIR
# 全量备份(用mysqldump)
mysqldump -uroot -p"数据库密码" --all-databases --single-transaction --routines --triggers > $BACKUP_DIR/mysql_full_$DATE.sql
# 压缩备份文件
gzip $BACKUP_DIR/mysql_full_$DATE.sql
# 复制到异地备份目录(用scp,需配置免密登录)
scp $BACKUP_DIR/mysql_full_$DATE.sql.gz $REMOTE_DIR/
# 删除6个月前的本地备份(避免磁盘满)
find $BACKUP_DIR -name "mysql_full_*.sql.gz" -mtime +180 -delete
# 记录备份日志
echo "MySQL全量备份完成:$DATE,文件:mysql_full_$DATE.sql.gz" >> /var/log/mysql_backup.log
-
赋予脚本执行权限:chmod +x mysql_full_backup.sh
-
设置定时任务(每日凌晨 1 点执行):
echo "0 1 * * * /data/scripts/mysql_full_backup.sh" >> /var/spool/cron/root
- 验证:ls /data/backup/mysql/full,查看是否生成当日备份文件;登录异地服务器,查看/data/backup/mysql/remote是否有同步文件
2. 数据加密(满足 “敏感数据保护” 要求)
Linux 文件加密(敏感配置文件,如数据库密码文件)
-
核心需求:/etc/my.cnf(MySQL 配置文件)中若存密码,需加密存储
-
步骤:
- 用 openssl 加密文件:
openssl enc -aes-256-cbc -salt -in /etc/my.cnf -out /etc/my.cnf.enc # 加密my.cnf
rm -rf /etc/my.cnf # 删除原明文文件
- 使用时解密(如修改配置):
openssl enc -d -aes-256-cbc -in /etc/my.cnf.enc -out /etc/my.cnf # 解密
# 修改完成后重新加密
openssl enc -aes-256-cbc -salt -in /etc/my.cnf -out /etc/my.cnf.enc
rm -rf /etc/my.cnf
- 记录密钥:将加密密钥存到安全设备(如 Ukey),避免明文存储(等保禁止密钥明文存放)
五、实操模块 4:日志审计配置(ELK + 日志留存,附模板)
日志审计是等保合规的 “追溯分”,重点搞定 “留存 6 个月、包含关键信息、可分析”,以 ELK Stack(Elasticsearch+Logstash+Kibana)为例:
1. 日志收集范围(等保要求必须包含的日志)
| 日志类型 | 日志来源 | 关键信息(必须包含) |
|---|---|---|
| 系统日志 | Linux /var/log/messages、Windows “事件查看器” | 用户登录(成功 / 失败)、进程启动 / 关闭、系统重启 |
| 安全日志 | Linux /var/log/secure、iptables 日志 | SSH 登录、sudo 操作、防火墙规则匹配(如拒绝访问) |
| 业务日志 | Web 服务器(Nginx /var/log/nginx/access.log)、数据库(MySQL 慢查询日志) | 访问 IP、请求 URL、操作结果(成功 / 失败)、时间戳 |
2. ELK 配置(实现日志留存与分析)
步骤 1:安装 ELK(以 CentOS 7 为例,用 Docker 简化部署)
# 1. 安装Docker(略,参考Docker官方文档)
# 2. 下载ELK Docker Compose模板
curl -L https://github.com/deviantony/docker-elk/archive/refs/heads/main.zip -o docker-elk.zip
unzip docker-elk.zip && cd docker-elk-main
# 3. 修改Logstash配置(收集Linux secure日志)
vim logstash/pipeline/logstash.conf
Logstash 配置模板(收集/var/log/secure日志):
input {
file {
path => "/var/log/secure" # 日志路径(需挂载到Docker容器)
start_position => "beginning"
sincedb_path => "/dev/null" # 每次重启重新读取所有日志(可选)
tags => ["linux-secure"] # 打标签,方便Kibana筛选
}
}
filter {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:hostname} %{WORD:process}%{SPACE}%{NUMBER:pid}%{GREEDYDATA:message}" } # 解析日志格式
}
date {
match => ["timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss"] # 时间格式匹配
target => "@timestamp"
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"] # 输出到Elasticsearch
index => "linux-secure-%{+YYYY.MM.dd}" # 按日期创建索引
}
stdout { codec => rubydebug } # 控制台输出(调试用)
}
步骤 2:启动 ELK 并配置日志留存
# 1. 启动容器(后台运行)
docker-compose up -d
# 2. 配置Elasticsearch索引生命周期(留存6个月)
# 访问Kibana:http://ELK服务器IP:5601,进入“Stack Management”→“Index Lifecycle Policies”
# 创建策略:设置“hot阶段”(1天)→“warm阶段”(30天)→“delete阶段”(180天,即6个月)
# 将“linux-secure-%{+YYYY.MM.dd}”索引关联到该策略
步骤 3:验证日志审计
-
访问 Kibana,进入 “Discover”,选择 “linux-secure-*” 索引,查看/var/log/secure日志是否正常收集;
-
测试异常操作:用错误密码登录 SSH,在 Kibana 中搜索 “Failed password”,能定位到 “攻击 IP、时间、失败次数”,满足等保 “可追溯” 要求。
六、等保整改实战案例:某电商企业 30 天合规落地
背景
某 50 人电商企业,有 2 台 Web 服务器(CentOS 7)、1 台 MySQL 数据库服务器(CentOS 7)、1 台华为交换机,测评发现 8 项不合规,运维团队 30 天完成整改:
| 不合规项 | 整改措施 | 用到的本文方法 | 整改时长 |
|---|---|---|---|
| 服务器 root 远程登录开启 | 禁用 root 远程登录,配置 sudo 提权 | 主机安全→账号安全→Linux 服务器配置 | 1 天 |
| 防火墙未限制 SSH 源 IP | iptables 配置仅允许办公网访问 22 端口 | 网络安全→iptables 配置 | 1 天 |
| 数据库未做异地备份 | 编写备份脚本,同步到异地服务器 | 数据安全→MySQL 备份 | 2 天 |
| 日志仅留存 1 个月 | ELK 配置索引生命周期,留存 6 个月 | 日志审计→ELK 配置 | 3 天 |
| 服务器存在 Log4j 高危漏洞 | 用 Lynis 扫描,批量升级补丁 | 主机安全→补丁管理 | 1 天 |
整改成果
-
测评通过率:从 58% 提升至 96%,顺利通过等保三级测评;
-
运维效率:用 Ansible+ELK 实现自动化整改与日志管理,后续每月只需 1 小时维护;
-
业务影响:所有整改均在凌晨低峰期操作,未中断业务(如补丁升级前做快照,失败可回滚)。
七、运维必看的 3 个合规避坑点
-
改配置前必做备份:比如修改sshd_config前备份cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak,修改 iptables 前备份规则,避免配置错误导致业务中断;
-
优先用开源工具降成本:等保不强制用商业工具,Lynis(漏洞扫描)、ClamAV(杀毒)、ELK(日志)都是开源免费的,能满足三级合规要求,比商业工具省 5-10 万元;
-
日志留存别 “走形式”:等保测评会抽查 6 个月前的日志,若仅存 1 个月,需重新整改;建议用 ELK 或 Graylog,自动管理日志生命周期,无需手动删改。
最后:等保合规不是 “一次性任务”,而是 “日常运维的一部分”
很多运维觉得等保是 “临时整改”,测评通过后就恢复原样 —— 这是最大的误区。等保 2.0 的核心是 “持续合规”,比如补丁要每月扫描、备份要每日执行、日志要实时收集,这些都能融入日常运维:
-
把 “账号安全配置” 加入服务器初始化脚本,新服务器上线自动满足合规;
-
把 “漏洞扫描” 加入每周运维计划,用 Lynis+Ansible 批量执行,无需手动操作;
-
把 “日志审计” 接入运维监控,异常登录(如异地 IP 登录 SSH)实时告警,既满足合规,又提升安全能力。
等保合规不是 “负担”,而是帮你规范运维流程、降低安全风险的 “工具”。按本文的步骤操作,你不仅能通过测评,还能让运维工作更高效、更安全 —— 这才是等保的真正价值。
网络安全学习资料分享
为了帮助大家更好的学习网络安全,我把我从一线互联网大厂薅来的网络安全教程及资料分享给大家,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂,朋友们如果有需要这套网络安全教程+进阶学习资源包,可以扫码下方二维码限时免费领取(如遇扫码问题,可以在评论区留言领取哦)~


更多推荐

所有评论(0)