Pergunta

Criei uma aplicação Delphi 2010.É usado por muitas empresas na região, desde usuários confiáveis ​​até não confiáveis.O aplicativo autentica usuários com MySQL por meio de senha criptografada MD5.Depois disso, o aplicativo precisa fazer upload e download de vários arquivos via FTP.

O fato é que :qualquer sniffer de rede (como o Ethereal, também conhecido como WireShark) pode obter meu usuário e senha simples da parte FTP do meu aplicativo.A senha criptografada também pode ser obtida e qualquer pessoa pode fazer login com qualquer aplicativo FTP no meu servidor e fazer coisas desagradáveis.

[TindyFTP] é usado para gerenciar a própria conexão FTP.Este objeto não suporta SFTP, o que pensei que poderia ser o fim do meu problema.

[tMeuMac] do DEVART é usado para gerenciar a conexão MYSQL.

Qual é o meu ponto agora:É uma boa maneira de usar o túnel SSH para controlar o manipulador IO de ambos os tipos de transação (ftp e mysql) em meu aplicativo?Estou fazendo alguns testes agora com Ponte Segura da DEVART que é compatível com o componente MyDAC e TIndy.

Eu simplesmente preciso me conectar Túnel SSH e passar por isso com mysql e ftp?Também preciso criptografar a senha do FTP ao usar o SSH Tunnel?Para a parte do MySQL, a senha parece estar criptografada ou ofuscada quando tento interceptá-la com o WireShark.

Obrigado por me contar a sua ideia a partir desse ponto sem alterar toda a estrutura do meu programa que está 99% concluído :)

Obrigado, Jonathan

Foi útil?

Solução

Primeiro você precisa determinar qual protocolo exatamente você deve/pode usar.FTP não é SFTP, e FTP sobre SSH também faz pouco sentido (embora seja possível).Vamos revisar as opções:

  1. use FTPS (FTP sobre SSL).Requer que seu servidor FTP possua certificado SSL, caso contrário é uma opção vialbe.Vigarista:não protege a conexão MySQL.
  2. use FTP sobre túnel SSH.Não vejo por que alguém faria isso se pudesse usar SFTP.FTP sobre SSH é possível com Indy e nosso Caixa Preta Segura produtos.
  3. use SFTP (SSH File Transfer Protocol) para transferir arquivos e use o encaminhamento de porta SSH para proteger a conexão MySQL.Tecnicamente, é possível executar o subsistema SFTP e o encaminhamento de porta por meio de uma sessão SSH estabelecida, e nosso Caixa Preta Segura apoia isso.Eu não sei sobre coisas de DevArt, porque seu cliente SSH/SFTP é bastante jovem e pode ter certas limitações.

Se você possui um servidor Linux (o MySQL sugere que você tenha), ele possui o OpenSSH como um servidor SSH e o OpenSSH possui um servidor SFTP integrado.Se você executa o MySQL no Windows, terá dificuldade em usar portas OpenSSH no Windows, e o servidor Bitvise SSH seria uma opção melhor (nós mesmos o usamos em nosso servidor interno).

No caso de autenticação e criptografia SFTP, são realizadas no nível SSH e você não precisa se preocupar em proteger ainda mais a senha usada para autenticação - ela já está protegida com o SSH.Porém, você precisa se preocupar é verificar a chave SSH, apresentada pelo servidor ao cliente.Você pode fazer isso armazenando uma cópia da chave do servidor no módulo cliente (lembre-se de que pode ser necessário substituir a chave do servidor de tempos em tempos, portanto, não codifique-a no módulo cliente).

Se você decidir usar a rota FTP sobre SSH (embora eu não veja por que você precisa disso), você ainda não precisa proteger a senha do FTP, pois estará executando o FTP em um túnel SSH seguro.

Outras dicas

TIdFTP na Indy 10 FAZ suporta criptografia, tanto no nível de conexão (SSL/TLS) quanto no nível de credencial de login (SASL).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top