Meu entendimento do FTP sobre SSL (ftps) é que ele não funciona bem com firewalls e NAT. Em uma sessão FTP comum, as informações sobre as conexões de dados são lidas e, para o NAT modificado, pelo firewall para que ele abra dinamicamente as portas necessárias. Se essas informações estiverem protegidas por SSL, o firewall não poderá lê-las ou alterá-las.
O uso do SFTP, ou scp, facilita muito o trabalho do administrador da rede - tudo acontece na porta 22 do servidor e a transação segue o modelo normal de cliente / servidor.
Uma coisa não mencionada é se o firewall está executando o NAT ou não e se é NAT estático ou dinâmico. Se a sua máquina cliente tiver um endereço estático ou estiver sendo estaticamente NAT, talvez não seja necessário fazer alterações no firewall, desde que você permita todo o tráfego de saída e o servidor opere apenas no modo Passivo (PASV).
Para saber exatamente quais portas você precisará abrir, você precisará:
a) converse com o fornecedor para obter detalhes sobre como o sistema foi configurado.
b) Use um analisador de protocolo, como tcpdump ou wireshark, para examinar o tráfego, de fora e de dentro do firewall.
Você precisa descobrir qual porta é a conexão de controle. Você lista 3, o que me parece estranho. Supondo que o servidor funcione apenas no modo PASV (passivo), você precisa descobrir como o servidor está configurado para alocar portas DATA. Eles bloquearam o canal DATA em uma única porta de entrada? Eles bloquearam o canal DATA em um pequeno intervalo ou portas?
Com essas respostas, você pode começar a configurar seu firewall.
Acredito que as portas em torno de 990 eram para SSL implícito, que era uma maneira antiga e não padrão de executar FTP / SSL. A maneira "correta" atualmente é SSL explícito, o que significa que você ainda se conecta na porta 21 e depois negocia o SSL antes de enviar seus presentes. Para oferecer suporte a conexões por meio de um firewall, você precisa usar o modo PASV e definir com precisão as portas de dados a serem usadas.
Eu acredito que você precisa de pelo menos uma porta por conexão de dados que deseja oferecer suporte. Se for apenas você, você provavelmente estará bem apenas abrindo algumas portas extras. Especificamente para mim, uso 21000-21010.
No vsftpd.conf, tenho essas duas linhas (junto com todas as outras coisas para dar suporte ao SSL):
No meu firewall, eu tenho um IP estático público com NAT um para um / estático para o IP interno e apenas as portas TCP 21, 21000-21010 abertas.
fonte
Eu sei que este é um tópico extremamente antigo, no entanto ..
Observe que o SFTP é completamente diferente do FTPS. (SSH vs SSL)
O FTPS piora de duas maneiras. Explícito e implícito. Explícito é menos seguro, porque depois que o handshake inicial ignora a criptografia durante a transferência de dados [se a criptografia de dados é mantida é configurável no servidor com o PROT P], enquanto o Implicit também mantém a criptografia dos dados após o handshake. A porta FTPS explícita padrão é 21. A porta implícita padrão é 990 (após o handshake, ela mudará automaticamente para 989 para transmissão de dados, se não for configurada de maneira diferente). Embora a porta 21 seja geralmente aceita como EXPLICIT FTPS e 990 como IMPLICIT FTPS, na realidade, qualquer porta que você configurar, exceto 990/989, levará a EXPLICIT FTPS enquanto APENAS 990/989 será aceito como IMPLICIT FTPS.
Portanto, para responder à sua pergunta: - dependendo da configuração do servidor FTPS, você precisará abrir a porta 21 ou 990/989. No entanto, apenas para ter certeza, você deve entrar em contato com o administrador do servidor FTPS e solicitar instruções. Além disso, lembre-se de que, no modo passivo, como em todos os outros softwares de FTP, você terá que abrir portas adicionais (TCP / UDP), geralmente algo entre 64000 e 65000.
fonte
Basicamente, o ftps é quase inútil, porque você deve fazer solicitações embaraçosas aos administradores do firewall. O conselho para restringir as portas para 10 é bom. Muito mais, torna-se patético.
O sftp é muito melhor em teoria. Mas você precisa de um servidor sftp viável, por exemplo, um servidor que restrinja os clientes ao seu próprio diretório pessoal.
Dependendo do aplicativo, considere HTTPS. Um upload de arquivo é realmente simples e um download obviamente também. Se você estiver criando o FTP de qualquer maneira, provavelmente será mais fácil criar um script para o upload de um arquivo HTTPS.
FTP automatizado é um sinal de um problema de design. Percebi isso ao lidar com um total de cerca de uma dúzia de fornecedores que 'exigiam' um local em que trabalhei para realizar o FTP automatizado (para coisas MUITO importantes) e ao fazer com que dezenas de clientes o fizessem na mesma loja (uma falha de design por aproximadamente 20 usos distintos que testemunhei). Foi fácil convencer a maioria dos caras do aplicativo a usar HTTPS (geralmente, na menção, eles disseram "espere, não há razão para não apenas obtê-los com HTTPS no servidor da web em que já estamos servindo dados?" ), exceto algumas que deram respostas como "bem, já temos esses scripts que parecem funcionar, e ninguém em nossa equipe é muito bom em scripts, portanto não podemos fazer alterações" (uma equipe de 5 a 10 programadores,
fonte
O fornecedor poderá configurar um intervalo de portas estreito para as portas de conexão DATA, se ainda não o tiverem. Em seguida, você pode abrir o mesmo intervalo para os hosts que precisam desse acesso. O modo PASV deve ser usado.
fonte
A porta 22 é padrão, já que o daemon SSH no UNIX possui um módulo SFTP que você pode ativar para criar basicamente um servidor SFTP explícito. Se você deseja executar um servidor FTP implícito com o Filezilla, pode executá-lo em qualquer porta que desejar, mas existe um problema: se você usar o cliente FileZilla, precisará especificar o URL do site ftp como ftps: //mysite.com: 8086 em vez de colocar a porta no campo de porta separada que o cliente FileZilla fornece.
Para a opção explícita, você só precisa de UMA porta: 22. Para a opção implícita, você só precisa ter o firewall aberto para a porta de controle: 8086 (que encaminha internamente para a porta 21 no servidor filezilla).
fonte
se ftps for o mesmo que sftp , você precisará acessar a porta 22 no site do fornecedor.
Na sua extremidade, você deve configurar seu firewall para permitir a saída da porta 22 e o tráfego de entrada relacionado . Isso permitirá a comunicação em qualquer porta de entrada relacionada à conexão de saída inicial na porta 22.
fonte