可以通过 netsh advfirewall firewall
命令操作Windows防火墙。
一、命令概览
可以通过 netsh advfirewall firewall
实现如下操作
参数 | 说明 |
---|---|
add | 添加新入站或出站防火墙规则。 |
delete | 删除所有匹配的防火墙规则。 |
dump | 显示一个配置脚本。 |
help | 显示命令列表。 |
set | 为现有规则的属性设置新值。 |
show | 显示指定的防火墙规则。 |
二、命令参数
2.1 添加防火墙规则
添加防火墙规则,应使用 netsh advfirewall firewall add rule
参数表:
参数 | 默认值 | 说明 | 取值 |
---|---|---|---|
name [必填] | 规则名称,不能重复的那种 | ||
dir [必填] | 入站规则/ 出站规则 | in/ out | |
action [必填] | 允许/ 阻止/ 绕过 | allow/ block/ bypass | |
program | 程序路径 | ||
service | 服务的短名称,或者可以填all | ||
description | 规则描述 | ||
enable | yes | 规则是否启用,默认启用 | yes/ no |
profile | 可以多选,以英文半角逗号分隔 | public/ private/ domain/ any | |
localip | 本地IP地址,接受IPv4、IPv6、子网、网段、逗号分隔的IP列表 | any/ [IPv4 address]/ [IPv6 address]/ [subnet]/ [range]/ [list] | |
remoteip | 远程IP地址 | any/ localsubnet/ dns/ dhcp/ wins/ defaultgateway/ [IPv4 address]/ [IPv6 address]/ [subnet]/ [range]/ [list] | |
localport | any | 支持减号表示的端口段,以及逗号分隔的端口列表,或者any。默认any | 0-65535/ [,...]/ any |
remoteport | any | 支持减号表示的端口段,以及逗号分隔的端口列表,或者any。默认any | 0-65535/ [,...]/ any |
protocol | any | 支持填写数字或者协议。默认any | 0-255/ icmpv4/ icmpv6/ icmpv4:type,code/ icmpv6:type,code/ tcp/ udp/ any |
interfacetype | wireless/ lan/ ras/ any | ||
security | notrequired | authenticate/ authenc/ authdynenc/ authnoencap/ notrequired | |
rmtcomputergrp | |||
rmtusrgrp | |||
edge | no | yes/ deferapp/ deferuser/ no |
- 将新的入站或出站规则添加到防火墙策略。
- 规则名称应该是唯一的,且不能为 "all"。
- 如果已指定远程计算机或用户组,则 security 必须为authenticate、authenc、authdynenc 或 authnoencap。
- 为 authdynenc 设置安全性可允许系统动态协商为匹配给定 Windows Defender 防火墙规则的通信使用加密。根据现有连接安全规则属性协商加密。选择此选项后,只要入站 IPsec 连接已设置安全保护,但未使用 IPsec 进行加密,计算机就能够接收该入站连接的第一个 TCP 或UDP 包。一旦处理了第一个数据包,服务器将重新协商连接并对其进行升级,以便所有后续通信都完全加密。
- 如果 action=bypass,则 dir=in 时必须指定远程计算机组。
- 如果 service=any,则规则仅应用到服务。
- ICMP 类型或代码可以为 "any"。
- Edge 只能为入站规则指定。
- AuthEnc 和 authnoencap 不能同时使用。
- Authdynenc 仅当 dir=in 时有效。
- 设置 authnoencap 后,security=authenticate 选项就变成可选参数。
2.2 删除防火墙规则
添加防火墙规则,应使用 netsh advfirewall firewall delete rule
参数表:
参数 | 说明 | 取值 |
---|---|---|
name[必填] | 要删除的规则名称 | |
dir | 入站规则/ 出站规则 | in/ out |
program | 程序路径 | |
service | 服务的短名称,或者可以填all | |
profile | 可以多选,以英文半角逗号分隔 | public/ private/ domain/ any |
localip | 本地IP地址,接受IPv4、IPv6、子网、网段、逗号分隔的IP列表 | any/ [IPv4 address]/ [IPv6 address]/ [subnet]/ [range]/ [list] |
remoteip | 远程IP地址 | any/ localsubnet/ dns/ dhcp/ wins/ defaultgateway/ [IPv4 address]/ [IPv6 address]/ [subnet]/ [range]/ [list] |
localport | 支持减号表示的端口段,以及逗号分隔的端口列表,或者any。默认any | 0-65535/ [,...]/ any |
remoteport | 支持减号表示的端口段,以及逗号分隔的端口列表,或者any。默认any | 0-65535/ [,...]/ any |
protocol | 支持填写数字或者协议。默认any | 0-255/ icmpv4/ icmpv6/ icmpv4:type,code/ icmpv6:type,code/ tcp/ udp/ any |
- 删除按名称识别的规则,也可按终结点、端口、协议和类型识别规则
- 如果找到多个匹配项,则删除所有匹配规则。
- 如果指定 name=all,则从指定的类型和配置文件中删除所有规则。
三、命令使用
阻止445端口上所有TCP连接
netsh advfirewall firewall add rule name="block 445" protocol=TCP dir=in localport=445 action=block
移除上述规则
netsh advfirewall firewall delete rule name="block 445" protocol=TCP dir=in localport=445