Tutorial Iptables Linux: Protegendo seu VPS com o Firewall do Linux

Você está procurando um tutorial completo de iptables para o seu VPS? Este artigo mostrará como instalar e usar o iptables em um sistema Ubuntu. Ao aprender sobre esta ferramenta nativa de firewall do Linux, você pode proteger seu VPS faiclmente usando a interface de linha de comando do sistema operacional. Vamos lá?

Iptables é um programa de firewall para Linux. Ele irá monitorar o tráfego de entrada e saída do seu servidor usando tabelas. Essas tabelas contêm conjuntos de regras, chamadas cadeias (chains), que irão filtrar pacotes de dados de entrada e saída.

Como o Iptables Funciona?

Iptables é um programa de firewall para Linux. Ele irá monitorar o tráfego de e para o seu servidor usando tabelas. Essas tabelas contêm conjuntos de regras, chamados cadeias, que irão filtrar pacotes de dados de entrada e saída.

Quando um pacote corresponde a uma regra, a ele é atribuído um alvo, que pode ser outra cadeia ou um desses valores especiais:

  • ACCEPT – permitirá que o pacote passe.
  • DROP – não permitirá que o pacote passe.
  • RETURN – interrompe o pacote de atravessar uma cadeia e diz para que ele volte à cadeia anterior.

Neste tutorial de iptables, vamos trabalhar com uma das tabelas padrão, chamada filter. Ela consiste em três cadeias:

  • INPUT – controla pacotes que estão sendo recebidos pelo servidor.
  • FORWARD – filtra pacotes recebidos que serão encaminhados para outro lugar.
  • OUTPUT – filtra pacotes que estão saindo do seu servidor.

Antes de começarmos este guia, certifique-se de ter acesso SSH root ou sudo à sua máquina, que deve estar rodando o Ubuntu 16.04 ou superior. Você pode estabelecer a conexão através do PuTTY (Windows) ou terminal shell (Linux, macOS). Se você possui o Servidor VPS da Hostinger, pode obter os detalhes de login SSH na aba Servidores do hPanel.

Importante! As regras do iptables se aplicam apenas ao ipv4. Se você deseja configurar um firewall para o protocolo ipv6, precisará usar o ip6tables em vez disso.

Como Instalar e Usar o Firewall Linux Iptables

Vamos dividir este tutorial de iptables em três etapas. Primeiro, você aprenderá como instalar a ferramenta no Ubuntu. Em segundo lugar, vamos mostrar como definir as regras. Por fim, vamos te orientar a fazer alterações persistentes no iptables.

1. Instale o Iptables

O Iptables vem pré-instalado na maioria das distribuições Linux. No entanto, se você não o tem no sistema Ubuntu/Debian por padrão, siga os passos abaixo:

1. Conecte-se ao seu servidor via SSH. Se você não sabe como fazer isso, pode ler nosso tutorial SSH.

2. Execute os seguintes comandos, um de cada vez:

sudo apt-get update 
sudo apt-get install iptables

3. Verifique o status da sua configuração atual do iptables executando:

sudo iptables -L -v

Aqui, a opção -L é usada para listar todas as regras, e -v serve para mostrar as informações em um formato mais detalhado. Abaixo está o exemplo de saída:

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

Agora você terá o firewall iptables do Linux instalado. Neste ponto, você pode perceber que todas as cadeias estão definidas para ACCEPT e não têm regras. Essa configuração não é segura, pois qualquer pacote pode passar sem filtragem.

Mas não se preocupe! Vamos te orientar sobre como definir regras na próxima etapa do nosso tutorial de iptables.

2. Defina Regras de Cadeia

Definir uma regra significa anexá-la à cadeia. Para fazer isso, você precisa inserir a opção -A (Anexar) logo após o comando iptables, da seguinte forma:

sudo iptables -A

Ele alertará o iptables de que você está adicionando novas regras a uma cadeia. Então, você pode combinar o comando com outras opções, como:

  • -i (interface) — a interface de rede cujo tráfego você deseja filtrar, como eth0, lo, ppp0, etc.
  • -p (protocolo) — o protocolo de rede onde ocorre o seu processo de filtragem. O protocolo em questão pode ser tcp, udp, udplite, icmp, sctp, icmpv6, e assim por diante. Alternativamente, você pode digitar all para escolher todos os protocolos.
  • -s (source) — a fonte (endereço) de onde vem o tráfego. Você pode adicionar um hostname ou endereço IP.
  • –dport (porta de destino) — o número da porta de destino de um protocolo, como 22 (SSH), 443 (https), etc.
  • -j (alvo) — o nome do alvo (ACCEPT, DROP, RETURN). Você precisa incluir essa opção isso toda vez que criar uma nova regra.

Se você quiser usar todas as regras, você deve escrever o comando nesta ordem:

sudo iptables -A <chain> -i <interface> -p <protocol (tcp/udp) > -s <source> --dport <port no.>  -j <target>

Uma vez que você entenda a sintaxe básica dos comandos, pode começar a configurar o firewall para dar mais segurança ao seu servidor. Para este tutorial de iptables, vamos usar a cadeia  INPUT  como exemplo.

Habilitando Tráfego no Localhost

Para permitir tráfego no localhost, digite este comando:

sudo iptables -A INPUT -i lo -j ACCEPT

Para este tutorial de iptables, usamos a interface  lo ou loopback. Ela é utilizada para todas as comunicações no localhost. O comando acima garantirá que as conexões entre um banco de dados e uma aplicação web na mesma máquina estejam funcionando corretamente.

Habilitando Conexões em Portas HTTP, SSH e SSL

Em seguida, queremos que as conexões http (porta 80), https (porta 443) e ssh (porta 22) funcionem como de costume. Para fazer isso, precisamos especificar o protocolo (-p) e a porta correspondente (–dport). Você pode executar esses comandos um por um:

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

É hora de verificar se as regras foram anexadas no iptables:

sudo iptables -L -v
configurando regras no iptables

O comando deverá retornar com os resultados abaixo, o que significa que todas as conexões do protocolo TCP das portas especificadas serão aceitas:

Filtrando Pacotes Com Base na Origem

O Iptables permite que você filtre pacotes com base em um endereço IP ou em uma faixa de endereços IP. Você precisa especificar isso após a opção  -s. Por exemplo, para aceitar pacotes de 192.168.1.3, o comando seria:

sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT

Você também pode rejeitar pacotes de um endereço IP específico substituindo o alvo  ACCEPT por DROP.

sudo iptables -A INPUT -s 192.168.1.3 -j DROP

Se você deseja descartar pacotes de uma série de endereços IP, você precisa usar a opção -m e o módulo iprange. Então, especifique o intervalo de endereço IP com –src-range. Lembre-se, um hífen deve separar o intervalo de endereços IP sem espaços, assim:

sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP

Descartando Todo o Tráfego Não-Autorizado

É crucial usar o alvo DROP para todo o outro tráfego após definir as regras de –dport. Isso impedirá uma conexão não autorizada de acessar o servidor através de outras portas abertas. Para configurar isso, basta digitar:

sudo iptables -A INPUT -j DROP

Agora, a conexão fora da porta especificada será interrompida.

Excluindo Regras

Se você deseja remover todas as regras e começar do zero, pode usar a opção -F (limpar):

sudo iptables -F

Este comando apaga todas as regras atuais. No entanto, para excluir uma regra específica, você deve usar a opção -D. Primeiro, você precisa ver todas as regras disponíveis inserindo o seguinte comando:

sudo iptables -L --line-numbers

Você receberá uma lista de regras com números:

Chain INPUT (policy ACCEPT)

num  target    prot opt source        destination

1    ACCEPT    all -- 192.168.0.4     anywhere
2    ACCEPT    tcp -- anywhere        anywhere tcp dpt:https
3    ACCEPT    tcp -- anywhere        anywhere tcp dpt:http
4    ACCEPT    tcp -- anywhere        anywhere tcp dpt:ssh

Para deletar uma regra, insira a cadeia correspondente e o número da lista. Vamos supor, para este tutorial de iptables, que queremos nos livrar da regra número três da cadeia INPUT. O comando deve ser:

sudo iptables -D INPUT 3

Alternativamente, se você precisa filtrar apenas o tráfego de entrada, você pode usar o Firewall VPS da Hostinger. Selecione seu VPS e navegue até a seção Firewall:

firewall no hpanel

Crie uma nova configuração, dê um nome a ela e especifique quaisquer regras de tráfego de entrada que você preferir:

editando nova configuração de firewall no hpanel

3. Concretizar as Alterações

As regras do iptables que criamos são salvas na memória. Isso significa que temos que salvá-las em um arquivo para poder carregá-las novamente após uma reinicialização. Para fazer essas alterações, você pode usar esses comandos, dependendo se está salvando regras IPv4 ou IPv6:

sudo iptables-save > /etc/iptables/rules.v4
sudo iptables-save > /etc/iptables/rules.v6

Agora, sempre que você reiniciar seu VPS, precisará carregar as regras salvas com os seguintes comandos:

sudo iptables-restore < /etc/iptables/rules.v4
sudo iptables-restore < /etc/iptables/rules.v6

Se você deseja que o processo de carregamento seja completamente automático, pode configurar o pacote iptables-persistent e ele cuidará do carregamento das regras. 

sudo apt-get install iptables-persistent

Após a instalação, será solicitado que você salve as regras atuais. Escolha Sim para ambos IPv4 e IPv6 e finalize a configuração. Agora o processo de carregamento será automático. Lembre-se de que você ainda precisará usar o comando sudo iptables-save toda vez que fizer alterações no iptables. 

Conclusão

O Iptables é um poderoso programa de firewall que você pode usar para proteger seu servidor Linux ou VPS. A parte boa é que você pode definir várias regras com base em suas preferências.

Neste tutorial de iptables, você aprendeu como instalar e usar a ferramenta. Agora, esperamos que você possa gerenciar seus conjuntos de regras para filtrar pacotes de entrada e saída.

É hora de testar por conta própria — e boa sorte!

Author
O autor

Ariane G.

A Ariane é SEO Team Leader com experiência em conteúdo, localização e SEO. Seu desafio é levar a Hostinger ao topo dos resultados no Brasil, França e Reino Unido. Eventualmente ela compartilha seu conhecimento no blog e nos tutoriais da Hostinger e no tempo livre ela gosta de explorar lugares novos e viver intencionalmente.