Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

04 - Porta Padrão TCP 20 e 21

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione 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

  1. Cliente envia PORT 192,168,1,10,4,1 pela porta 21 (significa IP 192.168.1.10, porta 4*256+1 = 1025).
  2. Servidor abre conexão TCP da sua porta 20 para 192.168.1.10:1025.
  3. Dados fluem pela nova conexão até completar a transferência.
  4. 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

  1. Cliente envia PASV pela porta 21.
  2. Servidor responde 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2), indicando IP e porta.
  3. Cliente abre conexão TCP para o IP:porta anunciado pelo servidor.
  4. Dados fluem até completar a transferência.
  5. 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 comandos PORT/PASV e 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.