監聽並自添加windows防火牆規則批處理FOR WIN10

環境:windows10家庭版

目標:實現獲取連接信息並禁用B類以上及特殊類TCP和自動添加防火牆規則

說明:

1.本實例根據目標做成,內容可以按照自己的要求修改,可修改的地方如下:

1)添加排除的外部地址在if not "!addr!"=="0.0.0.0"  (內容)右括號在括號最多的地方加

2)修改IP類在if !ipStart! equ 10這類的地方修改,if的用法在命令行使用if /?查看

3)netstat -ano這個查看命令也可以改,改過之後查看的結果解析方式可能會有不同

4)netstat -ano的結果還有其他參數可用,比如本地地址,狀態等等,1,2,3,4,5分別表示每一列,具體參考命令行中for /?使用

5)ping -n 60 127.0>nul這個是間隔一段時間再循環,可以修改60間隔

6)可以把批處理加到自定義服務中,具體方法可以參考我的舊文:分析並添加windows firewall規則的批處理https://blog.csdn.net/humors221/article/details/43417675

2.使用方法:

1)啓用Windows Defender Firewall服務(右鍵開始菜單\計算機管理\服務和應用程序\服務\啓動類型自動\啓動\確定),我這裏默認啓用無法修改

2)顯示文件類型(此電腦雙擊或任務欄資源管理器雙擊\菜單欄查看\勾選文件擴展名)

3)創建批處理文件(d:\防火牆規則程序\防火牆規則程序.bat\右鍵編輯\複製粘貼源代碼\保存退出)

4)運行批處理(右鍵批處理選擇以管理員運行)

5)查看和修改防火牆規則(任務欄右鍵\搜索\顯示搜索框\輸入防火牆和網絡保護\高級設置\入站規則&出站規則)

6)刪除所有TCP規則命令行命令:netsh advfirewall firewall delete rule name=all protocol=tcp,詳情使用netsh advfirewall firewall /?查詢

3.參考:

ip地址分類(A類,B類,C類,D類,E類):https://www.cnblogs.com/tunian/p/9632893.html

 

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
goto loop

:loop
set num=0
netstat -aon>net.txt
for /f "tokens=*" %%i in (net.txt) do (
set row=%%i
if !num! gtr 1 (
for /f "tokens=1,2,3,4,5* delims= " %%a in ("!row!") do (
set flag=%%a
if "!flag!" equ "TCP" (
set fadd=%%c
for /f "tokens=1,2* delims=:" %%m in ("!fadd!") do (
set addr=%%m
set port=%%n
if not "!addr!"=="0.0.0.0" (
if not "!addr!"=="[" (
if not "!addr!"=="*" (
for /f "tokens=1,2* delims=." %%w in ("!addr!") do (
set ipStart=%%w
if !ipStart! equ 10 (
netsh advfirewall firewall add rule name=denyIn-!addr! protocol=tcp dir=in action=block remoteip=!addr! remoteport=!port!
netsh advfirewall firewall add rule name=denyOut-!addr! protocol=tcp dir=out action=block
remoteip=!addr! remoteport=!port!
echo !addr!>>addr.txt
echo !addr!已被禁用!
)
if !ipStart! equ 172 (
netsh advfirewall firewall add rule name=denyIn-!addr! protocol=tcp dir=in action=block
remoteip=!addr! remoteport=!port!
netsh advfirewall firewall add rule name=denyOut-!addr! protocol=tcp dir=out action=block
remoteip=!addr! remoteport=!port!
echo !addr!>>addr.txt
echo !addr!已被禁用!
)
if !ipStart! geq 192 (
netsh advfirewall firewall add rule name=denyIn-!addr! protocol=tcp dir=in action=block remoteip=!addr! remoteport=!port!
netsh advfirewall firewall add rule name=denyOut-!addr! protocol=tcp dir=out action=block
remoteip=!addr! remoteport=!port!
echo !addr!>>addr.txt
echo !addr!已被禁用!
)
)
)
)
)
)
)
)
)
set /a num+=1
)
ping -n 60 127.0>nul
goto loop

(全文完)

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章