Como configurar regras de firewall com iptables no Linux
Aprenda a proteger seus servidores contra ataques de negação de serviço e filtrar pacotes de rede de forma granular usando o iptables.
Resumo
- O iptables atua inspecionando o cabeçalho e o conteúdo dos pacotes que entram e saem da placa de rede do servidor.
- Tabelas lógicas organizam o tráfego por funções como filtro, tradução de endereços e marcação de pacotes.
- A criação de políticas restritivas por padrão bloqueia todo o tráfego indesejado antes de liberar portas essenciais.
- Limites de taxa evitam que disparos excessivos de requisições maliciosas derrubem aplicações em produção.
- A persistência correta das regras garante que a segurança do sistema não seja perdida após reinicializações.
O que é o iptables e como ele protege servidores Linux
Gerenciar o tráfego de rede que entra e sai de um servidor Linux é uma das tarefas mais importantes para garantir a segurança da infraestrutura. O iptables é a ferramenta padrão de linha de comando no kernel do Linux usada para configurar o sistema de filtragem de pacotes, conhecido como Netfilter. Na prática, ele funciona como um segurança rigoroso na porta de uma festa, checando a identidade, a origem e o destino de cada pedaço de dado — os chamados pacotes — que tenta entrar ou sair do computador.
Quando configurado corretamente, o iptables impede acessos não autorizados, bloqueia tentativas de invasão e mitiga impactos de ataques de negação de serviço (DDoS), onde robôs mal intencionados tentam derrubar um site enviando milhões de acessos falsos simultâneos. Antes de colocar qualquer aplicação no ar, como sistemas monitorados em ambientes isolados, entender a lógica por trás das regras de firewall evita dores de cabeça e vazamentos de dados críticos.
Entendendo tabelas, correntes e a ordem de inspeção
Para dominar o iptables, é preciso entender que ele organiza o trabalho em três conceitos principais: tabelas, correntes (chains) e regras. As tabelas dividem o trabalho por objetivos. A tabela mais usada é a filter, focada justamente em decidir se um pacote pode passar ou deve ser rejeitado. Outras tabelas cuidam de traduzir endereços de IP ou modificar pacotes ao longo do caminho.
Dentro de cada tabela, existem as correntes, que são os pontos do caminho por onde o pacote passa. A corrente INPUT lida com o tráfego que chega para o próprio servidor, a OUTPUT cuida do que sai, e a FORWARD gerencia pacotes que apenas passam pelo servidor rumo a outro destino. Cada pacote recebido é comparado com as regras de cima para baixo. Assim que uma regra dá o veredito de aceitar ou bloquear, a busca para e o destino do pacote é selado.
Bloqueando ataques de negação de serviço com limite de taxa
Ataques de negação de serviço costumam sobrecarregar o servidor com milhares de conexões por segundo, esgotando a memória e a capacidade de processamento. Para mitigar esse problema sem desligar o serviço para usuários legítimos, podemos usar o módulo hashlimit ou o controle básico de limite do iptables. Isso restringe quantas requisições um mesmo endereço de IP pode fazer em um determinado intervalo de tempo.
Na prática, criamos uma regra que diz ao sistema: se um IP tentar abrir mais do que um número seguro de novas conexões na porta do serviço web em poucos segundos, as próximas tentativas serão sumariamente ignoradas ou rejeitadas. Esse tipo de blindagem é essencial para manter a estabilidade da máquina, funcionando em conjunto com boas práticas de manutenção de sistemas e recuperação de falhas em cenários de alta pressão operacional.
Passo a passo para criar um script de firewall seguro
Vamos criar um modelo de firewall funcional e seguro que bloqueia tudo por padrão e libera apenas o necessário para a operação básica do servidor. Abra o terminal com privilégios administrativos e siga as etapas abaixo para aplicar e validar suas regras.
- Defina a política padrão para bloquear todo o tráfego de entrada e encaminhamento, permitindo apenas a saída:
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT - Libere o tráfego de loopback (comunicação interna da própria máquina) e conexões já estabelecidas para evitar travamentos:
iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - Permita o acesso remoto via SSH definindo uma porta segura e proteja contra ataques de força bruta limitando a taxa de novas conexões:
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m hashlimit --hashlimit-above 3/min --hashlimit-burst 5/src -j DROP iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Filtragem granular e salvamento permanente das regras
Além de proteger contra quedas, a filtragem granular permite isolar serviços internos ou liberar o acesso a endereços IP específicos de parceiros ou administradores. Por exemplo, se você deseja que apenas um IP confiável acesse o painel de banco de dados, basta criar uma regra direcionada especificamente para aquela origem, recusando todo o resto.
Um detalhe importante é que, por padrão, as regras do iptables somem quando o servidor é reiniciado. Para evitar perder toda a configuração, você deve salvar o conjunto atual de regras utilizando ferramentas específicas da sua distribuição Linux, como o pacote iptables-persistent. Assim, o firewall recarrega automaticamente com as mesmas proteções sempre que a máquina for ligada.
Conclusão
Dominar o iptables é uma habilidade fundamental para qualquer profissional que gerencie servidores Linux, unindo a proteção contra ataques de negação de serviço com o controle cirúrgico do fluxo de dados. Ao estruturar políticas restritivas, aplicar limites de taxa inteligentes e garantir a persistência das regras, você constrói uma camada de defesa robusta e confiável.
Manter o firewall atualizado e monitorar o comportamento da rede em busca de anomalias completa o ciclo de segurança da infraestrutura, assegurando que aplicações críticas rodem sem surpresas indesejadas.