2009-10-30 103 views
2

對於分佈式生產客戶端 - 服務器WCF應用程序(自託管爲具有NetTcpBinding的Windows服務),我添加了通過netsh命令在安裝過程中將假定添加到Windows防火牆的邏輯。添加防火牆例外的最佳實踐:程序或端口異常?

我注意到,遠程通信似乎工作正常,無論是防火牆例外程序(可執行文件)或端口。在我們的例子中,端口很少會是默認的東西,如果是的話,用戶可以相應地手動修改配置文件和防火牆。

我的問題是,是否最好爲程序或端口OR或添加例外。是否有任何安全考慮使得一種方法比另一種方法更可取?幾乎所有的WCF示例都顯示了端口異常。

任何有識之士將不勝感激,謝謝。

+1

在我的情況下(特別是對於服務器端,使用HTTP綁定)僅僅爲「程序」添加異常是不夠的,因此不爲端口添加異常不是一種選擇......但事實上, t取消阻止http.sys或任何程序負責爲我的配置啓動後臺通信專門使用的端口,困擾我有點...... :( – 2011-02-28 10:10:32

回答

2

這裏是我的總結如何,我認爲它們的作用:

應用程序異常- >授予指定的應用程序打開任何端口

端口例外- >授予任何應用程序打開指定端口

因此,哪一個更適合取決於具體情況。通常,應用程序例外將是首選。當應用程序嘗試打開端口時,Windows防火牆(如果啓用的話)本質上會執行檢查以確定該應用程序或端口本身是否已被授予例外。

MSDN陳述:「[應用程序異常]比打開端口更安全,因爲防火牆只在程序等待接收連接時打開。」

更詳細的MSDN總結和技術文章:http://technet.microsoft.com/en-us/network/bb545423.aspx

最終,系統管理員對於部署的軟件應該知道的和/或成爲一個誰使更改防火牆。我們計劃做的是在安裝程序中採取措施,客戶可以選擇退出防火牆例外,但解釋說,如果沒有它,遠程客戶端將無法進行通信。當然,如果其他軟件或硬件防火牆已到位並需要手動配置,手動文檔還將概述所需的端口。