Необходимо руководствоваться информацией о туннеле SSH с приложением delphi. - PullRequest
1 голос
/ 26 октября 2010

Я создал приложение Delphi 2010. Это использование многими компаниями в регионе от доверенных до недоверенных пользователей. Приложение аутентифицирует пользователей с MySQL за зашифрованным паролем MD5. После этого приложению необходимо загрузить и загрузить много файлов с ftp.

Дело в том, что любой сетевой сниффер (такой как Ethereal, также известный как WireShark) может получить мой простой пользователь и пароль из части моего приложения по ftp. Зашифрованный пароль также можно получить, и любой может войти в систему с любым приложением ftp на мой сервер и делать неприятные вещи.

[TindyFTP] используется для управления самим FTP-соединением. Этот объект не поддерживает SFTP, который, как я полагал, может стать концом моей проблемы.

[tMyMac] из DEVART используется для управления подключением MYSQL.

Что я имею в виду сейчас: Это хороший способ использовать SSH Tunneling для управления обработчиком ввода-вывода обоих типов транзакций (ftp и mysql) в моем приложении? Сейчас я провожу некоторый тест с SecureBridge от DEVART, который совместим с компонентом MyDAC и TIndy.

Мне просто нужно подключиться к SSH Tunnel и попробовать его с помощью mysql и ftp? Нужно ли также шифровать пароль ftp при использовании SSH Tunnel? Для части MySQL пароль кажется зашифрованным или запутанным, когда я пытаюсь перехватить его с помощью WireShark.

Спасибо, дайте мне знать вашу идею с этого момента без изменения всей структуры моей программы, которая завершена на 99%:)

Спасибо, Jonathan

Ответы [ 2 ]

1 голос
/ 27 октября 2010

TIdFTP в Indy 10 DOES поддерживает шифрование как на уровне соединения (SSL / TLS), так и на уровне учетных данных входа в систему (SASL).

1 голос
/ 26 октября 2010

Сначала вам нужно определить, какой именно протокол вы должны / можете использовать. FTP - это не SFTP, и FTP через SSH также не имеет особого смысла (хотя это возможно). Давайте рассмотрим варианты:

  1. использовать FTPS (FTP-over-SSL). Требуется, чтобы ваш FTP-сервер имел сертификат SSL, в противном случае это опция vialbe. Con: не защищает соединение MySQL.
  2. использовать FTP через SSH туннель. Не понимаю, почему это можно сделать, если он может использовать SFTP. FTP через SSH возможен с Indy и нашим продуктом SecureBlackbox .
  3. использовать SFTP (SSH File Transfer Protocol) для передачи файлов и использовать переадресацию SSH-порта для защиты соединения MySQL. Технически возможно запускать как подсистему SFTP, так и переадресацию портов через один установленный сеанс SSH, и наш SecureBlackbox поддерживает это. Я не знаю о вещах DevArt, потому что их клиент SSH / SFTP довольно молод и может иметь определенные ограничения.

Если у вас есть сервер linux (MySQL предлагает вам это сделать), то он имеет OpenSSH в качестве SSH-сервера, а OpenSSH имеет встроенный SFTP-сервер. Если вы запускаете MySQL в Windows, вам будет трудно использовать порты OpenSSH в Windows, и лучшим вариантом будет SSH-сервер Bitvise (мы используем его на нашем внутреннем сервере).

В случае аутентификации SFTP и шифрования выполняется на уровне SSH, и вам не нужно беспокоить дальнейшую защиту пароля, используемого для аутентификации - он уже защищен с помощью SSH. Хотя вам нужно заботиться о проверке ключа SSH, предоставленного сервером клиенту. Вы можете сделать это, сохранив копию ключа сервера в клиентском модуле (помните, что вам может понадобиться время от времени заменять ключ сервера, поэтому не кодируйте его жестко в клиентском модуле).

Если вы решили пойти по FTP-через-SSH (хотя я не понимаю, зачем вам это нужно), вам все равно не нужно защищать пароль FTP, так как вы будете работать по FTP через защищенный туннель SSH.

...