需要通过带有delphi应用程序的SSH隧道进行引导

时间:2010-10-26 18:38:38

标签: mysql delphi ssh delphi-2010 indy10

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

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

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

来自DEVART的

[tMyMac] 用于管理MYSQL连接。

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

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

感谢让我从这一点了解你的想法而不改变99%已完成的程序的所有结构:)

谢谢, 乔纳森

2 个答案:

答案 0 :(得分:1)

首先,您需要确定您应该/可以使用的协议。 FTP不是SFTP,而SSH上的FTP也没什么意义(虽然它是可能的)。我们来看看选项:

  1. 使用FTPS(FTP-over-SSL)。要求您的FTP服务器具有SSL证书,否则它是一个vialbe选项。 Con:不保护MySQL连接。
  2. 通过SSH隧道使用FTP。如果他能使用SFTP,不明白为什么会这样做。可以使用Indy和我们的SecureBlackbox产品通过SSH进行FTP。
  3. 使用SFTP(SSH文件传输协议)传输文件并使用SSH端口转发来保护MySQL连接。从技术上讲,可以通过一个已建立的SSH会话运行SFTP子系统和端口转发,我们的SecureBlackbox支持此功能。我不知道DevArt的东西,因为他们的SSH / SFTP客户端很年轻,可能有一定的局限性。
  4. 如果您有一台Linux服务器(MySQL建议您这样做),那么它将OpenSSH作为SSH服务器,而OpenSSH具有内置的SFTP服务器。如果你在Windows上运行MySQL,你将很难在Windows上使用OpenSSH端口,Bitvise SSH服务器将是一个更好的选择(我们自己在我们的内部服务器上使用它)。

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

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

答案 1 :(得分:1)

Indy 10中的TIdFTP DOES 支持加密,包括连接级别(SSL / TLS)和登录凭证级别(SASL)。