Le preguntamos a Gemini, la inteligencia artificial de Google cómo instalar y configurar FirewallD en linux
Explicanos detalladamente cómo instalar y configurar FirewallD en linuxInstalar y configurar FirewallD en Linux es el método estándar para gestionar el firewall netfilter del kernel en distribuciones basadas en Red Hat (como Fedora, CentOS y RHEL), aunque también se puede usar en Debian/Ubuntu. FirewallD es dinámico, lo que significa que puedes aplicar cambios sin reiniciar el servicio.
Aquí te explicamos detalladamente cómo instalar y configurarlo.
1. Instalación de FirewallD 🛡️
FirewallD viene preinstalado en la mayoría de las distribuciones modernas basadas en Red Hat. Si no lo está, o si usas otra distribución, el proceso es el siguiente:
En Distribuciones Basadas en Fedora/CentOS/RHEL:Bash# Instalar FirewallD
sudo dnf install firewalld -y
# Opcional: Instalar la herramienta gráfica (firewall-config)
sudo dnf install firewall-config -y
En Distribuciones Basadas en Debian/Ubuntu:
Aunque UFW es el predeterminado, puedes instalar y usar FirewallD:
Bash# Instalar FirewallD
sudo apt update
sudo apt install firewalld -y
# Detener y deshabilitar UFW para evitar conflictos
sudo ufw disable
2. Gestión del Servicio (systemd)
Después de la instalación, debes asegurarte de que FirewallD esté activo e iniciado.
Iniciar el Servicio:
Bash
sudo systemctl start firewalld
Habilitar al Inicio:
Bash
sudo systemctl enable firewalld
Verificar el Estado:
Bash
sudo systemctl status firewalld
El resultado debe mostrar Active: active (running).
3. Conceptos Clave de Configuración: Zonas
FirewallD utiliza el concepto de Zonas para definir niveles de confianza para diferentes ubicaciones y situaciones. Cada interfaz de red (eth0, wlan0) debe estar asignada a una zona.
A. Verificar el Estado y Zonas Actuales
Bash
# Ver el estado general y la zona predeterminada
sudo firewall-cmd --get-default-zone
# Ver qué zona está asignada a cada interfaz
sudo firewall-cmd --get-active-zones
B. Cambiar la Zona de una Interfaz
Generalmente, las interfaces externas se asignan a public y las internas a home o internal.
Bash
# Ejemplo: Asignar la interfaz eth0 a la zona 'public'
sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
# Aplicar los cambios
sudo firewall-cmd --reload
4. Configuración del Firewall: Servicios y Puertos
La configuración se realiza siempre especificando la Zona y utilizando la opción --permanent para que el cambio persista después de un reinicio.
A. Abrir Servicios Predefinidos
FirewallD conoce los puertos estándar para muchos servicios (SSH, HTTP, HTTPS, etc.).
Bash
# Ver la lista de servicios predefinidos disponibles
sudo firewall-cmd --get-services
# Abrir el servicio SSH en la zona pública (acceso remoto)
sudo firewall-cmd --zone=public --add-service=ssh --permanent
# Abrir el servicio HTTP (servidor web)
sudo firewall-cmd --zone=public --add-service=http --permanent
# Aplicar los cambios
sudo firewall-cmd --reload
B. Abrir Puertos Específicos
Si un servicio usa un puerto no estándar (ej., 8080) o no está en la lista predefinida.
Bash
# Abrir el puerto TCP 8080 en la zona pública
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
# Abrir el puerto UDP 12345
sudo firewall-cmd --zone=public --add-port=12345/udp --permanent
# Aplicar los cambios
sudo firewall-cmd --reload
C. Bloquear y Eliminar Reglas
Para cerrar un puerto o servicio que ya no necesitas, utiliza --remove-service o --remove-port.
Bash
# Cerrar el puerto 8080
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# Aplicar los cambios
sudo firewall-cmd --reload
5. Verificación Final de las Reglas
Siempre verifica las reglas para asegurarte de que tu configuración se haya aplicado correctamente.
Bash
# Ver todas las reglas activas para la zona 'public'
sudo firewall-cmd --list-all --zone=public
La salida mostrará la interfaz, los servicios (services), los puertos (ports), y otras reglas configuradas para esa zona. Con esta configuración, tu sistema Linux estará protegido y solo permitirá el tráfico explícitamente autorizado.
sudo apt update
sudo apt install firewalld -y
# Detener y deshabilitar UFW para evitar conflictos
sudo ufw disable
2. Gestión del Servicio (systemd)
Después de la instalación, debes asegurarte de que FirewallD esté activo e iniciado.
Iniciar el Servicio:
Bash
sudo systemctl start firewalld
Habilitar al Inicio:
Bash
sudo systemctl enable firewalld
Verificar el Estado:
Bash
sudo systemctl status firewalld
El resultado debe mostrar Active: active (running).
3. Conceptos Clave de Configuración: Zonas
FirewallD utiliza el concepto de Zonas para definir niveles de confianza para diferentes ubicaciones y situaciones. Cada interfaz de red (eth0, wlan0) debe estar asignada a una zona.
Bash
# Ver el estado general y la zona predeterminada
sudo firewall-cmd --get-default-zone
# Ver qué zona está asignada a cada interfaz
sudo firewall-cmd --get-active-zones
B. Cambiar la Zona de una Interfaz
Generalmente, las interfaces externas se asignan a public y las internas a home o internal.
Bash
# Ejemplo: Asignar la interfaz eth0 a la zona 'public'
sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
# Aplicar los cambios
sudo firewall-cmd --reload
4. Configuración del Firewall: Servicios y Puertos
La configuración se realiza siempre especificando la Zona y utilizando la opción --permanent para que el cambio persista después de un reinicio.
A. Abrir Servicios Predefinidos
FirewallD conoce los puertos estándar para muchos servicios (SSH, HTTP, HTTPS, etc.).
Bash
# Ver la lista de servicios predefinidos disponibles
sudo firewall-cmd --get-services
# Abrir el servicio SSH en la zona pública (acceso remoto)
sudo firewall-cmd --zone=public --add-service=ssh --permanent
# Abrir el servicio HTTP (servidor web)
sudo firewall-cmd --zone=public --add-service=http --permanent
# Aplicar los cambios
sudo firewall-cmd --reload
B. Abrir Puertos Específicos
Si un servicio usa un puerto no estándar (ej., 8080) o no está en la lista predefinida.
Bash
# Abrir el puerto TCP 8080 en la zona pública
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
# Abrir el puerto UDP 12345
sudo firewall-cmd --zone=public --add-port=12345/udp --permanent
# Aplicar los cambios
sudo firewall-cmd --reload
C. Bloquear y Eliminar Reglas
Para cerrar un puerto o servicio que ya no necesitas, utiliza --remove-service o --remove-port.
Bash
# Cerrar el puerto 8080
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# Aplicar los cambios
sudo firewall-cmd --reload
5. Verificación Final de las Reglas
Siempre verifica las reglas para asegurarte de que tu configuración se haya aplicado correctamente.
Bash
# Ver todas las reglas activas para la zona 'public'
sudo firewall-cmd --list-all --zone=public
La salida mostrará la interfaz, los servicios (services), los puertos (ports), y otras reglas configuradas para esa zona. Con esta configuración, tu sistema Linux estará protegido y solo permitirá el tráfico explícitamente autorizado.