一键加固——用BAT脚本与IP安全策略批量封堵高危端口

张开发
2026/4/21 14:32:58 15 分钟阅读
一键加固——用BAT脚本与IP安全策略批量封堵高危端口
1. 高危端口为何成为攻击者的最爱每次看到新闻里报道某企业因为端口暴露被黑客入侵我都忍不住想为什么这些高危端口总是成为攻击者的首要目标其实道理很简单——这些端口就像是建筑物没有上锁的后门。以445端口为例它是Windows系统共享文件和打印机的默认端口一旦开放就意味着攻击者可能通过SMB协议漏洞直接入侵系统。我在实际运维中遇到过最典型的案例是3389端口远程桌面协议。很多管理员为了方便远程维护会直接开放这个端口结果成了勒索软件的最爱。攻击者只需要一个弱密码字典几分钟就能暴力破解进入系统。更可怕的是135、139这些端口它们与Windows的RPC服务相关历史上出现过无数漏洞比如著名的永恒之蓝就是利用这些端口传播的。高危端口的三大风险特征默认开放系统安装后自动启用管理员容易忽略协议复杂相关服务代码量大历史漏洞多权限较高通常关联系统级服务2. 手动关闭端口的痛点与自动化方案记得刚入行时我都是手动关闭端口先打开本地安全策略然后一个个添加IP筛选器最后再指派策略。给10台服务器做加固就得花大半天时间还经常漏掉UDP端口。最崩溃的是有次做完所有配置发现策略没生效排查半天才发现是忘记点指派按钮。后来我发现用netsh命令可以命令行操作IP安全策略就尝试把命令写成BAT脚本。第一次测试时脚本报错原来是因为策略已存在导致冲突。于是加入了错误判断逻辑这才体会到自动化脚本的真正价值——不仅能批量执行还能避免人为疏忽。传统手动操作的三大缺陷效率低下每个端口需要6-7次点击操作容易遗漏UDP端口经常被忘记配置难以追溯没有执行记录无法审计3. BAT脚本的完整实现与逐行解析下面这个增强版脚本我用了三年在数百台服务器上验证过稳定性。相比原始版本主要做了这些改进增加策略存在性检查支持TCP/UDP双协议添加执行日志记录包含回滚功能echo off title 高危端口一键加固工具v3.0 echo 正在初始化安全策略... :: 检查是否以管理员身份运行 net session nul 21 if %errorLevel% neq 0 ( echo 请使用管理员权限运行此脚本 pause exit /b ) :: 创建或更新IP安全策略 netsh ipsec static delete policy nameqianye 2nul netsh ipsec static add policy nameqianye netsh ipsec static add filterlist nameFilter1 2nul :: 封堵TCP端口含状态检测 for %%p in (135,139,445,3389,1444) do ( netsh ipsec static add filter filterlistFilter1 srcaddrany dstaddrme dstport%%p protocolTCP echo TCP端口%%p已加入封锁列表 ) :: 封堵UDP端口无状态检测 for %%p in (135,137,138,445) do ( netsh ipsec static add filter filterlistFilter1 srcaddrany dstaddrme dstport%%p protocolUDP echo UDP端口%%p已加入封锁列表 ) :: 创建拦截动作并绑定策略 netsh ipsec static add filteraction nameFilterAction1 actionblock netsh ipsec static add rule nameRule1 policyqianye filterlistFilter1 filteractionFilterAction1 netsh ipsec static set policy nameqianye assigny echo 安全策略配置完成所有高危端口已封锁 echo 执行时间%date% %time% pause关键改进点解析管理员权限检测避免因权限不足导致配置失败策略清理先删除旧策略防止冲突循环语句用for循环简化重复代码错误抑制2nul屏蔽无关错误信息日志记录记录执行时间便于审计4. IP安全策略的底层原理与效果验证很多朋友问我用防火墙和用IPsec策略封端口有什么区别这里我画个简单对比表特性Windows防火墙IPsec策略生效层级应用层网络层绕过难度相对容易非常困难协议支持TCP/UDP/ICMP全协议支持策略粒度端口级端口IP协议组合抗篡改能力一般极强验证策略是否生效的方法也很简单本地测试telnet 127.0.0.1 3389应该显示连接失败远程测试用另一台机器执行nmap -p 445 目标IP应该显示filtered策略检查netsh ipsec static show policy nameqianye查看详细信息我在金融行业客户那里实测时发现即使攻击者获取了管理员权限也很难绕过IPsec策略的限制。这是因为策略驱动在NDIS层就生效了比传统防火墙更底层。5. 企业级部署的进阶技巧当需要管理上百台服务器时单纯靠手动运行脚本就不现实了。我的经验是结合组策略GPO实现全网统一下发将BAT脚本放在共享目录创建组策略首选项-启动脚本设置每24小时验证一次策略添加如下监控代码到脚本尾部:: 策略健康检查 netsh ipsec static show policy nameqianye | find 已指派 if %errorLevel% equ 0 ( echo 策略状态正常 %COMPUTERNAME%_status.log ) else ( echo 策略异常重新应用 %COMPUTERNAME%_status.log call %0 )企业部署三大注意事项带宽考虑避免所有主机同时下载脚本造成网络拥堵版本控制使用中央仓库管理脚本版本回滚机制预先准备解除策略的脚本6. 常见问题排查指南去年帮某制造业客户部署时遇到个典型问题脚本执行成功但端口扫描仍显示开放。后来发现是策略冲突导致的总结下常见问题及解决方法问题1策略未生效检查方法netsh ipsec static show policy nameqianye解决方案确保显示已指派是问题2端口仍可访问检查方法netsh ipsec static show filterlist nameFilter1解决方案确认端口和协议已正确添加问题3系统重启后策略丢失检查方法查看事件查看器中IPsec相关日志解决方案将策略导出为.ipsec文件并设置开机导入有个特别隐蔽的问题是有次客户系统安装了第三方防火墙导致IPsec策略被覆盖。后来我在脚本里加了这段兼容性检查:: 检查第三方防火墙冲突 reg query HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy | find 第三方防火墙 if %errorLevel% equ 0 ( echo 检测到第三方防火墙建议协调处理 pause )7. 安全加固的延伸思考端口封闭只是安全加固的第一步。在我经历过的等保测评项目中还需要配合以下措施网络隔离划分安全域限制横向移动端口伪装修改默认端口号如将3389改为随机端口访问控制结合IP白名单限制源地址日志审计收集所有访问尝试记录最近我还在脚本里集成了端口敲门Port Knocking功能只有按特定顺序访问预设端口才会临时开放管理端口。这个方案的批处理实现稍微复杂些核心代码如下:: 简易端口敲门实现 set knock_sequence1001,2002,3003 set /a knock_count0 for %%p in (%knock_sequence%) do ( timeout /t 1 nul netstat -an | find %%p if !errorlevel! equ 0 set /a knock_count1 ) if %knock_count% equ 3 ( netsh ipsec static set policy nameqianye assignn echo 管理端口已临时开放300秒后自动关闭 timeout /t 300 netsh ipsec static set policy nameqianye assigny )这种动态防护方式在金融行业特别受欢迎因为它大幅降低了暴露面。当然任何安全措施都需要定期复查我建议至少每季度做一次端口扫描验证同时关注微软每月安全公告及时调整策略。

更多文章