Windows Defender 防火墙 4 类规则实战:程序/端口/IP/ICMP 配置与验证
Windows Defender 防火墙高级实战程序/端口/IP/ICMP 四维管控指南1. 防火墙规则基础与核心概念Windows Defender 防火墙作为Windows系统的第一道防线其规则配置直接决定了网络流量的通行权限。理解其工作原理是进行高级配置的前提。防火墙规则的核心要素包括规则方向入站Inbound控制外部到本机的连接出站Outbound管理本机到外部的访问匹配条件程序路径、端口号、IP地址范围、协议类型TCP/UDP/ICMP等操作类型允许Allow或阻止Block匹配的连接作用域指定规则适用的网络位置域/专用/公用配置文件根据不同网络环境自动切换规则组默认策略遵循默认阻止入站允许出站的原则这种设计在安全性和易用性之间取得了平衡。但实际企业环境中我们往往需要更精细的控制。规则优先级机制值得特别注意明确阻止规则优先于允许规则更具体的规则如限定IP端口的规则优先于宽泛规则如果没有匹配规则则应用默认策略# 查看当前防火墙默认策略 Get-NetFirewallProfile | Select-Object Name, DefaultInboundAction, DefaultOutboundAction典型输出示例Name DefaultInboundAction DefaultOutboundAction ---- ------------------- -------------------- Domain Block Allow Private Block Allow Public Block Allow2. 基于应用程序的访问控制程序规则是防火墙管控中最直观的方式它直接关联到可执行文件适合控制特定软件的联网行为。2.1 阻止可疑程序外联以阻止潜在风险程序为例操作流程打开高级安全Windows Defender防火墙右键出站规则→新建规则选择程序→指定程序完整路径选择阻止连接应用所有配置文件域、专用、公用命名规则如阻止可疑程序A外联注意程序路径要精确到具体可执行文件对于UWP应用需要使用AppID而非传统路径# PowerShell创建程序阻止规则 New-NetFirewallRule -DisplayName 阻止Telegram外联 -Direction Outbound -Program C:\Users\Alice\AppData\Roaming\Telegram Desktop\Telegram.exe -Action Block -Profile Any2.2 白名单模式配置高安全环境建议采用出站白名单策略# 首先设置默认出站阻止 Set-NetFirewallProfile -DefaultOutboundAction Block # 然后添加必要的允许规则 $whitelist ( {NameChrome; PathC:\Program Files\Google\Chrome\Application\chrome.exe}, {NameTeams; PathC:\Program Files\Microsoft Teams\current\Teams.exe}, {NameEdge; PathC:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe} ) foreach ($app in $whitelist) { New-NetFirewallRule -DisplayName 允许出站-$($app.Name) -Direction Outbound -Program $app.Path -Action Allow }程序规则的优势在于简单直观但存在以下局限性程序更新后路径可能改变无法控制程序使用的具体端口对于使用多个进程的复杂应用管理不便3. 基于端口的精确管控端口规则提供了更细粒度的控制特别适合服务器环境和服务管理。3.1 Web服务器端口开放示例开放HTTP(80)/HTTPS(443)端口的专业做法新建入站规则→选择端口类型协议选择TCP特定本地端口输入80,443操作选择允许连接作用域建议限定为必要IP范围配置文件按需选择通常不勾选公用命名如Web服务端口(80,443)# 安全开放Web端口限定内网访问 New-NetFirewallRule -DisplayName Web服务(80,443) -Direction Inbound -Protocol TCP -LocalPort 80,443 -RemoteAddress 192.168.1.0/24 -Action Allow -Profile Domain,Private3.2 端口范围与协议控制对于需要连续端口范围的应用如FTP被动模式参数值说明协议TCPFTP控制连接使用TCP本地端口21FTP控制端口远程端口5000-5100FTP被动模式端口范围作用域内网IP段限制访问来源# FTP服务端口配置 New-NetFirewallRule -DisplayName FTP控制(21) -Direction Inbound -Protocol TCP -LocalPort 21 -RemoteAddress 192.168.1.0/24 -Action Allow New-NetFirewallRule -DisplayName FTP被动端口(5000-5100) -Direction Inbound -Protocol TCP -LocalPort 5000-5100 -RemoteAddress 192.168.1.0/24 -Action Allow3.3 高危端口防护某些端口应始终保持关闭状态# 阻止常见高危端口 $dangerousPorts (135, 137, 138, 139, 445, 1433, 1434, 3306, 3389) foreach ($port in $dangerousPorts) { New-NetFirewallRule -DisplayName 阻止高危端口$port -Direction Inbound -Protocol TCP -LocalPort $port -Action Block -Profile Any }4. IP地址过滤策略IP规则提供了基于网络层的控制能力适合构建网络级访问控制。4.1 阻止特定IP访问阻止恶意IP访问所有服务的配置新建入站规则→选择自定义协议选择任何作用域→远程IP地址添加要阻止的IP操作选择阻止连接应用所有配置文件命名如阻止恶意IP 123.123.123.123# 批量阻止IP列表 $blockedIPs (123.123.123.123, 45.67.89.0/24, 185.143.223.5) foreach ($ip in $blockedIPs) { New-NetFirewallRule -DisplayName 阻止IP-$ip -Direction Inbound -RemoteAddress $ip -Action Block -Profile Any }4.2 IP与端口组合规则企业级数据库访问控制示例# 仅允许特定IP访问SQL Server New-NetFirewallRule -DisplayName SQL Server访问控制 -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress 10.0.100.1,10.0.100.2 -Action Allow -Profile Domain4.3 地理位置过滤虽然Windows防火墙不直接支持地理位置过滤但可以通过IP段实现# 阻止特定国家IP段示例为中国IP段 $chinaIPRanges ( 1.0.1.0/24, 1.0.2.0/23, 1.0.8.0/21, 1.0.32.0/19, 1.1.0.0/24, 1.1.2.0/23 # 实际应用中应包含完整的中国IP段 ) foreach ($range in $chinaIPRanges) { New-NetFirewallRule -DisplayName 阻止中国IP-$range -Direction Inbound -RemoteAddress $range -Action Block -Profile Any }5. ICMP协议深度控制ICMP协议常用于网络诊断但也可能被用于侦查和攻击。5.1 基础ICMP类型控制常见ICMP类型及其用途类型代码说明建议80Echo请求(ping)内网允许/外网阻止00Echo回复自动响应3*目标不可达允许11*超时允许5*重定向阻止# 允许内网ping(类型8) New-NetFirewallRule -DisplayName 允许内网Ping -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress 192.168.0.0/16,10.0.0.0/8 -Action Allow # 阻止外部ping New-NetFirewallRule -DisplayName 阻止外部Ping -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress Any -Action Block5.2 高级ICMP配置网络诊断所需的ICMP规则# 允许必要的诊断ICMP类型 $allowedICMP ( {Type3; Code0}, # 网络不可达 {Type3; Code1}, # 主机不可达 {Type3; Code4}, # 需要分片但DF置位 {Type11; Code0} # TTL超时 ) foreach ($icmp in $allowedICMP) { New-NetFirewallRule -DisplayName 允许ICMP类型$($icmp.Type)代码$($icmp.Code) -Direction Inbound -Protocol ICMPv4 -IcmpType $($icmp.Type):$($icmp.Code) -Action Allow }6. 规则优化与管理实践6.1 规则排序与性能优化随着规则数量增加合理的排序能提升处理效率将最频繁匹配的规则放在前面将阻止规则置于允许规则之前合并相同条件的规则定期清理过期规则# 查找可能重复的规则 $rules Get-NetFirewallRule | Where-Object { $_.Enabled -eq $true } $duplicates $rules | Group-Object -Property Direction,Action,Protocol,LocalPort,RemotePort,Program | Where-Object { $_.Count -gt 1 } $duplicates | ForEach-Object { Write-Warning 重复规则组: $($_.Name) $_.Group | Format-Table DisplayName,Profile -AutoSize }6.2 企业级规则部署大规模部署建议使用组策略或PowerShell脚本# 域环境防火墙规则部署脚本 $domainRules ( { Name 允许域控制器通信 Direction Inbound Protocol TCP LocalPort 88,135,139,389,445,464,636,3268,3269 RemoteAddress 10.0.0.0/8 Action Allow }, { Name 允许DHCP客户端 Direction Inbound Protocol UDP LocalPort 67,68 RemoteAddress 10.0.0.0/8 Action Allow } ) foreach ($rule in $domainRules) { $params { DisplayName $rule.Name Direction $rule.Direction Action $rule.Action Profile Domain } if ($rule.Protocol) { $params.Add(Protocol, $rule.Protocol) } if ($rule.LocalPort) { $params.Add(LocalPort, $rule.LocalPort) } if ($rule.RemoteAddress) { $params.Add(RemoteAddress, $rule.RemoteAddress) } New-NetFirewallRule params }6.3 监控与日志分析启用防火墙日志并定期分析# 配置防火墙日志 Set-NetFirewallProfile -LogFileName %systemroot%\system32\LogFiles\Firewall\pfirewall.log -LogMaxSizeKilobytes 32768 -LogAllowed True -LogBlocked True # 分析被阻止的连接 $blocked Get-Content $env:SystemRoot\system32\LogFiles\Firewall\pfirewall.log | Where-Object { $_ -match DROP } $blocked | Group-Object { ($_ -split \s)[3] } | # 源IP Sort-Object Count -Descending | Select-Object -First 107. 综合应用场景7.1 安全Web服务器配置典型LAMP/WAMP栈的防火墙配置# Web服务器最小化规则集 $webRules ( { Name HTTP(80) Direction Inbound Protocol TCP LocalPort 80 RemoteAddress Any Action Allow }, { Name HTTPS(443) Direction Inbound Protocol TCP LocalPort 443 RemoteAddress Any Action Allow }, { Name SSH管理(22) Direction Inbound Protocol TCP LocalPort 22 RemoteAddress 10.0.0.0/8,192.168.0.0/16 Action Allow }, { Name ICMP限速 Direction Inbound Protocol ICMPv4 Action Allow ThrottleRate 10/sec # 防止ICMP洪水攻击 } ) foreach ($rule in $webRules) { New-NetFirewallRule rule } # 设置默认阻止策略 Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow7.2 开发环境配置开发人员工作站的典型需求# 开发环境端口开放 $devPorts (3000, 4200, 5000, 8000, 8080, 8888) foreach ($port in $devPorts) { New-NetFirewallRule -DisplayName 开发端口-$port -Direction Inbound -Protocol TCP -LocalPort $port -RemoteAddress LocalSubnet -Action Allow } # 数据库访问 New-NetFirewallRule -DisplayName MySQL开发访问 -Direction Inbound -Protocol TCP -LocalPort 3306 -RemoteAddress 192.168.1.0/24 -Action Allow # 允许远程调试 New-NetFirewallRule -DisplayName 远程调试 -Direction Inbound -Protocol TCP -LocalPort 4022-4024 -RemoteAddress 10.0.0.0/8 -Action Allow7.3 家庭媒体中心配置家庭NAS/媒体服务器的安全设置# 媒体服务器规则 $mediaRules ( { Name DLNA服务 Direction Inbound Protocol TCP LocalPort 1900,2869 RemoteAddress 192.168.1.0/24 Action Allow }, { Name SMB文件共享 Direction Inbound Protocol TCP LocalPort 445 RemoteAddress 192.168.1.100-192.168.1.150 Action Allow }, { Name Plex媒体服务器 Direction Inbound Protocol TCP LocalPort 32400 RemoteAddress 192.168.1.0/24 Action Allow } ) foreach ($rule in $mediaRules) { New-NetFirewallRule rule } # 阻止外部访问尝试 New-NetFirewallRule -DisplayName 阻止外部访问媒体服务 -Direction Inbound -Protocol Any -RemoteAddress LocalSubnet -Action Block -Profile Public