Rocky Linux / Administrar zonas, servicios y puertos con firewalld
En Rocky Linux, firewalld permite gestionar zonas, servicios y puertos mediante firewall-cmd. Antes de modificar un servidor remoto, identifique la zona activa, conserve la configuración y prepare acceso por consola. Pruebe los cambios temporales y una conexión SSH nueva antes de decidir qué reglas guardar.
Verificar el estado de firewalld y las zonas activas
sudo firewall-cmd --state
sudo systemctl status firewalld
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --get-default-zone
Una zona agrupa reglas y un nivel de confianza que se asignan a interfaces o direcciones de origen. Si omite --zone, se consulta o modifica la zona predeterminada, que puede no ser la de la conexión que investiga. Todos los bloques que muestran public son ejemplos: sustitúyalo por la zona verificada y ejecute solo los cambios que necesite. Conserve la salida de las reglas temporales y permanentes antes de modificarlas.
Los conceptos y comandos básicos de Rocky Linux se pueden consultar en la guía oficial de firewalld de Rocky Linux.
Iniciar y ejecutar automáticamente el servicio de cortafuegos
sudo systemctl enable --now firewalld
Verifique el estado.
systemctl is-enabled firewalld
systemctl is-active firewalld
Iniciar firewalld cuando estaba detenido también cambia la política efectiva: antes de enable --now, revise sus reglas permanentes y asegure acceso por consola. En producción, permita únicamente los servicios y orígenes necesarios. Los grupos de seguridad de la nube y las listas de control de acceso (ACL) de red pueden imponer restricciones adicionales.
Diferencia entre configuración en tiempo de ejecución y configuración permanente
| Configuración | Momento de aplicación | Características |
|---|---|---|
| Tiempo de ejecución | Inmediatamente después de ejecutar el comando | Puede desaparecer al reiniciar, reiniciar el sistema o recargar, por lo que es adecuado para pruebas seguras. |
| Permanente | --permanent Después de registrar, recargar |
Se mantiene incluso después de reiniciar, pero muchos comandos no se reflejan inmediatamente en tiempo de ejecución. |
Puede añadir una regla temporal y probarla antes de conservarla. El bloque siguiente enseña a guardar la configuración temporal completa: --runtime-to-permanent sobrescribe la permanente con el estado activo de todas las zonas, incluidos otros cambios temporales. Úselo solo después de revisar ese conjunto. Para guardar únicamente HTTP en la zona del ejemplo, puede repetir sudo firewall-cmd --permanent --zone=public --add-service=http una vez verificada la regla temporal, en lugar de guardar todo.
sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --zone=public --query-service=http
sudo firewall-cmd --runtime-to-permanent
Por el contrario, si se cambió a --permanent, debe revisarse y recargarse para reflejarse en tiempo de ejecución.
sudo firewall-cmd --reload
Permitir y eliminar servicios
Verificar los servicios definidos
firewall-cmd --get-services
firewall-cmd --info-service=http
Los servicios definidos en firewalld, como HTTP, HTTPS, SSH, es más claro permitirlos por nombre de servicio que por puertos individuales.
Permitir servicios en tiempo de ejecución
sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --zone=public --add-service=https
También se verifica si el servicio realmente está escuchando en el puerto correspondiente.
ss -lntup
Eliminar servicios permitidos
sudo firewall-cmd --zone=public --remove-service=http
Si está realizando administración SSH remota, asegúrese de tener medios de recuperación de consola y otras reglas permitidas antes de eliminar el servicio SSH.
Administrar puertos personalizados
Permitir puertos TCP o UDP
sudo firewall-cmd --zone=public --add-port=8443/tcp
sudo firewall-cmd --zone=public --add-port=5000/udp
TCP y UDP son reglas separadas. Verifique el protocolo y el puerto reales en la documentación de la aplicación y solo abra los necesarios.
Permitir rangos
sudo firewall-cmd --zone=public --add-port=6000-6010/tcp
Antes de abrir un rango amplio, confirme el rango realmente necesario para la aplicación y, si es posible, limite también las direcciones de origen.
Eliminar puerto y verificar
sudo firewall-cmd --zone=public --remove-port=8443/tcp
sudo firewall-cmd --zone=public --list-ports
Ver reglas actuales
sudo firewall-cmd --zone=public --list-all
sudo firewall-cmd --list-all-zones
sudo firewall-cmd --permanent --zone=public --list-all
Si la salida en tiempo de ejecución y la salida de --permanent son diferentes, el funcionamiento después de la siguiente recarga o reinicio puede variar. Compare ambas configuraciones antes de completar los cambios.
Permitir solo ciertas direcciones de origen
Restringir el origen de SSH mediante reglas 'rich rule'
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.0.2.10/32" service name="ssh" accept'
192.0.2.10 es una dirección reservada para documentación. Sustitúyala por la dirección de origen que realmente ve el servidor para la conexión administrativa, teniendo en cuenta NAT, VPN o saltos intermedios. La regla mostrada solo cubre IPv4; revise también el acceso por IPv6 y otras zonas si se utiliza.
Probar antes de eliminar la autorización general de SSH
Pruebe una conexión SSH nueva desde el origen autorizado y compruebe el acceso de recuperación por consola antes de retirar la autorización general. Revise también puertos abiertos explícitamente, otras reglas y zonas: una regla restringida no anula otra que ya permite acceso más amplio. Mantenga la sesión existente mientras confirma la nueva política y conserve solo los cambios verificados.
sudo firewall-cmd --zone=public --list-rich-rules
sudo firewall-cmd --zone=public --remove-service=ssh
En entornos donde la IP del administrador cambia dinámicamente, puede quedar bloqueado debido a la restricción de origen. Considere usar IP fija, VPN o red de gestión dedicada.
Conectar interfaces de red con zonas
nmcli connection show --active
firewall-cmd --get-active-zones
Al especificar la zona del perfil de conexión de NetworkManager, se puede gestionar de manera consistente la conexión de red y la zona de firewalld.
sudo nmcli connection modify 'System eth0' connection.zone public
sudo nmcli connection up 'System eth0'
El nombre de la conexión varía según el entorno. Al volver a activar un perfil de red remoto, la conexión puede interrumpirse, por lo que se recomienda asegurarse de tener acceso a la consola y aplicarlo durante el tiempo de mantenimiento.
Orden de verificación cuando surgen problemas
- Verifique el estado del servicio con
systemctl is-active firewalld. - Confirme la zona a la que pertenece la interfaz con
firewall-cmd --get-active-zones. - Compare los resultados de
--list-allentre la configuración en tiempo de ejecución y la configuración permanente. - Verifique si la aplicación recibe en la dirección y el puerto reales con
ss -lntup. - Revise los grupos de seguridad de la nube, las ACL del enrutador y las reglas de NAT.
- Verifique si SELinux está bloqueando y revise los registros de la aplicación.
Incluso si abre el puerto en el cortafuegos, no se puede conectar desde el exterior si el programa no se está ejecutando o si está vinculado solo a la dirección de loopback.
Preguntas frecuentes
No se conecta inmediatamente aunque se haya agregado --permanent.
La configuración permanente normalmente se refleja en el tiempo de ejecución después de recargar. Si necesita proteger la conexión actual, utilice primero una regla de tiempo de ejecución y luego guárdela.
Se abrió el puerto, pero no se puede acceder desde el exterior.
Debe verificar conjuntamente la zona activa, la dirección de recepción del servicio, el cortafuegos de la nube, NAT y SELinux. firewalld es solo una capa en la ruta de comunicación.
¿Cuál es mejor, usar servicio o puerto?
Si hay un servicio estándar definido, el nombre del servicio es más fácil de leer. Para puertos personalizados o aplicaciones separadas, use reglas de puerto especificando el protocolo.
¿Se puede detener firewalld?
Incluso para verificar problemas, detener completamente el firewall en un servidor en operación es riesgoso. Revise los registros y las reglas actuales y ajuste temporalmente solo el alcance necesario.




