当前位置: 首页 > news >正文

Windows Defender 防火墙 4 类规则实战:程序/端口/IP/ICMP 配置与验证

Windows Defender 防火墙高级实战:程序/端口/IP/ICMP 四维管控指南

1. 防火墙规则基础与核心概念

Windows Defender 防火墙作为Windows系统的第一道防线,其规则配置直接决定了网络流量的通行权限。理解其工作原理是进行高级配置的前提。

防火墙规则的核心要素包括:

  • 规则方向:入站(Inbound)控制外部到本机的连接,出站(Outbound)管理本机到外部的访问
  • 匹配条件:程序路径、端口号、IP地址范围、协议类型(TCP/UDP/ICMP等)
  • 操作类型:允许(Allow)或阻止(Block)匹配的连接
  • 作用域:指定规则适用的网络位置(域/专用/公用)
  • 配置文件:根据不同网络环境自动切换规则组

默认策略遵循"默认阻止入站,允许出站"的原则,这种设计在安全性和易用性之间取得了平衡。但实际企业环境中,我们往往需要更精细的控制。

规则优先级机制值得特别注意:

  1. 明确阻止规则优先于允许规则
  2. 更具体的规则(如限定IP+端口的规则)优先于宽泛规则
  3. 如果没有匹配规则,则应用默认策略
# 查看当前防火墙默认策略 Get-NetFirewallProfile | Select-Object Name, DefaultInboundAction, DefaultOutboundAction

典型输出示例:

Name DefaultInboundAction DefaultOutboundAction ---- ------------------- -------------------- Domain Block Allow Private Block Allow Public Block Allow

2. 基于应用程序的访问控制

程序规则是防火墙管控中最直观的方式,它直接关联到可执行文件,适合控制特定软件的联网行为。

2.1 阻止可疑程序外联

以阻止潜在风险程序为例,操作流程:

  1. 打开"高级安全Windows Defender防火墙"
  2. 右键"出站规则"→"新建规则"
  3. 选择"程序"→指定程序完整路径
  4. 选择"阻止连接"
  5. 应用所有配置文件(域、专用、公用)
  6. 命名规则如"阻止可疑程序A外联"

注意:程序路径要精确到具体可执行文件,对于UWP应用需要使用AppID而非传统路径

# PowerShell创建程序阻止规则 New-NetFirewallRule -DisplayName "阻止Telegram外联" -Direction Outbound ` -Program "C:\Users\Alice\AppData\Roaming\Telegram Desktop\Telegram.exe" ` -Action Block -Profile Any

2.2 白名单模式配置

高安全环境建议采用出站白名单策略:

# 首先设置默认出站阻止 Set-NetFirewallProfile -DefaultOutboundAction Block # 然后添加必要的允许规则 $whitelist = @( @{Name="Chrome"; Path="C:\Program Files\Google\Chrome\Application\chrome.exe"}, @{Name="Teams"; Path="C:\Program Files\Microsoft Teams\current\Teams.exe"}, @{Name="Edge"; Path="C:\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)端口的专业做法:

  1. 新建入站规则→选择"端口"类型
  2. 协议选择TCP,特定本地端口输入"80,443"
  3. 操作选择"允许连接"
  4. 作用域建议限定为必要IP范围
  5. 配置文件按需选择(通常不勾选"公用")
  6. 命名如"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,Private

3.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 Allow

3.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访问所有服务的配置:

  1. 新建入站规则→选择"自定义"
  2. 协议选择"任何"
  3. 作用域→远程IP地址添加要阻止的IP
  4. 操作选择"阻止连接"
  5. 应用所有配置文件
  6. 命名如"阻止恶意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 Domain

4.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 Block

5.2 高级ICMP配置

网络诊断所需的ICMP规则:

# 允许必要的诊断ICMP类型 $allowedICMP = @( @{Type=3; Code=0}, # 网络不可达 @{Type=3; Code=1}, # 主机不可达 @{Type=3; Code=4}, # 需要分片但DF置位 @{Type=11; Code=0} # 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 规则排序与性能优化

随着规则数量增加,合理的排序能提升处理效率:

  1. 将最频繁匹配的规则放在前面
  2. 将阻止规则置于允许规则之前
  3. 合并相同条件的规则
  4. 定期清理过期规则
# 查找可能重复的规则 $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 10

7. 综合应用场景

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 Allow

7.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 Allow

7.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
http://www.jsqmd.com/news/1172068/

相关文章:

  • GPT-5.6正式上线!ChatGPT迎来史上最大升级,这一次真的变了
  • 今天起,你的IDE将不再“猜”代码:DeepSeek V2.5补全引擎上线即用的4个颠覆性特性(仅限首批白名单用户)
  • 2026艺宝国际拍卖实力如何,真实口碑测评价格透明不踩坑 - mypinpai
  • Python电商比价工具实战:Selenium爬虫+Tkinter桌面应用
  • 国家中小学智慧教育平台电子课本下载工具:3分钟获取教材的终极指南
  • 万国官方更换原装表带价格查询|全新地址及售后电话权威信息公告(2026年7月最新) - 万国中国官方服务中心
  • PC数据采集三路径:API调用、网络爬虫与RSS订阅实战指南
  • 亲身到店探访杭州亨得利官方名表服务中心|全部地址与售后服务电话(2026年7月更新) - 亨得利官方
  • PDF补丁丁:10个技巧让你成为PDF处理高手![特殊字符]
  • Pnpm 8.6 + Vite 5 + Vue 3 多项目 Monorepo 配置:3步解决路径别名冲突
  • 2026 年 7 月新发布:绵阳有实力的环氧煤沥青防腐钢管供应商选哪家,别再花冤枉钱!揭秘钢管防腐的终极秘密 - 企业推荐官【认证官方】
  • 蓝桥杯备赛 4 个月冲刺规划:从 200 题到省一,3 个关键阶段与每日训练表
  • GitHub Copilot 2024 多IDE安装指南:VS Code/Visual Studio/JetBrains 3平台配置对比
  • 2026年未央区宠物医院贴心服务指南,爱宠健康无忧选这里
  • 2026年值得信赖的自动喷砂机方案厂商推荐,价格透明服务品质之选 - mypinpai
  • openEuler HA-web开发者指南:基于Vue.js的高可用集群Web界面架构解析
  • Vortex模组管理器终极指南:如何轻松管理250+游戏的模组配置
  • Quartus Prime 23.1 管脚分配实战:5大属性详解与3个PCB协同设计要点
  • 帝舵中国官方售后服务中心|地址及官方客服服务电话权威信息声明(2026年7月更新) - 帝舵中国官方服务中心
  • Occupancy感知:自动驾驶从识别物体到理解可通行空间的范式跃迁
  • Python collections模块底层原理与性能优化实战
  • Python缺失值处理:从机制识别到生产级填充策略
  • NuScenes-SpatialQA:自动驾驶多模态空间推理能力评测基准
  • ConvNetDraw vs PlotNeuralNet:2 款网络结构绘图工具深度对比与选型
  • QT/C++集成Halcon实现点云可视化:离屏渲染与窗口嵌入技术详解
  • 如何快速掌握招聘时间可视化:Boss Show Time终极指南
  • 手机控电脑怎么选?ToDesk虚拟鼠标完胜向日葵AnyDesk,实测告诉你谁才是移动生产力神器
  • Packet Tracer 8.0 在 Ubuntu 22.04 部署:解决 5 个常见依赖库报错
  • C++部署ONNX模型:四大核心技巧实现低延迟高吞吐推理
  • 同样的钱,Minimax 能做的事怎么越变越少了?