iptables: bloqueando o acesso SSH
Gabarito: letra D. Para impedir que qualquer endereço IP acesse o serviço SSH (porta 22) de um servidor, a regra correta é iptables -I INPUT -p tcp --dport 22 -j DROP, que insere na cadeia INPUT uma regra que descarta todos os pacotes TCP destinados à porta 22, independentemente do IP de origem. As demais alternativas ou usam protocolos/portas errados, ou estão em cadeias incorretas, ou simplesmente não bloqueiam o acesso.
O iptables é a interface de configuração do Netfilter, o sistema de filtragem de pacotes embutido no kernel do Linux. Ele organiza as regras em tabelas (filter, nat, mangle) e cadeias (chains). Para o controle de acesso a um serviço local, a cadeia relevante é a INPUT, que processa os pacotes que chegam ao próprio servidor. A tabela padrão é a filter, responsável pela filtragem de pacotes.
A sintaxe básica de uma regra é: iptables [opção] [cadeia] [condições] -j [ação]. As opções mais comuns são -A (append, adiciona ao final da cadeia) e -I (insert, insere no início da cadeia). As condições especificam o protocolo (-p), a porta de destino (--dport), a interface (-i), o endereço de origem (-s), entre outras. A ação (-j) define o que fazer com o pacote: ACCEPT (aceitar), DROP (descartar silenciosamente) ou REJECT (descartar e enviar uma mensagem de erro ao remetente).
Para bloquear o SSH, precisamos descartar os pacotes TCP que chegam ao servidor na porta 22. A regra iptables -I INPUT -p tcp --dport 22 -j DROP faz exatamente isso: insere no início da cadeia INPUT uma regra que casa com qualquer pacote TCP cuja porta de destino seja 22 e o descarta. Como a regra não especifica um endereço de origem, ela se aplica a qualquer IP, atendendo ao requisito do enunciado.
A pegadinha desta questão está em identificar a cadeia correta e o protocolo/porta corretos. O SSH usa o protocolo TCP na porta 22. A cadeia INPUT é a que filtra o tráfego de entrada no servidor. Muitas alternativas erram justamente nesses pontos: usam a cadeia OUTPUT (tráfego de saída), o protocolo ICMP, ou a porta errada.
Guarde a estrutura da regra: cadeia INPUT + protocolo TCP + porta de destino 22 + ação DROP. É exatamente essa combinação que separa a alternativa correta das demais.
Alternativa A — ❌ Incorreta
iptables -A INPUT -p icmp -s 0.0.0.22 -j REJECT
Esta regra usa o protocolo ICMP, que é o protocolo de mensagens de controle (usado pelo ping), e não o TCP. Além disso, o endereço 0.0.0.22 é inválido — a notação correta para um endereço IP é com quatro octetos (ex.: 192.168.1.1), e 0.0.0.22 não representa um IP válido. Mesmo que fosse um IP válido, a regra não bloquearia o SSH, pois o SSH usa TCP, não ICMP.
Alternativa B — ❌ Incorreta
iptables -D OUTPUT --port ssh -j ACCEPT
Esta regra tem três problemas: (1) usa a opção -D (delete), que remove uma regra existente, em vez de adicionar uma nova; (2) está na cadeia OUTPUT, que filtra o tráfego gerado pelo próprio servidor (saída), não o tráfego de entrada; (3) a ação é ACCEPT (aceitar), o que permitiria o acesso, não o bloquearia. Além disso, a sintaxe --port não é a correta; o iptables usa --dport (destination port) ou --sport (source port).
Alternativa C — ❌ Incorreta
iptables -A INPUT -i eth0 -s 192.168.0.0/22 -j ACCEPT
Esta regra aceita (ACCEPT) o tráfego vindo da rede 192.168.0.0/22 na interface eth0. Ela não bloqueia nada — pelo contrário, libera o acesso para uma faixa de IPs específica. Além disso, não menciona a porta 22 nem o protocolo TCP, então não tem relação direta com o SSH.
Alternativa D — ✅ Correta ⟵ GABARITO
iptables -I INPUT -p tcp --dport 22 -j DROP
Esta é a regra correta. Ela insere (-I) na cadeia INPUT uma regra que casa com pacotes do protocolo TCP cuja porta de destino (--dport) seja 22 (SSH) e aplica a ação DROP (descartar). Como não há restrição de endereço de origem (-s), a regra se aplica a qualquer IP, bloqueando completamente o acesso ao SSH.
Alternativa E — ❌ Incorreta
iptables -X OUTPUT --destination-port 22 -j DROP
Esta regra usa a opção -X, que serve para deletar uma cadeia personalizada (user-defined chain), não para adicionar regras. Além disso, está na cadeia OUTPUT (tráfego de saída), e a sintaxe --destination-port não é a correta — o iptables usa --dport. Mesmo que a sintaxe estivesse correta, a cadeia OUTPUT não filtraria o tráfego de entrada que tenta acessar o SSH.
Gabarito: letra D — a única regra que efetivamente bloqueia o acesso SSH de qualquer IP, usando a cadeia INPUT, o protocolo TCP, a porta 22 e a ação DROP.