【问题标题】:Needed to be guided trought SSH Tunnel with a delphi Application需要使用 delphi 应用程序通过 SSH 隧道进行引导
【发布时间】:2010-10-26 18:38:38
【问题描述】:

我创建了一个 Delphi 2010 应用程序。它被该地区的许多公司使用,从受信任的用户到不受信任的用户。应用程序在 MD5 加密密码后面使用 MySQL 对用户进行身份验证。此后,应用程序需要通过 ftp 上传和下载许多文件。

事实是:任何网络嗅探器(例如 Ethereal,也称为 WireShark)都可以从我的应用程序的 ftp 部分获取我的普通用户和密码。也可以获取加密密码,任何人都可以使用任何 ftp 应用程序登录到我的服务器并做出不愉快的事情。

[TindyFTP] 用于管理 FTP 连接本身。这个对象不支持 SFTP,我认为这可能是我问题的结束。

[tMyMac] 来自 DEVART 用于管理 MYSQL 连接。

我现在的意思是: 使用 SSH 隧道将(ftp 和 mysql)事务类型的 IO 处理程序控制到我的应用程序是一种好方法吗?我现在正在使用 DEVART 的SecureBridge 进行一些测试,它与 MyDAC 组件和 TIndy 兼容。

我是否只需要连接到 SSH 隧道 并使用 mysql 和 ftp 进行处理? 使用 SSH 隧道时是否还需要加密 ftp 密码? 对于 MySQL 部分,当我尝试使用 WireShark 拦截密码时,密码似乎被加密或混淆了。

感谢您从那时起让我知道您的想法,而无需更改已完成 99% 的程序的所有结构 :)

谢谢, 乔纳森

【问题讨论】:

  • 使用 plink 等外部应用程序(来自 putty 家族)怎么样?要了解它是如何使用 delphi 完成的,您可以查看 HeidiSQL 源:heidisql.com/download.php

标签: mysql delphi ssh delphi-2010 indy10


【解决方案1】:

首先,您需要确定您应该/可以使用什么协议。 FTP 不是 SFTP,通过 SSH 的 FTP 也没什么意义(尽管有可能)。让我们回顾一下选项:

  1. 使用 FTPS(基于 SSL 的 FTP)。要求您的 FTP 服务器具有 SSL 证书,否则它是一个 vialbe 选项。缺点:不保护 MySQL 连接。
  2. 通过 SSH 隧道使用 FTP。如果他可以使用 SFTP,不明白为什么会这样做。使用 Indy 和我们的 SecureBlackbox 产品可以通过 SSH 进行 FTP。
  3. 使用 SFTP(SSH 文件传输协议)传输文件并使用 SSH 端口转发来保护 MySQL 连接。从技术上讲,可以通过一个已建立的 SSH 会话同时运行 SFTP 子系统和端口转发,我们的 SecureBlackbox 支持这一点。不过,我不了解 DevArt 的东西,因为他们的 SSH/SFTP 客户端还很年轻,可能有一定的局限性。

如果你有一个 linux 服务器(MySQL 建议你这样做),那么它有 OpenSSH 作为 SSH 服务器,而 OpenSSH 有内置的 SFTP 服务器。如果您在 Windows 上运行 MySQL,您将很难在 Windows 上使用 OpenSSH 端口,而 Bitvise SSH 服务器将是更好的选择(我们自己在内部服务器上使用它)。

如果 SFTP 身份验证和加密是在 SSH 级别执行的,您不需要 麻烦进一步保护用于身份验证的密码 - 它已经通过 SSH 保护。不过,您需要关心的是验证服务器向客户端提供的 SSH 密钥。您可以通过在客户端模块中存储服务器密钥的副本来做到这一点(请记住,您可能需要不时替换服务器密钥,因此不要在客户端模块中对其进行硬编码)。

如果您决定使用 FTP-over-SSH 路由(尽管我不明白您为什么需要这个),您仍然不需要保护 FTP 密码,因为您将通过安全 SSH 隧道运行 FTP。

【讨论】:

  • 我的服务器在 Linux 下运行... SSH 已经到位,我有一个帐户可以使用它。我会检查我是否可以简单地使用 SSH 并使用 mysql 和 ftp 来完成我的所有安全性......像 Remy 在另一个答案中所说的 TLS。感谢大家的快速回答或评论。
【解决方案2】:

Indy 10 中的 TIdFTP确实支持连接级别 (SSL/TLS) 和登录凭据级别 (SASL) 的加密。

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 2020-02-09
    • 2014-12-12
    • 2013-05-15
    • 2017-04-16
    • 1970-01-01
    • 2018-04-26
    • 2021-05-24
    • 2015-06-15
    相关资源
    最近更新 更多