Windows通过netsh控制安全中心防火墙和网络保护策略
1. 工具简介
【1】. Windows安全中心
【2】. netsh工具
netsh
(Network Shell
) 是一个Windows
系统本身提供的功能强大的网络配置命令行工具。
2. 开启/关闭防火墙策略
在设置端口(禁用/启用)前,先设置防火墙策略。
备注: 所有命令均以管理员权限运行!!!
【1】. 开启防火墙策略
netsh advfirewall set allprofile state on
效果如下:
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall set allprofile state on
确定。
【2】. 关闭防火墙策略
netsh advfirewall set allprofile state off
效果如下:
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall set allprofile state off
确定。
【3】. 查看防火墙策略状态
netsh advfirewall show allprofile state
效果如下:
# 开启状态
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall set allprofile state on
确定。C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall show allprofile state域配置文件 设置:
----------------------------------------------------------------------
状态 启用专用配置文件 设置:
----------------------------------------------------------------------
状态 启用公用配置文件 设置:
----------------------------------------------------------------------
状态 启用
确定。C:\Users\Administrator># 关闭状态
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall set allprofile state off
确定。C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall show allprofile state域配置文件 设置:
----------------------------------------------------------------------
状态 关闭专用配置文件 设置:
----------------------------------------------------------------------
状态 关闭公用配置文件 设置:
----------------------------------------------------------------------
状态 关闭
确定。C:\Users\Administrator>
3. 端口禁用/启用
在设置端口禁用或启用前,需要设置防火墙策略为开启状态。
【1】. 命令行使用说明
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall firewall add rule提供的许多参数无效。请查看帮助获取正确语法。用法: add rule name=<string>dir=in|outaction=allow|block|bypass[program=<program path>][service=<service short name>|any][description=<string>][enable=yes|no (default=yes)][profile=public|private|domain|any[,...]][localip=any|<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>][remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>][localport=0-65535|<port range>[,...]|RPC|RPC-EPMap|IPHTTPS|any (default=any)][remoteport=0-65535|<port range>[,...]|any (default=any)][protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|tcp|udp|any (default=any)][interfacetype=wireless|lan|ras|any][rmtcomputergrp=<SDDL string>][rmtusrgrp=<SDDL string>][edge=yes|deferapp|deferuser|no (default=no)][security=authenticate|authenc|authdynenc|authnoencap|notrequired(default=notrequired)]备注:- 将新的入站或出站规则添加到防火墙策略。- 规则名称应该是唯一的,且不能为 "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 选项就变成可选参数。示例:为不具有封装的 messenger.exe 添加入站规则:netsh advfirewall firewall add rule name="allow messenger"dir=in program="c:\programfiles\messenger\msmsgs.exe"security=authnoencap action=allow为端口 80 添加出站规则:netsh advfirewall firewall add rule name="allow80"protocol=TCP dir=out localport=80 action=block为 TCP 端口 80 通信添加需要安全和加密的入站规则:netsh advfirewall firewall add rulename="Require Encryption for Inbound TCP/80"protocol=TCP dir=in localport=80 security=authdynencaction=allow为 messenger.exe 添加需要安全的入站规则:netsh advfirewall firewall add rule name="allow messenger"dir=in program="c:\program files\messenger\msmsgs.exe"security=authenticate action=allow为 SDDL 字符串标识的组 acmedomain\scanners 添加经过身份验证的防火墙跳过规则:netsh advfirewall firewall add rule name="allow scanners"dir=in rmtcomputergrp=<SDDL string> action=bypasssecurity=authenticate为 udp- 的本地端口 5000-5010 添加出站允许规则Add rule name="Allow port range" dir=out protocol=udp localport=5000-5010 action=allowC:\Users\Administrator>
【2】. 禁用TCP-104端口
【A】. 设置策略
netsh advfirewall firewall add rule name="DenyTcp104" dir=in action=block protocol=TCP localport=104
效果如下:
C:\Users\Administrator>netsh advfirewall firewall add rule name="DenyTcp104" dir=in action=block protocol=TCP localport=104
确定。C:\Users\Administrator>
【B】. 查看策略
查看指定策略
netsh advfirewall firewall show rule name="DenyTcp104"
效果如下:
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall firewall show rule name="DenyTcp104"规则名称: DenyTcp104
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 104
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。C:\Users\Administrator>
查看所有策略
netsh advfirewall firewall show rule name=all
效果如下:
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall firewall show rule name=all规则名称: DenyTcp104
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 104
远程端口: 任何
边缘遍历: 否
操作: 阻止规则名称: Microsoft Edge (mDNS-In)
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组: Microsoft Edge
本地 IP: 任何
远程 IP: 任何
协议: UDP
本地端口: 5353
远程端口: 任何
边缘遍历: 否
操作: 允许规则名称: OpenSSH SSH Server (sshd)
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组: OpenSSH Server
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 22
远程端口: 任何
边缘遍历: 否
操作: 允许规则名称: Workflow Manager Tools 1.0 for Visual Studio 2012 - Test Service Host
----------------------------------------------------------------------
已启用: 否
方向: 入
配置文件: 域,专用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 12292
远程端口: 任何
边缘遍历: 否
操作: 允许规则名称: Visual Studio 2013 远程调试器发现 (devenv.exe)......
【C】. 删除策略
netsh advfirewall firewall delete rule name="DenyTcp104"
效果如下:
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall firewall show rule name="DenyTcp104"规则名称: DenyTcp104
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 104
远程端口: 任何
边缘遍历: 否
操作: 阻止
确定。C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall firewall delete rule name="DenyTcp104"已删除 1 规则。
确定。C:\Users\Administrator>
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall firewall show rule name="DenyTcp104"没有与指定标准相匹配的规则。C:\Users\Administrator>
【3】. 允许TCP-104端口
【A】. 综合演示
效果如下:
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall firewall add rule name="AllowTcp104" dir=in action=allow protocol=TCP localport=104
确定。C:\Users\Administrator>
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall firewall show rule name="AllowTcp104"规则名称: AllowTcp104
----------------------------------------------------------------------
已启用: 是
方向: 入
配置文件: 域,专用,公用
分组:
本地 IP: 任何
远程 IP: 任何
协议: TCP
本地端口: 104
远程端口: 任何
边缘遍历: 否
操作: 允许
确定。C:\Users\Administrator>
C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall firewall delete rule name="AllowTcp104"已删除 1 规则。
确定。C:\Users\Administrator>
C:\Users\Administrator>netsh advfirewall firewall show rule name="AllowTcp104"没有与指定标准相匹配的规则。C:\Users\Administrator>
4. ICMP禁用/启用
【1】. 允许/禁止所有ICMP包通过
ICMP
数据包(例如ping
请求)能通过Windows
防火墙:
netsh advfirewall firewall add rule name="Allow ICMPv4-In" protocol=icmpv4:8,any dir=in action=allow
取消上述规则,则执行如下命令:
netsh advfirewall firewall delete rule name="Allow ICMPv4-In"
5. TCP协议端口控制
【1】. 特定端口禁用/启用
开放 TCP 协议10086
端口:
netsh advfirewall firewall add rule name="Allow TCP 10086" dir=in action=allow protocol=TCP localport=10086
关闭 TCP 协议 10086
端口:
netsh advfirewall firewall delete rule name="Allow TCP 10086"
【2】. 全部端口禁用/启用
使用帮助:
# localport端口指定参数:
[localport=0-65535|<port range>[,...]|RPC|RPC-EPMap|IPHTTPS|any (default=any)]
开放 TCP 协议全部
端口:
netsh advfirewall firewall add rule name="Allow TCP All" dir=in action=allow protocol=TCP
关闭 TCP 协议 全部
端口:
netsh advfirewall firewall delete rule name="Allow TCP All"
6. UDP协议端口控制
【1】. 特定端口禁用/启用
开放 UDP 协议5001
端口:
netsh advfirewall firewall add rule name="Allow UDP 5001" dir=in action=allow protocol=UDP localport=5001
关闭 UDP 协议 5001
端口:
netsh advfirewall firewall delete rule name="Allow UDP 5001"
【2】. 全部端口禁用/启用
开放 UDP 协议全部
端口:
netsh advfirewall firewall add rule name="Allow UDP All" dir=in action=allow protocol=UDP
关闭 UDP 协议 全部
端口:
netsh advfirewall firewall delete rule name="Allow UDP All"