04 - Porta Padrão TCP 20 e 21
video: https://youtu.be/... no frontmatter da nota.As Portas Padrão TCP 20 e 21 são os dois pilares técnicos que sustentam o funcionamento do File Transfer Protocol (FTP). Ao contrário de protocolos que centralizam toda a comunicação em uma única porta, a IANA (Internet Assigned Numbers Authority) reservou no início da rede mundial de computadores duas portas TCP distintas para separar o fluxo de instruções administrativas (Controle) do fluxo bruto de bytes (Dados). Esta arquitetura de canal duplo é a marca registrada do FTP e a fonte de muitos dos seus desafios de configuração em redes modernas protegidas por firewalls.
1. Atribuições Oficiais na IANA
A IANA documenta estas portas no registro oficial (Service Name and Transport Protocol Port Number Registry), atualizado pela RFC 6335:
| Porta | Protocolo | Nome IANA | Descrição Oficial |
|---|---|---|---|
| 20 | TCP | ftp-data |
File Transfer Protocol [Default Data] |
| 21 | TCP | ftp |
File Transfer Protocol [Control] |
Ambas são classificadas como System Ports (well-known ports, faixa 0-1023), exigindo privilégios administrativos (root no Linux) para abrir o socket passivo. O servidor FTP vsftpd, proftpd ou pure-ftpd precisa ser iniciado como root para fazer bind() na porta 21, depois derrubar privilégios para um usuário não-privilegiado via setuid().
2. Porta TCP 21: O Canal de Controle (Command Channel)
A porta 21 é a "porta de entrada" obrigatória de qualquer servidor FTP.
Características Técnicas
| Atributo | Valor |
|---|---|
| Conexão | TCP persistente |
| Lifetime | Toda a sessão FTP |
| Codificação | ASCII (comandos legíveis) |
| Terminador | CRLF (\r\n) |
| Direção | Bidirecional (cliente envia comandos, servidor responde com códigos) |
| Estado | Stateful (servidor mantém contexto de login, diretório atual, modo de transferência) |
Comandos Típicos na Porta 21
USER joao # identifica usuario
PASS senha_secreta # autentica
SYST # pede info do sistema operacional do servidor
PWD # mostra diretorio atual
CWD /pub/uploads # muda de diretorio
TYPE I # modo binario
PASV # solicita conexao passiva
LIST # lista arquivos do diretorio atual
RETR arquivo.zip # baixa arquivo
STOR novo.txt # envia arquivo
QUIT # encerra sessao
Códigos de Resposta (RFC 959)
| Faixa | Significado | Exemplo |
|---|---|---|
| 1xx | Resposta preliminar positiva | 150 File status okay |
| 2xx | Resposta de completude positiva | 220 Service ready, 230 User logged in |
| 3xx | Resposta intermediária positiva | 331 User name okay, need password |
| 4xx | Resposta negativa transitória | 421 Service not available |
| 5xx | Resposta negativa permanente | 530 Not logged in, 550 File unavailable |
Vulnerabilidade Histórica
É através da porta 21 que as senhas trafegam em texto claro (vulnerabilidade clássica do FTP). Para mitigar, a RFC 4217 define o comando AUTH TLS para upgrade da porta 21 para TLS, criando o FTPS Implícito (porta 990) ou FTPS Explícito (porta 21 + STARTTLS).
3. Porta TCP 20: O Canal de Dados Ativo (Active Data Channel)
Historicamente, a porta 20 era o canal padrão para a transferência de arquivos.
Características Técnicas
| Atributo | Valor |
|---|---|
| Origem (modo ativo) | Servidor, porta 20 |
| Destino (modo ativo) | Cliente, porta efêmera anunciada via comando PORT |
| Lifetime | Uma transferência (abre, transmite, fecha) |
| Codificação | Binária ou ASCII (conforme TYPE I ou TYPE A) |
| Estado | Stateless (cada transferência é independente) |
Funcionamento do Modo Ativo
- Cliente envia
PORT 192,168,1,10,4,1pela porta 21 (significa IP192.168.1.10, porta4*256+1 = 1025). - Servidor abre conexão TCP da sua porta 20 para
192.168.1.10:1025. - Dados fluem pela nova conexão até completar a transferência.
- A conexão na porta 20 é fechada com
FIN.
O Problema do Firewall
Em redes modernas, o firewall do lado do cliente bloqueia conexões de entrada (Inbound). Quando o servidor tenta conectar da porta 20 para o IP do cliente, a conexão é recusada, resultando no erro clássico onde o usuário consegue logar na porta 21 mas não consegue listar arquivos ou fazer downloads (425 Cannot open data connection).
Cálculo da Porta Anunciada (Formato PORT)
A porta é codificada como dois bytes: p1,p2, onde porta = p1*256 + p2. Exemplo: PORT 192,168,1,10,4,1 → porta 4*256 + 1 = 1025.
4. Portas Efêmeras e o Modo Passivo (PASV)
Para solucionar os bloqueios da porta 20, o FTP utiliza o Modo Passivo, padronizado na RFC 959 e ampliado na RFC 2428 (comando EPSV para IPv6).
Funcionamento do Modo Passivo
- Cliente envia
PASVpela porta 21. - Servidor responde
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2), indicando IP e porta. - Cliente abre conexão TCP para o IP:porta anunciado pelo servidor.
- Dados fluem até completar a transferência.
- Conexão de dados é fechada com
FIN.
Vantagens do Modo Passivo
- Atravessa NAT do cliente (conexão iniciada pelo cliente).
- Funciona com firewalls stateful do cliente (que permitem conexões de saída).
- Padrão de fato em clientes FTP modernos (browsers, FileZilla, WinSCP).
Desafio do Lado do Servidor
- Servidor precisa alocar uma faixa de portas efêmeras (geralmente 49152-65535 ou customizadas como 40000-50000).
- Firewall do servidor precisa abrir essa faixa de portas para entrada.
- Cada transferência consome uma porta temporária.
5. Configuração de Faixas de Portas Passivas por Servidor
| Software | Diretiva | Intervalo Típico |
|---|---|---|
| vsftpd | pasv_min_port / pasv_max_port |
40000-50000 |
| ProFTPD | PassivePorts |
49152-65534 |
| pure-ftpd | -p min:max |
30000-50000 |
| IIS FTP | <dataChannel> no applicationHost.config |
49152-65535 |
Exemplo vsftpd
Em /etc/vsftpd.conf:
- listen=YES, listen_port=21, connect_from_port_20=YES, ftp_data_port=20
- pasv_enable=YES, pasv_min_port=40000, pasv_max_port=50000
- pasv_address=203.0.113.10 (IP público anunciado no PASV), pasv_addr_resolve=NO
6. Perspectiva de Segurança e Monitoramento
Para o analista de segurança da informação, o comportamento das portas 20 e 21 é o mapa de auditoria de rede.
Monitoramento de Diálogo (Porta 21)
Farejar a porta 21 permite capturar toda a estrutura de diretórios e nomes de arquivos que estão sendo acessados, além das credenciais em texto claro. É vital auditar se o tráfego na porta 21 em redes internas está sendo redirecionado para a porta 990 (FTPS) para garantir a privacidade.
Segurança em Portas de Dados Dinâmicas
No modo passivo, abrir um grande intervalo de portas efêmeras no Firewall pode aumentar a superfície de ataque.
- Mitigação: Configurar o servidor FTP para usar um intervalo de portas o mais restrito possível (ex: 50 portas em vez de 16000) e garantir que o Firewall realize inspeção do estado da conexão (Stateful Inspection) para abrir estas portas apenas quando existe uma requisição legítima feita previamente na porta 21.
- FTP ALG (Application Layer Gateway): Firewalls modernos (Cisco ASA, pfSense, iptables com
nf_conntrack_ftp) implementam FTP ALG que inspeciona o tráfego na porta 21, decodifica os comandosPORT/PASVe abre dinamicamente as portas necessárias no firewall, fechando-as ao final da transferência.
7. Auditoria Técnica e Diagnóstico de Portas
# Verificando se o servidor FTP esta escutando o canal de controle
nmap -p 21 ftp.meuservidor.com
nmap -sV -p 21 ftp.meuservidor.com # identifica versao do daemon
# Capturando trafego TCP simultaneo nas duas portas (Portas 20 e 21)
sudo tcpdump -i eth0 -n 'port 21 or port 20' -A
# Testando conexao manual via telnet/nc (porta 21)
nc -C ftp.empresa.com 21
USER joao
PASS senha
PWD
PASV
LIST
QUIT
# Decodificando a resposta do PASV (porta anunciada)
# 227 Entering Passive Mode (203,0,113,10,156,64) -> IP 203.0.113.10, porta 156*256+64 = 40000
# Verificando portas passivas abertas no servidor vsftpd
ss -tn | grep ':21\|:40000' | head
# Testando FTPS explicito (STARTTLS na porta 21)
openssl s_client -connect ftp.empresa.com:21 -starttls ftp
# Testando FTPS implicito (porta 990)
openssl s_client -connect ftp.empresa.com:990
# Auditoria de configuracao do vsftpd
sudo grep -E "pasv_|ftp_data_port|connect_from_port" /etc/vsftpd.conf
# Log de auditoria de conexoes FTP
sudo tail -f /var/log/vsftpd.log
8. Conclusão: A Dança da Conectividade
A correta configuração e o entendimento pleno das Portas TCP 20 e 21 são o que separam um serviço de transferência instável de uma infraestrutura corporativa resiliente. Compreender a separação entre canal de controle (porta 21, persistente, ASCII) e canal de dados (porta 20 no modo ativo ou efêmera no modo passivo, binário, temporário), dominar a mecânica dos handshakes em ambos os canais, entender as limitações do modo ativo frente a firewalls modernos e proteger o intervalo de portas efêmeras no modo passivo através de Stateful Inspection e FTP ALG são competências fundamentais para garantir que a infraestrutura FTP seja rápida, compatível com NAT e firewalls, e segura contra interceptações indevidas de credenciais e dados em trânsito.