Configuração de Firewall no Kali com iptables

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como configurar um firewall no Kali Linux utilizando o iptables, uma ferramenta poderosa para gerenciar regras de filtragem de pacotes IP no kernel do Linux. O objetivo principal é compreender e aplicar regras de firewall para aumentar a segurança da rede, controlando o tráfego com base em endereços IP, portas e protocolos. Por meio de atividades práticas passo a passo, você visualizará as regras atuais do iptables, bloqueará endereços IP específicos, permitirá o tráfego em portas designadas e salvará suas configurações. Trabalhando em um contêiner Kali Linux pré-configurado no ambiente de VM da LabEx, você adquirirá habilidades práticas no gerenciamento de configurações de firewall para proteger o tráfego de rede.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 99%. Ele recebeu uma taxa de avaliação positiva de 100% dos alunos.

Instalando e Visualizando Regras do iptables

Nesta primeira etapa, você instalará o iptables e aprenderá como visualizar as regras de firewall atuais dentro do contêiner Kali Linux. Este é um ponto de partida essencial para entender a configuração de firewall existente antes de realizar qualquer alteração.

Ao abrir o terminal no ambiente de VM da LabEx, você será conectado automaticamente ao shell do contêiner Kali Linux. Não é necessário iniciar o contêiner manualmente ou entrar no shell; o ambiente já está configurado para você. Vamos começar instalando o iptables e explorando o estado atual das regras do firewall.

O iptables é um utilitário de linha de comando que permite gerenciar as regras de filtragem de pacotes IP do kernel Linux. Essas regras determinam como o tráfego de rede é tratado — se deve aceitar, descartar ou redirecionar pacotes com base em critérios específicos, como IP de origem ou números de porta. Visualizar as regras ajuda você a ver quais políticas estão em vigor no momento.

Primeiro, vamos atualizar a lista de pacotes e instalar o iptables. Digite o seguinte comando e pressione Enter:

apt update && apt install -y iptables

Este comando atualizará a lista de pacotes e instalará o iptables em uma única etapa. O operador && garante que a instalação só prossiga se a atualização for bem-sucedida.

Saída Esperada (exemplo, a saída real pode variar):

Get:1 http://mirrors.cloud.aliyuncs.com/kali kali-rolling InRelease [30.9 kB]
...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
iptables is already the newest version (1.x.x-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Agora que o iptables está instalado, execute o seguinte comando para listar as regras atuais. Digite o comando e pressione Enter:

iptables -L -v -n

A explicação deste comando é a seguinte:

  • iptables: A ferramenta para gerenciar regras de firewall.
  • -L: Lista todas as regras nas cadeias selecionadas.
  • -v: Fornece uma saída detalhada (verbose), incluindo contadores de pacotes e bytes.
  • -n: Mostra endereços IP e portas em formato numérico, sem resolução de nomes.

Após executar este comando, você verá uma saída semelhante à mostrada abaixo. A saída exata pode variar dependendo da configuração inicial do contêiner.

Saída Esperada (exemplo, a saída real pode variar):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Esta saída exibe as três cadeias principais: INPUT para tráfego de entrada, FORWARD para tráfego que passa pelo sistema e OUTPUT para tráfego de saída. Cada cadeia mostra sua política padrão (como ACCEPT) e quaisquer regras específicas, caso existam. Se as cadeias aparecerem vazias, como neste exemplo, significa que nenhuma regra personalizada está aplicada no momento e as políticas padrão regem todo o tráfego.

Reserve um momento para revisar a saída. Entender o estado atual do seu firewall é crucial antes de adicionar ou modificar regras, o que você fará nas próximas etapas. Esta etapa fundamental garante que você esteja familiarizado com a configuração inicial do iptables em seu contêiner Kali Linux.

Entendendo as Cadeias e Políticas do iptables

Agora que você tem o iptables instalado e visualizou as regras iniciais, vamos aprofundar seu entendimento sobre como o iptables funciona antes de criar regras personalizadas. Nesta etapa, você aprenderá sobre as diferentes cadeias e suas políticas padrão.

O iptables organiza as regras de firewall em cadeias (chains), que são listas de regras contra as quais os pacotes são verificados. As três principais cadeias integradas são:

  • INPUT: Trata pacotes destinados ao sistema local.
  • FORWARD: Trata pacotes que estão sendo roteados através do sistema.
  • OUTPUT: Trata pacotes originados no sistema local.

Cada cadeia possui uma política padrão que determina o que acontece com os pacotes que não correspondem a nenhuma regra específica. As políticas mais comuns são ACCEPT (permitir o pacote) e DROP (descartar o pacote).

Vamos examinar as configurações de política atuais mais de perto. Execute o seguinte comando para ver informações detalhadas sobre cada cadeia:

iptables -L -v -n --line-numbers

A opção --line-numbers adiciona números de linha a cada regra, facilitando a referência a regras específicas posteriormente.

Saída Esperada (exemplo, a saída real pode variar):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination

Observe que todas as cadeias possuem atualmente uma política de ACCEPT, o que significa que, se nenhuma regra específica corresponder a um pacote, ele será permitido. Os contadores de pacotes e bytes mostram 0 porque nenhum tráfego foi processado ainda neste ambiente de contêiner recém-criado.

Compreender esses fundamentos é crucial antes de adicionar regras personalizadas, pois você precisa saber como os pacotes fluem pelo sistema e qual será o comportamento padrão para o tráfego que não coincidir com as regras.

Bloqueando um Endereço IP Específico

Agora que você tem o iptables instalado, vamos passar para a configuração do seu firewall bloqueando o tráfego de um endereço IP específico. Esta é uma medida de segurança comum para evitar acessos indesejados ou ameaças potenciais de uma origem específica.

Bloquear um endereço IP com o iptables significa criar uma regra para descartar (drop) pacotes vindos daquele endereço. Quando um pacote é descartado, o sistema o ignora, interrompendo efetivamente qualquer comunicação do IP especificado. Para este exercício, você bloqueará o tráfego de um endereço IP hipotético, 192.168.1.100, como um exemplo seguro para praticar dentro do ambiente de contêiner.

Digite o seguinte comando no terminal do contêiner Kali Linux e pressione Enter para adicionar uma regra que bloqueia todo o tráfego de entrada vindo de 192.168.1.100:

iptables -A INPUT -s 192.168.1.100 -j DROP

Vamos detalhar este comando:

  • iptables: A ferramenta para gerenciar regras de firewall.
  • -A INPUT: Adiciona (append) uma regra à cadeia INPUT, que gerencia o tráfego de entrada.
  • -s 192.168.1.100: Especifica o endereço IP de origem (source) para corresponder a esta regra.
  • -j DROP: Define a ação para descartar pacotes do endereço IP especificado.

Não haverá saída imediata após a execução deste comando, o que indica que a regra foi adicionada com sucesso à cadeia INPUT.

Para confirmar que a regra está em vigor, execute o seguinte comando para listar as regras atuais do iptables e pressione Enter:

iptables -L -v -n

Saída Esperada (exemplo, a saída real pode variar):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Esta saída mostra uma regra na cadeia INPUT que descarta todo o tráfego de 192.168.1.100. Os contadores de pacotes (pkts) e bytes (bytes) provavelmente mostrarão 0, a menos que tenha havido tentativa de tráfego vindo deste IP.

Ao concluir esta etapa, você adicionou com sucesso uma regra para bloquear o tráfego de um endereço IP específico. Esta habilidade é vital para restringir o acesso de fontes indesejadas ou maliciosas. Na próxima etapa, você aprenderá como permitir o tráfego em portas específicas para habilitar serviços necessários enquanto mantém a segurança.

Permitindo Tráfego em uma Porta Específica

Após bloquear um endereço IP, a próxima habilidade importante é permitir o tráfego em portas específicas para possibilitar o acesso a serviços necessários. Nesta etapa, você adicionará uma regra para permitir o tráfego de entrada em uma porta designada usando o iptables.

As portas são usadas por serviços de rede para se comunicarem através de uma rede. Por exemplo, servidores web frequentemente usam a porta 80 para tráfego HTTP. Permitir o tráfego em uma porta específica significa criar uma regra para aceitar pacotes de entrada destinados a essa porta, garantindo que o serviço associado esteja acessível. Para este exercício, você permitirá o tráfego na porta 80 como um exemplo prático.

Digite o seguinte comando no terminal do contêiner Kali Linux e pressione Enter para adicionar uma regra que aceita tráfego TCP de entrada na porta 80:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Vamos detalhar este comando:

  • iptables: A ferramenta para gerenciar regras de firewall.
  • -A INPUT: Adiciona uma regra à cadeia INPUT para tráfego de entrada.
  • -p tcp: Especifica o protocolo como TCP, comumente usado para serviços como HTTP.
  • --dport 80: Indica a porta de destino (destination port) como 80, visando o tráfego para esta porta.
  • -j ACCEPT: Define a ação para aceitar pacotes que correspondam a esta regra.

Não haverá saída imediata após a execução deste comando, indicando que a regra foi adicionada com sucesso.

Para verificar se a regra está em vigor, execute o seguinte comando para listar as regras atuais do iptables e pressione Enter:

iptables -L -v -n

Saída Esperada (exemplo, a saída real pode variar):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Esta saída mostra a regra na cadeia INPUT para aceitar tráfego TCP na porta 80, juntamente com a regra anterior para descartar o tráfego de 192.168.1.100. Os contadores provavelmente mostrarão 0, a menos que tenha ocorrido tráfego correspondente a esta regra.

Ao concluir esta etapa, você aprendeu como permitir o tráfego em uma porta específica, o que é essencial para habilitar o acesso a serviços como servidores web, mantendo outras portas seguras. Na próxima etapa, você salvará essas configurações para garantir que possam ser consultadas ou recarregadas posteriormente.

Salvando a Configuração do iptables

Nesta etapa final, você aprenderá como salvar sua configuração do iptables dentro do contêiner Kali Linux. Salvar as regras é importante porque, por padrão, elas são armazenadas na memória e seriam perdidas se o contêiner fosse reiniciado. Esta etapa garante que você possa preservar suas configurações de firewall para referência futura ou recarregamento.

Por padrão, as regras do iptables existem apenas na memória de execução do sistema. Salvá-las em um arquivo permite manter um registro da sua configuração, o que pode ser útil para documentação ou para restaurar as regras posteriormente usando o comando iptables-restore. Para este exercício, você salvará as regras em um arquivo no diretório /root dentro do contêiner.

Digite o seguinte comando no terminal do contêiner Kali Linux e pressione Enter para salvar as regras atuais do iptables em um arquivo chamado iptables-rules no diretório /root:

iptables-save > /root/iptables-rules

Vamos detalhar este comando:

  • iptables-save: Exporta as regras atuais do iptables da memória para a saída padrão.
  • > /root/iptables-rules: Redireciona a saída para um arquivo chamado iptables-rules no diretório /root, sobrescrevendo-o caso já exista.

Não haverá saída imediata após a execução deste comando, indicando que as regras foram salvas com sucesso no arquivo especificado.

Para confirmar que as regras foram salvas corretamente, visualize o conteúdo do arquivo digitando o seguinte comando e pressionando Enter:

cat /root/iptables-rules

Saída Esperada (exemplo, a saída real pode variar):

## Generated by iptables-save v1.x.x on ...
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 192.168.1.100/32 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
## Completed on ...

Esta saída exibe a configuração salva, incluindo as regras para descartar o tráfego de 192.168.1.100 e aceitar o tráfego na porta 80. O formato é compatível com o iptables-restore, que poderia ser usado para recarregar essas regras se necessário.

Ao concluir esta etapa, você salvou com sucesso sua configuração do iptables em um arquivo. Esta prática é essencial para preservar as configurações de firewall em cenários do mundo real, mesmo que o ambiente de contêiner possa não persistir as alterações entre reinicializações. Você concluiu agora as habilidades fundamentais para gerenciar uma configuração básica de firewall com o iptables.

Resumo

Neste laboratório, você aprendeu o essencial sobre a configuração de um firewall no Kali Linux usando o iptables em um ambiente de contêiner. Você começou visualizando as regras atuais do iptables para entender o estado inicial do firewall. Em seguida, atualizou a lista de pacotes e instalou o iptables para preparar seu sistema. Depois disso, adicionou regras para bloquear o tráfego de um endereço IP específico e permitir o tráfego em uma porta designada, aumentando o controle sobre o acesso à rede. Por fim, salvou sua configuração em um arquivo para referência futura. Essas etapas forneceram habilidades fundamentais no gerenciamento da segurança de rede por meio da filtragem de tráfego com o iptables.