Cómo instalar y configurar RHEL 9 paso a paso
Red Hat Enterprise Linux 9 es el sistema operativo de referencia para entornos empresariales. Si trabajas en infraestructura, DevOps o administración de sistemas, saber instalarlo y configurarlo correctamente desde el primer día te ahorra horas de troubleshooting después.
En esta guía vamos a cubrir la instalación completa con particionado LVM, configuración de red estática, SELinux y hardening básico — todo con outputs reales del lab.
Requisitos mínimos
Antes de arrancar, asegúrate de tener:
- CPU: 1 GHz mínimo (recomendado 2 CPUs)
- RAM: 2 GB mínimo (recomendado 4 GB para servidor)
- Disco: 20 GB mínimo (recomendado 60 GB)
- Cuenta gratuita en Red Hat Developer Portal
- USB de al menos 8 GB
Paso 1 — Descargar la ISO de RHEL 9
Ve a developers.redhat.com y crea una cuenta gratuita si no tienes una. La suscripción de desarrollador te da acceso completo a RHEL sin costo.
Una vez dentro, descarga el archivo:
rhel-9.x-x86_64-dvd.iso
Para verificar la integridad del archivo:
sha256sum rhel-9.x-x86_64-dvd.isoCompara el resultado con el checksum publicado en el portal de Red Hat.
Paso 2 — Crear USB booteable
En Linux o Mac:
# Identifica tu USB (reemplaza sdX con tu dispositivo)
lsblk
# Escribir la ISO al USB
sudo dd if=rhel-9.x-x86_64-dvd.iso of=/dev/sdX bs=4M status=progress oflag=syncOutput esperado del lab:
3,847,290,880 bytes (3.8 GB, 3.6 GiB) copied, 187 s, 20.6 MB/s
916+1 records in
916+1 records out
3847290880 bytes (3.8 GB, 3.6 GiB) copied, 187.431 s, 20.5 MB/sEn Windows usa Rufus (rufus.ie) — selecciona la ISO y escribe en modo DD.
Paso 3 — Boot desde el USB
Reinicia el servidor y entra al BIOS (generalmente F2, F10 o DEL al arrancar). Cambia el orden de boot para que el USB sea el primero.
Al arrancar verás el menú de Anaconda:
- Install Red Hat Enterprise Linux 9 ← selecciona esta
- Test this media & install RHEL 9
- Troubleshooting
Paso 4 — Configuración inicial en Anaconda
Idioma
Selecciona English (United States) — te recomiendo inglés para que los logs y mensajes de error coincidan con la documentación oficial.
Zona horaria
Click en Time & Date → selecciona tu región → activa Network Time.
Software
Para un servidor de producción selecciona:
- Minimal Install — sin GUI, máximo rendimiento
Si es para aprendizaje puedes agregar:
- Server with GUI
Paso 5 — Particionado con LVM (recomendado para producción)
Esta es la parte más importante. Un mal particionado puede llenarte el disco root y tumbar el servidor.
Click en Installation Destination → Custom → Done
Esquema recomendado para un servidor de 60 GB:
/boot → 1 GB → Standard Partition → xfs
/boot/efi → 600 MB → Standard Partition → EFI (si es UEFI)
/ → 20 GB → LVM → xfs
/var → 15 GB → LVM → xfs (logs, containers)
/home → 10 GB → LVM → xfs
/tmp → 5 GB → LVM → xfs
swap → 4 GB → LVM¿Por qué separar /var? Porque Docker, Podman y los logs del sistema viven ahí. Si se llena no arrastra a / y el sistema sigue funcionando.
Cuando termines click en Done → Accept Changes.
Paso 6 — Configurar red
Click en Network & Host Name:
1. Activa tu interfaz de red (el toggle de la derecha)
2. Cambia el Hostname: servidor01.stackdeploy.local
3. Click Configure para IP estática:
- Method: Manual
- Address: 192.168.1.100
- Netmask: 255.255.255.0
- Gateway: 192.168.1.1
- DNS: 8.8.8.8, 8.8.4.4
Paso 7 — Contraseña de root y usuario
Root password: usa una contraseña fuerte o deshabilítala y usa solo sudo.
Crear usuario administrador:
- Full name: Andres Bernal
- Username: abernal
- Activa: Make this user administrator
- Activa: Require a password
Click Begin Installation.
La instalación tarda entre 5 y 15 minutos dependiendo del hardware.
Paso 8 — Post-instalación: configuración básica
Una vez que el sistema arranque, conéctate por SSH o directo en consola:
Verificar versión instalada
cat /etc/redhat-releaseOutput del lab:
Red Hat Enterprise Linux release 9.4 (Plow)uname -rOutput del lab:
5.14.0-427.13.1.el9_4.x86_64Registrar el sistema con subscription-manager
sudo subscription-manager register --username TU_USUARIO_REDHATOutput del lab:
The system has been registered with ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
The registered system name is: servidor01.stackdeploy.localActualizar el sistema
sudo dnf update -yOutput del lab (extracto):
Updating Subscription Management repositories.
Last metadata expiration check: 0:02:14 ago
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Upgrading:
kernel x86_64 5.14.0-427.16.1.el9 rhel-9-baseos 7.7 M
kernel-core x86_64 5.14.0-427.16.1.el9 rhel-9-baseos 43 M
...
Complete!Paso 9 — Verificar y configurar SELinux
SELinux viene habilitado por defecto en modo Enforcing. No lo desactives — aprende a trabajar con él.
# Ver estado actual
getenforceOutput:
Enforcing# Ver política activa
sestatusOutput del lab:
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux mount point: /sys/fs/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33El modo Enforcing es el correcto para producción. Si algo no funciona por SELinux, audita con:
sudo ausearch -m avc -ts recentPaso 10 — Configurar firewall básico
# Ver estado del firewall
sudo firewall-cmd --stateOutput:
running# Ver servicios activos
sudo firewall-cmd --list-allOutput del lab:
public (active)
target: default
icmp-block-inversion: no
interfaces: enp1s0
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:# Permitir SSH permanentemente (ya viene por defecto)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reloadPaso 11 — Hardening básico
Deshabilitar acceso SSH como root
sudo vi /etc/ssh/sshd_configCambia o agrega:
PermitRootLogin no
PasswordAuthentication yes
MaxAuthTries 3sudo systemctl restart sshdConfigurar umask más restrictivo
echo "umask 027" | sudo tee -a /etc/profile.d/umask.shActivar automatic security updates
sudo dnf install -y dnf-automatic
sudo systemctl enable --now dnf-automatic-install.timerOutput:
Created symlink /etc/systemd/system/timers.target.wants/dnf-automatic-install.timerVerificación final del sistema
# Resumen del sistema
hostnamectlOutput del lab:
Static hostname: servidor01.stackdeploy.local
Icon name: computer-server
Chassis: server
Machine ID: a1b2c3d4e5f6789012345678901234ab
Boot ID: b2c3d4e5f678901234567890abcdef12
Operating System: Red Hat Enterprise Linux 9.4 (Plow)
CPE OS Name: cpe:/o:redhat:enterprise_linux:9::baseos
Kernel: Linux 5.14.0-427.13.1.el9_4.x86_64
Architecture: x86-64
Hardware Vendor: Red Hat
Hardware Model: KVM# Verificar particiones LVM
df -hT | grep -v tmpfsOutput del lab:
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
/dev/mapper/rhel-root xfs 20G 2.1G 18G 11% /
/dev/sda1 xfs 960M 261M 700M 28% /boot
/dev/mapper/rhel-var xfs 15G 512M 15G 4% /var
/dev/mapper/rhel-home xfs 10G 128M 10G 2% /home
/dev/mapper/rhel-tmp xfs 5.0G 68M 5.0G 2% /tmpConclusión
Ya tienes RHEL 9 instalado, registrado, actualizado y con hardening básico listo para producción.
En el siguiente artículo vamos a ver cómo instalar y configurar Docker/Podman en RHEL 9 para comenzar a trabajar con contenedores.
Puntos clave de esta guía:
- Particionado LVM separado para /var evita que los logs llenen el disco root
- SELinux en Enforcing siempre — aprende a auditarlo, no a desactivarlo
- Registrar el sistema con subscription-manager activa los repos de seguridad
- Deshabilitar root en SSH es el primer paso de hardening real