工程实践
最小开放与白名单:快速修复漏扫问题
· 三面体
最小化端口开放策略与 IP 白名单策略:漏扫问题快速修复
背景资料
近期在处理某政务平台漏洞扫描问题时,前期因为存在一定的思维路径依赖,整改思路主要集中在“修复漏洞”本身。
研发和运维人员更倾向于通过升级应用及相关组件来解决问题,例如升级数据库到高安全版本、升级 Spring Boot 到高安全版本等。但在实际推进过程中发现,这类方式虽然方向正确,却很难在短时间内快速见效。
一方面,升级数据库、中间件或框架组件,需要先充分了解原有环境的安装方式、配置参数和依赖关系;另一方面,还需要准备完整的备份、升级、验证和回滚方案。整个过程周期长、风险高,导致漏扫报告中的中高风险问题迟迟无法归零。
后来整改小组转变思路:漏洞不一定都要立刻通过升级组件来修复,至少在应急整改阶段,优先降低暴露面,让漏洞不再出现在漏扫报告中,也是一种有效的快速处置方式。
最终,漏扫修复小组通过“最小化端口开放策略 + IP 白名单策略”,迅速将漏扫报告中的中高风险问题归零。
整改思路
1. 最小化端口开放策略
最小化端口开放策略,是指服务器仅开放业务必须对外暴露的端口,其他非必要端口一律不对外开放。
例如数据库端口、Redis 端口、内部管理端口、运维端口等,如果没有公网或外部网络访问需求,就不应直接暴露在外部网络中。
2. IP 白名单策略
在某些端口确实需要开放的前提下,可以通过 IP 白名单策略进一步限制访问来源。
也就是说,不是所有主机都能访问该端口,而是只允许指定 IP 的主机通过指定端口与服务器通信。
这种方式可以在不立即升级组件的情况下,快速降低漏洞暴露面,减少被扫描、探测和攻击的风险。
常用防火墙命令
以下命令基于 firewalld。
1. 查看当前防火墙规则
firewall-cmd --list-all
2. 开放指定端口
firewall-cmd --zone=public --add-port=1935/tcp --permanent
firewall-cmd --reload
3. 关闭指定端口
firewall-cmd --zone=public --remove-port=13306/tcp --permanent
firewall-cmd --reload
4. 设置端口 IP 白名单
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.10" port protocol="tcp" port="13306" accept'
firewall-cmd --reload
如上脚本表示:仅允许 10.0.0.10 这台机器访问本机的 13306 端口。
需要注意的是,如果该端口之前已经通过 --add-port 对外开放,需要先移除该端口的全局开放规则,否则白名单限制可能达不到预期效果。
5. 删除端口 IP 白名单
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="10.0.0.10" port protocol="tcp" port="13306" accept'
firewall-cmd --reload
避坑指南:端口转发与 IP 限制
在使用防火墙端口转发时,需要注意一个问题。
如果直接使用如下命令,将访问 8078 端口的流量转发到 13306 端口:
firewall-cmd --add-forward-port=port=8078:proto=tcp:toport=13306 --zone=public --permanent
firewall-cmd --reload
这种方式虽然可以实现端口转发,但无法进一步限制只有指定 IP 才能访问 8078 端口。
如果希望在端口转发的同时限制访问来源,可以使用 rich rule 实现。
例如,仅允许 192.168.1.10 这台机器访问本机 8078 端口,并将流量转发到内部的 13306 端口:
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.10" forward-port port=8078 protocol="tcp" to-port=13306'
firewall-cmd --reload
总结
漏洞整改不一定只有“升级组件”这一条路径。
对于生产环境中的漏扫问题,尤其是在短时间内需要完成整改闭环的场景,可以优先采用以下策略:
- 关闭非必要端口;
- 必须开放的端口增加 IP 白名单;
- 内部服务避免直接暴露到外部网络;
- 端口转发场景下,使用 rich rule 同时完成转发和来源限制。
这种方式不能替代长期的组件升级和安全加固,但可以作为应急整改阶段非常有效的快速处置手段。
先减少暴露面,再逐步修复根因,是更稳妥的漏扫整改思路。