windows系统防火墙如何批量添加出入站规则?

场景描述:

        某用户有将近100台windows服务器作为备份客户端,需要针对备份服务端应用程序及大量端口,设置进站、出战规则,如果按照windows图形界面进行设置,工作量非常大,且容易出错,因此必须使用批处理的方式,那么如何在防火墙上批量开放禁用端口、允许或阻止访问应用程序呢?以下批处理程序就是批量设置防火墙规则。

一、当用户环境允许关闭防火墙时,直接关闭防火墙最简单省事(不推荐

在cmd使用以下命令关闭防火墙或在控制面板→windows Defender防火墙→自定义设置中关闭 #netsh advfirewall set allprofiles state off

二、当用户环境不允许关闭防火墙时(推荐

       为了能够正常访问某些程序或端口,我们可以在控制面板\所有控制面板项\Windows Defender 防火墙\高级设置中添加入站、出战规则,来允许或阻止我们访问某些应用跟端口,需要注意的是,如果添加的规则比较多且多台计算机需要做同样的操作,建议使用bat处理脚本进行添加(这也是本文重点推荐的方法,减轻工作量,提高效率跟失误)

1.新建文本文件然后将以下内容复制进去,然后根据现场实际情况修改允许或禁止访问的端口以及程序路径,修改完成后,保存后将文件后缀名修改为.bat



@echo off

for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Desktop"') do set "desktop_dir=%%j"

rem set dir="d:\scan"

set dir="%desktop_dir%\scan"

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

if '%errorlevel%' NEQ '0' (

echo ---请求管理员权限运行...

goto UACPrompt

) else ( goto gotAdmin )

:UACPrompt

echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"

echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

"%temp%\getadmin.vbs"

exit /B

:gotAdmin

if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )

pushd "%CD%"

CD /D "%~dp0"

#前面部分代码作用是为了命令在cmd以管理员权限运行



#后面部分为添加防火墙规则的具体命令,使用此脚本时,请将中文注释删除保存后再执行

命令参数解释:

name为规则名称

protocol为使用的协议

in为入站规则

out为出站规则;

localport为允许或阻止访问的端口;

action为要执行的操作;

允许为allow,

阻止为block;

program为需要允许或阻止访问的应用程序具体路径

cd %~dp0

netsh advfirewall firewall add rule name="netvault-tcp" protocol=TCP dir=in localport=20031-20051 action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-udp" protocol=udp dir=in localport=20031-20051 action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-tcp" protocol=TCP dir=out localport=20031-20051 action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-udp" protocol=udp dir=out localport=20031-20051 action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-nvraw" dir=out program="C:\Program Files\NetVault Backup\bin\nvraw.exe" action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-nvcoreplg" dir=out program="C:\Program Files\NetVault Backup\bin\nvcoreplg.exe" action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-nvfs" dir=out program="C:\Program Files\NetVault Backup\plugins\filesystem\nvfs.exe" action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-nvpmgr" dir=out program="C:\Program Files\NetVault Backup\bin\nvpmgr.exe" action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-nvraw" dir=in program="C:\Program Files\NetVault Backup\bin\nvraw.exe" action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-nvcoreplg" dir=in program="C:\Program Files\NetVault Backup\bin\nvcoreplg.exe" action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-nvfs" dir=in program="C:\Program Files\NetVault Backup\plugins\filesystem\nvfs.exe" action=allow>nul 2>nul

netsh advfirewall firewall add rule name="netvault-nvpmgr" dir=in program="C:\Program Files\NetVault Backup\bin\nvpmgr.exe" action=allow>nul 2>nul

三、如何在100台服务器上同时执行呢?

1、如果用户环境中有域控服务器,且这些服务器都通过域控统一管理的话,可以使用域控组策略,统一下发bat脚本到100台服务器上,然后设置开机&关机登录&注销,任意一个条件下执行脚本。

2、一般情况下这么多台服务器一般都会有域控,不然不好管理,我遇到的就是没有域控的环境,如果用户环境中没有域 ,那可以将脚本放到文件服务器,共享给所有服务器访问,这样每台服务器都可以看到脚本,直接执行即可。

3、用户服务器如果允许插u盘,将脚本拷贝到u盘,按个插到服务器然后执行,其实也很快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值