客户端服务器套接字安全

5
假设我们有一个服务器S和一些客户端(C),当客户端更新服务器时,服务器上的内部数据库会被更新并复制到其他客户端。这一切都是在局域网环境中使用套接字完成的。我认为攻击者可以相当容易地嗅探到这种明文流量。我的同事们认为我过于多疑,因为我们在防火墙后面。
我是不是过于多疑了?您是否知道任何利用这种情况的漏洞(请提供链接),以及可以采取哪些不同的措施。客户端已经重写为Java,但服务器仍在使用C ++。是否有任何代码可以保护免受攻击?
8个回答

5

在公司的防火墙内部,您相对于外部的直接攻击是比较安全的。然而,一些我不想费力去查证的统计数据表明,大部分企业数据损失都是由内部造成的。其中大部分是意外事件,但员工由于种种原因可能会心怀不满而不被发现;如果您处理的数据很敏感,他们就有可能通过这种方式伤害您的公司。

此外,有大量法律规定如何处理个人身份数据。如果您处理的数据属于这种类型,在公司内部粗心处理也可能会使您的公司面临诉讼。

解决方案是使用SSL连接。您需要使用一个预打包的库来实现。为两端提供私钥/公钥并将私钥保密,设置文件访问权限,这样嗅探问题就基本上得到了解决。


1
这就是我推荐的,使用SSL。 - ritu
只需要一个在您的网络中被感染的计算机,就可以创建攻击向外部进入的向量(无论是否有防火墙),因为一个被感染的计算机可以被设置为用作代理来执行通过常用协议(HTTP)接收请求的特定命令并在本地执行。对于像电子邮件这样的数据(除非您使用默认使用HTTPS的Gmail),您的消息以纯文本形式发送到网络上。使用精心编写的工具可以拦截和直接读取它们。 - Evan Plaice
如果您所在的网络使用交换机而不是集线器,则更难嗅探网络上的所有流量,但仍有绕过它的方法。通过发送欺骗性ARP更新请求,您可以有效地将网络黑客入侵,使其相信所有数据包都需要传递到一个主机(然后由该主机转发到“真正”的网关)。这被称为中间人攻击。幸运的是,存在检测可疑ARP活动的工具,如果有人注意到这样的活动,很容易发现它。 - Evan Plaice

3

你的同事们有点天真。

一个备受关注的攻击发生在信用卡处理器Heartland Payment Systems,人们本应该期望他们对安全非常小心谨慎。假设他们防火墙后面的内部通信是安全的,他们未能使用像SSL这样的东西来确保他们的隐私。黑客能够窃听那些流量,并从系统中提取敏感数据。

这里是另一个故事,更详细地描述了攻击本身:

鲍德温(Baldwin)称其为“相当复杂的攻击”,他说发现攻击的确切方式一直是个挑战。取证小组发现黑客“正在使用嗅探恶意软件抓取数字,因为它经过我们的处理平台”,鲍德温说。“不幸的是,我们有信心持卡人的姓名和卡号都被曝光了。” 数据,包括通过Heartland内部处理平台发送的卡交易,都是未加密的,他解释说:“当交易被处理时,它必须以未加密的形式发送授权请求。”


感谢您提供的链接和时间。 - ritu

3

SSL 提供加密和身份验证功能。Java已经built in了它,而OpenSSL是C/C++中常用的库。


1

你可以采取许多措施来防止中间人攻击。对于大多数内部数据,在防火墙/IDS受保护的网络中,您实际上不需要对其进行安全保护。但是,如果您确实希望保护数据,则可以执行以下操作:

  1. 使用PGP加密来签名和加密消息
  2. 加密敏感消息
  3. 使用哈希函数验证发送的消息未被修改。

确保所有数据安全是一个良好的标准操作程序,但是保护数据具有非常高的成本。对于安全通道,您需要拥有证书颁发机构,并允许所有参与通信的计算机进行额外处理。


1

你有点过度担心了。你在谈论一个理想情况下已经得到保护的内部网络中传输数据的问题。

信息能被嗅探吗?是的,可以。但是这要由已经破解了网络安全并进入防火墙内的人来进行。这可以通过无数种方式实现。

基本上,对于绝大多数企业而言,没有必要加密内部流量。几乎总会有更简单的方式从公司内部获取信息,甚至不需要“嗅探”网络。大多数此类“攻击”都来自那些已经被授权查看数据并且已经拥有凭证的人。

解决方案不是加密所有流量,而是监控和限制访问,以便更容易检测到任何数据泄漏,发现做了什么以及他们所拥有的权限。

最后,请考虑系统管理员和数据库管理员几乎完全拥有整个系统的自由访问权。无论如何,总有人需要获得这种访问权限。将所有内容加密以使其远离窥探的目光显然是不切实际的。

最后,你正在为某些可能只是粘在某人显示器底部的便笺大惊小怪。


1

你的数据库有密码吗?我希望答案是肯定的。没有人会认为在数据库上设置密码保护是过度谨慎的。为什么你不会在同一数据流经过网络时使用至少相同级别的安全性呢?就像一个没有受保护的数据库一样,未受保护的数据流经网络不仅容易被嗅探,而且还容易被恶意攻击者篡改。这就是我会如何构建讨论的方式。

*通过相同级别的安全性,我指的是使用SSL,正如一些人所建议的那样,或者如果必须使用原始套接字,则可以简单地使用众多可用的加密库对数据进行加密。


0

我使用的每个“重要”应用程序几乎都依赖于SSL或其他加密方法。

仅因为您在Intranet上并不意味着您可能没有恶意代码运行在某些服务器或客户端上,这些代码可能会尝试嗅探流量。


0

一个攻击者如果能够访问你网络内的某个设备,从而使他有可能嗅探整个流量或客户端和服务器之间的流量,这是最低要求。

无论如何,如果攻击者已经进入系统内部,嗅探只是你需要考虑的问题之一。

我所知道的很少有公司在其内部网络中使用安全套接字连接客户端和服务器,主要是因为成本较高,性能较低。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接