2012-02-24 42 views
1

这是一个架构问题 - 我希望这是一个正确的堆栈交换 - 这似乎没有一个自然的家园... ...WCF wsHttpBinding在数据中心 - 典型的使用模式

我工作的系统分布在数据中心 - DMZ中的Web服务器上,然后在安全区域(通过防火墙)调用Web服务访问数据。目前,这与WSE一起使用asmx服务,在SOAP头中传递用户名和密码凭证。这些通过未加密传递。该观点认为,这提供了一些安全措施(互联网DMZ服务器上的攻击者无法访问从Intranet DMZ服务器访问的服务的凭证)。

我们正在转向使用WCF,但坚持使用Web服务。我们希望使用wsHttpBinding来实现与其他客户端的最佳互操作性以及符合标准。继续使用用户名认证,这似乎要求使用SSL或消息加密,这似乎是很多人在我们自己的数据中心内控制两个端点时加密连接的过度杀手。

我很想知道这是别人做什么和我们有什么替代方案。我考虑过(并在下面排除了几个)

  • SecurityMode = None - 不使用任何凭据。我们的安全人员对此并不满意,因为外部网络服务器上的攻击者可以访问他们喜欢的任何服务
  • 使用BasicHttpBinding - 我认为可以配置为使用TransportCredentialOnly未加密传递用户凭证。然而,有些担心BasicHttpBinding是作为遗留方法,并且与其他技术的互操作性较差。
  • 使用Clear Username Binding - 但是,这是开源的,我的组织因法律原因不想靠近开源地址
  • 接受即使在数据中心内我们也必须转向加密消息
  • 更改为使用不同的身份验证类型,例如Windows凭据 - 担心这对我们当前如何操作这些服务是一个潜在的重大变化,以及我们是否可以从DMZ访问目录服务器。

其他人如何使用WCF数据中心的安全区域内将是极大的任何想法赞赏

+1

我对WCF的安全性并不十分了解,无法回答您的所有问题,但我知道您可以在哪里找到答案!查阅Juval Lowy编程WCF服务的第10章。这是WCF的圣经,第10章涵盖了您想了解的有关WCF安全的所有内容。 – 2012-02-24 15:40:26

+0

感谢您的评论。有趣的是,我已经有这本书了。 IIRC内联网场景假设一个“平坦”网络,客户端和服务器都在一个网络上,没有防火墙/网络分区等。因此,建议使用netTCP等绑定,而不是我继承的防火墙友好的Web服务方法。我将在周一重新阅读(在我的书桌抽屉里工作!) – Durathor 2012-02-24 16:16:29

回答

3

使用basicHttpBinding的 - 我认为这是可以被配置为通过用户使用TransportCredentialOnly 证书加密。然而, 有些担忧basicHttpBinding的目的是作为一个传统 方法,并与其他技术

基本HTTP认证是少互通互操作性最强的内置的身份验证机制,你可以使用,无论它发送密码以纯文本。如果您在IIS中托管服务并且不想使用Windows帐户进行身份验证,则使用情况也会有一些小的复杂性。

SecurityMode = None - 不使用任何凭证。我们的安全人员 不满意以此为外部网络的服务器上,攻击者可以 的任何服务增益访问他们喜欢在企业环境中

保护服务是必须的。

更改为使用不同的身份验证类型,例如, Windows 凭证 - 担心这对于我们当前运行这些服务的方式以及我们是否有权访问DMZ中的 目录服务器可能会有很大改变。

一旦开始使用Windows凭据,您将不得不为两个网络使用相同或受信任的域。

这种情况下更好的选择是证书(CertificateOverTransport自定义安全模式)。 WCF中基本身份验证和UserNameToken身份验证的问题是用户名和密码以纯文本形式传输。这也是WCF默认情况下(以及.NET 4之前)通过HTTPS或通过消息安全性要求加密的原因。任何攻击者(包括更危险的内部攻击者)都可以在DMZ或内部网络中嗅探通信,并获取访问您的服务所需的所有证书。

一旦你开始使用证书,证书本身和私钥将被安全地存储在DMZ服务器上 - 你甚至可以使证书不可导出。一旦DMZ应用程序调用您的内部服务,它会将有关使用的证书的信息添加到SOAP标头中并签署消息的时间戳。任何人都可以验证签名(并证明主叫方的身份),但只有私钥持有者才能创建一个=即使攻击者能够访问网络通信,他也无法窃取身份。还有其他与证书有关的安全机制。

UserNameToken(与您在WSE中使用的一样)支持加密密码,但WCF没有实现此功能。

要避免请求加密UserNameOverTransportCertificateOverTransport您必须use custom binding(仅适用于.NET 4 - 以前的版本需要来自MS的一些KB)。

+0

感谢您的详细解答 - 我还没有完全处理所有的信息,但最初的问题是“保护服务的安全企业环境是必须的“和”任何攻击者(包括更危险的内部攻击者)都可以在DMZ或内部网络中嗅探通信,并获得访问您服务所需的所有证书“。这看起来非常明智,但我一直对数据中心内的加密看起来很有趣。如果这个(数据中心内的加密)是正常的做法还是有点不寻常的想法? – Durathor 2012-02-28 20:30:49

+0

当您将未加密邮件中的凭据作为纯文本发送时,将目标锁定为这种情况。在这种情况下,攻击者可以简单地获取并调用您的服务。我不确定在数据中心内加密邮件的常见情况,但在银行内部甚至在内部网络中绝对常见。 – 2012-02-28 21:35:26