Windows服务器安全的核心防线就是防火墙规则和端口管控,说白了就是"谁能进来、从哪进来、进来能干什么"这三件事。绝大多数服务器被入侵,不是系统本身有多大漏洞,而是管理员开放了不该开的端口、放行了不该放的IP、配置了过于宽松的规则。今天这篇文章,我会从Windows防火墙的底层逻辑讲起,手把手教你怎么设置规则、怎么管控端口、怎么做精细化管理,全部是实操层面的东西,看完直接能用。
很多人以为装了Windows Server自带的防火墙就万事大吉了,其实默认状态下它只是"开着"而已,规则几乎全放。真正的安全是你自己一条一条配出来的。Windows防火墙分为"入站规则"和"出站规则"两大类,入站管的是外部请求能不能进来,出站管的是服务器主动往外发数据能不能出去。对于大多数业务场景,入站规则是重中之重,因为攻击几乎都是从外部打进来的。
一、先搞清楚你的服务器到底需要开哪些端口在配置防火墙之前,你必须先梳理清楚这台服务器到底跑什么业务、需要对外暴露哪些服务。这一步很多人跳过了,直接上来就配规则,结果要么把必要的端口封了导致业务中断,要么留了一堆没用的端口给攻击者可乘之机。
常见的Windows服务器端口需求如下:RDP远程桌面默认是3389端口,这是管理服务器的入口,几乎必开;Web服务(IIS)是80和443;SQL Server默认1433;FTP是21;SMTP邮件是25;DNS是53。如果你的服务器只做文件共享,那可能只需要445端口。如果你跑的是.NET应用,可能还需要额外的自定义端口。
我的建议是:先把所有端口默认全部拒绝,然后只开放业务必需的端口,这叫"白名单策略"。比起"黑名单策略"(允许所有、只封几个),白名单策略安全系数高出几个量级。因为你永远不知道攻击者会利用哪个你没注意到的端口。
二、Windows防火墙的图形界面配置方法打开Windows防火墙的方式很简单:在"控制面板"里找到"Windows Defender防火墙",或者直接在服务器管理器里搜索"高级安全Windows Defender防火墙"。打开之后你会看到左侧有"入站规则"和"出站规则",右侧是已经存在的规则列表。
新建一条入站规则的步骤:右键点击"入站规则"→"新建规则"→选择规则类型(端口、程序、预定义等)→指定端口号(比如3389)→选择"允许连接"或"只允许安全连接"→选择应用场景(域、专用、公用,一般选专用和域)→给规则起个名字,比如"RDP-允许-办公IP"。
这里有个关键点:一定要在"作用域"里限制来源IP。比如你的RDP只允许公司办公网段192.168.1.0/24访问,那就在远程IP地址里填这个网段。如果你不限制,那全世界任何IP都能尝试连你的3389端口,暴力破解就会源源不断地来。
三、用命令行批量管理防火墙规则,效率翻倍如果你管的服务器多,图形界面一个个点太慢了,这时候用PowerShell或者netsh命令就非常高效。netsh是Windows自带的网络配置工具,功能非常强大。
查看当前所有防火墙规则:
netsh advfirewall firewall show rule name=all
添加一条允许特定端口的入站规则:
netsh advfirewall firewall add rule name="Allow HTTP" dir=in action=allow protocol=TCP localport=80 remoteip=192.168.1.0/24
添加一条阻止所有其他入站连接的默认规则(放在最后一条):
netsh advfirewall firewall add rule name="Block All Other Inbound" dir=in action=block protocol=any
删除一条不需要的规则:
netsh advfirewall firewall delete rule name="旧规则名称"
用PowerShell的方式更加灵活,适合写成脚本批量部署:
New-NetFirewallRule -DisplayName "Allow RDP from Office" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 192.168.1.0/24 -Action Allow
我个人更推荐PowerShell方式,因为它支持导出和导入规则,你可以在一台服务器上配好,然后导出XML文件,在其他服务器上直接导入,批量管理非常方便。
四、端口管控的进阶策略:不只是开和关很多人以为端口管控就是"开"或"关"两种状态,其实Windows防火墙支持更细粒度的控制。你可以针对同一个端口设置不同的规则,比如3389端口允许内网IP访问但拒绝外网IP,同时对公网IP的访问频率做限制。
虽然Windows防火墙本身不支持直接限速,但你可以结合IPSec策略来实现。在"高级安全Windows Defender防火墙"里,右键点击"连接安全规则"→新建规则,可以设置"要求对出站和入站连接使用IPsec",这样即使端口开着,没有通过IPsec认证的连接也会被拒绝。
另外一个容易被忽略的点是:出站规则同样重要。很多勒索病毒和木马被植入后,会主动向外连接C&C服务器下载指令或上传数据。如果你把出站规则也收紧,只允许必要的出站连接(比如Windows更新、DNS查询、NTP时间同步),那即使服务器被入侵了,恶意程序也很难把数据传出去或者接收进一步指令。
五、几个常见的高危端口必须重点关注135端口:RPC服务端口,历史上大量漏洞都跟它有关,如果你不需要RPC,直接封掉。139和445端口:SMB文件共享端口,永恒之蓝漏洞就是利用445端口传播的,如果不需要文件共享,必须关闭。23端口:Telnet,明文传输,早就该淘汰了,用SSH替代。3389端口:RDP,如果必须开放,一定要改默认端口、限制IP、开启NLA网络级别认证。
还有一个很多人不知道的:Windows服务器默认开启了很多"预定义规则",这些规则有些是为了方便某些服务自动通信的,但也可能成为攻击面。建议你定期检查一遍所有启用的规则,把不认识的、不需要的全部禁用。特别是那些"允许边缘遍历"的规则,在大多数场景下都不需要。
六、防火墙规则的维护和审计不能偷懒规则配好了不是一劳永逸的。业务在变、IP在变、人员在变,防火墙规则也要跟着变。我见过太多案例:员工离职了但他的IP还在白名单里,项目结束了但端口还开着,测试环境的规则被带到了生产环境。这些都是定时炸弹。
建议每月做一次规则审计,用以下命令导出当前规则清单:
Get-NetFirewallRule | Where-Object {$_.Enabled -eq 'True'} | Select-Object DisplayName, Direction, Action, Protocol, LocalPort, RemoteAddress | Export-Csv -Path "C:\firewall_rules_audit.csv" -NoTypeInformation
导出之后对照业务需求逐条检查,该删的删、该改的改。同时开启Windows防火墙的日志功能,路径在"高级安全Windows Defender防火墙"→本地计算机属性→各个配置文件的"日志"选项卡里,把"记录丢弃的数据包"和"记录成功的连接"都打开,日志文件大小建议设为10MB以上,方便后续排查问题。
七、多层防护:防火墙不是唯一的防线最后说一个很多人有误区的地方:防火墙规则和端口管控是基础,但不是全部。你还需要配合以下措施才能形成完整的安全体系:定期打补丁、禁用不必要的服务和账户、启用账户锁定策略(比如输错5次密码锁定30分钟)、部署入侵检测系统、做好数据备份。
特别要强调的是,RDP如果必须对外暴露,除了防火墙限制IP之外,还应该考虑用跳板机或者堡垒机来中转,不要把3389直接暴露在公网上。如果条件允许,把管理端口改成非标准端口(比如33389),虽然不能防住定向扫描,但能过滤掉大部分自动化攻击工具。
总结一下核心思路:默认拒绝一切、只开必要端口、严格限制来源IP、定期审计规则、配合多层防护。把这五点做到位,你的Windows服务器安全水平就能超过市面上80%以上的同行。安全不是一次性的工作,而是持续的过程,但只要方法论对了,其实没那么复杂。
