如何優(yōu)化Windows防火墻的安全性
自從Windows XP sp2以來,Windows防火墻已經(jīng)默認啟用,但我們?nèi)匀粫吹揭恍┮驗槔狭晳T而在部署時關(guān)閉防火墻的案例。隨著Windows 10和Server 2019,最需要的防火墻策略大多已經(jīng)內(nèi)置,設(shè)置訪問相對容易一些。但有時用戶仍應該加強Windows防火墻的設(shè)置,以更好地保護用戶不受橫向移動和攻擊。
為二進制文件或可執(zhí)行文件構(gòu)建規(guī)則
如果應用程序需要一個特殊的規(guī)則,用戶應該基于二進制文件或可執(zhí)行文件,而不是基于端口進行構(gòu)建。這樣可以確保防火墻只在應用程序處于活動狀態(tài)時打開。如果使用端口構(gòu)建防火墻規(guī)則,則該端口將保持開放狀態(tài)并公開系統(tǒng)。
識別被阻止的應用程序
當應用程序被阻止時,Windows設(shè)備會默認發(fā)出通知。但IT管理員可能希望使用事件日志來識別被阻止的應用程序,而不是使用系統(tǒng)托盤中容易錯過的可視彈出窗口。想要確定Windows防火墻阻止了哪些應用程序,首先要搜索事件5031的事件日志,它表明Windows防火墻阻止了一個應用程序接受網(wǎng)絡(luò)上的連接。使用此事件檢測不存在Windows防火墻規(guī)則的應用程序。
設(shè)置安全監(jiān)控
如果您使用安全事件日志監(jiān)視解決方案來監(jiān)視事件,請記住以下幾點:
- 如果您有一個預定義的應用程序來執(zhí)行此事件報告的操作,則監(jiān)視“Application”不屬于您定義的應用程序的事件。
- 監(jiān)視“Application”是否在標準文件夾中(例如,不在System32或Program Files中)或在受限文件夾中(例如,臨時Internet文件)。
- 如果在應用程序名稱中有一個預定義的受限子字符串或單詞列表(例如,“mimikatz”或“cain.exe”),請在“Application”中檢查這些子字符串。
阻止PowerShell訪問Internet
您可以使用Windows防火墻來阻止應用程序訪問資源。你可以阻止PowerShell訪問互聯(lián)網(wǎng)。下面的第一個規(guī)則允許PowerShell訪問本地子網(wǎng)。第二條規(guī)則是減少交通流量:
- C:\> netsh advfirewall firewall add rule name=“PS-Allow-LAN" dir=out \
- remoteip=localsubnet action=allow program="c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe" \
- enable=yes
- C:\> netsh advfirewall firewall add rule name=“PS-Deny-All" dir=out \
- action=block program="c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe" \
- enable=yes
這樣可以保護您的系統(tǒng)免受利用PowerShell調(diào)用命令和控制計算機啟動勒索軟件和其他攻擊的攻擊。PowerShell不應該被刪除,而應該進行加固和記錄,以確保它按預期使用。
你還可以為多個版本的PowerShell構(gòu)建規(guī)則:
- C:\> for /R %f in (powershell*.exe) do ( netsh advfirewall firewall add rule name=“PS-Allow-LAN (%f)" dir=out remoteip=localsubnet action=allow program=“%f" enable=yes
- netsh advfirewall firewall add rule name=“PS-Deny-All (%f)" dir=out action=block program=“%f" enable=yes )

您將在出站防火墻規(guī)則設(shè)置中看到生成的規(guī)則:

如果PowerShell有意通過另一個位置調(diào)用二進制文件或重命名自身來隱藏自己,那么這個過程將無法進行。
使用PowerShell設(shè)置防火墻規(guī)則
您可以按照Microsoft的說明使用PowerShell設(shè)置防火墻規(guī)則 。例如,要阻止服務(wù)器上的出站端口80,請使用以下PowerShell命令:
- New-NetFirewallRule -DisplayName "Block Outbound Port 80" -Direction Outbound -LocalPort 80 -Protocol TCP -Action Block
你需要填寫的基本屬性是:
- 防火墻規(guī)則的友好名稱
- 方向——是否阻塞離開計算機(出站)或進入計算機(入站)的流量
- 行動——如果滿足規(guī)則,采取什么行動,允許或阻止
您可以使用許多PowerShell模塊來更好地控制和管理Windows防火墻。所有這些都記錄在Netsecurity部分中。
您需要填寫的基本屬性是:
- DisplayName –防火墻規(guī)則的友好名稱
- 方向–阻止流量離開計算機(出站)或進入計算機(入站)
- 行動-如果滿足規(guī)則,采取什么行動,是允許還是進行阻止。
您可以使用許多PowerShell模塊來更好地控制和管理Windows防火墻。所有內(nèi)容都記錄在“ Netsecurity” 部分中。
檢查新的Windows 10安全基準
不要忘記,微軟在Windows 10的每個版本都會發(fā)布新的安全基準。作為基準的一部分,它們包括建議的防火墻策略。

默認情況下,應該為域配置文件和專用配置文件阻止入站連接。
定期審計設(shè)置
最后,在檢查網(wǎng)絡(luò)的安全狀態(tài)時,定期隨機抽取一些工作站,并審計它們的設(shè)置。檢查每個示例工作站上的防火墻策略。