Red Hat, Rocky Linux y AlmaLinux: guía de administración
Si Debian y Ubuntu dominan la web y la nube pública, el ecosistema Red Hat reina en las infraestructuras empresariales: banca, seguros, sector público, telecomunicaciones. Saber administrar un sistema RHEL (Red Hat Enterprise Linux) o sus derivados es una competencia muy demandada, y además es la base de las certificaciones RHCSA y RHCE. En esta guía cubrimos la gestión de paquetes con DNF y RPM, la seguridad con SELinux y firewalld, así como la gestión de suscripciones de Red Hat.
1. El ecosistema RHEL y el fin de CentOS
Un poco de historia
Durante quince años, CentOS fue la copia gratuita y compatible a nivel binario de RHEL: el mismo sistema, sin el soporte comercial. En 2020, Red Hat puso fin a CentOS Linux en favor de CentOS Stream, que ya no es una copia de RHEL sino su versión de desarrollo: Stream se sitúa aguas arriba de RHEL, no aguas abajo.
Esta decisión hizo nacer de inmediato dos sucesores comunitarios, fundados respectivamente por el creador original de CentOS y por el editor CloudLinux:
- Rocky Linux: proyecto comunitario impulsado por la Rocky Enterprise Software Foundation;
- AlmaLinux: proyecto impulsado por la fundación AlmaLinux, con un objetivo de compatibilidad ABI (y ya no copia bit a bit desde 2023).
¿Qué distribución elegir?
| Distribución | Posicionamiento | Coste | Uso recomendado |
|---|---|---|---|
| RHEL | Versión comercial de referencia | Suscripción de pago (gratuita hasta 16 máquinas para desarrollo) | Producción con soporte del fabricante |
| Rocky Linux | Reconstrucción 1:1 de RHEL | Gratuito | Producción sin necesidad de soporte |
| AlmaLinux | Compatible ABI con RHEL | Gratuito | Producción, correcciones a veces más rápidas |
| CentOS Stream | Aguas arriba de RHEL, rolling | Gratuito | Desarrollo, pruebas, contribución |
| Fedora | Laboratorio de innovación de Red Hat | Gratuito | Puesto de trabajo, vigilancia tecnológica |
Para un servidor de producción sin contrato de soporte, Rocky Linux y AlmaLinux son opciones equivalentes en la práctica: mismos paquetes, mismas versiones, y la misma documentación de RHEL es aplicable.
# Identificar la distribución y la versión
cat /etc/redhat-release
cat /etc/os-release
2. DNF: el gestor de paquetes
DNF (Dandified YUM) sustituye a YUM desde RHEL 8. El comando yum sigue existiendo, pero no es más que un enlace simbólico a dnf.
Operaciones básicas
# Buscar un paquete
dnf search nginx
# Mostrar la información de un paquete
dnf info nginx
# Instalar un paquete
sudo dnf install nginx
# Eliminar un paquete
sudo dnf remove nginx
# Actualizar todo el sistema
sudo dnf update
# Comprobar las actualizaciones disponibles sin aplicarlas
dnf check-update
# Actualizar únicamente las correcciones de seguridad
sudo dnf update --security
# Limpiar las dependencias huérfanas
sudo dnf autoremove
A diferencia de APT, no existe un equivalente de apt update que haya que lanzar manualmente: DNF actualiza sus metadatos automáticamente cuando han caducado.
El historial de transacciones: la gran baza de DNF
DNF registra cada transacción y permite deshacerla, algo que APT no sabe hacer de forma nativa:
# Listar las transacciones
dnf history
# Detalle de una transacción
dnf history info 42
# Deshacer una transacción (desinstala lo que se instaló, etc.)
sudo dnf history undo 42
# Volver a ejecutar una transacción deshecha
sudo dnf history redo 42
Los módulos (Application Streams)
Desde RHEL 8, algunos programas se distribuyen en «módulos» que ofrecen varias versiones mayores en paralelo:
# Listar los módulos disponibles
dnf module list
# Ver las versiones (streams) disponibles de un módulo
dnf module list nodejs
# Activar e instalar una versión concreta
sudo dnf module enable nodejs:20
sudo dnf module install nodejs:20
# Cambiar de versión: reiniciar y después activar el otro stream
sudo dnf module reset nodejs
sudo dnf module enable nodejs:22
Gestión de repositorios
# Listar los repositorios activos
dnf repolist
# Listar todos los repositorios, incluidos los desactivados
dnf repolist --all
# Activar / desactivar un repositorio de forma permanente
sudo dnf config-manager --set-enabled crb
sudo dnf config-manager --set-disabled crb
# Instalar un paquete desde un repositorio desactivado, de forma puntual
sudo dnf --enablerepo=crb install nom-du-paquet
3. Archivos .repo y EPEL
Anatomía de un archivo .repo
Los repositorios se definen en archivos /etc/yum.repos.d/*.repo:
# /etc/yum.repos.d/exemple.repo
[exemple]
name=Mon depot exemple
baseurl=https://depot.exemple.com/el9/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://depot.exemple.com/RPM-GPG-KEY-exemple
Las variables $releasever (versión mayor) y $basearch (arquitectura) se sustituyen automáticamente, lo que permite escribir archivos .repo portables.
EPEL: el repositorio indispensable
EPEL (Extra Packages for Enterprise Linux) es un repositorio mantenido por la comunidad Fedora que proporciona miles de paquetes ausentes en RHEL: htop, ncdu, fail2ban, certbot, etc.
# Instalación en Rocky/Alma 9
sudo dnf install epel-release
# En RHEL, el paquete viene directamente del repositorio de Fedora
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
# Muchos paquetes de EPEL exigen también el repositorio CRB (CodeReady Builder)
sudo dnf config-manager --set-enabled crb
4. RPM: el nivel bajo
Al igual que dpkg en Debian, RPM es la herramienta de bajo nivel subyacente a DNF.
# Listar todos los paquetes instalados
rpm -qa
# Comprobar si un paquete está instalado y su versión
rpm -q nginx
# Listar los archivos de un paquete
rpm -ql nginx
# Encontrar el paquete propietario de un archivo
rpm -qf /etc/nginx/nginx.conf
# Mostrar la información de un paquete
rpm -qi nginx
# Verificar la integridad de los archivos de un paquete
# (archivos modificados, permisos cambiados...)
rpm -V nginx
# Instalar un .rpm local: es preferible dnf, que resuelve las dependencias
sudo dnf install ./paquet.rpm
5. SELinux: la seguridad reforzada
SELinux (Security-Enhanced Linux) está activado por defecto en toda la familia RHEL. Es un sistema de control de acceso obligatorio (MAC): incluso la cuenta root está limitada por la política. Primera regla de oro: nunca desactives SELinux para «resolver» un problema; aprende más bien a diagnosticarlo.
Los modos
# Mostrar el modo actual
getenforce
# Estado detallado
sestatus
# Pasar temporalmente al modo permisivo (registra sin bloquear)
sudo setenforce 0
# Volver al modo enforcing
sudo setenforce 1
El modo permanente se configura en /etc/selinux/config con tres valores posibles: enforcing (la política se aplica), permissive (las violaciones se registran pero se permiten, útil para el diagnóstico) y disabled (a evitar).
Los contextos
Cada archivo, proceso y puerto lleva una etiqueta de contexto. La mayoría de los bloqueos provienen de un contexto de archivo incorrecto:
# Ver el contexto de los archivos (opción -Z, presente en muchas herramientas)
ls -Z /var/www/html
# Ver el contexto de los procesos
ps auxZ | grep nginx
# Corregir el contexto de un directorio movido o copiado
sudo restorecon -Rv /var/www/html
# Hacer permanente un contexto para una ruta no estándar
sudo semanage fcontext -a -t httpd_sys_content_t "/srv/monsite(/.*)?"
sudo restorecon -Rv /srv/monsite
# Autorizar un puerto no estándar para un servicio
sudo semanage port -a -t http_port_t -p tcp 8081
Caso típico: mueves archivos con mv desde tu directorio personal a /var/www/html, y Nginx devuelve un error 403. El movimiento conserva el contexto de origen (user_home_t) en lugar de httpd_sys_content_t. Un restorecon -Rv corrige el problema.
Diagnosticar con sealert
# Instalar las herramientas de análisis
sudo dnf install setroubleshoot-server
# Analizar las denegaciones recientes con explicaciones y sugerencias
sudo sealert -a /var/log/audit/audit.log
# Búsqueda directa en el registro de auditoría
sudo ausearch -m AVC -ts recent
Los booleanos
Los booleanos son interruptores que activan permisos predefinidos sin modificar la política:
# Listar los booleanos relacionados con httpd
getsebool -a | grep httpd
# Permitir que un servidor web abra conexiones de red salientes
# (indispensable para un reverse proxy); -P hace el ajuste permanente
sudo setsebool -P httpd_can_network_connect on
# Permitir que httpd se conecte a una base de datos
sudo setsebool -P httpd_can_network_connect_db on
6. firewalld: el cortafuegos
firewalld es el cortafuegos por defecto de la familia RHEL. Se basa en la noción de zonas: cada interfaz de red se asocia a una zona que define el nivel de confianza y los servicios permitidos.
# Estado del cortafuegos
sudo firewall-cmd --state
# Zona por defecto y zonas activas
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zones
# Verlo todo sobre la zona actual
sudo firewall-cmd --list-all
Permitir servicios y puertos
# Listar los servicios predefinidos disponibles
sudo firewall-cmd --get-services
# Permitir HTTP y HTTPS de forma permanente
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# Permitir un puerto arbitrario
sudo firewall-cmd --permanent --add-port=8080/tcp
# Retirar un servicio
sudo firewall-cmd --permanent --remove-service=http
# Aplicar los cambios permanentes
sudo firewall-cmd --reload
Trampa clásica: sin la opción --permanent, la regla está activa de inmediato pero desaparece al reiniciar; con --permanent, sobrevive al reinicio pero solo se aplica tras un --reload. Para obtener ambos efectos a la vez, ejecuta el comando dos veces (con y sin --permanent) o usa --permanent seguido de --reload.
# Cambiar la zona de una interfaz
sudo firewall-cmd --permanent --zone=internal --change-interface=eth1
sudo firewall-cmd --reload
7. Suscripciones RHEL: subscription-manager
Particularidad de RHEL respecto a Rocky y Alma: el acceso a los repositorios exige una suscripción registrada. Desde 2023, Red Hat ofrece una suscripción de desarrollador gratuita que cubre hasta 16 sistemas.
# Registrar la máquina en el portal de Red Hat
sudo subscription-manager register --username votre_login
# Comprobar el estado
sudo subscription-manager status
# Listar los repositorios disponibles a través de la suscripción
sudo subscription-manager repos --list-enabled
# Activar un repositorio adicional
sudo subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms
# Anular el registro de la máquina (antes de retirarla de servicio)
sudo subscription-manager unregister
En Rocky Linux y AlmaLinux, subscription-manager no existe: los repositorios son públicos, como en Debian.
8. Si vienes de Debian: tabla de correspondencias
Si ya conoces APT, esta tabla te ahorrará tiempo:
| Operación | Debian/Ubuntu (apt) | RHEL/Rocky/Alma (dnf) |
|---|---|---|
| Actualizar los índices | apt update | Automático (dnf makecache para forzar) |
| Actualizar el sistema | apt upgrade / apt full-upgrade | dnf update |
| Instalar | apt install paquet | dnf install paquet |
| Eliminar | apt remove / apt purge | dnf remove |
| Buscar | apt search motif | dnf search motif |
| Detalles de un paquete | apt show paquet | dnf info paquet |
| Limpiar los huérfanos | apt autoremove | dnf autoremove |
| Archivos de un paquete | dpkg -L paquet | rpm -ql paquet |
| Propietario de un archivo | dpkg -S /chemin | rpm -qf /chemin |
| Deshacer una transacción | Sin equivalente nativo | dnf history undo N |
| Repositorios | /etc/apt/sources.list.d/ | /etc/yum.repos.d/ |
| Cortafuegos por defecto | ufw (Ubuntu) | firewalld |
| MAC por defecto | AppArmor | SELinux |
Buenas prácticas
- Para producción sin soporte comercial, elige Rocky Linux o AlmaLinux; reserva CentOS Stream para los entornos de pruebas.
- No desactives nunca SELinux: pasa al modo permisivo durante el diagnóstico, corrige los contextos con
restoreconysemanage, y vuelve después a enforcing. - Instala EPEL y activa CRB desde la puesta en servicio de un servidor: lo vas a necesitar.
- Usa
dnf historyantes de entrar en pánico tras una actualización problemática:undoes tu red de seguridad. - Con firewalld, piensa siempre en el tándem
--permanent+--reload. - Aplica las correcciones de seguridad con regularidad mediante
dnf update --security, o automatízalas con el paquetednf-automatic. - En RHEL, anula el registro de las máquinas retiradas de servicio para liberar suscripciones.
Conclusión
El ecosistema Red Hat impone un marco más estricto que el mundo Debian: SELinux activo por defecto, cortafuegos por zonas, suscripciones en RHEL. Precisamente este rigor es lo que lo convierte en el estándar de las infraestructuras empresariales. Al dominar DNF y su historial de transacciones, los archivos .repo, los contextos de SELinux y firewalld, cubres lo esencial del día a día de un administrador RHEL, y buena parte del temario de la certificación RHCSA. Para ir más lejos, explora systemd en profundidad, la automatización con Ansible (otro producto de Red Hat) y la contenerización con Podman, la alternativa de Red Hat a Docker.
Acerca de InSkillCoach
Experto en formación y tecnologías
Coach especializado en tecnologías avanzadas e IA, impulsado por GNeurone Inc.
Certificaciones:
- AWS Certified Solutions Architect – Professional
- Certificaciones de Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
Comentarios
Los comentarios funcionan con GitHub Discussions
Inicia sesión con GitHub para participar en la discusión