[Jiwang] Explicação detalhada do protocolo FTP

1. Introdução ao conceito

File Transfer Protocol, protocolo de transferência de arquivos , é um protocolo da camada de aplicação que, baseado na arquitetura cliente/servidor, implementa serviços de compartilhamento de arquivos e utiliza transmissão TCP.

2. Dois modos de trabalho

O FTP suporta os dois modos de funcionamento a seguir:

  1. Modo ativo (POST) : O cliente envia informações da porta ao servidor FTP e o servidor se conecta ativamente à porta.
  2. Modo passivo (PASV) : O servidor FTP abre e envia informações da porta ao cliente. O cliente se conecta à porta e o servidor aceita passivamente a porta.
    Atualmente, a maioria dos servidores FTP usa o modo passivo, mas alguns cenários exigem o modo ativo.

(1) Modo ativo

Insira a descrição da imagem aqui

Fluxo de trabalho no modo ativo

  1. O cliente seleciona aleatoriamente uma porta X e envia uma solicitação à porta 21 do servidor (porta padrão, que pode ser alterada) através de TCP para estabelecer um canal de comando. Uma vez estabelecido o canal de comando, quaisquer instruções de operação subsequentes, como upload e download, serão primeiro transmitidas através do canal de comando. É claro que o processo de estabelecimento de um canal de comando requer o handshake triplo do TCP.

  2. Quando operações como upload e download estão envolvidas, o cliente selecionará aleatoriamente a porta Y novamente, notificará o servidor por meio do canal de comando e solicitará o estabelecimento de um canal de dados. Diferente do canal de comando, que apenas transmite instruções, o canal de dados é utilizado para transmissão real de dados.

  3. Após receber a notificação, o servidor se conecta ativamente à porta Y do cliente através da porta 20 (porta padrão), neste momento, o canal de dados é oficialmente estabelecido e o cliente e o servidor começam a transmitir dados reais.

    Como você pode ver, o protocolo FTP usa dois links, o canal de comando para transmissão de instruções e o canal de dados para transmissão de dados. Deve-se notar que o canal de dados não será estabelecido no início, e só será estabelecido temporariamente quando a transmissão de dados estiver envolvida.

    Agora a questão é: parece que o modo ativo pode funcionar muito bem, por que existe um modo passivo e o modo passivo se tornou popular?
    Insira a descrição da imagem aqui
    A resposta é porque, na verdade, muitas vezes existem firewalls ou roteadores entre o cliente e o servidor. Quando o cliente solicita o estabelecimento de um canal de dados, o servidor se conectará ativamente à porta Y do firewall em vez da porta Y do cliente, e o estabelecimento do canal de dados falhará. Neste momento, parece que o cliente se conectou ao servidor, mas não consegue transmitir dados.

    Para evitar o constrangimento causado pelos firewalls, surgiu o modo passivo.

(2) Modo passivo

Insira a descrição da imagem aqui
Fluxo de trabalho no modo passivo

  1. Assim como no modo ativo, o cliente seleciona aleatoriamente uma porta X, envia uma solicitação para a porta 21 do servidor através de TCP e estabelece um canal de comando.

  2. Quando operações como upload e download estão envolvidas, o cliente notifica o servidor através do canal de comando e solicita o estabelecimento de um canal de dados. Neste momento, o cliente no modo passivo não seleciona aleatoriamente uma porta para notificar o servidor.

  3. Após o servidor receber a notificação para estabelecer o canal de dados, ele selecionará aleatoriamente sua própria porta Z e continuará a informar o cliente através do canal de comando porta Z.

  4. O cliente se conecta ativamente à porta Z do servidor por meio de uma porta Y aleatória própria. Neste momento, o canal de dados está oficialmente estabelecido.

    O modo passivo resolve o problema do cliente se esconder atrás do firewall e não conseguir estabelecer um canal de dados, pois o estabelecimento do canal de dados é iniciado pelo cliente e aceito passivamente pelo servidor. No entanto, quando o servidor está oculto atrás de um firewall, o modo passivo ainda não consegue estabelecer um canal de dados.
    Insira a descrição da imagem aqui
    É claro que existem maneiras de penetrar tanto em firewalls quanto em roteadores, por isso não entrarei em detalhes aqui.

3. Razões para o surgimento do modo passivo

Na história do FTP existia um modo ativo, mas por que o modo passivo apareceu novamente?

Há muito tempo não existia tecnologia para compartilhamento de Internet, posteriormente surgiu a seguinte situação:

Acesso compartilhado à Internet significa que muitos computadores compartilham um IP de rede pública para usar a Internet. Por exemplo, uma determinada rede local compartilha o IP da rede pública 210.33.25.1 para acessar a Internet. Quando um usuário da rede interna 192.168.0.1 acessa o servidor FTP na rede externa, se for utilizado o modo ativo, 192.168.0.1 informa ao servidor FTP que preciso de um determinado arquivo e que abri a porta x. Por ser uma conexão de Internet compartilhada, quando 192.168.0.1 sai do gateway, seu próprio endereço IP é traduzido no endereço IP público 210.33.25.1. Portanto a mensagem recebida pelo servidor é que 210.33.25.1 requer um determinado arquivo e está com a porta x aberta. Então o servidor FTP transferirá os dados para a porta X 210.33.25.1, o que obviamente não terá sucesso porque o endereço que abre a porta X não é 210.33.25.1.

No modo ativo, as duas portas FTP são relativamente fixas. Se a porta de comando for x, a porta de dados será x-1. Por padrão, a porta de comando é 21 e a porta de dados é 20. Naturalmente, ambos os números de porta podem ser modificados. É muito conveniente usar o firewall desta forma, desde que essas duas portas estejam abertas. Mas se o cliente estiver compartilhando a Internet, o FTP normal não poderá ser usado.

Portanto, o modo passivo é definitivamente necessário.

O modo passivo é mais problemático.Por padrão, a porta de comando é 21, mas a porta de dados é aleatória.

4. Três modos de autenticação

  1. Modo de usuário anônimo: qualquer pessoa pode fazer login diretamente no servidor FTP, sem verificação de senha. Este modo não é seguro e geralmente é usado apenas para transferir arquivos públicos sem importância. Não é recomendado para uso em ambientes de produção.
  2. Modo de usuário local: verifique as permissões de login por meio de usuários locais do sistema Linux, que é mais seguro que o modo de usuário anônimo.
  3. Modo de usuário virtual: Ao verificar as permissões de login do usuário virtual, o usuário virtual só pode acessar o serviço FTP fornecido pelo sistema Linux, mas não pode acessar outros recursos do sistema Linux. Este modo é mais seguro do que os outros dois modos. Se você tiver requisitos de segurança mais elevados para os dados do servidor, poderá configurar este modo sozinho, sob a orientação de profissionais relevantes.

Ponto de conhecimento estendido: porta

Uma porta pode ser entendida simplesmente como a saída de comunicação entre um computador e o mundo exterior .

Na tecnologia de rede, porta tem dois significados: um é uma porta física, também conhecida como interface, como modem ADSL, switches e roteadores usados ​​para conectar-se a outros dispositivos de rede, como portas RJ-45 e portas SC. etc. ; a segunda é a porta do software, que geralmente se refere à porta no protocolo TCP/IP. O intervalo de portas é de 0 a 65535, como a porta 80 para navegar em serviços da Web, a porta 21 para serviços FTP, etc.

A função da porta de software: É um símbolo de unificação dos processos de aplicação do sistema TCP/IP e permite que os processos de aplicação de computadores que executam diferentes sistemas operacionais se comuniquem entre si.

O protocolo TCP orientado a serviços de conexão e o protocolo UDP sem serviço usam números de porta de 16 bits (o intervalo de portas é 0 ~ 65535) para representar e distinguir diferentes aplicações na rede. O protocolo da camada de rede IP usa números de protocolo específicos (TCP 6, UDP 17 ) Representar e distinguir protocolos da camada de transporte.

Três categorias principais de portos :

  1. Portas bem conhecidas: de 0 a 1023, estão fortemente vinculadas a alguns serviços. Normalmente a comunicação nessas portas indica o protocolo de um determinado serviço. Por exemplo: A porta 80 real é sempre comunicação HTTP.
  2. Portas Cadastradas: de 1024 a 49151. Eles estão vagamente vinculados a alguns serviços. Isto significa que muitos serviços estão vinculados a essas portas, e essas portas também são usadas para muitos outros fins. Por exemplo: muitos sistemas lidam com portas dinâmicas começando por volta de 1024.
  3. Portas Dinâmicas e/ou Privadas: de 49152 a 65535. Em teoria, estes portos não deveriam ser atribuídos a estes serviços. Na prática, as máquinas geralmente recebem portas dinâmicas começando em 1024. Mas há exceções: a porta RPC da SUN começa em 32768.

5. A diferença entre FTPS e SFTP

Ao usar FTP para transferir arquivos, os usuários precisam obter permissão de transferência de arquivos fornecendo credenciais ao servidor FTP. É claro que alguns servidores FTP públicos podem não exigir credenciais para acessar seus arquivos, mas a segurança da transmissão de dados não pode ser garantida. Qualquer transmissão de dados não criptografados na rede pública é muito perigosa, portanto, para proteger a segurança dos dados transmitidos, os dois protocolos a seguir são derivados do FTP: FTPS e SFTP.

FTPS é dividido em FTPS SSL implícito e FTPS SSL explícito

  • FTPS SSL implícito : Este modo geralmente é executado na porta 990. Neste modo toda troca de dados requer o estabelecimento de uma sessão SSL entre o cliente e o servidor, e o servidor rejeitará qualquer tentativa de conexão que não utilize SSL.

  • FTPS SSL explícito : O servidor sob SSL explícito pode suportar sessões FTP e FTPS. Antes de iniciar uma sessão, o cliente precisa estabelecer uma conexão não criptografada com o servidor FTP e enviar o comando AUTH TLS ou AUTH SSL antes de enviar as credenciais do cliente para solicitar ao servidor que mude o canal de comando para um canal criptografado SSL. estabelecido com sucesso, o usuário As credenciais são enviadas ao servidor FTP, garantindo assim que quaisquer comandos durante a sessão sejam automaticamente criptografados no canal SSL.

    Resumo rápido : Quando o modo implícito está habilitado, a porta FTP padrão é alterada para TCP/990, uma conexão segura é estabelecida automaticamente durante o período de serviço, e o cliente também deve suportar o modo de conexão segura, ou seja, usar SSL para conectar . Quando o modo explícito está ativado, o método de conexão e a porta padrão são os mesmos do FTP, mas a conexão segura precisa ser ativada com um comando do tipo AUTH SSL/TLS antes que os dados possam ser transmitidos normalmente.

SFTP

Protocolo seguro de transferência de arquivos, protocolo seguro de transferência de arquivos.
FTPS adiciona uma camada de SSL ao protocolo FTP. SFTP é um protocolo baseado no protocolo de rede SSH (Secure Shell), que é completamente diferente do FTPS. O SFTP não usa canais de comando e canais de dados separados. Em vez disso, tanto os dados quanto os comandos são transmitidos em pacotes de dados especialmente formatados por meio de uma única conexão.

SFTP fornece dois métodos de verificação de conexões:

  • Tal como acontece com o FTP, apenas o ID do usuário e a senha precisam ser verificados durante a conexão. No entanto, ao contrário do FTP, estas credenciais são criptografadas, o que é a principal vantagem de segurança do SFTP.
  • Além das senhas, é possível autenticar via chaves SSH e conectar via protocolo SFTP.

6. Perguntas frequentes relacionadas ao FTP

  1. Para servidores, abrir serviços e fornecer uploads e downloads de arquivos é inerentemente perigoso. Se você realmente precisar ativar o serviço FTP, configure as permissões do usuário.
  2. O próprio FTP é uma transmissão de texto não criptografado, portanto o protocolo em si não é seguro. Você pode considerar o uso de SFTP que vem com SSH.
  3. Se você encontrar a situação "Você consegue se conectar ao servidor FTP, mas não consegue transferir arquivos", poderá solucionar o problema com base no modo FTP e nas permissões de arquivo do servidor.

Acho que você gosta

Origin blog.csdn.net/muyiyufei/article/details/129288310
Recomendado
Clasificación