Windows-7

如何通過腳本或自動化關閉 Windows 7 防火牆?

  • September 23, 2015

這是關於在將機器加入域之前在機器上工作的問題,雖然我很想依賴 GPO,但目前這不是一個選擇。

在我工作的環境中,防火牆策略是使用來自 Total Endpoint Solution 的第 3 方防火牆應用程序,因此我必須禁用預設的 Windows 防火牆以防止衝突。我使用在想像過程結束時執行的腳本或在未重新映像的系統上手動執行的腳本來執行此操作。有一段時間,我能夠使用以下方法來管理它:

netsh advfirewall set allprofiles state off

但是,由於某種原因,它停止了工作。所以,我發現我需要清除本地安全策略(手動):

Local Security Policy MSC > Windows Firewall with Advanced Security
Right-Click Windows Firewall with Advanced Security - Local Group Policy Object
Clear Policy

這是我用來避免手動執行的腳本:

secedit /configure /db reset /cfg securityprofile

這兩個步驟的組合工作了大約一個月,然後,沒有明顯的原因,它停止工作。

我開始測試系統資料庫黑客來實現我所需要的,它給了我好壞參半的結果。我有兩組需要更改配置文件的密鑰;對於本地配置文件:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\PrivateProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\PublicProfile]
"EnableFirewall"=dword:00000000

對於域配置文件:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\DomainProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile]
"EnableFirewall"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile]
"EnableFirewall"=dword:00000000

我遇到的問題是本地配置文件在防火牆打開的情況下不斷重新生成原始設置。我試過了:

  • a)應用兩個系統資料庫黑客
  • b) 重啟
  • 結果在新成像的機器上)沒有運氣
  • 用於測試的舊機器上的結果)很好
  • a) 應用本地策略系統資料庫黑客
  • b) 重啟
  • 結果在新成像的機器上)沒有運氣
  • 用於測試的舊機器上的結果)很好
  • a) 使用 secedit 清除本地安全策略
  • b)應用兩個系統資料庫黑客
  • c) 重啟
  • 結果在新成像的機器上)沒有運氣
  • 用於測試的舊機器上的結果)很好
  • a) 使用 secedit 清除本地安全策略
  • b)應用本地策略系統資料庫黑客
  • c) 重啟
  • 結果在新成像的機器上)沒有運氣
  • 用於測試的舊機器上的結果)很好

我的目標是通過腳本/自動化禁用 Windows 防火牆。有什麼想法嗎?

注意:這是在將機器加入域之前。如果我從 MSC 手動清除本地安全策略,那麼系統資料庫黑客將起作用。 netsh仍然無法工作,我不想手動清除每台成像機器的策略。

我想先說一下,我強烈敦促任何禁用 Windows 防火牆的人花時間了解它的工作原理以及如何通過 GPO 操作它,而不是直接將其關閉。沒有理由關閉基於主機的防火牆。Microsoft 製作了出色的工具來管理防火牆規則,您應該使用它們。


這篇 TechNet 文章概述了禁用 Windows 防火牆的正確方法。不要像其他人告訴您的那樣關閉服務,這會使您的伺服器進入不受支持的配置,並在各種難以排除故障的情況下導致不穩定。

從 TechNet 文章中,netsh 語法是

netsh advfirewall 設置 配置文件 狀態關閉

其中配置文件的有效值為:AllProfiles、CurrentProfile、DomainProfile、PrivateProfile 或 PublicProfile。

您似乎已經嘗試過這個確切的命令,但它不起作用。您還推送了此命令操作的系統資料庫項。基於它過去可以工作而現在不能工作的事實,並且這些機器在您執行此操作時未加入域,因此只有一個結論:

您的圖像中有一些東西可以覆蓋這一點。故事結局。由於我們沒有您的圖像可供查看,因此我們實際上無法為您提供特定的修復,除了“您做得對,如果它不起作用,則說明您的圖像中的某些內容配置錯誤”

老實說,如果您必須secedit /configure /db reset /cfg securityprofile在圖像上執行所有其他內容,那麼您最好按照您想要的方式製作一個新圖像。

Errr,整理你的 GPO,並在那裡禁用它。或者,至少,在堆棧頂部(最高優先級)創建一個新 GPO 並禁用防火牆。然後回去整理您的其他 GPO。本地安全策略被 GPO 覆蓋,您寫入的系統資料庫的第一個區域專門用於 GPO 處理。

簡短的回答……組策略。長答案…組策略。(對不起!)

引用自:https://serverfault.com/questions/545495