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
fg165603
Banca
FGV
Órgão
TJ AP
Ano
2024
Cargo
AJ ( )
Walace foi contratado pelo Tribunal de Justiça do Amapá (TJAP) para verificar as configurações no firewall existente. Ele recebeu como reclamação que não se conseguia conectar via SSH nas máquinas que passavam pelo firewall. Outra demanda solicitada foi que o servidor do TJAP não deveria responder a ping, não deixando que ele entre, com o objetivo de evitar o ataque de Flooding.   De forma a atender à demanda solicitada pelo Tribunal, Walace deverá implementar as regras, respectivamente:
  1. A<1> # iptables -A INPUT -p tcp --dport 22 -j ACCEPT <2> #       iptables -A OUTPUT -p icmp --icmp-type echo-request -j       DROP;
  2. B<1> # iptables -A INPUT -p tcp --dport 22 -j ACCEPT <2> #      iptables -A INPUT -p icmp --icmp-type echo-request -j DROP;
  3. C<1> # iptables -I INPUT 1 -i lo -j ACCEPT <2> # iptables -A      INPUT -m mac --mac-source 00:12:A1:24:BB:0C -j ACCEPT;
  4. D<1> # iptables -A INPUT -m state --state NEW -p tcp --dport 80      -j ACCEPT <2> # iptables -A OUTPUT -p tcp --dport 22 -j      ACCEPT;
  5. E<1> # iptables -A INPUT -m state --state NEW -m tcp -p tcp --     dport 5100:5150 -j ACCEPT <2> # iptables -A INPUT -p icmp --     icmp-type echo-request -j DROP.
Revelar gabarito e comentário

GabaritoB — <1> # iptables -A INPUT -p tcp --dport 22 -j ACCEPT <2> #      iptables -A INPUT -p icmp --icmp-type echo-request -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”.

Firewall iptables: liberando SSH e bloqueando ICMP

Gabarito: letra B. Para atender às duas demandas, Walace deve, respectivamente: (1) permitir conexões SSH na porta 22 com iptables -A INPUT -p tcp --dport 22 -j ACCEPT e (2) bloquear o tráfego ICMP de entrada (ping) com iptables -A INPUT -p icmp --icmp-type echo-request -j DROP. A alternativa B é a única que combina corretamente essas duas regras, ambas na cadeia INPUT.

O iptables é a ferramenta padrão de configuração de firewall no Linux, atuando como interface para o NetFilter, o sistema de filtragem de pacotes do kernel. Ele organiza as regras em cadeias (chains) e tabelas (tables). As cadeias principais são: INPUT (pacotes destinados ao próprio host), OUTPUT (pacotes gerados pelo host) e FORWARD (pacotes que atravessam o host em direção a outro destino). A tabela padrão é a filter, responsável pelo controle de acesso e filtragem de pacotes.

Para entender a questão, é essencial distinguir o tráfego de entrada do de saída. O SSH é um serviço que roda no servidor e escuta na porta 22; quando um cliente externo tenta conectar, o pacote chega ao servidor como tráfego de entrada, portanto a regra de liberação deve ser aplicada na cadeia INPUT. Já o ping (ICMP echo-request) é um pacote que o servidor recebe de um host externo; para que o servidor não responda ao ping, é preciso bloquear a chegada desse pacote, ou seja, aplicar a regra na cadeia INPUT também. Se a regra fosse aplicada na cadeia OUTPUT, ela bloquearia apenas os pings que o próprio servidor enviasse, o que não atenderia à demanda de não responder a pings externos.

Na prática, a regra iptables -A INPUT -p icmp --icmp-type echo-request -j DROP faz com que o firewall descarte os pacotes ICMP do tipo echo-request que chegam ao servidor, impedindo que ele responda ao ping. Isso é uma medida comum para evitar ataques de flooding (inundação), como o Ping of Death ou o ICMP flood, que visam sobrecarregar o servidor com uma enxurrada de pacotes ICMP, causando indisponibilidade do serviço.

A pegadinha da banca está em trocar a cadeia correta: na alternativa A, a regra de bloqueio do ICMP é aplicada na cadeia OUTPUT, o que não atende à demanda, pois o servidor continuaria respondendo a pings externos. A alternativa B, por sua vez, aplica a regra na cadeia INPUT, que é a correta. As demais alternativas tratam de outros assuntos (liberação de loopback, MAC address, porta 80, range de portas), não relacionados às demandas de SSH e ICMP.

Guarde a distinção entre INPUT e OUTPUT: é exatamente nela que as alternativas se dividem. A regra de bloqueio de ping deve estar na cadeia INPUT, pois o pacote ICMP echo-request entra no servidor.

  1. 1Liberar SSH (porta 22)
  2. 2Cadeia INPUT (entrada)
  3. 3Bloquear ICMP echo-request
  4. 4Cadeia INPUT (entrada)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A primeira regra está correta (liberar SSH na porta 22 na cadeia INPUT), mas a segunda está errada: iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP bloqueia apenas os pings enviados pelo servidor, não os que ele recebe. Para impedir que o servidor responda a pings externos, a regra deve ser aplicada na cadeia INPUT, pois o pacote ICMP echo-request chega ao servidor como tráfego de entrada.

Alternativa B — ✅ Correta ⟵ GABARITO

A alternativa B apresenta as duas regras corretas: (1) iptables -A INPUT -p tcp --dport 22 -j ACCEPT libera conexões SSH na porta 22, permitindo que clientes externos se conectem ao servidor; (2) iptables -A INPUT -p icmp --icmp-type echo-request -j DROP bloqueia pacotes ICMP echo-request que chegam ao servidor, impedindo que ele responda ao ping. Ambas as regras estão na cadeia INPUT, que é a correta para tráfego de entrada.

Alternativa C — ❌ Incorreta

Esta alternativa trata de regras de loopback (interface lo) e de filtragem por endereço MAC, que não têm relação com as demandas de liberar SSH e bloquear ping. A primeira regra iptables -I INPUT 1 -i lo -j ACCEPT permite todo o tráfego na interface de loopback, e a segunda iptables -A INPUT -m mac --mac-source 00:12:A1:24:BB:0C -j ACCEPT libera pacotes de um endereço MAC específico. Nenhuma delas atende aos requisitos do enunciado.

Alternativa D — ❌ Incorreta

A primeira regra iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT libera novas conexões TCP na porta 80 (HTTP), não na porta 22 (SSH). A segunda regra iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT libera tráfego TCP de saída para a porta 22, o que não é necessário para permitir conexões SSH de entrada e não bloqueia o ping. Portanto, não atende a nenhuma das duas demandas.

Alternativa E — ❌ Incorreta

A primeira regra iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5100:5150 -j ACCEPT libera novas conexões TCP em um range de portas (5100 a 5150), que não corresponde à porta 22 do SSH. A segunda regra iptables -A INPUT -p icmp --icmp-type echo-request -j DROP está correta para bloquear o ping, mas a primeira não atende à demanda de liberar SSH. Portanto, a alternativa está incorreta.

NÃO CAIA NESSA!

A banca explora a confusão entre as cadeias INPUT e OUTPUT. No iptables, INPUT trata de pacotes que entram no host, e OUTPUT trata de pacotes que saem do host. Para bloquear o ping recebido, a regra deve estar em INPUT; se estiver em OUTPUT, o servidor continua respondendo a pings externos. Fique atento a essa troca clássica!

PEGA ESSA DICA!

Para questões de iptables, identifique primeiro se o tráfego é de entrada (INPUT) ou saída (OUTPUT). No caso do SSH, a conexão é de entrada (cliente → servidor), então a regra vai em INPUT. No caso do ping, o servidor recebe o echo-request, então a regra de bloqueio também vai em INPUT. Essa lógica resolve a maioria das questões.

Gabarito: letra B

Link permanente: /questoes/fg165603