Introdução ao Firewalld
O Firewalld é uma ferramenta de gerenciamento de firewall padrão em distribuições Linux baseadas em systemd, como o CentOS 7 e superior. Ele substitui o iptables como principal gerenciador de firewall, operando na camada de rede para filtrar pacotes com base em regras dinâmicas.
Comparação entre Firewalld e Iptables
Enquanto o iptables configura regras diretamente asociadas a interfaces de rede, resultando em configurações estáticas, o Firewalld utiliza um modelo baseado em zonas para aplicar políticas de segurança. O Firewalld armazena configurações em arquivos XML em diretórios como /etc/firewalld/ e /usr/lib/firewalld/, permitindo alterações em tempo real sem reiniciar o serviço, ao contrário do iptables, que exige a recarga completa das regras.
Conceito de Zonas no Firewalld
As zonas no Firewalld são grupos de regras que determinam como o tráfego de rede é tratado com base na origem ou na interface. Cada zona tem um nível de confiança específico, como trusted (permite todo o tráfego) ou drop (descarta pacotes sem resposta). A zona padrão, geralmente public, é aplicada a todas as interfaces não associadas explicitamente a outra zona.
Processamento de Dados
O fluxo de dados segue uma hierarquia: primeiro, verifica-se se o endereço IP de origem está vinculado a uma zona; caso contrário, usa-se a zona associada à interface de entrada; se não houver associação, aplica-se a zona padrão. Isso garante flexibilidade na definição de políticas de segurança.
Métodos de Configuração do Firewalld
As configurações podem ser temporárias (ativas imediatamente) ou permanentes (aplicadas após recarga ou reinício do serviço). Utilitários como firewall-cmd (linha de comando) e firewall-config (interface gráfica) simplificam o gerenciamento.
Utilizando o Firewall-cmd
O firewall-cmd oferece opções para gerenciar zonas, serviços e portas. Exemplos de comandos adaptados para maior clareza:
# Exibir zona ativa atual
firewall-cmd --get-active-zones
# Adicionar serviço HTTP à zona work
firewall-cmd --zone=work --add-service=http
# Remover porta 8080 da zona dmz (protocolo TCP)
firewall-cmd --zone=dmz --remove-port=8080/tcp
# Listar todas as regras da zona external
firewall-cmd --zone=external --list-all
# Tornar configurações permanentes (recarrega regras existentes)
firewall-cmd --runtime-to-permanent
# Definir zona padrão como home
firewall-cmd --set-default-zone=home
Gerenciamento de Zonas
Para associar uma interface a uma zona, use comandos como firewall-cmd --zone=trusted --add-interface=eth0. Para desvincular, utilize --remove-interface.
Controle de Serviços e Portas
Adicione serviços como SSH ou HTTP com --add-service, ou portas específicas com --add-port. Para efeito permanente, adicione a opção --permanent e execute firewall-cmd --reload.
Exemplos Práticos
Exemplo de configuração para permitir tráfego SSH em uma zona específica:
# Vincular IP 192.168.1.100 à zona public
firewall-cmd --zone=public --add-source=192.168.1.100
# Permitir serviço SSH na zona public (configuração permanente)
firewall-cmd --zone=public --add-service=ssh --permanent
# Recarregar regras para aplicar mudanças permanentes
firewall-cmd --reload