Manter um servidor Linux seguro exige, entre outras práticas, a correta configuração do firewall. Dentre as ferramentas modernas disponíveis para esse fim, o firewalld
se destaca por ser poderosa, flexível e fácil de usar, especialmente em sistemas como Oracle Linux, Red Hat Enterprise Linux (RHEL) e CentOS.
Neste artigo, você aprenderá como utilizar o firewalld
para gerenciar regras de firewall de maneira eficiente, utilizando comandos práticos e explicações detalhadas sobre cada função. Essa ferramenta é compatível com sistemas que utilizam o gerenciador de pacotes dnf
ou yum
, e já vem instalada por padrão nas versões mais recentes dessas distribuições.
O que é o firewalld
?
O firewalld
é um gerenciador de firewall baseado em zonas que fornece uma maneira dinâmica de gerenciar regras sem a necessidade de reiniciar o serviço. Ele é uma alternativa moderna ao tradicional iptables
, oferecendo suporte a configurações permanentes e em tempo de execução (runtime).
Uma das principais vantagens do firewalld
é o conceito de zonas — conjuntos predefinidos de regras que podem ser atribuídas a diferentes interfaces de rede, permitindo uma segmentação de segurança mais granular.
Verificando a configuração atual do firewall
Antes de aplicar qualquer alteração, é interessante verificar o estado atual do firewall e suas configurações.
Ver zonas ativas
firewall-cmd --get-active-zones
Este comando retorna uma lista das zonas atualmente em uso, juntamente com as interfaces de rede associadas a elas.
Ver a zona padrão
firewall-cmd --get-default-zone
A zona padrão é aquela atribuída automaticamente às interfaces de rede que não têm zona definida explicitamente.
Gerenciando zonas e interfaces
As zonas do firewalld
definem o nível de confiança para conexões de rede e podem ser configuradas conforme o contexto. Por exemplo, uma zona “home” pode permitir mais serviços do que uma zona “public”.
Alterar a interface de rede para uma zona específica
firewall-cmd --zone=home --change-interface=ens192
firewall-cmd --zone=public --change-interface=ens192
Esses comandos movem a interface ens192
para uma zona específica. Lembre-se de substituir ens192
pelo nome da interface do seu servidor.
Listar regras de uma zona
firewall-cmd --list-all --zone=public
Você verá todos os serviços e portas abertas na zona pública, além de informações sobre regras adicionais e interfaces associadas.
Configurando ações e serviços
Definir a ação padrão da zona
firewall-cmd --zone=public --permanent --set-target=DROP
Com essa configuração, todas as conexões que não forem explicitamente permitidas na zona pública serão automaticamente descartadas (DROP
), elevando o nível de segurança.
Adicionar ou remover serviços
firewall-cmd --zone=public --add-service=ssh
firewall-cmd --zone=public --remove-service=ssh
Adicionar ou remover portas
firewall-cmd --zone=public --add-port=8443/tcp
firewall-cmd --zone=public --remove-service=8443/tcp
Utilizando rich rules (regras avançadas)
As rich rules permitem configurações mais detalhadas, como restrições por IP, porta ou protocolo.
Permitir serviço apenas de IPs específicos
firewall-cmd --add-rich-rule='rule family=ipv4 source address="192.168.0.0/24" service name="ssh" accept'
Essa regra libera acesso SSH apenas para IPs da faixa 192.168.0.0/24
.
Permitir ICMP para faixa de IPs
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" protocol value="icmp" accept'
Permitir porta TCP 10050 para uma rede
firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address="192.168.0.0/24" port port="10050" protocol="tcp" accept'
Liberar portas específicas para qualquer origem
firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 port port="8443" protocol="tcp" accept'
firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 port port="9443" protocol="tcp" accept'
Salvando e aplicando as configurações
O firewalld
permite configurar regras temporárias (runtime) ou permanentes. Para garantir que as alterações se mantenham após reinicializações, salve com:
firewall-cmd --runtime-to-permanent
Recarregar o firewall
firewall-cmd --reload
Esse comando aplica as alterações permanentes e reinicia as regras em tempo de execução.
Gerenciando o serviço firewalld
Para iniciar, parar, habilitar ou desabilitar o serviço firewalld
no sistema, utilize os comandos do systemctl
:
systemctl start firewalld
systemctl stop firewalld
systemctl enable firewalld
systemctl disable firewalld
Verificar o status do firewall
firewall-cmd --state
Este comando retorna o estado atual do firewall, como running
ou not running
.
Conclusão
O firewalld
é uma ferramenta robusta e flexível que facilita o gerenciamento de regras de firewall em servidores Linux baseados em Oracle Linux, RHEL e CentOS. A adoção de boas práticas, como o uso de zonas, serviços controlados e regras avançadas, ajuda a proteger seu ambiente contra acessos não autorizados, mantendo uma política de segurança clara e eficiente.
Referências
- Red Hat Documentation: Using and configuring firewalld
- Oracle Linux Docs: Oracle Linux 8 Security Guide
- Firewalld Project (GitHub): https://github.com/firewalld/firewalld
- man firewalld (manual): Acesse com
man firewalld
ouman firewall-cmd
no terminal.
Caso tenha alguma dúvida a respeito deste tópico sinta-se à vontade para entrar em contato