2009-10-30 35 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

最终,系统管理员对于部署的软件应该知道的和/或成为一个谁使更改防火墙。我们计划做的是在安装程序中采取措施,客户可以选择退出防火墙例外,但解释说,如果没有它,远程客户端将无法进行通信。当然,如果其他软件或硬件防火墙已到位并需要手动配置,手动文档还将概述所需的端口。