Foi lançado o release do firewall dinâmico firewalld 1.0, implementado como uma camada sobre os filtros de pacotes nftables e iptables. O firewalld é executado como um processo em segundo plano, permitindo a alteração dinâmica das regras do filtro de pacotes através do D-Bus, sem a necessidade de reiniciar as regras do filtro de pacotes e sem interromper as conexões estabelecidas. O projeto já é utilizado em várias distribuições Linux, incluindo RHEL 7+, Fedora 18+ e SUSE/openSUSE 15+. O código do firewalld está escrito em Python e é distribuído sob a licença GPLv2.
Para gerenciar o firewall, utiliza-se a ferramenta firewall-cmd, que, ao criar regras, se baseia não em endereços IP, interfaces de rede e números de porta, e a partir de nomes de serviços (por exemplo, para abrir acesso ao SSH, é necessário executar "firewall-cmd —add —service=ssh", para fechar o SSH — "firewall-cmd —remove —service=ssh"). A configuração do firewall também pode ser alterada através da interface gráfica firewall-config (GTK) e do applet firewall-applet (Qt). O suporte para controle do firewall através da API D-BUS do firewalld está presente em projetos como NetworkManager, libvirt, podman, docker e fail2ban.
A mudança significativa no número da versão está relacionada à introdução de alterações que quebram a compatibilidade retroativa e mudam o comportamento do gerenciamento de zonas. Todos os parâmetros de filtragem definidos em uma zona agora são aplicados apenas ao tráfego destinado ao host onde o firewalld está em execução, sendo necessário configurar políticas para a filtragem de tráfego em trânsito. As mudanças mais notáveis incluem:
- Foi declarado obsoleto o backend que permitia operar sobre iptables. O suporte ao iptables será mantido no futuro próximo, mas esse backend não será mais desenvolvido.
- O modo intra-zone-forwarding foi ativado por padrão para todas as novas zonas, permitindo a livre movimentação de pacotes entre interfaces de rede ou fontes de tráfego dentro de uma única zona (pública, bloqueada, confiável, interna, etc.). Para reverter o comportamento anterior e proibir o redirecionamento de pacotes dentro de uma zona, pode-se usar o comando 'firewall-cmd --permanent --zone public --remove-forward'.
- As regras relacionadas à tradução de endereços (NAT) foram movidas para a família de protocolos 'inet' (anteriormente eram adicionadas nas famílias 'ip' e 'ip6', o que resultava na necessidade de duplicar regras para IPv4 e IPv6). Essa alteração eliminou duplicatas ao usar ipset — em vez de três cópias de entradas, agora é utilizada uma única.
- A ação «default», indicada no parâmetro «—set-target», agora é equivalente a «reject», ou seja, todos os pacotes que não se enquadrarem em regras especificadas na zona serão bloqueados por padrão. A única exceção são os pacotes ICMP, que continuam a ser permitidos. Para reverter o comportamento antigo para a zona pública «trusted», pode-se usar as regras: firewall-cmd —permanent —new-policy allowForward firewall-cmd —permanent —policy allowForward —set-target ACCEPT firewall-cmd —permanent —policy allowForward —add-ingress-zone public firewall-cmd —permanent —policy allowForward —add-egress-zone trusted firewall-cmd —reload
- Políticas com prioridade positiva agora são executadas imediatamente antes da execução da regra «—set-target catch-all», ou seja, no momento anterior à adição das regras finais drop, reject ou accept, inclusive para zonas em que são utilizadas «—set-target drop|reject|accept».
- O bloqueio de ICMP agora se aplica somente aos pacotes de entrada endereçados ao host atual (input) e não afeta pacotes que são redirecionados entre zonas (forward).
- O serviço tftp-client foi removido, que era destinado ao rastreamento de conexões do protocolo TFTP, mas estava em uma condição inutilizável.
- A interface «direct» foi declarada obsoleta, permitindo a inserção direta de regras de filtragem de pacotes. A necessidade dessa interface desapareceu após a adição da capacidade de filtrar pacotes redirecionados e de saída.
- Adicionado o parâmetro CleanupModulesOnExit, que por padrão foi alterado para o valor «no». Este parâmetro permite controlar a limpeza de módulos do ядро após a conclusão do trabalho do firewalld.
- Permissão para uso de ipset ao definir o sistema de destino (destination).
- Adicionadas definições para os serviços WireGuard, Kubernetes e netbios-ns.
- Implementadas regras de autocompletar para zsh.
- O suporte ao Python 2 foi encerrado.
- Reduzida a lista de dependências. Para o funcionamento do firewalld, além do núcleo Linux, agora são obrigatórias apenas as bibliotecas Python dbus, gobject e nftables, enquanto os pacotes ebtables, ipset e iptables foram classificados como opcionais. Eliminadas as bibliotecas Python decorator e slip das dependências.
Fonte: opennet.ru
