Modo de pânico

LinuxBeginner
Pratique Agora

Introdução

Às vezes, as coisas dão errado. Muito errado. Talvez você veja um hacker atacando seu servidor ou um vírus se espalhando rapidamente. Nesse caso, você precisa desconectar o computador da rede imediatamente.

O firewalld oferece um recurso chamado modo de pânico. Quando ativado, o firewall descarta imediatamente todas as conexões de entrada e de saída.

Por isso, o modo de pânico faz parte da resposta a incidentes, não do ajuste rotineiro do sistema. Ele foi projetado para conter rapidamente um incidente quando interromper a comunicação é mais importante do que manter a conectividade.

Este é um recurso de contenção de emergência. Ele não se destina à administração normal, mas é útil entendê-lo porque mostra que uma política de firewall também pode ser usada como uma ferramenta rápida de isolamento durante incidentes.

O problema com servidores remotos:

Se você estiver diante do servidor físico, não haverá problema. Porém, em um ambiente remoto, como esta VM do LabEx ou um servidor na nuvem, ativar o modo de pânico interromperá instantaneamente sua própria conexão. Você ficará sem acesso e não conseguirá desativá-lo!

Neste laboratório, você aprenderá a simular e testar esse recurso com segurança, criando um script do tipo “interruptor de homem morto”. O script ativará o modo de pânico, executará um teste e depois o desativará automaticamente, garantindo que você recupere o acesso.

Criar um script de teste seguro

Como não podemos executar firewall-cmd --panic-on diretamente sem perder nossa sessão, vamos escrever um script para automatizar o processo.

Esta também é uma técnica operacional mais ampla: quando uma alteração de rede pode bloquear seu acesso, automatize a reversão antes de fazer a alteração arriscada. Assim, você reduz a chance de transformar um teste em uma interrupção do serviço.

O script fará o seguinte:

  1. Registrará um ping “Antes” (com sucesso).
  2. Ativará o modo de pânico.
  3. Registrará um ping “Durante” (que deverá falhar).
  4. Desativará o modo de pânico (restaurando o acesso).

Crie um arquivo chamado safe_panic_test.sh:

nano safe_panic_test.sh

Cole o conteúdo a seguir no arquivo:

#!/bin/bash
LOGFILE="panic_test.log"

echo "--- PHASE 1: Normal State ---" > $LOGFILE
ping -c 2 8.8.8.8 >> $LOGFILE 2>&1

echo "" >> $LOGFILE
echo "--- PHASE 2: Enabling PANIC MODE ---" >> $LOGFILE
firewall-cmd --panic-on
echo "Panic Mode is ON." >> $LOGFILE

echo "Attempting to ping 8.8.8.8 (Should fail)..." >> $LOGFILE
## -W 2 means wait max 2 seconds for response
ping -c 2 -W 2 8.8.8.8 >> $LOGFILE 2>&1

echo "" >> $LOGFILE
echo "--- PHASE 3: Disabling PANIC MODE ---" >> $LOGFILE
firewall-cmd --panic-off
echo "Panic Mode is OFF." >> $LOGFILE

echo "Checking connectivity restored..." >> $LOGFILE
ping -c 2 8.8.8.8 >> $LOGFILE 2>&1

Salve e saia (Ctrl+O, Enter, Ctrl+X).

Torne o script executável:

chmod +x safe_panic_test.sh

Executar o teste com segurança

Agora vem a parte crítica. Se você executar o script normalmente, sua sessão poderá ser desconectada no momento em que o modo de pânico for ativado, encerrando o script antes que ele consiga desativá-lo.

Para evitar isso, usaremos nohup (No Hang Up). Ele permite que o script continue sendo executado em segundo plano mesmo que sua sessão de terminal seja encerrada.

Este é um bom exemplo de como separar o tempo de vida de um processo do tempo de vida do terminal. A segurança do experimento depende de o script de recuperação continuar em execução, mesmo que sua sessão interativa não consiga permanecer conectada.

Execute o script com sudo e nohup:

sudo nohup ./safe_panic_test.sh &

O que esperar:

  1. Seu terminal poderá congelar ou deixar de responder por cerca de 5 a 10 segundos. Não atualize a página.
  2. Quando o script concluir a fase 3 (desativação do modo de pânico), sua conexão deverá ser recuperada automaticamente.

Aguarde pelo menos 15 segundos.

Analisar os resultados

Agora que sua conexão voltou, examine o arquivo de log para verificar se o modo de pânico realmente funcionou.

Essa verificação é especialmente importante porque o modo de pânico é projetado para interromper a comunicação. Você precisa confirmar que o isolamento ocorreu durante o teste e que a conectividade normal voltou depois.

Leia o arquivo de log:

cat panic_test.log

Você deverá ver uma sequência semelhante a esta:

  1. PHASE 1: Ping bem-sucedido.
  2. PHASE 2: Modo de pânico ativado. A tentativa de ping deverá mostrar erros como Network is unreachable ou 100% packet loss.
  3. PHASE 3: Modo de pânico desativado. O ping deverá ser bem-sucedido novamente.

Isso confirma que, durante alguns segundos, seu servidor ficou completamente isolado da rede.

Verificar o status

Por fim, confirme manualmente que o sistema voltou ao estado normal e que o modo de pânico está definitivamente desativado.

Verifique o status do modo de pânico:

sudo firewall-cmd --query-panic

O comando deverá retornar no.

Essa técnica de “alternância programada” pode ser essencial para engenheiros de DevOps. Sempre que modificar configurações de rede que possam desconectar você, programe antecipadamente um comando de reversão ou use um script wrapper como este!

A principal lição é a segurança operacional: alterações arriscadas no firewall devem ter um caminho de recuperação planejado com antecedência, e não ser improvisado depois que o acesso for perdido.

Resumo

Neste laboratório, você aprendeu a usar o modo de pânico com segurança em um ambiente remoto. Você:

  1. Criou um script do tipo “interruptor de homem morto” para ativar e desativar automaticamente o modo de pânico.
  2. Usou nohup para garantir que o script continuasse em execução apesar da desconexão da rede.
  3. Analisou os logs para verificar se o isolamento da rede realmente ocorreu.

Essa abordagem mostra como gerenciar configurações de segurança perigosas sem bloquear seu próprio acesso ao servidor.