Diagram showing firewalld architecture, zones like public and DMZ, rule configurations, service definitions, ports and protocols, ICMP blocking, interfaces, management commands, and tools for Linux firewall

Firewalld es un gestor dinámico de firewall para Linux que permite controlar qué conexiones de red están permitidas o bloqueadas sin necesidad de modificar manualmente las reglas del firewall del kernel.

En lugar de trabajar directamente con iptables o nftables, firewalld proporciona una capa de administración más sencilla y flexible. En las distribuciones modernas (Fedora, RHEL, CentOS Stream, Rocky Linux, AlmaLinux, etc.), firewalld utiliza nftables como backend por defecto.

¿Para qué sirve?

Su principal función es proteger el sistema de accesos no autorizados mediante reglas que controlan el tráfico de red entrante y saliente.

Por ejemplo, con firewalld puedes:

  • Permitir conexiones SSH (puerto 22).
  • Permitir HTTP (puerto 80) y HTTPS (puerto 443).
  • Bloquear direcciones IP específicas.
  • Abrir o cerrar puertos.
  • Restringir el acceso a determinados servicios.
  • Asignar diferentes políticas según la red a la que esté conectado el equipo.

¿Cómo funciona entonces un Firewall?

Diagram of Linux firewall using iptables to manage malicious and legitimate traffic flow between WAN and LAN networks
Ejemplo de como funciona un Firewall en un sistema operativo Gnu/Linux

Conceptos principales

1. Zonas (Zones)

Una zona representa el nivel de confianza de una conexión de red.

Las zonas más comunes son:

ZonaDescripción
publicRedes públicas (cafeterías, hoteles, Internet). Es la más utilizada.
homeRed doméstica confiable.
workRed de oficina.
internalRed interna protegida.
trustedTodo el tráfico está permitido.
blockTodo el tráfico entrante es descartado.
dropSimilar a block, pero sin responder al origen.
dmzPara servidores expuestos a Internet.

Servicios en el Firewall

En lugar de recordar números de puertos, firewalld utiliza servicios.

ServicioPuerto
SSH22
HTTP80
HTTPS443
DNS53
FTP21
Samba445

Por eso suele ser preferible ejecutar:

firewall-cmd --add-service=http

en vez de ejecutar

firewall-cmd --add-port=80/tcp

Puertos

También es posible abrir puertos específicos.

sudo firewall-cmd --add-port=8080/tcp

Rich Rules

Las rich rules permiten crear reglas avanzadas.

Por ejemplo:

  • Bloquear una IP.
  • Permitir únicamente una subred.
  • Registrar conexiones.
  • Limitar conexiones.
  • Filtrar por protocolo.

Ejemplo:

sudo firewall-cmd --permanent \ --add-rich-rule='rule family="ipv4" source address="192.168.1.50" drop'

Configuración temporal y permanente

Una característica importante de firewalld es que diferencia entre:

Configuración temporal

Se pierde al reiniciar el sistema.

sudo firewall-cmd --add-service=http

Configuración permanente

Permanece después de reiniciar.

sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –reload

Ventajas de firewalld

  • Administración sencilla mediante comandos.
  • Cambios sin reiniciar el firewall.
  • Uso de zonas para distintos niveles de confianza.
  • Compatibilidad con IPv4 e IPv6.
  • Integración con NetworkManager.
  • Basado en nftables, más moderno y eficiente que iptables.
  • Soporte para reglas avanzadas mediante rich rules.

¿Dónde se utiliza?

Es habitual encontrar firewalld en:

  • Fedora
  • RHEL (Red Hat Enterprise Linux)
  • CentOS Stream
  • Rocky Linux
  • AlmaLinux
  • Oracle Linux

Comandos útiles para trabajar en el proyecto

NºComandoDescripción
1sudo systemctl status firewalldVer el estado del servicio.
2sudo systemctl start firewalldIniciar firewalld.
3sudo systemctl stop firewalldDetener firewalld.
4sudo systemctl restart firewalldReiniciar firewalld.
5sudo systemctl enable firewalldHabilitar al iniciar el sistema.
6sudo systemctl disable firewalldDeshabilitar el inicio automático.
7sudo firewall-cmd --stateMostrar si firewalld está ejecutándose.
8sudo firewall-cmd --reloadRecargar la configuración sin reiniciar el servicio.
9sudo firewall-cmd --complete-reloadRecarga completa del firewall.
10sudo firewall-cmd --get-default-zoneMostrar la zona predeterminada.
11sudo firewall-cmd --set-default-zone=publicCambiar la zona predeterminada.
12sudo firewall-cmd --get-active-zonesMostrar las zonas activas.
13sudo firewall-cmd --list-allMostrar la configuración de la zona activa.
14sudo firewall-cmd --list-all-zonesMostrar todas las zonas.
15sudo firewall-cmd --get-servicesListar todos los servicios disponibles.
16sudo firewall-cmd --list-servicesMostrar los servicios permitidos.
17sudo firewall-cmd --add-service=httpPermitir HTTP temporalmente.
18sudo firewall-cmd --permanent --add-service=httpPermitir HTTP permanentemente.
19sudo firewall-cmd --permanent --add-service=httpsPermitir HTTPS permanentemente.
20sudo firewall-cmd --permanent --remove-service=httpEliminar HTTP de los servicios permitidos.
21sudo firewall-cmd --add-port=8080/tcpAbrir un puerto temporalmente.
22sudo firewall-cmd --permanent --add-port=8080/tcpAbrir un puerto permanentemente.
23sudo firewall-cmd --permanent --remove-port=8080/tcpCerrar un puerto.
24sudo firewall-cmd --list-portsMostrar los puertos abiertos.
25sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.10" drop'Bloquear una IP.
26sudo firewall-cmd --list-rich-rulesMostrar las reglas avanzadas.
27sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.10" drop'Eliminar una regla de bloqueo.
28sudo firewall-cmd --zone=public --add-interface=enp0s3Asociar una interfaz a una zona.
29sudo firewall-cmd --zone=public --list-interfacesMostrar las interfaces de una zona.
30sudo firewall-cmd --panic-on / sudo firewall-cmd --panic-offActivar o desactivar el modo pánico (bloquea todo el tráfico).

En resumen, firewalld es la herramienta que administra las reglas del firewall de Linux de forma dinámica y sencilla, actuando como intermediario entre el administrador del sistema y el motor de filtrado del kernel (nftables en la mayoría de las distribuciones actuales). Permite proteger el sistema controlando qué tráfico de red puede entrar o salir, sin necesidad de editar reglas complejas directamente.

Deja una respuesta

Bienvenidos 🙂

Bienvenidos a mi página web personal. Mi nombre es Luis, me gusta enseñar, programar y tomar litros y litros de café.

En esta web vas a encontrar materiales sobre educación, programación, Gnu/Linux, software libre y mucho más.

Esta web busca brindar información sobre las asignaturas que imparto en DGETP-UTU, así como proyectos personales y otras cosas.

Gracias por ser parte de esta hermosa comunidad.

Formas de contacto

Descubre más desde Profeluisfagundez

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo