3

对于分布式生产客户端-服务器 WCF 应用程序(使用 NetTcpBinding 作为 Windows 服务自托管),我正在添加逻辑以在安装期间通过 netsh 命令向 Windows 防火墙添加异常。

我注意到,无论防火墙异常是针对程序(可执行文件)还是端口,远程通信似乎都可以正常工作。在我们的例子中,端口很少是默认的,如果是,那么用户可以相应地手动更改配置文件和防火墙。

我的问题是,为program OR port 或 both添加例外是否更好。是否有任何安全考虑使一种方法比另一种方法更可取?几乎所有 WCF 示例都显示了端口异常。

任何见解将不胜感激,谢谢。

4

1 回答 1

3

以下是我对它们如何运作的总结:

应用程序异常-->授予指定应用程序打开任何端口

端口异常-->授予任何应用程序打开指定端口

因此,哪个更适合取决于情况。通常,应用程序例外将是首选。在应用程序尝试打开端口时,Windows 防火墙(如果启用)基本上会进行检查以确定该应用程序或端口本身是否已被授予例外。

MSDN 声明:“[应用程序异常] 比打开端口更安全,因为防火墙仅在程序等待接收连接时打开。”

更详细的 MSDN 总结和技术文章:http ://technet.microsoft.com/en-us/network/bb545423.aspx

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

于 2009-11-05T15:27:24.723 回答