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|out
      action=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 rule
      name="Require Encryption for Inbound TCP/80"
      protocol=TCP dir=in localport=80 security=authdynenc
      action=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=bypass
      security=authenticate

      为 udp- 的本地端口 5000-5010 添加出站允许规则
      Add rule name="Allow port range" dir=out protocol=udp localport=5000-5010 action=allow

C:\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"
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐