編寫 PowerShell 指令碼來管理 Windows 防火牆可以幫助自動化配置和監控網路安全設定。以下是一個簡單的大綱,涵蓋了管理 Windows 防火牆的主要方面:

suv789發表於2024-07-06

編寫 PowerShell 指令碼來管理 Windows 防火牆可以幫助自動化配置和監控網路安全設定。以下是一個簡單的大綱,涵蓋了管理 Windows 防火牆的主要方面:

1. 匯入模組和設定變數

  • 匯入 NetSecurity 模組以訪問防火牆 cmdlet。
  • 設定需要使用的變數,如規則名稱、埠號等。

2. 查詢和列出現有的防火牆規則

  • 使用 Get-NetFirewallRule 列出所有防火牆規則。
  • 根據需要篩選和顯示特定規則。

3. 建立新的防火牆規則

  • 使用 New-NetFirewallRule 建立新的防火牆規則。
  • 指定規則的名稱、描述、協議、埠、允許/阻止、遠端IP地址等。

4. 禁用或啟用現有的防火牆規則

  • 使用 Disable-NetFirewallRule 禁用現有的防火牆規則。
  • 使用 Enable-NetFirewallRule 啟用現有的防火牆規則。
  • 可以基於規則名稱或其他識別符號來操作規則。

5. 刪除不再需要的防火牆規則

  • 使用 Remove-NetFirewallRule 刪除不再需要的防火牆規則。
  • 可以基於規則名稱或其他識別符號來刪除規則。

6. 監控防火牆日誌

  • 使用 Get-NetFirewallPortFilterGet-NetFirewallAddressFilter 監控防火牆的埠過濾和地址過濾。
  • 根據需要設定過濾器並分析日誌。

7. 設定防火牆高階安全選項

  • 使用 Set-NetFirewallProfileSet-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-NetFirewallRuleEnable-NetFirewallRule 分別禁用和啟用具有特定顯示名稱的現有防火牆規則。
  5. 刪除不再需要的防火牆規則:

    • 使用 Remove-NetFirewallRule 根據規則名稱刪除不再需要的防火牆規則。
  6. 監控防火牆日誌:

    • 使用 Get-NetFirewallPortFilter 獲取防火牆埠過濾器,並透過 Where-Object 篩選出本地埠為 $Port 的日誌。
  7. 設定防火牆高階安全選項:

    • 使用 Set-NetFirewallProfileSet-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 防火牆的基本功能,包括建立、禁用、啟用和刪除規則,以及配置高階安全選項。這些命令可以根據實際需求進行調整和擴充套件,以滿足特定的網路安全需求和策略。

相關文章