Se anuncia el lanzamiento de firewalld 1.0, un firewall dinámicamente gestionado que funciona como una capa sobre los filtros de paquetes nftables e iptables. Firewalld se ejecuta como un proceso en segundo plano, permitiendo modificar las reglas del filtro de paquetes a través de D-Bus, sin necesidad de reiniciar las reglas del filtro de paquetes ni interrumpir las conexiones establecidas. El proyecto ya se utiliza en muchas distribuciones de Linux, incluidas RHEL 7+, Fedora 18+ y SUSE/openSUSE 15+. El código de firewalld está escrito en Python y se distribuye bajo la licencia GPLv2.
La utilidad firewall-cmd se utiliza para gestionar el cortafuegos, que al crear reglas no se basa en direcciones IP, interfaces de red y números de puerto, y a través de los nombres de servicios (por ejemplo, para abrir el acceso a SSH se debe ejecutar «firewall-cmd —add —service=ssh», y para cerrar SSH — «firewall-cmd —remove —service=ssh»). También se puede usar la interfaz gráfica firewall-config (GTK) y el applet firewall-applet (Qt) para modificar la configuración del firewall. El soporte para la gestión del firewall a través del D-BUS API de firewalld está presente en proyectos como NetworkManager, libvirt, podman, docker y fail2ban.
El cambio significativo en el número de versión se debe a modificaciones que rompen la compatibilidad hacia atrás y alteran el comportamiento en la gestión de zonas. Todos los parámetros de filtrado definidos en la zona ahora se aplican solo al tráfico dirigido al host en el que se ejecuta firewalld, y para filtrar el tráfico de tránsito se requiere configuraciones específicas. Los cambios más destacables son:
- Se declara obsoleto el backend que permitía operar sobre iptables. El soporte para iptables se mantendrá en el futuro previsible, pero este backend no se desarrollará más.
- Se incluye y activa por defecto para todas las nuevas zonas el modo intra-zone-forwarding, que permite el libre movimiento de paquetes entre interfaces de red o fuentes de tráfico dentro de una misma zona (pública, bloqueada, confiable, interna, etc.). Para restaurar el comportamiento anterior y prohibir el reenvío de paquetes dentro de una misma zona, se puede utilizar el comando «firewall-cmd —permanent —zone public —remove-forward».
- Las reglas relacionadas con la traducción de direcciones (NAT) se han trasladado a la familia de protocolos «inet» (anteriormente se añadían a las familias «ip» e «ip6», lo que requería duplicar reglas para IPv4 e IPv6). Este cambio ha permitido eliminar duplicados al usar ipset: en lugar de tres copias de las entradas de ipset, ahora se utiliza una sola.
- La acción "default", indicada en el parámetro "—set-target", ahora es equivalente a "reject", es decir, todos los paquetes que no se ajusten a las reglas específicas en la zona se bloquearán por defecto. Se hace una excepción solo para los paquetes ICMP, que aún se permiten. Para devolver el comportamiento anterior para la zona pública "trusted", se pueden usar las reglas: 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
- Las políticas con prioridad positiva ahora se ejecutan inmediatamente antes de la ejecución de la regla "—set-target catch-all", es decir, en el momento anterior a la adición de las reglas finales drop, reject o accept, incluyendo para las zonas donde se utilizan "—set-target drop|reject|accept".
- El bloqueo de ICMP ahora se aplica solo a los paquetes entrantes dirigidos al host actual (input) y no afecta a los paquetes redirigidos entre zonas (forward).
- Se ha eliminado el servicio tftp-client, que estaba destinado a rastrear conexiones para el protocolo TFTP, pero se encontraba en un estado inutilizable.
- Se ha declarado obsoleto la interfaz "direct", que permitía insertar directamente reglas de filtrado de paquetes. La necesidad de esta interfaz ha desaparecido tras la adición de la capacidad de filtrar paquetes redirigidos y salientes.
- Se ha añadido el parámetro CleanupModulesOnExit, que por defecto se establece en "no". Este parámetro permite gestionar la descarga de módulos del kernel después de que firewalld haya finalizado su trabajo.
- Se ha permitido el uso de ipset al definir el sistema objetivo (destination).
- Se han añadido definiciones de los servicios WireGuard, Kubernetes y netbios-ns.
- Se han implementado reglas de autocompletado para zsh.
- Se ha dejado de dar soporte a Python 2.
- Se ha reducido la lista de dependencias. Para el funcionamiento de firewalld, además del núcleo de Linux, ahora se requieren solo las bibliotecas de Python dbus, gobject y nftables, mientras que los paquetes ebtables, ipset e iptables se consideran opcionales. Se han eliminado las bibliotecas de Python decorator y slip de la lista de dependencias.
Fuente: opennet.ru
