Principais conclusões
- O nftables é o padrão moderno para firewalls do Linux, substituindo o iptables na maioria das principais distribuições.
- Uma política de negação por padrão, que abre apenas as portas necessárias, e regras que permanecem ativas mesmo após reinicializações são os fundamentos de uma configuração segura de firewall no Linux.
- A configuração do firewall não é uma tarefa que se faz uma única vez — é essencial revisar regularmente as regras, monitorar os registros e manter o software atualizado.
Firewalls mal configurados são uma das principais causas de violações de dados — e, se você usa o Linux, é fundamental fazer essa configuração corretamente. Um firewall do Linux é sua primeira linha de defesa contra acessos não autorizados, e a boa notícia é que o Linux oferece ferramentas poderosas e flexíveis para proteger o sistema rapidamente. Neste guia, você aprenderá quais são as opções mais eficazes de firewall para Linux disponíveis, como configurá-las passo a passo e quais são as melhores práticas nas quais as equipes de segurança se baseiam para manter os sistemas protegidos.
Entendendo os firewalls do Linux
Os firewalls do Linux regulam o tráfego de rede inspecionando os pacotes em relação a regras de segurança predefinidas. Essa filtragem é aplicada no nível do kernel por meio da estrutura Netfilter. Por anos, o iptables foi o padrão do setor para interagir com o Netfilter, mas foi amplamente substituído pelo nftables, que oferece melhor desempenho e uma sintaxe mais simplificada.
Hoje, o nftables é o backend padrão para distribuições modernas como o RHEL 9, o Debian 11 e o Ubuntu 22.04. No entanto, muitos administradores preferem ferramentas de front-end de alto nível, como o UFW (Uncomplicated Firewall) ou o firewalld, para gerenciar essas regras sem precisar escrever sintaxe complexa.
Uma visão geral do iptables e do nftables
O iptables tem sido a solução de firewall preferida dos usuários do Linux há décadas. Ele funciona por meio de uma série de tabelas e cadeias, nas quais os pacotes são avaliados em relação a regras predefinidas para determinar seu destino. Essas regras podem ser configuradas para permitir, negar ou manipular o tráfego com base em vários critérios, como IP de origem, porta de destino ou tipo de protocolo.
O nftables é seu sucessor moderno, oferecendo sintaxe unificada, tratamento mais eficiente das regras (especialmente para conjuntos de regras grandes) e um design mais fácil de manter. Em muitas distribuições modernas, os comandos do iptables são implementados como uma camada de compatibilidade que, nos bastidores, os traduz para o nftables.
|
Destaque |
iptables |
nftables |
|
Lançamento inicial |
2001 |
2014 |
|
Status |
Versão antiga (ainda amplamente compatível) |
Configuração padrão na maioria das distribuições modernas |
|
Sintaxe |
Comandos separados por protocolo (IPv4/IPv6) |
Sintaxe unificada para todos os protocolos |
|
Desempenho |
Mais lento com conjuntos de regras grandes |
Avaliação mais eficiente das regras |
|
Facilidade de uso |
Sintaxe mais complexa e fragmentada |
Sintaxe mais clara e legível |
Saiba mais sobre as diferenças entre o iptables e o nftables.
Como configurar seu firewall no Linux
Nesta seção, veremos como você pode configurar um firewall no seu sistema Linux usando o nftables e o iptables.
⚠️ Aviso: Se você estiver configurando seu firewall por meio de uma conexão SSH remota, certifique-se sempre de ter uma regra que permita a porta 22 (SSH) e as conexões já estabelecidas antes de definir a política padrão como DROP. O não cumprimento dessa exigência resultará no bloqueio imediato do acesso.
Configure seu firewall do Linux com o nftables
Vamos começar com um conjunto básico de regras do nftables que permite o tráfego SSH, HTTP e HTTPS, bloqueando todo o restante do tráfego de entrada.
Passo 1: Inicie e habilite o nftables
Na maioria das distribuições modernas, o nftables está disponível por padrão. O serviço é usado para carregar regras salvas durante a inicialização.
Ative-o com:
sudo systemctl start nftables sudo systemctl enable nftables
Etapa 2: Criar uma tabela
O nftables utiliza tabelas para organizar as regras. Uma tabela funciona como um contêiner para cadeias e regras.
O comando a seguir cria uma tabela chamada my_firewall.
sudo nft add table inet my_firewall
inet: permite que um único conjunto de regras se aplique tanto ao tráfego IPv4 quanto ao IPv6.
Outras famílias de endereços incluem ip, ip6, arp, bridge e netdev.
Etapa 3: Criar uma cadeia (política padrão segura)
Uma cadeia é uma sequência de regras que são avaliadas em ordem.
Vamos criar a cadeia chamada INPUT e comece com policy accept para evitar o bloqueio. Mais tarde, vamos mudar para o modo “drop”.
sudo nft add chain inet my_firewall INPUT { type filter hook input priority 0 \; policy accept \; }
type filter hook input: aplica regras ao tráfego de entrada
priority 0: define a prioridade padrão de processamento
policy accept: padrão seguro temporário
Etapa 4: Adicionar regras essenciais de segurança
Uma regra define critérios específicos para a correspondência do tráfego de rede e especifica uma ação a ser tomada (por exemplo, aceitar, rejeitar, descartar). As regras são avaliadas de cima para baixo; portanto, a ordem é importante — coloque as regras mais específicas primeiro e as mais amplas por último.
Vamos adicionar as regras necessárias para manter seu sistema acessível:
Permitir tráfego de loopback (necessário para que os processos locais se comuniquem):
sudo nft add rule inet my_firewall INPUT iif lo accept
Permitir conexões estabelecidas e relacionadas (necessárias para o tráfego de retorno):
sudo nft add rule inet my_firewall INPUT ct state established,related accept
Permitir SSH (porta 22):
sudo nft add rule inet my_firewall INPUT tcp dport 22 accept
Etapa 5: Adicionar regras adicionais
Agora, habilite os serviços necessários.
Permitir ICMP (IPv4) e ICMPv6:
sudo nft add rule inet my_firewall INPUT ip protocol icmp accept sudo nft add rule inet my_firewall INPUT ip6 nexthdr icmpv6 accept
Permitir HTTP (porta 80) e HTTPS (porta 443):
sudo nft add rule inet my_firewall INPUT tcp dport { 80, 443 } accept
Etapa 6: Aplicar a política padrão de segurança (DROP)
Assim que todas as regras necessárias estiverem em vigor, mude para uma política padrão segura.
sudo nft add chain inet my_firewall INPUT { policy drop \; }
Isso garante que todo o restante do tráfego seja bloqueado. Nesse momento, apenas o tráfego explicitamente permitido (SSH, HTTP, HTTPS) é autorizado.
Etapa 7: Verifique suas regras
Para verificar as regras ativas, use este comando:
sudo nft list ruleset
O resultado deve ficar mais ou menos assim:
table inet my_firewall { chain INPUT { type filter hook input priority filter; policy drop; iif "lo" accept ct state established,related accept tcp dport 22 accept ip protocol icmp accept ip6 nexthdr ipv6-icmp accept tcp dport { 80, 443 } accept } }
Etapa 8: Salve suas regras
As regras adicionadas pela linha de comando são perdidas ao reiniciar o sistema. Salve-as em um arquivo de configuração para que permaneçam mesmo após reinicializações:
sudo nft list ruleset | sudo tee/etc/nftables.conf >/dev/null
Atualize manualmente, se necessário:
sudo nft -f/etc/nftables.conf
Configure seu firewall do Linux com o iptables
Vamos configurar um firewall básico com o iptables que permita o tráfego SSH, HTTP e HTTPS, bloqueando todo o restante do tráfego de entrada.
Passo 1: Verifique se o iptables está disponível
O iptables está disponível por padrão na maioria das distribuições Linux, incluindo sistemas mais antigos e legados, como o CentOS 7. Caso não esteja instalado, você pode instalá-lo usando os comandos abaixo.
Em sistemas baseados no RHEL:
sudo dnf install iptables # RHEL8+/9, Rocky Linux, AlmaLinux sudo yum install iptables # CentOS 7
Em sistemas baseados no Debian/Ubuntu, execute:
sudo apt install iptables
Etapa 2: Verificação das regras existentes
Antes de fazer alterações, verifique quais regras já estão em vigor:
sudo iptables-L -v -n
Etapa 3: Adicionar regras essenciais
Assim como no nftables, a ordem das regras é importante – o iptables avalia as regras de cima para baixo.
Antes de bloquear o firewall, você deve permitir as conexões de que precisa no momento (como o SSH) para evitar ficar sem acesso ao seu sistema.
Permitir tráfego de loopback:
sudo iptables-A INPUT -ilo -j ACCEPT
Permitir conexões estabelecidas e relacionadas:
sudo iptables-A INPUT -mconntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Permitir ICMP (ping):
sudo iptables-A INPUT -picmp -j ACCEPT
Se o IPv6 estiver habilitado no seu sistema:
sudo ip6tables-A INPUT -p ipv6-icmp -j ACCEPT
Permitir SSH (porta 22):
sudo iptables-A INPUT -ptcp --dport 22 -j ACCEPT
Permitir HTTP (porta 80) e HTTPS (porta 443):
sudo iptables-A INPUT -ptcp --dport 80 -j ACCEPT sudo iptables-A INPUT -ptcp --dport 443 -j ACCEPT
Etapa 4: Definir políticas padrão
Defina a política padrão para rejeitar todo o tráfego de entrada e encaminhado, permitindo, porém, o tráfego de saída:
sudo iptables-P INPUT DROP sudo iptables-P FORWARD DROP sudo iptables-P OUTPUT ACCEPT
Etapa 5: Verifique suas regras
Verifique se suas regras estão ativas:
sudo iptables-L -v -n
Etapa 6: Salve suas regras
Em sistemas baseados no Debian/Ubuntu:
sudo apt install iptables-persistent sudo netfilter-persistentsave
Isso salva as regras em /etc/iptables/rules.v4 (e rules.v6 (para IPv6) e as recarrega ao reiniciar o sistema.
Em sistemas modernos baseados no RHEL (RHEL 8/9, Rocky Linux, AlmaLinux):
Nesses sistemas, se você estiver usando o firewalld em vez do iptables puro:
sudo firewall-cmd--runtime-to-permanent
No RHEL 7 (e, opcionalmente, no RHEL 8/9 ao usar o iptables legado):
Se você estiver usando comandos diretos do iptables em vez de uma interface como o firewalld, é necessário instalar o iptables-services pacote para torná-los persistentes:
sudo dnf install iptables-services
sudo systemctl enable iptables
sudo service iptables save
Isso salva as regras em /etc/sysconfig/iptables e garante que elas sejam recarregadas ao reiniciar o sistema.
Como solucionar problemas de configuração do firewall
Problemas na configuração do firewall podem interromper suas conexões e tornar os serviços inacessíveis. Antes de passar às etapas de solução de problemas, vamos entender quais são os problemas mais comuns para saber com o que você provavelmente está lidando.
- Serviços bloqueados: Serviços ou aplicativos legítimos que são bloqueados sem querer
- Conflitos entre regras: Regras que se sobrepõem ou são contraditórias, causando um comportamento inesperado
- Portas abertas / Serviços expostos: Portas ou serviços expostos acidentalmente devido a uma configuração incorreta
- Degradação do desempenho: Regras excessivas ou mal organizadas que tornam o tráfego de rede mais lento
Veja a seguir como solucionar esses problemas:
1. Verifique o status do firewall
Use comandos como firewall-cmd --state, iptables -L, ou ufw status para verificar o status atual do seu firewall.
Dica profissional: Para obter uma visão mais detalhada das regras ativas e da contagem de pacotes, use iptables -L -v -n ou nft list ruleset – elas mostram exatamente o que está sendo correspondido e com que frequência.
2. Verificar as regras ativas
Examine cuidadosamente as regras atuais para garantir que elas estejam de acordo com as políticas de tráfego pretendidas. Regras mal configuradas são uma fonte comum de problemas.
3. Testar a conectividade de rede
Use ferramentas como ping, traceroute ou netcat para testar a conectividade com recursos internos e externos. Isso ajuda a identificar o tráfego bloqueado.
4. Analisar os registros do firewall
Verifique os registros do firewall em busca de pacotes rejeitados ou mensagens do sistema, dependendo da configuração do seu firewall.
sudo journalctl -ufirewalld sudo journalctl -u nftables (somente se o registro de log do serviço nftables estiver habilitado no sistema)
5. Desativar temporariamente o firewall
Desative temporariamente o firewall para verificar se ele é a causa do problema.
Para interromper temporariamente o serviço:
sudo systemctl stop firewalld sudo systemctl stop nftables sudo ufw disable
⚠️ Aviso: Faça isso apenas em um ambiente controlado ou em um sistema que não seja de produção. Reative o firewall imediatamente após o teste.
Configuração do firewall no Linux: nossas 7 principais dicas
Configurar um firewall no Linux pode exigir um certo tempo de adaptação, mas, com a abordagem certa, é possível simplificar o processo de configuração. Aqui estão sete dicas práticas que ajudarão você a otimizar as configurações do firewall e melhorar a segurança do seu sistema.
Dica 1: Defina sua política de segurança antes de fazer a configuração
Antes de alterar qualquer comando, saiba o que você está protegendo e contra o que. Identifique quais serviços precisam estar acessíveis ao público, quais devem ser restritos a intervalos específicos de IP e se o tráfego desconhecido deve ser descartado silenciosamente ou rejeitado com uma resposta. Uma política de segurança clara transforma a configuração do firewall de um processo baseado em suposições em decisões deliberadas e auditáveis.
Dica 2: Comece com uma política simples
Comece com uma política padrão de “negar tudo” e permita explicitamente apenas o que for necessário. No entanto, antes de aplicar essa regra, certifique-se de que sua conexão SSH esteja explicitamente permitida para evitar ficar sem acesso ao sistema. Isso garante seu acesso antes de bloquear todo o resto.
Dica 3: Abra apenas as portas necessárias
Cada porta aberta representa um possível ponto de entrada para ataques; portanto, tenha cuidado ao decidir quais portas deixar abertas. Você pode restringir o acesso apenas às portas necessárias para seus aplicativos ou serviços e fechar todas as que não estiverem em uso.
Para verificar quais portas estão expostas no momento no seu sistema, execute:
sudo ss -tulnp
Dica 4: Controle também o tráfego de saída
Embora se dê grande ênfase ao bloqueio do tráfego de entrada, o monitoramento e o controle do tráfego de saída são igualmente importantes em alguns ambientes. Um sistema comprometido e sem restrições dentro da sua rede pode vazar dados ou se comunicar com servidores controlados por invasores sem que nenhuma regra de entrada o impeça. No mínimo, registre o tráfego de saída de serviços confidenciais para detectar comportamentos incomuns o mais cedo possível.
Dica 5: Use zonas ou cadeias para se organizar
Organize suas regras de firewall por zonas (firewalld) ou cadeias (iptables, nftables). Isso permite que você aplique regras diferentes com base nas interfaces de rede ou nos níveis de confiança. Regras estruturadas facilitam o gerenciamento das configurações e reduzem a chance de erros.
Dica 6: Revise e teste as regras regularmente
As regras do firewall não devem ser “configuradas e esquecidas”. Revise-as periodicamente para garantir que atendam aos requisitos atuais. Após qualquer alteração, faça testes completos para confirmar se as regras funcionam conforme o esperado, sem bloquear acidentalmente o tráfego legítimo. Um bom hábito é agendar uma revisão trimestral como parte de sua rotina mais ampla de manutenção de segurança.
Dica 7: Mantenha seu software de firewall atualizado
Mantenha-se atualizado sobre as novidades das ferramentas de firewall que você utiliza, como nftables, UFW ou firewalld. As atualizações geralmente incluem correções de segurança e melhorias de estabilidade que são essenciais para manter uma proteção eficaz do firewall.
Nossas 5 principais soluções recomendadas de firewall para Linux
Existem inúmeras opções disponíveis, desde ferramentas simples para iniciantes até soluções avançadas de firewall. Reunimos uma lista das cinco ferramentas de firewall para Linux mais relevantes que você encontrará em 2026, quer prefira soluções simples ou precise de uma proteção robusta e repleta de recursos.
1. iptables
O iptables tem sido um pilar fundamental nas redes Linux há muitos anos. Ele oferece um controle preciso sobre o tráfego de rede por meio de seu sistema baseado em regras, razão pela qual costuma ser apreciado por usuários experientes. Embora hoje tenha sido amplamente substituído pelo nftables em sistemas modernos, ele ainda é relevante e amplamente utilizado, especialmente em sistemas mais antigos e em configurações de compatibilidade.
Principais recursos:
- Cadeias de regras detalhadas para um gerenciamento preciso do tráfego.
- Ampla documentação e suporte da comunidade.
- Mais adequado para compatibilidade com versões anteriores em sistemas Linux mais antigos.
Disponibilidade: Vem pré-instalado em muitas distribuições Linux mais antigas.
Exemplo:
Bloquear o tráfego de entrada proveniente de um IP específico:
sudo iptables-A INPUT -s 192.168.1.10 -j DROP
2. nftables
O nftables é o padrão moderno no gerenciamento de firewalls no Linux, substituindo o iptables com uma sintaxe mais clara, melhor desempenho e suporte unificado a IPv4/IPv6. Ele é utilizado como backend padrão em muitas distribuições modernas do Linux.
Principais recursos:
- Suporta IPv4 e IPv6 em um único conjunto de regras
- Oferece suporte à aceleração por hardware para um melhor desempenho.
- A sintaxe simplificada reduz os erros de configuração.
Disponibilidade: Código aberto; incluído nos repositórios padrão do Linux.
Exemplo:
Bloquear o tráfego de entrada proveniente de um IP específico:
sudo nft add rule inet my_firewall INPUT ip saddr 192.168.1.10 drop
3. firewalld
O firewalld oferece uma interface mais simples e intuitiva para o gerenciamento do firewall. Baseado no nftables, ele utiliza zonas para simplificar a organização das regras. É o firewall padrão no RHEL 7 e versões posteriores, no Fedora e na maioria das distribuições do ecossistema RHEL, como o AlmaLinux e o CentOS Stream.
Principais recursos:
- O gerenciamento de regras por zona simplifica a configuração para diferentes interfaces.
- As atualizações dinâmicas eliminam a necessidade de reiniciar os serviços.
- A integração com a interface gráfica (por exemplo, o Cockpit) torna o programa acessível a iniciantes.
Disponibilidade: Código aberto; incluído nos repositórios padrão do Linux.
Exemplo:
Permitir o tráfego HTTP permanentemente:
sudo firewall-cmd--add-service=http --permanent sudo firewall-cmd --reload
4. UFW (Firewall Simples)
O UFW se destaca pela simplicidade. Sua sintaxe de linha de comando facilita a configuração das regras, e ele é a ferramenta padrão de firewall nas distribuições baseadas no Ubuntu. Se você é iniciante em firewalls do Linux ou está gerenciando um projeto pessoal, o UFW é o ponto de partida mais fácil.
Principais recursos:
- Os comandos são fáceis de lembrar e usar, mesmo para iniciantes
- Perfis pré-configurados simplificam a configuração de serviços comuns
- Ideal para projetos de pequena escala ou pessoais
Disponibilidade: Código aberto; incluído nos repositórios padrão do Linux.
Exemplo:
Permita o SSH e ative o firewall:
sudo ufw allow ssh sudo ufw enable sudo ufw status verbose
5. CSF (ConfigServer Security & Firewall)
O CSF oferece recursos de segurança adicionais além da filtragem básica de pacotes, incluindo detecção de invasões e rastreamento de falhas de login. É amplamente utilizado em ambientes de hospedagem na web e se integra ao cPanel, tornando-o ideal para administradores que gerenciam servidores compartilhados ou dedicados.
Principais recursos:
- Detecção de falhas no login para um melhor controle de acesso
- Os alertas em tempo real mantêm os administradores informados sobre as ameaças
- A filtragem de pacotes com estado auxilia no gerenciamento da inspeção de tráfego baseada em conexões
Disponibilidade: Download gratuito no site oficial do ConfigServer.
Exemplo:
Bloquear e permitir endereços IP específicos:
sudo csf -d 192.168.1.10 # bloquear um IP sudo csf -a 192.168.1.20 # permitir um IP sudo csf -r # recarregar as regras do CSF
Outras práticas recomendadas para o gerenciamento eficaz do firewall no Linux
Independentemente da solução de firewall para Linux escolhida, essas práticas adicionais abordam aspectos mais amplos de segurança que podem fortalecer ainda mais a configuração do seu firewall:
- Filtragem no nível do aplicativo: Vá além das regras de porta e protocolo, aproveitando a filtragem no nível do aplicativo, quando disponível, para aplicar políticas de segurança com base em softwares ou serviços específicos. Isso proporciona um controle mais granular, particularmente útil quando vários serviços compartilham a mesma porta.
- Ativar o registro de logs e o monitoramento: Ative o registro em log para rastrear o tráfego de rede e detectar possíveis incidentes de segurança. Monitore regularmente os logs do firewall em busca de anomalias e atividades suspeitas – identificar padrões incomuns logo no início costuma ser a diferença entre um incidente menor e uma violação grave.
- Implemente Sistemas de Detecção de Intrusão (IDS): Complemente seu firewall com ferramentas de detecção e prevenção de invasões para identificar e responder a atividades maliciosas. Ferramentas como o Fail2ban ou o Suricata atuam em conjunto com o seu firewall, seja atualizando regras automaticamente (no caso do Fail2ban) ou alertando os administradores (no caso de ferramentas IDS como o Suricata) em resposta às ameaças detectadas.
- Segmentação de rede: A segmentação de redes em zonas distintas contém violações e limita o impacto de incidentes de segurança. Mesmo que um segmento seja comprometido, a segmentação impede o movimento lateral por toda a sua rede.
- Faça backup da configuração do seu firewall: Sempre faça backup do seu conjunto de regras atual antes de realizar alterações significativas. Isso garante que você tenha uma configuração funcional para restaurar rapidamente caso algo dê errado.
- Restringir o acesso de gerenciamento: Limite quem pode modificar as regras do firewall, aplicando controles de acesso rigorosos. Utilize políticas de sudo ou controle de acesso baseado em funções para garantir que apenas administradores autorizados possam fazer alterações nas configurações do firewall.
A segurança do seu firewall do Linux depende inteiramente da sua configuração
Um firewall só é eficaz quando está configurado corretamente. Escolher a ferramenta certa — seja o iptables para sistemas legados e casos de uso que exigem compatibilidade, o nftables para distribuições modernas ou o UFW e o firewalld por sua simplicidade — é apenas o ponto de partida. As regras que você define, as políticas que você aplica e as práticas que você mantém ao longo do tempo são o que determinam se o seu ambiente Linux está realmente protegido.
A segurança é um processo contínuo, e manter-se vigilante é fundamental para mitigar os riscos em um cenário de ameaças em constante evolução. Revisar regularmente suas regras, monitorar os registros e manter seu software de firewall atualizado garantem que suas defesas permaneçam sólidas à medida que seus sistemas e requisitos evoluem.
Se você quiser se aprofundar no assunto, descubra como a aplicação de patches sem reinicialização pode ajudá-lo a manter um ambiente Linux seguro sem tempo de inatividade — mantendo seus sistemas protegidos entre as janelas de manutenção, sem precisar colocá-los offline.





