Windows防火墙需手动启用日志功能才能监控关键端口访问行为,具体包括:一、在“高级安全Windows Defender防火墙”中为域/专用/公用配置文件分别勾选记录被丢弃数据包和成功连接,并设置日志路径与大小;二、为161、3389、1433、445等关键端口创建带标识的专用规则;三、结合netstat和Resource Monitor验证端口监听状态;四、定期用PowerShell导出并比对规则清单识别异常变更。
防火墙本身不直接“监控”端口状态,但它能控制并记录端口的访问行为——真正要实现对关键端口的可观测性,得结合防火墙规则配置、日志启用和系统工具联动使用。
启用防火墙日志,捕获关键端口通信
Windows 防火墙默认不记录详细连接日志,需手动开启才能看到谁在连哪个端口:
- 打开“高级安全 Windows Defender 防火墙”,右键左侧“监视”→“属性”
- 在“常规”选项卡下,点击“自定义”日志设置:勾选“记录被丢弃的数据包”和“记录成功的连接”
- 设置日志路径(如C:\Windows\System32\LogFiles\Firewall\pfirewall.log),建议限制大小为4MB以上,避免日志被快速覆盖
- 关键端口如161(SNMP)、3389(RDP)、1433(SQL Server)、445(SMB)的入站/出站尝试都会写入该日志
为关键端口单独建规则并标记用途
不要依赖默认放行或全局开放,而是为每个关键服务创建带标识的入站/出站规则,便于后续追踪和审计:
- 例如 RDP 端口3389:新建入站规则,协议选TCP,端口填3389,名称写Allow-RDP-From-Admin-Network
- 作用域中明确填写管理员网段(如192.168.10.0/24),避免全网暴露
- 对数据库端口1433,建议同时配出站规则(允许SQL Server向外同步日志或调用链接服务器)
- 规则启用后,在“入站规则”列表中可按名称排序,一眼识别哪些端口被显式放行
配合 netstat 和 Resource Monitor 实时查看监听状态
防火墙管“通不通”,而系统工具告诉你“有没有在听”——两者必须交叉验证:
- 运行netstat -ano | findstr :3389,确认svchost.exe或termsvcs.exe是否真在监听
- 按Win + R → resmon → 网络 → 监听的端口,可直观看到进程名、PID、本地地址及协议
- 若某端口规则已开但netstat查不到监听,说明服务根本没启动(比如SNMP Service未运行)
- 若resmon显示端口被占用,但防火墙日志无访问记录,说明外部尚未发起连接
定期导出与比对规则清单,发现异常变更
人为误操作或恶意软件可能悄悄增删规则,建立基线并定期检查:
- 用 PowerShell 导出当前所有入站规则:Get-NetFirewallRule -Direction Inbound | Where-Object {$_.Enabled -eq 'True'} | Select DisplayName,LocalPort,Protocol,RemoteAddress | Export-Csv firewall-inbound.csv
- 重点关注LocalPort为空(表示放行整个程序)、RemoteAddress为*(任意IP)的规则
- 对比前后两次导出结果,新增的“Allow-Unknown-TCP-*”类规则需立即核查
- 对关键端口(如135、445、139)的规则,确保其RemoteAddress字段不是“Any”,而是限定子网或特定IP

















