编写 PowerShell 脚本来管理 Windows 防火墙可以帮助自动化配置和监控网络安全设置。以下是一个简单的大纲,涵盖了管理 Windows 防火墙的主要方面:

news/2024/10/6 3:05:36/文章来源:https://www.cnblogs.com/suv789/p/18287292

编写 PowerShell 脚本来管理 Windows 防火墙可以帮助自动化配置和监控网络安全设置。以下是一个简单的大纲,涵盖了管理 Windows 防火墙的主要方面:

1. 导入模块和设置变量

  • 导入 NetSecurity 模块以访问防火墙 cmdlet。
  • 设置需要使用的变量,如规则名称、端口号等。

2. 查询和列出现有的防火墙规则

  • 使用 Get-NetFirewallRule 列出所有防火墙规则。
  • 根据需要筛选和显示特定规则。

3. 创建新的防火墙规则

  • 使用 New-NetFirewallRule 创建新的防火墙规则。
  • 指定规则的名称、描述、协议、端口、允许/阻止、远程IP地址等。

4. 禁用或启用现有的防火墙规则

  • 使用 Disable-NetFirewallRule 禁用现有的防火墙规则。
  • 使用 Enable-NetFirewallRule 启用现有的防火墙规则。
  • 可以基于规则名称或其他标识符来操作规则。

5. 删除不再需要的防火墙规则

  • 使用 Remove-NetFirewallRule 删除不再需要的防火墙规则。
  • 可以基于规则名称或其他标识符来删除规则。

6. 监控防火墙日志

  • 使用 Get-NetFirewallPortFilter 和 Get-NetFirewallAddressFilter 监控防火墙的端口过滤和地址过滤。
  • 根据需要设置过滤器并分析日志。

7. 设置防火墙高级安全选项

  • 使用 Set-NetFirewallProfile 和 Set-NetFirewallSetting 配置防火墙的高级安全选项。
  • 包括配置公共、专用和域网络的不同选项,如入站规则、出站规则、阻止无法识别的网络等。

示例脚本大纲

powershellCopy Code
# 导入模块
Import-Module NetSecurity# 设置变量
$RuleName = "MyCustomRule"
$Port = 80
$Protocol = "TCP"
$Action = "Allow"
$RemoteIP = "192.168.1.100"# 查询并列出现有的防火墙规则
Get-NetFirewallRule# 创建新的防火墙规则
New-NetFirewallRule -Name $RuleName -DisplayName "Allow HTTP traffic on port $Port" -Protocol $Protocol -LocalPort $Port -Action $Action -RemoteAddress $RemoteIP# 禁用现有的防火墙规则
Disable-NetFirewallRule -DisplayName "RuleToDisable"# 启用现有的防火墙规则
Enable-NetFirewallRule -DisplayName "RuleToEnable"# 删除不再需要的防火墙规则
Remove-NetFirewallRule -Name "RuleToDelete"# 监控防火墙日志
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 80 }# 设置防火墙高级安全选项
Set-NetFirewallProfile -Profile Domain, Public, Private -DefaultInboundAction Block
Set-NetFirewallSetting -EnableFirewall $true -UnicastResponseToMulticast $false

以上是一个基本的 PowerShell 脚本大纲,可以根据具体需求和安全策略进一步扩展和定制。

示例脚本继续

powershellCopy Code
# 导入模块
Import-Module NetSecurity# 设置变量
$RuleName = "MyCustomRule"
$Port = 80
$Protocol = "TCP"
$Action = "Allow"
$RemoteIP = "192.168.1.100"# 查询并列出现有的防火墙规则
Get-NetFirewallRule# 创建新的防火墙规则
New-NetFirewallRule -Name $RuleName -DisplayName "Allow HTTP traffic on port $Port" -Protocol $Protocol -LocalPort $Port -Action $Action -RemoteAddress $RemoteIP# 禁用现有的防火墙规则
Disable-NetFirewallRule -DisplayName "RuleToDisable"# 启用现有的防火墙规则
Enable-NetFirewallRule -DisplayName "RuleToEnable"# 删除不再需要的防火墙规则
Remove-NetFirewallRule -Name "RuleToDelete"# 监控防火墙日志
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 80 }# 设置防火墙高级安全选项
Set-NetFirewallProfile -Profile Domain, Public, Private -DefaultInboundAction Block
Set-NetFirewallSetting -EnableFirewall $true -UnicastResponseToMulticast $false

解释

  1. 导入模块和设置变量:

    • 使用 Import-Module NetSecurity 导入 NetSecurity 模块,以便使用防火墙管理的 cmdlet。
    • 设置了变量 $RuleName$Port$Protocol$Action$RemoteIP,用于创建和管理防火墙规则。
  2. 查询和列出现有的防火墙规则:

    • 使用 Get-NetFirewallRule 列出当前系统中所有的防火墙规则。
  3. 创建新的防火墙规则:

    • 使用 New-NetFirewallRule 创建名为 $RuleName 的新防火墙规则,允许TCP流量通过指定的端口 $Port,并允许来自指定远程IP地址 $RemoteIP 的流量。
  4. 禁用和启用现有的防火墙规则:

    • 使用 Disable-NetFirewallRule 和 Enable-NetFirewallRule 分别禁用和启用具有特定显示名称的现有防火墙规则。
  5. 删除不再需要的防火墙规则:

    • 使用 Remove-NetFirewallRule 根据规则名称删除不再需要的防火墙规则。
  6. 监控防火墙日志:

    • 使用 Get-NetFirewallPortFilter 获取防火墙端口过滤器,并通过 Where-Object 筛选出本地端口为 $Port 的日志。
  7. 设置防火墙高级安全选项:

    • 使用 Set-NetFirewallProfile 和 Set-NetFirewallSetting 分别配置防火墙配置文件和设置的高级安全选项,如默认的入站操作和多播响应。

这些示例涵盖了基本的防火墙管理操作,可以根据具体需求和安全策略进行进一步扩展和定制。

# 导入模块
Import-Module NetSecurity# 设置变量
$RuleName = "MyCustomRule"
$Port = 80
$Protocol = "TCP"
$Action = "Allow"
$RemoteIP = "192.168.1.100"# 查询并列出现有的防火墙规则
Get-NetFirewallRule# 创建新的防火墙规则
New-NetFirewallRule -Name $RuleName -DisplayName "Allow HTTP traffic on port $Port" -Protocol $Protocol -LocalPort $Port -Action $Action -RemoteAddress $RemoteIP# 禁用现有的防火墙规则
Disable-NetFirewallRule -DisplayName "RuleToDisable"# 启用现有的防火墙规则
Enable-NetFirewallRule -DisplayName "RuleToEnable"# 删除不再需要的防火墙规则
Remove-NetFirewallRule -Name "RuleToDelete"# 监控防火墙日志
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 80 }# 设置防火墙高级安全选项
Set-NetFirewallProfile -Profile Domain, Public, Private -DefaultInboundAction Block
Set-NetFirewallSetting -EnableFirewall $true -UnicastResponseToMulticast $false

解释(续)

  1. 禁用现有的防火墙规则:

    • 使用 Disable-NetFirewallRule -DisplayName "RuleToDisable" 禁用具有特定显示名称的现有防火墙规则。
  2. 启用现有的防火墙规则:

    • 使用 Enable-NetFirewallRule -DisplayName "RuleToEnable" 启用具有特定显示名称的现有防火墙规则。
  3. 删除不再需要的防火墙规则:

    • 使用 Remove-NetFirewallRule -Name "RuleToDelete" 根据规则名称删除不再需要的防火墙规则。
  4. 监控防火墙日志:

    • 使用 Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 80 } 获取防火墙端口过滤器,并筛选出本地端口为 $Port 的日志条目。
  5. 设置防火墙高级安全选项:

    • 使用 Set-NetFirewallProfile -Profile Domain, Public, Private -DefaultInboundAction Block 设置默认情况下拒绝入站连接的防火墙配置文件选项。
    • 使用 Set-NetFirewallSetting -EnableFirewall $true -UnicastResponseToMulticast $false 启用防火墙并禁用对多播请求的单播响应。

这些操作示例展示了如何使用 PowerShell 管理 Windows 防火墙的基本功能,包括创建、禁用、启用和删除规则,以及配置高级安全选项。这些命令可以根据实际需求进行调整和扩展,以满足特定的网络安全需求和策略。

# 导入模块
Import-Module NetSecurity# 设置变量
$RuleName = "MyCustomRule"
$Port = 80
$Protocol = "TCP"
$Action = "Allow"
$RemoteIP = "192.168.1.100"# 查询并列出现有的防火墙规则
Get-NetFirewallRule# 创建新的防火墙规则
New-NetFirewallRule -Name $RuleName -DisplayName "Allow HTTP traffic on port $Port" -Protocol $Protocol -LocalPort $Port -Action $Action -RemoteAddress $RemoteIP# 禁用现有的防火墙规则
Disable-NetFirewallRule -DisplayName "RuleToDisable"# 启用现有的防火墙规则
Enable-NetFirewallRule -DisplayName "RuleToEnable"# 删除不再需要的防火墙规则
Remove-NetFirewallRule -Name "RuleToDelete"# 监控防火墙日志
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 80 }# 设置防火墙高级安全选项
Set-NetFirewallProfile -Profile Domain, Public, Private -DefaultInboundAction Block
Set-NetFirewallSetting -EnableFirewall $true -UnicastResponseToMulticast $false
  1. 禁用现有的防火墙规则:

    • 使用 Disable-NetFirewallRule -DisplayName "RuleToDisable" 禁用具有特定显示名称的现有防火墙规则。
  2. 启用现有的防火墙规则:

    • 使用 Enable-NetFirewallRule -DisplayName "RuleToEnable" 启用具有特定显示名称的现有防火墙规则。
  3. 删除不再需要的防火墙规则:

    • 使用 Remove-NetFirewallRule -Name "RuleToDelete" 根据规则名称删除不再需要的防火墙规则。
  4. 监控防火墙日志:

    • 使用 Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 80 } 获取防火墙端口过滤器,并筛选出本地端口为 $Port 的日志条目。
  5. 设置防火墙高级安全选项:

    • 使用 Set-NetFirewallProfile -Profile Domain, Public, Private -DefaultInboundAction Block 设置默认情况下拒绝入站连接的防火墙配置文件选项。
    • 使用 Set-NetFirewallSetting -EnableFirewall $true -UnicastResponseToMulticast $false 启用防火墙并禁用对多播请求的单播响应。

这些操作示例展示了如何使用 PowerShell 管理 Windows 防火墙的基本功能,包括创建、禁用、启用和删除规则,以及配置高级安全选项。这些命令可以根据实际需求进行调整和扩展,以满足特定的网络安全需求和策略。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/739362.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

均方误差、二元交叉熵推导

详情可以看:https://zhuanlan.zhihu.com/p/626054495

MinGW GCC Windows下编译libmodbus

最近项目从MSVC切换到GCC,libmodbus官网没提供MinGW下GCC 如何编译,官网推荐在类UNIX环境下MSYS下编译,个人更偏向直接拿源文件编译。 编译libmodbus版本: libmodbus-3.1.10 GCC编译器版本: 5.3.0 (i686-posix-dwarf-rev0, Built by MinGW-W64 project) CMake版本: 3.29.0 1…

提取时序数据的趋势、季节性以及残差

一天的光滑数据sub = [199.68, 187.16, 173.97, 159.85, 146.92, 135.29, 125.04, 114.86, 105.85, 97.93, 90.6, 84.19, 78.37, 72.85, 68.93, 66.59, 62.19, 58.59, 54.15, 50.26, 47.16, 44.14, 41.62, 38.99, 36.84, 34.9, 33.32, 32.75, 33.1, 32.49, 31.49, 30.13, 28.96…

SpringBoot如何集成和使用开源工作流引擎camunda

使用camunda开源工作流引擎有:通过docker运行、使用springboot集成、部署camunda发行包、基于源代码编译运行等多种方式。其中,通过源代码编译运行的方式最为复杂,文本重点介绍如何在Spring Boot应用程序中如何集成Camunda Platform开源流程平台,这也是项目中最为常见的一种…

camunda开源工作流平台技术架构

Camunda Platform 是一个基于 Java 的BPMN(流程引擎)、DMN(规则引擎)、CMMN(案例管理)的开源框架。主要组件是用 Java 编写的,主要专注于为 Java 开发人员提供在 JVM 上设计、实现和运行业务流程和工作流所需的工具(开源流程引擎、规则引擎等)。尽管如此,我们也希望将流…

C#Nuget包制作、生成与上传

C#Nuget包 Nuget包生成安装Nuget.exe Nuget包既可以手动生成,也可以通过其他工具,如NuGetPackageExplorer等工具生成,这里仅介绍通过手动生成的方式,首先需要安装Nuget.exe,并将其添加到环境变量,下载路径https://dist.nuget.org/win-x86-commandline/latest/nuget.exe生…

栈溢出入门03 ret2syscall ROP NX绕过

通过ROP绕过NX保护,ret2syscall本例题会使用ROP技术来绕过堆栈不可执行保护(NX保护),随着 NX 保护的开启,以往直接向栈或者堆上直接注入代码的方式难以继续发挥效果。攻击者们也提出来相应的方法来绕过保护,目前主要的是 ROP(Return Oriented Programming),其主要思想是…

代码随想录算法训练营第五十六天 | 98.所有可达路径

98.所有可达路径 题目链接 文章讲解邻接矩阵法 邻接矩阵使用二维数组来表示图结构。邻接矩阵是从节点的角度来表示图,有多少节点就申请多大的二维数组 为了节点标号和下标对其,有n个节点的图申请(n + 1) * (n + 1)的空间 vector<vector<int>> graph(n + 1, vecto…

暑假第一周总结

弗洛伊德基本思想弗洛伊德算法作为求最短路径的经典算法,其算法实现相比迪杰斯特拉等算法是非常优雅的,可读性和理解都非常好。 基本思想:弗洛伊德算法定义了两个二维矩阵: 矩阵D记录顶点间的最小路径例如D[0][3]= 10,说明顶点0 到 3 的最短路径为10;矩阵P记录顶点间最小…

zadig 安装和使用

介绍 Zadig 是由 KodeRover 公司基于 Kubernetes 研发的自助式云原生 DevOps 平台,源码 100% 开放。Zadig 提供灵活可扩展的工作流支持、多种发布策略编排以及一键安全审核等特性。该平台还支持定制的企业级 XOps 敏捷效能看板,深度集成多种企业级平台,并通过项目模板化批量…

将jar可执行文件打包为windows安装包体

当我们希望将java编写的可执行文件.jar打包为一个.exe供用户直接使用,我们需要将jre/jdk也打包到exe中,这样用户环境就不需要安装jdk,直接运行我们做好的exe文件。 整个过程分为两步,为了方便演示,这里使用JMonkeyEngine SDK打包一个jme3游戏的方式来解释。 工具 首先下载…

FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt

​《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有比较两种比较新的流媒体协议,分别是SRT和RIST。 其中SRT全称为Secure Reliable Transport,中文叫做安全可靠传输协议。RIST全称…