Trabalhando com Firewalld : 1 – Conceito e Estrutura.

Este artigo é o primeiro de uma serie de artigos no qual iremos tratar a configuração e utilização do Firewalld. Segundo o manual do Linux o Firewalld fornece um firewall gerenciado dinamicamente com suporte para zonas de rede / firewall que definem o nível de confiança das conexões ou interfaces de rede. Tem suporte para IPv4, IPv6 configurações de firewall e pontes ethernet além de ter uma separação de tempo de execução e opções de configuração permanente. Também suporta uma interface para serviços ou aplicativos que adicionam regras de firewall diretamente. Iremos abordar a utilização desta poderosa ferramenta entendendo seu conceito e aplicação.


Considerações

Iremos considerar que já possua um sistema Linux instalado e pronto para a utilização. Para este artigo iremos utilizar o CentOS 7, pelo simples motivo de que o Firewalld já vem instalado e como padrão, mais nada impede de utilizar a distro de preferência, realizando a instalação e configuração do mesmo.


Entendendo a Estrutura

O Firewalld  possui duas camadas: A camada de CORE que é responsável por manipular as configurações e os backends dependentes como iptables, ip6tables, ebtables, ipset e o carregador de módulos. E a camada D-BUS que é a principal maneira de alterar e criar as configurações do Firewalld. Utiliza-se de ferramentas em tempo de execução para aplicar e criar configurações, sendo elas: firewall-cmd, firewall-config e firewall-applet. Também possui a ferramenta firewall-offline-cmd, porém não é muito recomendada a sua utilização, pois ela realiza alterações diretamente no CORE e sua aplicação somente surte efeito após 5 minutos. Abaixo é possível demonstrar como está estruturada o Firewalld

Em outras palavras, o Firewalld substitui o script iptables que estávamos acostumados a utilizar, melhorando principalmente o gerenciamento de segurança e configuração de regras.


Configuração: Tempo de Execução Vs Permanente

Tempo de Execução: São configurações realizadas em tempo real, aplicadas diretamente no firewall do Kernel. Estas configurações por sua vez não são salvas automaticamente, caso seja reiniciado o Firewalld as configurações são perdidas. Esta opção pode ser utilizada para homologar configurações, assim que as configurações atendam as expectativas, elas podem ser migradas para permanente.

Permanentes: As configurações permanentes por sua vez são configurações que podem ser aplicadas em tempo de execução, porém permitem que as configurações sejam salvas, não trazendo perdas ao realizar a reinicialização do Firewalld o do sistema.

As configurações de tempo de execução pode se tornar permanentes através da utilização das ferramentas firewall-cmd e firewall-config como exemplificado abaixo:

firewall-cmd --runtime-to-permanent

Ferramentas de manipulação do Firewalld

firewall-cmd: É a principal ferramenta de linha de comando do Firewalld. Fornece interface para gerenciar o tempo de execução e as configurações permanentes.

firewall-config: É uma ferramenta de opção gráfica, possui um interface GUI para o Firewalld. (Utilizado em sistemas com interface gráfica).

firewall-aplet: É um applet de bandeja, fornece informações sobre as configurações do Firewalld, (Utilizado em sistemas com interface gráfica).

firewall-offiline-cmd: É uma ferramenta de linha de comando utilizada para configurar o Firewalld quando ele não estiver executando ou ativo. Realiza alterações permanentes na configuração e leva 5 minutos para aplicar as novas configurações caso o firewall esteja ativo e executando, por isso não é recomendado a utilização em tempo de execução. Necessita que o usuário tenha permissão de root para sua utilização.


Arquivo de Configuração 

O Firewalld possui um arquivo de configuração que fornece a configuração base para sua utilização. Este arquivo fica armazenado em /etc/firewalld/firewalld.conf. Através deste arquivo é possível definir algumas opções como: Default Zone, Minimal Mark, Clean Up On Exit,  Lockdown, IPv6_rpfilter, Individual Calls, Log Denied e Automatic Helpers.

Default Zone: Define a zona padrão a ser usada caso a cadeia de zonas esteja vazia. Tudo o que não for explicitamente ligado a alguma zona será tratado pela zona padrão. A zona padrão é public.

Minimal Mark: Para algumas configurações de firewall, várias regras são necessárias em tabelas diferentes para poder manipular os pacotes da maneira correta. Para conseguir isso, estes pacotes são marcados usando o alvo MARK iptables e ip6tables. Com a opção MinimalMark, um bloco de marcas pode ser reservado para uso privado; somente marcas acima desse valor são usadas. O valor padrão de MinimalMark é 100.

Clean Up On Exit: Define se ao parar o Firewalld as regras do firewall definidas em tempo de execução serão limpas, carregando na próxima execução somente as configurações permanentes. O valor padrão é yes (verdadeiro).

Lockdown: Define se as alterações do Firewalld com a interface D-BUS serão limitadas aos aplicativos listados na lista de desbloqueio. Esta lista contém os contextos, comandos, usuários e IDs de usuário do selinux que são listados em branco quando o recurso de bloqueio do Firewalld está ativado. O valor padrão é no (Falso).

IPv6_rpfilter: Define se executa o teste de filtro de caminho reverso em um pacote IPv6. Se a resposta ao pacote for enviada pela mesma interface em que o pacote chegou, o pacote corresponderá e será aceito, caso contrário, será descartado. Para o IPv4, o rp_filter é controlado usando sysctl. O valor padrão e yes (verdadeiro).

Individual Calls: Define se será utilizado chamadas combinadas e não chamadas individuais para aplicação de alterações no Firewalld. O uso de chamadas individuais aumenta o tempo necessário para aplicar as alterações e iniciar o daemon, mas é bom para a depuração, pois as mensagens de erro são mais específicas. O valor padrão é no (falso).

Log Denied: Adicione regras de registro antes de rejeitar e descartar regras nas cadeias de definição INPUT, FORWARD e OUTPUT para as regras padrão e também as regras finais de rejeição e descarte em zonas para o tipo de pacote de camada de link configurado. Os valores possíveis são:  all, unicast, broadcast, multicaste off. A configuração padrão é off, o que desativa o registro.

Automatic Helpers: Para o uso seguro de iptables e ajudantes de rastreamento de conexão, recomenda-se desativar o AutomaticHelpers. Mas isso pode ter efeitos colaterais em outros serviços usando os helpers do netfilter, pois a configuração de sysctl em /proc/sys/net/netfilter/nf_conntrack_helper será alterada. Com a configuração do sistema, o valor padrão definido no kernel ou com sysctl será usado. Os valores possíveis são: yes, no e system. A configuração padrão é system.

Firewall Backend: Seleciona a implementação de back-end do firewall; nftables ou iptables(padrão). Isso se aplica a quase tudo, com exceção das regras diretas e de passagem, que sempre usam os backends tradicionais iptables, ip6tables e ebtables.


Conclusão

Através deste artigo foi possível entender como funciona o Firewalld compreendendo sua estrutura e conceito.

Se você gostou deste post e através dele pude lhe ajudar, o que acha de aproximarmos nosso contato? Siga meu blog e me adicione no Linkedin, aproveite para classificar algumas das minhas competências/recomendações, este simples gesto faz toda a diferença.

Att.

Rafael Oliveira
SysAdmin

Você pode compartilhar esse artigo.

Siga o Blog Via E-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 47 outros assinantes

Sobre o Autor

Rafael Oliveira Maria - Linux

Rafael Oliveira

Bacharel em Sistemas de Informação, SysAdmin, Professor, Blogueiro e Entusiasta Linux.

Certificados:

LPIC-1-Large
LPIC-2
LinuxPlus Logo Certified
itil-foundation-digital-badge

Gostou do conteúdo? Ajude-me a manter o blog.

PicPay - Linux

Aceitamos pagamentos e doações via PicPay link picpay.me/rafaeloliveimar

Ficou com dúvida? Alguma Sugestão ou Elogio? Deixe seu comentário!