我決定使用白名單方法來保護我的環境(即預設阻止所有入站/出站連接,除非另有說明)。
我需要將一些 Windows 應用程式(不是全部)列入白名單,例如防火牆中的 Powershell、cmd、遠端桌面。然而,僅僅添加 cmd.exe、MSTSC.exe 等並不能解決問題。我確信這些應用程式對其他應用程式的網路連接有一定的依賴性,但我不知道它們是什麼。
例如,僅將 system32 的 openssh 檔案列入白名單,不會授予對 PowerShell 中 ssh 的存取權。我在提升存取權限時遇到“權限被拒絕”錯誤(禁用防火牆修復它,因此應該透過適當的防火牆規則修復它)。
打開端口不是一個選項,因為透過打開端口,我不喜歡的其他應用程式也可以訪問這些端口。例如,我想在cmd上執行curl,但我不希望任何其他應用程式存取連接埠443。
此外,列入黑名單也不是一種選擇,因為我需要阻止的應用程式的絕對數量遠遠超過我需要的這三個應用程式。
答案1
Windows 11:在防火牆中允許System32/svchost.exe,然後一切正常。
PS:這裡是一些關於 svchost 的觀察。
有趣的是,封鎖該檔案後,Windows 會在幾分鐘後失去網路功能。我想知道為什麼,所以我阻止了除此文件之外的所有內容,並且我注意到它向Microsoft 和一些未知IP 發送了大量加密資料包,即使我已經在註冊表中關閉了遙測、Windows 更新等。封鎖 svchost 後,Windows 會重新嘗試傳送這些封包,但幾分鐘失敗後,整個網路連線就會中斷。
這很有趣,因為似乎某些應用程式(例如Firefox)可以在沒有svhost 的情況下運行幾分鐘,因此它們可能不需要svhost(?) 來訪問互聯網(與powershell 不同,它在阻止svhost 後立即失去其功能),但Windows 決定完全關閉網路。這也可能與Windows 防火牆是否完全阻止 Windows 遙測?同樣,因為關於防火牆行為的兩種觀察都是錯誤的。 Windows IP 在防火牆中沒有硬編碼(如果是這種情況,在阻止包括svhost 在內的所有內容後,我們仍然可以看到tls 封包,但事實並非如此。),而且我們也無法透過封鎖來阻止Windows 傳送這些封包一切,因為 svhost 然而應該被列入防火牆的白名單。