netsh 防火墙入口
netsh advfirewall firewall 是 Windows 防火墙规则的传统命令行入口,适合脚本化批量下发。它的命令结构固定为 add、delete、show 三段式,规则名是后续查询与删除的唯一凭据,因此命名规则要在下发之前就统一好。
基本信息
| 适用平台 | Windows(Server 2008 及以上与客户端系统) |
|---|---|
| 命令族 | netsh advfirewall firewall |
| 风险等级 | 中 |
| 基线要求 | 每条放行规则有业务归属 |
| 关键参数 | dir、action、protocol、localport、remoteip |
典型使用场景
- 批量下发统一的入站放行规则
- 脚本化部署时配置服务器防火墙
- 排查某条规则是否存在及完整参数
- 清理历史遗留的临时规则
- 统计规则条数,发现计划外新增
增删查
增删查
netsh advfirewall firewall add rule name="Allow HTTPS 443" dir=in action=allow protocol=TCP localport=443 remoteip=10.0.0.0/8 # 只放行内网段的 443
netsh advfirewall firewall show rule name="Allow HTTPS 443" verbose # 查看该规则的完整参数
netsh advfirewall firewall delete rule name="Allow HTTPS 443" # 按规则名删除
netsh advfirewall firewall show rule name=all | findstr /i "Rule Name" | find /c /v "" # 统计规则条数
netsh advfirewall firewall show rule name=all dir=in | findstr /i "Allow" # 列出所有入站放行规则参数读法
| 参数 | 含义 | 注意点 |
|---|---|---|
| name | 规则名称 | 删除与查询的唯一凭据,命名要统一 |
| dir | 规则方向 | in 为入站,out 为出站 |
| action | 匹配后的动作 | allow 放行,block 阻止 |
| localport | 本地端口 | 精确到端口而不是范围 |
| remoteip | 允许的来源地址 | 不写等于任意来源 |
remoteip 是收敛来源的关键:不带 remoteip 的放行规则默认对全网开放,等于把端口摊给所有地址。
规则名重复会生成多条功能相同的规则:命名时带上端口与用途,删除时按 name 精确匹配。
netsh 的参数对大小写不敏感,但拼写必须完整:把 action 拼错会静默生成无效规则,命令执行不报错却没有任何实际效果。
netsh 与 PowerShell 的 New-NetFirewallRule 是两套接口但底层是同一份规则集:团队里约定只用其中一种,排障时就不容易出现命令结果对不上的情况。
批量下发前先在测试机验证规则效果:写错方向或端口会直接切断远程管理通道,只保留远程连接方式的服务器尤其要注意。