Qual é a diferença entre FTP ativo e passivo?

312

Alguém pode me dizer qual é a diferença entre FTP ativo e passivo?
Qual é o preferido?

Karthik
fonte

Respostas:

474

Ativo e passivo são os dois modos nos quais o FTP pode ser executado.

Como pano de fundo, o FTP realmente usa dois canais entre cliente e servidor, os canais de comando e dados, que na verdade são conexões TCP separadas .

O canal de comando é para comandos e respostas, enquanto o canal de dados é para transferir arquivos.

Essa separação de informações e dados de comando em canais separados é uma maneira bacana de poder enviar comandos para o servidor sem ter que esperar a transferência de dados atual terminar. De acordo com o RFC, isso é obrigatório apenas para um subconjunto de comandos, como sair, interromper a transferência atual e obter o status.


No modo ativo , o cliente estabelece o canal de comando, mas o servidor é responsável por estabelecer o canal de dados. Na verdade, isso pode ser um problema se, por exemplo, a máquina cliente estiver protegida por firewalls e não permitir solicitações de sessão não autorizadas de terceiros.

No modo passivo , o cliente estabelece os dois canais. Já sabemos que ele estabelece o canal de comando no modo ativo e faz o mesmo aqui.

No entanto, ele solicita que o servidor (no canal de comando) comece a escutar em uma porta (a critério do servidor) em vez de tentar estabelecer uma conexão de volta ao cliente.

Como parte disso, o servidor também retorna ao cliente o número da porta que ele selecionou para escutar, para que o cliente saiba como se conectar a ele.

Depois que o cliente souber disso, ele poderá criar com sucesso o canal de dados e continuar.

Mais detalhes estão disponíveis no RFC: https://www.ietf.org/rfc/rfc959.txt

paxdiablo
fonte
1
Eu não acho que a instrução em torno da porta Y esteja correta, no modo ativo o cliente não determina a porta Y, o servidor tenta escolher aleatoriamente uma porta # e tenta ver se o cliente permitiria a comunicação através da porta escolhida . A razão pela qual digo isso é que, se isso não for verdade (meu argumento), o lado do cliente, mesmo que esteja atrás de um firewall, sempre poderá criar duas regras de barreira contra incêndio: uma para a conexão de saída e outra para a conexão de entrada.
Arun.raj.mony
1
@arun, o cliente não está necessariamente no controle do firewall. Exemplo: em ambientes corporativos, normalmente há um firewall entre a rede da empresa e o mundo exterior, sobre o qual um cliente executando FTP não tem energia.
paxdiablo
No modo passivo, por que o servidor envia ao cliente uma porta aleatória para o cliente, em vez disso, o cliente se conecta diretamente à porta 20 do servidor?
Chengbo
@paxdiablo No modo passivo, por que o servidor atribui uma porta aleatória no e a envia ao cliente para conexão de dados? Por que o cliente não pode abrir diretamente um canal de dados da porta do cliente não para a porta 20 no lado do servidor?
Zephyr
1
Fiz a pergunta aqui agora networkengineering.stackexchange.com/q/43680/37406
Zephyr
166

Recentemente, eu me deparei com essa pergunta no meu local de trabalho, então acho que devo dizer algo mais aqui. Usarei a imagem para explicar como o FTP funciona como uma fonte adicional para a resposta anterior.

Modo ativo:

modo ativo


Modo passivo:

insira a descrição da imagem aqui


Em uma configuração do modo ativo, o servidor tentará se conectar a uma porta aleatória do lado do cliente. Portanto, é provável que essa porta não seja uma dessas portas predefinidas. Como resultado, uma tentativa de conexão a ele será bloqueada pelo firewall e nenhuma conexão será estabelecida.

insira a descrição da imagem aqui


Uma configuração passiva não terá esse problema, pois será o cliente que iniciará a conexão. Obviamente, é possível que o servidor também tenha um firewall. No entanto, como é esperado que o servidor receba um número maior de solicitações de conexão em comparação com um cliente, seria lógico que o administrador do servidor se adapte à situação e abra uma seleção de portas para satisfazer as configurações do modo passivo.

Portanto, seria melhor configurar o servidor para suportar o FTP no modo passivo. No entanto, o modo passivo tornaria seu sistema vulnerável a ataques porque os clientes deveriam se conectar a portas aleatórias do servidor. Portanto, para oferecer suporte a esse modo, não apenas o servidor deve ter várias portas disponíveis, mas também o firewall deve permitir conexões com todas essas portas!

Para atenuar os riscos, uma boa solução seria especificar um intervalo de portas no servidor e permitir apenas esse intervalo de portas no firewall.

Para mais informações, leia o documento oficial .

Yuantao
fonte
Estou apenas adivinhando qual é o problema de segurança. Se o servidor escutar a mesma porta (20), ele não entenderá qual cliente está falando, portanto, escolha uma porta aleatória e a envie ao cliente, começando a escutar essa porta. Quando o cliente se conecta a essa porta, o servidor sabe a qual cliente pertence. Mas é suficiente para um MITM se conectar ao mesmo cliente. (bem, ataque mitm aqui é de qualquer maneira complicada ...)
Daniele Cruciani
2
Grande resposta, especialmente informações sobre problema de firewall
Anh Tuan
14

Versão editada do meu artigo Modos de conexão FTP (ativo x passivo) :

O modo de conexão FTP (ativo ou passivo) determina como uma conexão de dados é estabelecida. Nos dois casos, um cliente cria uma conexão de controle TCP com uma porta de comando do servidor FTP 21. Essa é uma conexão de saída padrão, como qualquer outro protocolo de transferência de arquivos (SFTP, SCP, WebDAV) ou qualquer outro aplicativo cliente de TCP (por exemplo, navegador da web). ) Portanto, geralmente não há problemas ao abrir a conexão de controle.

Onde o protocolo FTP é mais complicado, em comparação com outros protocolos de transferência de arquivos, são as transferências de arquivos. Enquanto os outros protocolos usam a mesma conexão para controle de sessão e transferência de arquivos (dados), o protocolo FTP usa uma conexão separada para transferências de arquivos e listagens de diretório.

No modo ativo , o cliente começa a escutar em uma porta aleatória as conexões de dados de entrada do servidor (o cliente envia o comando FTP PORTpara informar ao servidor em qual porta está escutando). Atualmente, é típico que o cliente esteja protegido por um firewall (por exemplo, firewall interno do Windows) ou roteador NAT (por exemplo, modem ADSL), incapaz de aceitar conexões TCP de entrada.

Por esse motivo, o modo passivo foi introduzido e é usado principalmente hoje em dia. É preferível usar o modo passivo , porque a maior parte da configuração complexa é feita apenas uma vez no servidor, por administrador experiente, e não individualmente no cliente, por (possivelmente) usuários inexperientes.

No modo passivo , o cliente usa a conexão de controle para enviar um PASVcomando ao servidor e, em seguida, recebe um endereço IP e um número da porta do servidor, que o cliente usa para abrir uma conexão de dados com o endereço IP e o servidor. número da porta recebido.

Configuração de rede para o modo passivo

Com o modo passivo , a maior parte da carga de configuração está no lado do servidor. O administrador do servidor deve configurar o servidor conforme descrito abaixo.

O firewall e o NAT no lado do servidor FTP devem ser configurados não apenas para permitir / rotear as conexões de entrada na porta FTP 21, mas também um intervalo de portas para as conexões de dados de entrada. Normalmente, o software do servidor FTP tem uma opção de configuração para configurar um intervalo de portas que o servidor utilizará. E o mesmo intervalo deve ser aberto / roteado no firewall / NAT.

Quando o servidor FTP está protegido por um NAT, ele precisa saber seu endereço IP externo, para poder fornecê-lo ao cliente em uma resposta ao PASVcomando.

Configuração de rede para o modo ativo

Com o modo ativo , a maior parte da carga de configuração está no lado do cliente.

O firewall (por exemplo, firewall do Windows) e o NAT (por exemplo, regras de roteamento de modem ADSL) no lado do cliente devem ser configurados para permitir / rotear um intervalo de portas para as conexões de dados recebidas. Para abrir as portas no Windows, vá para Painel de Controle> Sistema e Segurança> Firewall do Windows> Configurações Avançadas> Regras de Entrada> Nova Regra . Para rotear as portas no NAT (se houver), consulte a documentação.

Quando há NAT em sua rede, o cliente FTP precisa saber seu endereço IP externo que o WinSCP precisa fornecer ao servidor FTP usando o PORTcomando Para que o servidor possa se conectar corretamente ao cliente para abrir a conexão de dados. Alguns clientes de FTP são capazes de detectar automaticamente o endereço IP externo, outros precisam ser configurados manualmente.

Firewalls / NATs inteligentes

Alguns firewalls / NATs tentam abrir / fechar automaticamente as portas de dados inspecionando a conexão de controle FTP e / ou convertendo os endereços IP da conexão de dados no tráfego de conexão de controle.

Com esse firewall / NAT, a configuração acima não é necessária para um FTP simples e não criptografado. Mas isso não pode funcionar com o FTPS, pois o tráfego da conexão de controle é criptografado e o firewall / NAT não pode inspecionar nem modificá-lo.

Martin Prikryl
fonte
11

Modo ativo: -server inicia a conexão.

Modo passivo: -client inicia a conexão.

Saeed Aliakbari
fonte
1

Modo ativo - O cliente emite um comando PORT para o servidor, sinalizando que ele "ativamente" fornecerá um número de IP e porta para abrir a conexão de dados de volta ao cliente.

Modo passivo - O cliente emite um comando PASV para indicar que aguardará "passivamente" o servidor fornecer um número de IP e porta, após o qual o cliente criará uma conexão de dados com o servidor.

Há muitas boas respostas acima, mas este post do blog inclui alguns gráficos úteis e fornece uma explicação bastante sólida: https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and -passivo-ftp /

DaveW2122
fonte