O interesse crescente por troca de arquivos nos leva a abordar o assunto servidor de FTP.
Atualmente, com todas as restrições que o filesharing está tendo, com processos de gravadoras, distribuidoras e até provedores de internet cancelando o serviço, montar um servidor caseiro de FTP para trocar arquivos com os amigos é quase uma necessidade. A vantagem? É uma conexão não promíscua, e, terá alto grau de confiança, já que apenas peers conhecidos estarão conectados. Mas, primeiro, um pouco de teoria.
FTP(File Transfer Protocol)
File Transfer Protocol (FTP) é um protocolo de rede padrão usado para copiar um arquivo de um host para outro através de uma rede baseada no protocolo TCP / IP, tal como a Internet. FTP é construído sobre uma arquitetura cliente-servidor e utiliza conexões de dados e controle separadas entre o cliente e o servidor. A conexão de controle fica na porta 21 e a conexão de dados na porta 20, ambas no lado do servidor. No lado do cliente as coisas mudam um pouco.
Usuários FTP podem autenticar-se através de username e senha, mas podem logar-se anonimamente também, se o servidor estiver configurado para permitir isso.
FTP Passivo e Ativo
Existem dois modos de FTP: Ativo e Passivo. Segue uma explanação de como eles funcionam
FTP Ativo
No FTP em modo ativo, o cliente se conecta a partir de uma porta não privilegiada aleatória (N> 1023) para a porta de comando do servidor FTP, a porta 21. Então, o cliente começa a escutar a porta N +1 e envia o comando FTP PORT N +1 para o servidor FTP. O servidor irá então se conectar de volta para a porta de dados especificada pelo cliente a partir da porta de dados local, que é a porta 20.
Do ponto de vista do firewall do lado do servidor, para suportar o modo FTP ativo, os seguintes canais de comunicação precisam ser abertas:
- porta 21 do servidor FTP a partir de qualquer lugar (o cliente inicia a conexão)
- A porta 21 do servidor FTP para portas > 1023 (o servidor responde à porta de controle do cliente)
- A porta do servidor FTP 20 a portas> 1023 (Server inicia conexão de dados para a porta de dados do cliente)
- porta do servidor FTP a partir de 20 portas> 1023 (O cliente envia ACKs para a porta do servidor de dados)
FTP Passivo
No modo passivo, o cliente também abre a conexão contatando a porta 21 do servidor, entretanto, ao invés de iniciar a conexão imediatamente, o servidor responde avisando que o cliente pode contatá-lo numa segunda porta, escolhida aleatóriamente (a 2024, por exemplo). O cliente inicia, então, uma nova conexão na porta especificada e o servidor responde
enviando os dados.
Esta porta fica reservada ao cliente durante o tempo que durar a transferência. Em teoria, isto seria um limite ao número de clientes que poderiam se conectar simultaneamente, mas, na prática, seriam necessárias mais de 64.000 conexões simultâneas ao mesmo servidor FTP
para esgotar as portas disponíveis.
Do ponto de vista do firewall do lado do servidor, para suportar o modo passivo FTP seguintes canais de comunicação precisam ser abertos:
- porta 21 do servidor FTP a partir de qualquer lugar (o cliente inicia a conexão)
- A porta 21 do servidor FTP para portas> 1023 (o servidor responde à porta de controle do cliente)
- portas servidor FTP> 1023 a partir de qualquer lugar (o cliente inicia conexão de dados com a porta aleatória especificada pelo servidor)
- portas servidor FTP> 1023 para portas remotas> 1023 (o servidor envia ACKs (e dados) para a porta de dados do cliente)
Dessa forma, no modo passivo, quem determina quais portas serão usadas pelos dados a serem transferidos é o servidor, e não o cliente, como no modo ativo.
Desvantagens do Modo Ativo
O principal problema do modo ativo é que, como a requisição de portas é feita no cliente, torna-se problemático para o firewall/NAT/Router lidar com as requisições do cliente.
No modo passivo, uma vez que é o servidor que determina quais portas vai usar, fica mais fácil de configurar toda a estrutura de firewall/NAT/Router.
Servidor Caseiro de FTP - Considerações
Para implementarmos com sucesso um servidor caseiro de FTP precisamos levar em conta qual será a estrutura que vamos ter.
Nosso servidor vai estar localizado numa máquina, atrás de um modem/router, numa rede local interna e se comunicando com o mundo através desse modem/router.
Como os provedores de internet bloqueiam as portas baixas, < 1024, teremos que configurar um NAT no modem/router para que os computadores externos possam acessar a porta de controle do FTP (21) e as portas de dados.
O modo ativo é bom o bastante para redes locais, principalmente atrás de um firewall/router, pois a utilização de portas aleatórias pelo cliente não vai prejudicar a conexão.
Mas, para conexões através da internet, será necessário usar o modo passivo, muito mais configurável.
E é claro, vamos precisar também de um programa servidor de FTP, para podermos realizar as ações de transferência de arquivos.
Bem, depois dessa breve introdução, da teoria sobre o que é FTP, vamos abordar como montar o servidor e todas as configurações necessárias para seu bom funcionamento.
Continua na parte 2