Configurar correctamente la seguridad de un servidor es fundamental para prevenir accesos no autorizados y proteger la información.
En este instructivo vas a aprender a instalar, activar y utilizar firewalld, uno de los firewalls más utilizados en Linux, especialmente en sistemas basados en RHEL como Red Hat Enterprise Linux, Fedora, CentOS, AlmaLinux y Rocky Linux.

Firewalld es desarrollado por Red Hat, Inc. y se destaca por su enfoque moderno basado en zonas, reglas dinámicas y simplicidad de uso, tanto en servidores como en equipos personales.

1. Instalar firewalld

Por defecto ya se encuentra instalado en varias de las distribuciones de RHEL, como puede ser CentOS o Fedora.

Si usás otro sistema operativo podés instalarlo utilizando su gestor de paquetes.

A modo de ejemplo, en sistemas que utilizan APT, ejecutá:

sudo apt update %% sudo apt install firewalld

Para verificar si firewalld está instalado, ejecutá:

firewall-cmd --version

Si el comando devuelve una versión, el firewall ya se encuentra instalado.

2. Activar firewalld

Si instalaste firewalld, es posible que el servicio se encuentre apagado.

Deberás efectuar la siguiente acción:

  • Iniciá el servicio y configurá firewalld para que se ejecute automáticamente al iniciar el sistema:
sudo systemctl enable --now firewalld

Verificá que el servicio esté activo:

systemctl status firewalld

Firewalld permite por defecto las conexiones SSH, por lo que si estás conectado mediante este protocolo no necesitás realizar configuraciones adicionales antes de activarlo.

 

3. Comprender las particularidades de firewalld

Firewalld permite realizar las acciones típicas de cualquier firewall, como permitir o bloquear puertos y servicios, pero introduce algunos conceptos importantes.

  • Reglas permanentes
  • Las reglas que no se configuran como permanentes se pierden al reiniciar el servicio.

  • Para evitarlo, usá el flag –permanent al crear las reglas.

Luego de crear reglas permanentes, es necesario recargar la configuración.

  • Zonas

Otra de las particularidades de firewalld es que trabaja utilizando zonas.

Cada zona tiene un nombre y una serie de reglas.

Podés obtener todas las zonas creadas con:

firewall-cmd --get-zones

Esto solo te devolverá los nombres. Si querés saber las reglas que contiene cada zona podemos utilizar.

firewall-cmd --list-all

A su vez, podés obtener la zona por defecto utilizando:
firewall-cmd --get-default-zone

Si no indicás a que zona estás agregando la regla, entonces firewalld asumirá que te refieres a la zona por defecto.

Seguramente la zona por defecto sea public, la cual es una zona pensada para las redes públicas (es decir, externas) por lo que su comportamiento por defecto es denegar todo lo que no hayamos habilitado.

Otra zona que suele incluirse inicialmente es trusted, la cual acepta todas las conexiones, pensada únicamente para conexiones en las que confiemos al 100%.

Si por ejemplo querés agregar una regla a trusted, agregá a tu comando –zone=trusted para indicarle a firewalld que la regla no debe de ser agregada a la zona por defecto.

Si preferís, podés modificar la zona por defecto. A modo de ejemplo, si querés cambiar la zona por defecto a home, el comando a utilizar será:

firewall-cmd --set-default-zone=home

4. Crear reglas de firewall

Para esta guía asumimos que queremos agregar la mayoría de las reglas a la zona por defecto, por lo que no indicaremos –zone.

Asumiremos también que la zona por defecto es public.

En general firewalld es un firewall simple de configurar. Con unas pocas palabras reservadas podés realizar gran parte de las acciones habituales para un firewall, como permitir y denegar conexiones a:

  • Un puerto.
  • Un rango de puertos.
  • Un servicio (como http, https, etc)
  • Una IP.
  • Una subred.

Para esto contaremos con la palabra reservada –add. Deberemos de completar con:

  • add-port: para los puertos.
  • add-service: para los servicios.
  • add-source: para las IPs.

Entonces, si querés permitir el acceso al puerto 80 podés utilizar:

firewall-cmd --permanent --add-port=80/TCP

De forma muy similar podés abrir un rango de puertos, por ejemplo del 1000 al 2000:

firewall-cmd --permanent --add-port=1000-2000/TCP

Del mismo modo, si querés permitir el servicio http podés utilizar:

firewall-cmd --permanent --add-service=http

Como nota, podés obtener todos los servicios disponibles con:

firewall-cmd --get-services

En el caso de las IPs será similar a los casos anteriores:

firewall-cmd --permanent --add-source=1.2.3.4

Si querés permitir una subred, entonces deberás usar la notación CIDR:

firewall-cmd --permanent --add-source=1.2.3.4/24

Para aplicar los cambios en reglas permanentes, deberás ejecutar:

firewall-cmd --reload

 

5. Eliminar las reglas

En el caso de querer eliminar una regla, podés usar la palabra reservada –remove

A modo de ejemplo con la primera regla:

firewall-cmd --permanent --remove-port=80/TCP

 

Con estos pasos ya podés instalar, activar y administrar firewalld de forma segura, controlando qué conexiones están permitidas en tu servidor.

Si luego de seguir estos pasos aún tenés alguna consulta, no dudes en comunicarte con nuestro Equipo de Soporte por WhatsApp o mediante un ticket para recibir asistencia.