17

我有一个客户端-服务器应用程序,它通过 Internet 使用 firebird 服务器 2.5。我遇到了对 FB 数据库进行安全访问的问题,并且首先尝试通过在应用程序中集成隧道解决方案(更准确地说是 STunnel 软件)来解决这个问题。但是,这种方法受到许多方面的影响: - 这在客户端/服务器端都增加了更多的资源消耗(CPU、内存、线程), - 软件部署成为一个严重的问题,因为 STunnel 软件被编写为 WinNT 服务,而不是 Dll 或一个组件(WinNT 服务需要管理员权限才能安装)并且我的客户端应用程序需要在不安装的情况下运行!

所以,我决定抓住公牛的角(或者我们谈论火鸟时的羽毛)。我已经下载了 Firebird 2.5 源代码,并直接在他的低级通信层(INET 套接字层)中注入了安全隧道化代码。现在,火鸟引擎直接对每个 TCP/IP 数据包进行加密/解密。

您如何看待这种方法与外部隧道化?

4

4 回答 4

1

我建议从双方将数据交换包装在 SSL/TLS 流中。这是经过验证的标准。虽然使用静态密钥的自定义实现可能不安全。

例如,具有恒定 IV 的 CTR 模式可以揭示大量信息,因为它只加密递增的向量并与数据进行异或运算,因此对两个加密数据包进行异或将显示未加密数据包的异或版本。

于 2012-12-08T09:49:28.023 回答
0

stunnel 建议是一个很好的建议,但是,如果这不合适,您可以在虚拟机中运行某种真正受信任的 VPN。(试着说几次。)这有点奇怪,但它会像这样工作:

  1. 在 firebird 机器上设置一个 VM,并为该 VM 提供两个接口,一个连接到您的外部 LAN(最好将 LAN 卡绑定到它),另一个是 firebird 的仅主机 LAN。
  2. 将 openvpn 服务器加载到该 VM 并使用客户端和服务器证书
  3. 在您的客户端上运行您的 openvpn 客户端

奇怪,但它确保了以下内容:

  1. 除非客户端和服务器都同意证书,否则您的客户端无法连接到服务器
  2. 您的 firebird 服务仅接受通过此可信 VPN 链接的连接。
  3. 从技术上讲,如果您需要,本地实体仍然可以连接到 VPN 之外的 firebird 服务器——例如,同一本地 LAN 上的开发人员控制台。
于 2013-05-27T01:09:09.783 回答
0

完成任务的最快方法不是改进 firebird,而是改进你的连接。获取两个可以进行 SSL 证书身份验证的防火墙设备,并将其放在您的 DB 服务器和您的 firebird 设备前面。让防火墙设备进行加密/解密,并让您的数据库服务器完成其工作,而无需干预每个数据包。

于 2014-12-17T23:05:53.910 回答
0

总的来说,我对安全关键代码的看法是,“您希望尽可能多地关注有问题的代码,并且您不想自己维护它。” 原因是我们都会犯错误,在协作环境中,这些错误更容易被发现。此外,这些可能会得到更好的测试。

在我看来,这里有一些可以接受的解决方案。所有方法都会增加一些开销,但如果需要,可以在单独的服务器上处理这种开销。可能性包括:

  1. 隧道

  2. IPSec(我的最爱之一)。请注意,使用 IPSec,您可以创建隧道,然后可以将这些隧道转发到其他主机,因此您可以将 VPN 管理移动到 db 主机以外的计算机上。您也可以直接对主机进行 IPSec。

  3. PPTP

  4. tinc之类的跨平台vpn软件。

请注意,在安全方面没有免费的午餐,您需要非常仔细地审查您的要求,并确保您彻底了解您正在使用的解决方案。

于 2013-03-09T00:46:04.230 回答