Pesquisa de site

O guia do iniciante para comandos IPTables (Firewall Linux)


Se você já usa computadores há algum tempo, deve estar familiarizado com a palavra “Firewall”. Sabemos que as coisas parecem complexas à primeira vista, mas através deste tutorial vamos explicar a base do IPTable e o uso de comandos básicos para que mesmo se você for um estudante de redes ou quiser se aprofundar mergulhe nas redes, você pode se beneficiar deste guia.

O que é IPTables?

A forma como o Firewall funciona é bastante simples. Ele cria uma barreira entre redes confiáveis e não confiáveis para que seu sistema possa estar protegido contra pacotes maliciosos.

Mas como vamos decidir o que é seguro e o que não é? Por padrão, você tem algum privilégio para configurar regras para seu Firewall, mas para uma vigilância mais detalhada de pacotes recebidos e enviados, IPTables é o que você mais precisa.

IPTables pode ser usado para computação pessoal ou também pode ser aplicado a toda a rede. Usando IPTables, definiremos um conjunto de regras pelas quais podemos monitorar, permitir ou bloquear pacotes de rede de entrada ou saída.

Em vez de focar apenas em toda a parte teórica, discutiremos apenas o que importa no mundo prático. Então, vamos começar entendendo os conceitos básicos do IPTables.

Compreendendo o conceito de IPTables

Ao discutir IPTables, devemos entender 3 termos: Tabelas, Chains e Regras. Como essas são as partes importantes, discutiremos cada uma delas.

Então, vamos começar com Tabelas.

Tabelas em IPTables

Existem 5 tipos de tabelas no IPTables e cada uma tem regras diferentes aplicadas. Então vamos começar com a tabela mais comum “Filer”.

  1. Filter Table – Esta é a tabela padrão e principal ao usar IPTables. Isso significa que sempre que você não mencionar nenhuma tabela específica ao aplicar as regras, elas serão aplicadas à tabela de filtros. Como o próprio nome sugere, a função da tabela Filter é decidir se os pacotes devem ter permissão para chegar ao seu destino ou negar sua solicitação.
  2. NAT (Network Address Translation) – Como o próprio nome sugere, esta tabela permite aos usuários determinar a tradução de endereços de rede. A função desta tabela é determinar se deve-se modificar e como modificar a origem e o destino do endereço do pacote.
  3. Mangle Table – Esta tabela nos permite modificar os cabeçalhos IP dos pacotes. Por exemplo, você pode ajustar o TTL para aumentar ou diminuir os saltos de rede que o pacote pode sustentar. Da mesma forma, outros cabeçalhos IP também podem ser modificados de acordo com sua preferência.
  4. Tabela RAW – O principal uso desta tabela é rastrear conexões, pois fornece um mecanismo para marcar pacotes para visualizá-los como parte de uma sessão em andamento.
  5. Tabela de Segurança – Usando a tabela de Segurança, os usuários podem aplicar marcas de contexto de segurança internas do SELinux em pacotes de rede.

Para a maioria dos casos de uso, os 2 últimos tipos (RAW e Segurança) da tabela não têm muito o que fazer e apenas as 3 primeiras opções são contadas como tabelas principais .

Agora vamos falar sobre Cadeias.

Cadeias em IPTables

Eles se comportam em pontos da rota da rede onde podemos aplicar regras. No IPTables, temos 5 tipos de cadeias e discutiremos cada uma delas. Lembre-se de que nem todos os tipos de corrente estão disponíveis para cada tipo de mesa.

  1. Pré-roteamento – Esta cadeia é aplicada a qualquer pacote recebido assim que ele entra na pilha da rede e esta cadeia é processada antes mesmo de qualquer decisão de roteamento ser tomada em relação ao destino final do pacote.
  2. Cadeia de entrada – É o ponto onde um pacote entra na pilha da rede.
  3. Forward Chain – É o ponto onde o pacote foi encaminhado através do seu sistema.
  4. Cadeia de Saída – A cadeia de saída é aplicada ao pacote quando ele se origina no seu sistema e sai.
  5. Pós-roteamento – Este é o completo oposto da cadeia de pré-roteamento e é aplicado a pacotes encaminhados ou de saída assim que a decisão de roteamento for tomada.

Agora, a única coisa que resta discutir são as regras, e é a mais fácil das 3 que discutimos aqui. Então vamos completar o que resta da parte teórica.

Regras em IPTables

Regras nada mais são do que comandos definidos ou individuais pelos quais os usuários manipulam o tráfego de rede. Assim que cada cadeia entrar em ação, o pacote será verificado em relação às regras definidas.

Se uma regra não satisfizer a condição, ela será ignorada para a próxima e se satisfizer a condição, a próxima regra será especificada pelo valor do alvo.

Cada regra tem dois componentes: o componente de correspondência e o componente de destino.

  1. Componente de correspondência – São condições diferentes para definir regras que podem ser correspondidas por protocolo, endereço IP, endereço de porta, interfaces e cabeçalhos.
  2. Componente alvo – Esta é uma ação que será acionada assim que as condições forem satisfeitas.

Esta foi a parte explicativa e agora iremos abordar comandos básicos relacionados ao IPTables no Linux.

Instalando o Firewall IPTables no Linux

Nas distribuições Linux modernas, como Pop!_OS, IPTables vem pré-instalado, mas se o seu sistema não tiver o pacote IPTables, você pode instalá-lo facilmente seguindo as instruções fornecidas:

Para instalar IPTables em distribuições Linux baseadas em RHEL, como Rocky Linux, AlmaLinux e CentOS Stream, use o seguinte comando dnf.

sudo dnf install iptables-services

Importante: Se você estiver usando o Firewalld, será necessário desativá-lo antes de prosseguir com a instalação. Para parar o firewall completamente, você terá que utilizar os seguintes comandos:

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld

Para instalar IPTables em distribuições Linux baseadas em Debian, use o seguinte comando apt.

sudo apt install iptables

Depois de instalar o IPTables, você pode ativar o firewall com os comandos fornecidos:

sudo systemctl enable iptables
sudo systemctl start iptables

Para monitorar o estado do serviço IPTable, você pode usar o comando fornecido:

sudo systemctl status iptables

Aprenda o básico do comando IPTables no Linux

Assim que terminarmos a instalação, podemos prosseguir com a sintaxe de IPTables, que permitirá ajustar os padrões e configurar de acordo com suas necessidades.

A sintaxe básica do IPTables é a seguinte:

iptables -t {type of table} -options {chain points} {condition or matching component} {action}

Vamos entender a explicação do comando acima:

Mesa

A primeira parte é -t onde podemos escolher entre quaisquer 5 opções de tabela disponíveis e se você remover a parte -t do comando, ele usará filter< table pois é o tipo de tabela padrão.

Opções de cadeia

A segunda parte é para a cadeia. Aqui você pode escolher entre diferentes opções de pontos de corrente e essas opções são fornecidas abaixo:

  • -A – Adiciona uma nova regra à cadeia no final da cadeia.
  • -C – Verifica se a regra atende aos requisitos da cadeia.
  • -D – Permite aos usuários excluir uma regra existente da cadeia.
  • -F – Isso removerá cada regra definida pelo usuário.
  • -I – Permite aos usuários adicionar uma nova regra na posição especificada.
  • -N – Cria uma cadeia totalmente nova.
  • -v – Quando utilizado com a opção de lista, traz informações detalhadas.
  • -X – Exclui cadeia.

Componente correspondente

As opções de correspondência são a condição para verificar os requisitos da cadeia. Você pode escolher entre várias opções e algumas delas são fornecidas abaixo:

Protocols -p
Source IP -s
Destination IP -d
IN interface -i
OUT interface -o

Para TCP, são os seguintes:

-sport
-dport
--tcp-flags

Componente de ação

Agora, se considerarmos a parte da ação, as opções disponíveis dependem do tipo de tabela como NAT, e a tabela mangle tem mais opções em comparação com outras. Ao usar a ação, você também pode direcionar uma tabela ou cadeia específica.

A ação mais utilizada é Jump (-j) que nos dará diversas opções como:

  • ACCEPT – É usado para aceitar pacotes e finalizar a travessia.
  • DROP – É usado para descartar pacotes e finalizar a travessia.
  • REJECT – É bastante semelhante ao DROP, mas envia pacotes rejeitados para a origem.
  • RETURN – Isso interromperá a passagem do pacote na subcadeia e enviará o pacote específico para a cadeia superior sem nenhum efeito.

Assim que terminarmos a sintaxe, mostraremos como você pode usar IPTables incluindo a configuração básica.

Listando o conjunto atual de regras do IPTables

Se você quiser verificar o que está passando pelo seu Firewall por padrão, listar um conjunto atual de regras é uma maneira perfeita. Para listar as regras aplicadas, use o comando fornecido:

sudo iptables -L

Permitir/negar tráfego de rede em portas específicas

Nesta seção, mostraremos como você pode permitir ou negar o tráfego de rede para portas específicas. Mostraremos algumas portas conhecidas, pois queremos ser o mais úteis possível.
Se você quiser permitir o tráfego de rede HTTPS, teremos que permitir o número da porta 443 utilizando o comando fornecido:

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Da mesma forma, você também pode desativar o tráfego da web HTTP com um determinado comando:

sudo iptables -A INPUT -p tcp --dport 80 -j REJECT

Explicação das opções de comando usadas:

  • -p é usado para verificar o protocolo especificado e no nosso caso é TCP.
  • --dport é usado para especificar a porta de destino.
  • -j é usado para executar ações (aceitar ou descartar).

Controle o tráfego com endereço IP

Sim, você também pode controlar o tráfego de rede a partir de um endereço IP. Não apenas um ou dois, mas também controle o intervalo de endereços IP e mostraremos como.

Para permitir um endereço IP específico, utilize a estrutura de comando fornecida:

sudo iptables -A INPUT -s 69.63.176.13 -j ACCEPT

Da mesma forma, para descartar pacotes de um IP específico, você deve usar a estrutura de comando fornecida:

sudo iptables -A INPUT -s 192.168.0.27 -j DROP

Se desejar, você também pode controlar o intervalo de endereços IP utilizando a estrutura de comando fornecida:

sudo iptables -A INPUT -m range --src-range 192.168.0.1-192.168.0.255 -j REJECT

Excluir regra definida pelo usuário

Às vezes podemos acabar cometendo erros ao criar regras e a melhor maneira de superar esses erros é excluí-los. Excluir regras definidas é o processo mais fácil ao longo deste guia e para excluí-las, primeiro teremos que listá-las.

Para listar regras definidas com números, use o comando fornecido:

sudo iptables -L --line-numbers

Para excluir regras, teremos que seguir a estrutura de comando fornecida:

sudo iptables -D <INPUT/FORWARD/OUTPUT> <Number>

Suponhamos que eu queira excluir a décima regra de INPUT, então usarei o comando fornecido:

sudo iptables -D INPUT 10

Para verificar se removemos a regra com sucesso, temos que listar as regras por determinado comando:

sudo iptables -L –line-numbers

Como você pode ver, removemos com sucesso a 10ª regra.

Salvar regras definidas do IPTables

Você deve estar se perguntando por que temos que salvar regras onde elas funcionam bem após aplicá-las. O problema é que, assim que o sistema for reinicializado, todas as regras definidas que não forem salvas serão excluídas, por isso é crucial para nós fazê-las.

Para salvar regras em distros baseadas em RHEL:

sudo /sbin/service iptables save

Para salvar regras em derivados do Debian:

sudo /sbin/iptables–save

Para saber mais sobre as regras do IPtable Firewall, confira nosso guia detalhado em:

  • 25 regras úteis de firewall IPtable que todo administrador Linux deve saber

Ao longo deste guia, tentamos simplificar as coisas para que todos possam se beneficiar. Este foi um guia explicativo básico sobre IPTables e se você tiver alguma dúvida, fique à vontade para perguntar nos comentários.