Pular para o conteúdo principal

Questão de Segurança da Informação — Ferramentas de Firewall (IPtables, Pfsense, etc.) — FGV 2024

Segurança da InformaçãoFerramentas de Firewall (IPtables, Pfsense, etc.)
Código
fg165613
Banca
FGV
Órgão
STN
Ano
2024
Cargo
AFFC ( )

O iptables é um firewall de filtragem de pacotes amplamente utilizado pelas organizações para se protegerem contra ameaças de segurança na rede.


Por meio do firewall local iptables de um servidor, é possível bloquear serviços de administração, como o SSH, que utiliza a porta 22.


Para impedir que qualquer endereço IP obtenha acesso ao serviço SSH desse servidor, pode ser utilizada a seguinte regra:

  1. Aiptables -A INPUT -p icmp -s 0.0.0.22 -j REJECT
  2. Biptables -D OUTPUT --port ssh -j ACCEPT
  3. Ciptables -A INPUT -i eth0 -s 192.168.0.0/22 -j ACCEPT
  4. Diptables -I INPUT -p tcp --dport 22 -j DROP
  5. Eiptables -X OUTPUT --destination-port 22 -j DROP
Revelar gabarito e comentário

GabaritoD — iptables -I INPUT -p tcp --dport 22 -j DROP

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

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.

Link permanente: /questoes/fg165613