Board logo

标题: [转帖] 《系统防火墙管理设置》 [打印本页]

作者: locoman    时间: 2020-5-27 14:14     标题: [转帖] 《系统防火墙管理设置》

《系统防火墙管理设置》

为方便管理windows系统防火墙特写了这个批处理。
初次发布,请多关照。
  1. @echo off
  2. rem 取得管理员权限(针对xp以后的系统)
  3. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
  4. cd /d %~dp0
  5. :start
  6. color b
  7. cls
  8. title 系统防火墙管理设置
  9. echo,
  10. echo,
  11. echo,                              《系统防火墙管理设置》
  12. echo,
  13. echo ==========================================================================
  14. echo,  1:防火墙状态检测    2:关闭/开启防火墙  3:一键关闭/恢复文件共享端口
  15. echo,
  16. echo,  4:关闭/恢复3389端口 5:启用常规服务端口 6: 设置程序规则
  17. echo,
  18. echo,  7:设置端口规则      8: 设置ip规则       9: 添加例外端口
  19. echo,
  20. echo,  10:导出/导入配置    11:恢复默认策略    12:查询规则名称  13:删除规则
  21. echo,
  22. echo,  00:退出!          14: 打开系统防火墙控制台         
  23. echo ==========================================================================
  24. echo,
  25. set num=
  26. set/p num=请输入设置项目序号[00,1-14]:
  27. if /I "%num%"=="" echo 输入为空,请重新输入! &pause&goto start
  28. echo %num%|findstr /be "[0-9]*" >nul && echo, || echo 输入有误,请重新输入! &&pause&&goto start
  29. if %num%==1 goto 1
  30. if %num%==2 goto 2
  31. if %num%==3 goto 3
  32. if %num%==4 goto 4
  33. if %num%==5 goto 5
  34. if %num%==6 goto 6
  35. if %num%==7 goto 7
  36. if %num%==8 goto 8
  37. if %num%==9 goto 9
  38. if %num%==10 goto 10
  39. if %num%==11 goto 11
  40. if %num%==12 goto 12
  41. if %num%==13 goto 13
  42. if %num%==14 goto 14
  43. if %num%==00 goto 00
  44. goto start
  45. :1
  46. rem 状态查询
  47. netsh advfirewall show allprofiles
  48. pause
  49. goto start
  50. :2
  51. rem 开启防火墙服务
  52. choice /C YN /n /m "启动防火墙输入 Y, 关闭防火墙输入 N  [Y/N]:"
  53. if %errorlevel% equ 1 (sc config MpsSvc start= auto>nul 2>nul
  54.                       netsh advfirewall set allprofiles state on >nul 2>nul &&echo,已开启防火墙服务
  55.                       netsh advfirewall set allprofiles firewallpolicy allowinbound,allowoutbound >nul
  56.                       pause)
  57. if %errorlevel% equ 2 (netsh advfirewall set allprofiles state off >nul 2>nul
  58.                       sc config MpsSvc start= disabled >nul 2>nul &&echo,已关闭防火墙服务
  59.                       pause)
  60. goto start                             
  61. :3
  62. choice /C YN /n /m "一键关闭文件共享端口输入 Y, 一键恢复文件共享端口输入 N  [Y/N]:"
  63. if %errorlevel% equ 1 ( REM 一键关闭文件共享端口
  64.                       netsh advfirewall firewall del rule name="deny-TCP-445,135,137,138,139" >nul 2>nul
  65.                       netsh advfirewall firewall del rule name="deny-UDP-445,135,137,138,139" >nul 2>nul
  66.                                           netsh advfirewall firewall add rule name="deny-TCP-445,135,137,138,139" dir=in action=block protocol=TCP localport=445,135,137,138,139  >nul 2>nul
  67.                       netsh advfirewall firewall add rule name="deny-UDP-445,135,137,138,139" dir=in action=block protocol=UDP localport=445,135,137,138,139  >nul 2>nul
  68.                       echo, &echo,TCP^&UDP[445,135,137,138,139]端口已经关闭
  69.                       pause
  70.                       )
  71. if %errorlevel% equ 2 ( REM 一键恢复文件共享端口
  72.                       netsh advfirewall firewall del rule name="deny-TCP-445,135,137,138,139" >nul 2>nul
  73.                       netsh advfirewall firewall del rule name="deny-UDP-445,135,137,138,139" >nul 2>nul
  74.                       echo, &echo,TCP^&UDP[445,135,137,138,139]端口已经恢复
  75.                       pause
  76.                       )
  77. goto start
  78.                     
  79. :4
  80. rem 关闭/恢复3389端口  
  81. choice /C YN /n /m "关闭3389端口输入 Y, 恢复3389端口输入 N  [Y/N]:"
  82. if %errorlevel% equ 1 ( rem 阻止3389服务端口
  83.                       netsh advfirewall firewall delete rule name=block-server-3389 protocol=tcp localport=3389  >nul 2>nul
  84.                                                     netsh advfirewall firewall add rule name=block-server-3389 dir=in action=block protocol=TCP localport=3389  >nul 2>nul
  85.                       echo,TCP[3389]端口已经阻止
  86.                       pause)
  87. if %errorlevel% equ 2 ( rem 恢复3389服务策略
  88.                       netsh advfirewall firewall delete rule name=block-server-3389 protocol=tcp localport=3389  >nul 2>nul
  89.                       echo,TCP[3389]端口已经恢复
  90.                       pause)
  91. goto start
  92.          
  93. :5
  94. rem 启用常规服务端口
  95. choice /C 123456789 /n /m "[1:Allow Ping] [2、FTP] [3、SSH] [4、Telnet] [5、mail] [6、HTTP HTTPS] [7、TFTP] >>>>>>>>>>>>>>>> 输入序号【1 / 2 / 3 ...】:"
  96. if %errorlevel% equ 1 ( netsh advfirewall firewall delete rule name="Allow Ping" protocol=icmpv4  >nul 2>nul
  97.                                            netsh advfirewall firewall add rule name="Allow Ping" dir=in protocol=icmpv4 action=allow  >nul 2>nul
  98.                                            rem ICMP Allow incoming
  99.                                            echo,Allow Ping
  100.                       pause)
  101. if %errorlevel% equ 2 ( netsh advfirewall firewall delete rule name="Allow FTP" protocol=TCP localport=20,21  >nul 2>nul
  102.                                                 netsh advfirewall firewall add rule name="Allow FTP" protocol=TCP dir=in localport=20,21 action=allow  >nul 2>nul
  103.                                           echo,Allow FTP
  104.                       pause)
  105. if %errorlevel% equ 3 ( netsh advfirewall firewall delete rule name="Allow SSH" protocol=TCP localport=22 >nul 2>nul
  106.                                           netsh advfirewall firewall add rule name="Allow SSH" protocol=TCP dir=in localport=22 action=allow >nul 2>nul
  107.                                           Echo,Allow SSH
  108.                       pause)
  109. if %errorlevel% equ 4 ( netsh advfirewall firewall delete rule name="Allow Telnet" protocol=TCP localport=23  >nul 2>nul
  110.                                                 netsh advfirewall firewall add rule name="Allow Telnet" protocol=TCP dir=in localport=23 action=allow >nul 2>nul
  111.                                           echo,Allow Telnet
  112.                       pause)                                       
  113. if %errorlevel% equ 5 ( netsh advfirewall firewall delete rule name="Allow mail" protocol=TCP localport=25,110 >nul 2>nul
  114.                                           netsh advfirewall firewall add rule name="Allow mail" protocol=TCP dir=in localport=25,110 action=allow >nul 2>nul
  115.                                           echo,Allow SMTP AND POP3
  116.                       pause)
  117. if %errorlevel% equ 6 ( netsh advfirewall firewall delete rule name="Allow HTTP and HTTPS" protocol=TCP localport=80,443 >nul 2>nul
  118.                                                 netsh advfirewall firewall add rule name="Allow HTTP and HTTPS" protocol=TCP dir=in localport=80,443 action=allow  >nul 2>nul
  119.                                           echo,Allow HTTP AND HTTPS
  120.                       pause)
  121. if %errorlevel% equ 7 ( netsh advfirewall firewall delete rule name="Allow TFTP" protocol=UDP localport=69  >nul 2>nul
  122.                                           netsh advfirewall firewall add rule name="Allow TFTP" protocol=UDP dir=in localport=69 action=allow >nul 2>nul
  123.                                           echo,Allow TFTP
  124.                       pause)
  125.                                  
  126. goto start
  127. :6
  128. rem 设置程序规则
  129. rem 阻止%i%程序出站规则
  130. rem netsh advfirewall firewall del rule name="%i%">nul 2>nul
  131. rem netsh advfirewall firewall add rule name="%i%" program=%j% action=block dir=out>nul
  132. pause
  133. goto start
  134. :7
  135. rem 设置端口规则
  136. set name=
  137. set port=
  138. set protocol=
  139. set dir=
  140. set action=
  141. set /p name=定义一个规则名称(如 deny-TCP-445,Allow-tcp-3389):
  142. set /P action=允许还是阻止规则(如 allow/block):
  143. set /p port=输入要阻止的端口号(连续端口:1-65535;不连续端口:137,139,445):
  144. set /p protocol=协议类别(TCP/udp):
  145. echo 预制方向为:进入
  146. echo,
  147. netsh advfirewall firewall add rule name="%name%" dir=in protocol=%protocol% localport=%port% action=%action% >nul
  148. echo,------------------------------------------------------------------------
  149. echo,规则名为:[%name%] 动作为:%action% 方向为:进入 协议为:%protocol%  端口为:%port% 的阻止规则已经建立。
  150. echo,------------------------------------------------------------------------
  151. pause
  152. goto start
  153. :8
  154. rem 设置ip规则
  155. set name=
  156. set action=
  157. set remoteip=
  158. set /p name=起一个ip规则名称(如 deny-ip-1.1.1.1,Allow-ip-2.2.2.2):
  159. set /P action=允许还是阻止规则(如 allow/block):
  160. set /p remoteip=远程ip地址(如:8.8.8.8):
  161. echo 预制方向为:进入
  162. echo,
  163. netsh advfirewall firewall add rule name="%name%" dir=in  action=%action% remoteip=%remoteip% >nul
  164. echo,------------------------------------------------------------------------
  165. echo,规则名为:[%name%] 动作为:%action% 方向为:进入 远程ip为:%remoteip% 的阻止规则已经建立。
  166. echo,------------------------------------------------------------------------
  167. pause
  168. goto start
  169. :9
  170. rem 下面添加要加入到例外的端口号
  171. rem 这里使用all,表示TCP与UDP.如果只是tcp或UDP,可以改成相应的
  172. set name=
  173. set port=
  174. set /p name=起一个例外规则名称(如 polycom-port-123):
  175. set /p port=指定例外的端口号(如 25;20-21)
  176. netsh firewall set portopening all %port% "%name%" enable
  177. rem 删除的方法把里面的set用delete代替,后面的名字和enable用空格代替
  178. rem netsh firewall delete portopening all 3230
  179. pause
  180. goto start
  181. :10
  182. rem 导出防火墙配置到文件
  183. choice /C YN /n /m "导出防火墙配置输入 Y, 恢复防火墙配置输入 N  [Y/N]:"
  184. if %errorlevel% ==1 (IF EXIST exportfile.pol DEL /Q /F outfirewall.pol >NUL 2>NUL
  185.                                         netsh advfirewall export ".\outfirewall.pol" >NUL
  186.                                         echo,
  187.                                         IF EXIST outfirewall.pol echo 防火墙配置文件导出成功
  188.                                         FOR /F "delims==" %%i IN ('dir /b outfirewall.pol') DO @echo 文件位置%%~dpi%%i  生成时间%%~ti
  189.                                         pause
  190.                                         goto start
  191.                                         )
  192. :importfile
  193. if %errorlevel% ==2 (
  194.                                         echo, &echo 将导入文件名复制到当前目录并更名为infirewall.pol&pause
  195.                                     if not exist infirewall.pol (
  196.                                                 echo,
  197.                                                 echo infirewall.pol文件不存在
  198.                                                 echo,
  199.                                                 goto importfile
  200.                                         ) else (
  201.                                                 echo,
  202.                                                 netsh advfirewall import infirewall.pol >nul &&echo,防火配置文件导入成功!
  203.                                                 echo,
  204.                                         pause)
  205.                                         goto start
  206.                                         )
  207. goto start
  208. :11
  209. rem 恢复防火墙默认策略
  210. netsh advfirewall reset
  211. echo,已经恢复为默认防火墙策略
  212. pause
  213. goto start
  214. :12
  215. rem 根据规则名称如xxxx查询内容
  216. netsh advfirewall firewall show rule name=all type=static verbose | find /i "规则名称:" >firewall%date:~0,4%-%date:~5,2%-%date:~8,2%.txt
  217. start notepad firewall%date:~0,4%-%date:~5,2%-%date:~8,2%.txt
  218. rem del firewall%date:~0,4%-%date:~5,2%-%date:~8,2%.txt
  219. set serfile=
  220. set /P serfile=输入查询规则名称:
  221. NETSH ADVFIREWALL FIREWALL SHOW RULE NAME="%serfile%" verbose
  222. pause
  223. goto start
  224. :13
  225. rem 删除规则
  226. echo,删除的规则名称可以通过[12:查询规则名称]找到
  227. echo,
  228. set delfile=
  229. set /P delfile=输入要删除的规则名称:
  230. netsh advfirewall firewall delete rule name="%delfile%">nul &&echo,已删除%delfile%规则
  231. echo,
  232. pause
  233. goto start
  234. :14
  235. echo,稍等片刻......
  236. ping -n 2 127.0.0.1>nul
  237. start %windir%\system32\WF.msc
  238. goto start
  239. :00
  240. exit
复制代码
转自:http://cndos.fam.cx/forum/viewthread.php?tid=55252&fpage=2
作者: ympe    时间: 2021-7-1 12:25

谢谢学习下。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2