ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

网络安全加固解决方案:防火墙策略收敛、IPS/WAF联动与主机层落地实践

网络安全加固解决方案:防火墙策略收敛、IPS/WAF联动与主机层落地实践 简介这份《网络安全加固解决方案》PDF文档面向企业网络运维人员、信息安全工程师及等保合规建设者围绕对外网信息化场景下的网络升级与安全加固需求提供一套可参考的整体方案。文档从项目背景、目标与参考标准切入梳理需求、风险、代价平衡等设计原则并给出网络系统现状分析。正文重点展开网络系统升级改造与安全加固技术方案涵盖二层交换机替换、集中控管组网、POE供电AP部署、双频WLAN安全策略、核心交换与安全设备UPS电源保障以及安全设备部署用途与产品清单等模块目录结构完整便于按章节查阅与对标落地。资源包共1个PDF文件约840KB轻量易读适合作为安全加固项目立项、方案编写与等保整改的参考资料。目前已有353人学习下载可帮助读者快速理解网络与信息安全体系建设的整体思路与实施要点。1. 网络安全加固解决方案从边界设备到主机层的落地拆解很多团队第一次做安全加固都是被一次等保测评或者一次应急响应逼出来的。测评报告上列着几十条不合规项防火墙策略是 any-any主机上还跑着已经停服的旧版本中间件日志只存在本地磁盘上出了事根本查不到。这时候如果只是把报告里的条目一条条打勾最后大概率是钱花了、设备买了、攻击面没怎么变。网络安全加固解决方案的核心不是买什么设备而是把「边界收敛、访问控制、流量检测、日志留存、应急切换」这几件事按优先级排好用最小改动把暴露面压下去。这篇内容适合手里有防火墙、有 IPS/IDS、有主机权限但不知道从哪下手的一线运维和安全工程师也适合正在准备网络安全入门、想搞清楚防火墙和 IPS 到底怎么配合的新人。下面按实际落地顺序拆开讲每一步都给到能直接抄的配置思路和参数。2. 边界加固第一步防火墙策略收敛与双机热备2.1 为什么策略收敛比换设备更优先大部分被攻破的入口不是设备性能不够而是策略太宽。any-any 放行、源地址不限制、只写 permit 不写 deny这些是血泪经验里最常见的翻车点。加固的第一刀应该砍在防火墙上把现有策略导出来按「源区域-目的区域-服务-动作」四元组做一次全量梳理凡是目的地址是 any、服务是 any 的规则逐条确认业务是否真的需要。常见做法是先开日志不阻断观察一周命中情况再决定收窄还是删除。这里有个容易被忽略的点策略收敛必须和双机热备一起考虑。如果只配了单台防火墙收敛过程中一旦策略写错导致业务中断没有回退路径。双机热备HA的价值不只是冗余它让你在调整策略时可以现在备机上验证再切换主备把变更风险降下来。热备的心跳口一定要独立于业务口心跳线走直连或者独立 VLAN不要和业务流量混跑否则主备切换时心跳抖动会导致双主这是很典型的玄学故障。2.2 策略收敛的具体操作步骤先备份当前配置这是后悔药。以常见命令行防火墙为例导出配置和策略# 备份当前配置文件到本地 copy running-config tftp://192.168.100.10/fw-backup-20250101.cfg # 查看当前策略命中计数按命中排序 show policy statistics sort-by hit-count # 导出策略列表用于离线分析 show policy all | redirect tftp://192.168.100.10/policy-list.txt逻辑说明第一条命令把运行配置备份到 TFTP 服务器文件名带日期方便回滚。第二条查看策略命中计数命中为 0 的策略是收敛的首选目标但要注意有些策略是备用路径平时不命中不代表可以删。第三条导出全量策略离线用表格工具按源/目的/服务分组找出可以合并的规则。参数说明TFTP 服务器地址换成你自己的策略命中统计一般设备都有如果没有就开日志采样。收敛顺序建议先删明确无用的如测试遗留、已下线业务再合并同源同目的的连续端口最后收窄 any 规则。每改一批观察 24 小时再改下一批。2.3 双机热备的关键参数与切换验证双机热备配置里几个参数直接决定切换是否干净。心跳间隔一般 1 秒持有时间 3 秒抢占模式根据业务决定——如果主设备恢复后需要自动抢回就开抢占如果怕震荡就关抢占手动切。会话同步必须开否则切换后已建立的连接会断。下面是一个典型的热备配置片段# 心跳接口配置 interface GigabitEthernet0/0 ip address 10.0.0.1 255.255.255.252 hrp interface GigabitEthernet0/0 remote 10.0.0.2 # 启用热备并设置参数 hrp enable hrp track interface GigabitEthernet0/1 hrp auto-sync connection-state enable hrp preempt delay 60逻辑说明hrp interface指定心跳口和对端地址hrp track跟踪业务口业务口 down 触发切换auto-sync connection-state同步会话表保证切换后 TCP 连接不断preempt delay 60表示抢占延迟 60 秒避免主设备刚起来就抢回导致震荡。参数说明心跳口建议用独立物理口不要用子接口抢占延迟根据业务收敛时间设一般 30 到 120 秒。验证方法在主设备上手动 shutdown 业务口观察备机是否在 3 秒内变为主同时从客户端 ping 一个长连接看是否丢包。如果丢包超过 3 个说明会话同步没生效或者切换时间太长需要检查心跳和同步配置。3. IPS 与 WAF 联动检测、阻断与自动切换3.1 IPS 和 WAF 的分工与部署位置IPS 和 WAF 经常被混为一谈但加固方案里它们的职责不同。IPS 部署在网络边界基于流量特征和异常行为检测能拦扫描、爆破、漏洞利用流量但对 HTTP 应用层攻击的识别粒度不够细。WAF 部署在 Web 服务器前面能解析 HTTP 协议拦 SQL 注入、XSS、文件包含这些。常见做法是 IPS 串在防火墙和核心交换之间WAF 旁挂在 Web 服务器所在 VLAN或者以反向代理模式串在负载均衡后面。热搜里有人问「各种故障情况下的防火墙 IPS WAF 自动切换原理」这其实是高可用设计问题。自动切换的核心是健康检查加优先级。防火墙和 IPS 一般用双机热备WAF 用集群或者主备加负载均衡。切换触发条件包括设备宕机、链路 down、健康检查失败、CPU 或会话数超阈值。切换时间取决于检测间隔和收敛协议一般 1 到 5 秒。要注意的是如果 IPS 和 WAF 都串在链路上任何一台切换都会导致短暂断流所以关键业务建议 IPS 用 bypass 光口WAF 用集群多活。3.2 IPS 策略调优从告警到阻断的过渡IPS 刚上线时不要直接开阻断先跑告警模式观察一周。很多团队一上来就开阻断结果把业务流量里的正常请求拦了比如带 SQL 关键字的查询参数、上传文件里的脚本特征这就是典型的翻车。调优步骤# 查看当前 IPS 告警日志按签名 ID 统计 show ips alert log | group-by signature-id | sort-by count desc # 将高频误报签名加入白名单 ips signature 10500 action alert ips whitelist add source 192.168.10.0/24 signature 10500 # 对确认恶意的签名开启阻断 ips signature 20001 action block ips signature 20002 action block逻辑说明第一条按签名 ID 统计告警找出高频触发的签名第二条把误报签名改成只告警并对可信源加白第三条对确认的恶意签名开阻断。参数说明签名 ID 因厂商而异需要查对应文档白名单尽量精确到源 IP 加签名不要整个网段全放。3.3 WAF 规则与自动切换验证WAF 的加固重点是规则集更新和自定义规则。常见做法是开启 OWASP 核心规则集再根据业务加自定义规则比如限制登录接口频率、拦截异常 User-Agent。自动切换验证可以用模拟故障的方式手动断开主 WAF 的网线观察流量是否在 3 秒内切到备机同时用 curl 持续请求一个页面看是否有失败。# 持续请求测试页面观察切换期间的状态码 while true; do curl -o /dev/null -s -w %{http_code} %{time_total}\n https://www.example.com/login sleep 0.5 done逻辑说明这个脚本每 0.5 秒请求一次登录页输出状态码和耗时。切换期间如果出现 502 或超时说明切换不够平滑。参数说明URL 换成你的业务地址如果要求更高可以用ab或wrk做并发压测但注意不要对生产环境造成压力。4. 主机层加固从账号、服务到日志留存4.1 账号与权限的最小化边界设备再强主机上有一个弱口令或者一个多余账号前面做的都白费。主机加固第一步是账号清理禁用或删除默认账号、共享账号每个管理员用独立账号sudo 权限按需分配。Linux 上检查空口令账号和 UID 为 0 的账号# 检查空口令账号 awk -F: ($2){print $1} /etc/shadow # 检查 UID 为 0 的账号 awk -F: ($30){print $1} /etc/passwd # 检查可登录 shell 的账号 grep -E bash|sh$ /etc/passwd逻辑说明第一条找出没有密码的账号这些账号必须立即处理第二条找出所有 root 权限账号除了 root 本身其他都应该降权第三条列出可登录账号确认每个都有存在的理由。参数说明/etc/shadow需要 root 权限读取如果输出里有不认识的名字先查清楚再删避免误删业务账号。4.2 服务与端口收敛主机上跑的服务越多暴露面越大。加固时先列监听端口再对照业务确认哪些必须保留。常见做法是用ss -tulnp列出所有监听端口然后逐个确认。比如一台 Web 服务器只应该开 80 和 443如果发现 3306 或 6379 监听在 0.0.0.0那就是数据库端口暴露了必须改成只监听 127.0.0.1 或者用防火墙限制源。# 列出所有监听端口和对应进程 ss -tulnp # 查看防火墙规则确认端口访问控制 iptables -L -n --line-numbers # 关闭不必要的服务 systemctl disable --now telnet.socket systemctl disable --now rpcbind逻辑说明第一条列出监听端口重点关注 0.0.0.0 和 :: 的第二条查看 iptables 规则确认没有 any-any 放行第三条关闭明确不需要的服务。参数说明systemctl disable --now会立即停止并禁止开机启动执行前确认服务确实无用。如果业务依赖改用防火墙限制源地址。4.3 日志留存与审计等保要求日志留存不少于 6 个月很多团队只留本地磁盘一满就覆盖出了事查不到。加固方案里日志必须外发到日志服务器或者 SIEM。常见做法是用 rsyslog 或 filebeat 把系统日志、应用日志、安全设备日志统一收集。下面是一个 rsyslog 客户端配置# /etc/rsyslog.d/50-forward.conf *.* 192.168.20.30:514 authpriv.* 192.168.20.30:514逻辑说明*.*表示所有设施所有级别日志表示 TCP 转发表示 UDP。安全日志单独一行确保不丢。参数说明日志服务器地址换成你的TCP 比 UDP 可靠但需要服务器端也配 TCP 监听。验证方法在客户端执行logger test log到服务器上tail -f /var/log/messages看是否收到。5. 避坑与排查加固过程中最容易翻车的 5 个点5.1 开启防火墙后 ping 不通现象配置完防火墙策略后内网用户无法 ping 通网关或者外网地址。原因防火墙默认拒绝 ICMP或者策略里没有放行 ICMP 协议。解决在安全策略里显式放行 ICMP如果只是内网管理需要限制源地址为管理网段。注意不要为了图省事直接 any-any 放行 ICMP那等于没加固。5.2 双机热备切换后业务中断现象主设备故障备机切换后部分业务连接断开需要重新登录。原因会话同步没开或者同步链路不通。解决检查hrp auto-sync connection-state是否启用心跳口是否 up同步会话表是否一致。如果业务是长连接切换后客户端需要重连这是正常的但 TCP 连接不应该断。5.3 IPS 阻断导致业务误伤现象开启 IPS 阻断后某个业务接口返回 403 或者连接被重置。原因IPS 签名把正常业务请求识别为攻击比如参数里带select关键字。解决查看 IPS 告警日志找到对应签名先改成告警模式加白名单确认误报后再决定是否永久放行。不要直接关 IPS那等于自废武功。5.4 主机加固后应用起不来现象关闭了某个服务或者改了权限后应用无法启动。原因应用依赖了被关闭的服务或者文件权限改得太严。解决变更前先在测试环境验证生产环境变更时保留回滚脚本。比如关闭 SELinux 前先确认应用是否依赖改文件权限时用namei -l查看完整路径权限。5.5 日志外发后本地不留存现象日志服务器故障本地日志也没了审计断档。原因配置了只转发不本地保存。解决rsyslog 配置里保留本地写入转发作为附加动作。检查/etc/rsyslog.conf里是否有*.* /var/log/messages这样的本地规则确保转发和本地留存同时生效。6. 进阶技巧用自动化脚本做加固后的持续验证加固不是一次性的配置会漂移策略会被改回去。我一般会写一个轻量巡检脚本每周跑一次检查关键项防火墙 any-any 策略数量、IPS 阻断签名数、主机监听端口变化、日志外发是否正常。下面是一个 Python 示例通过 SSH 登录设备执行命令并比对基线import paramiko import json # 基线允许的监听端口 BASELINE_PORTS {22, 80, 443} def check_ports(host, user, pwd): ssh paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(host, usernameuser, passwordpwd) stdin, stdout, stderr ssh.exec_command(ss -tulnp | awk {print $5} | grep -oE [0-9]$ | sort -u) ports {int(p) for p in stdout.read().decode().split() if p.isdigit()} ssh.close() extra ports - BASELINE_PORTS if extra: print(f[!] {host} 发现额外端口: {extra}) else: print(f[OK] {host} 端口符合基线) if __name__ __main__: check_ports(192.168.1.10, admin, your-password)逻辑说明脚本通过 SSH 登录主机执行ss命令提取监听端口和基线比对输出额外端口。参数说明BASELINE_PORTS根据你的业务调整密码不要硬编码在脚本里用环境变量或者密钥认证。这个脚本可以扩展成检查防火墙策略、IPS 签名、日志进程等配合定时任务每周跑一次输出到邮件或者企业微信机器人。验证加固效果不能只看设备状态要做实际测试。比如用nmap从外网扫描确认只开放了预期端口用curl测试 WAF 是否拦截了 SQL 注入特征模拟主设备断电确认切换时间在可接受范围。这些测试每季度做一次比看报告有用得多。我自己踩过最大的坑是第一次做策略收敛时一次性删了太多规则结果把备份通道也删了最后只能去机房接 console 线恢复。从那以后我养成了一个习惯任何变更前先确认带外管理可用变更分批次每批留观察期。希望帮到你。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进