Beginner 6 MIN READ

Cómo instalar y configurar RHEL 9 paso a paso

Guía completa para instalar y configurar RHEL 9 desde cero. Particionado LVM, red estática, SELinux y hardening básico con outputs reales del lab.

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:


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:

bash
sha256sum rhel-9.x-x86_64-dvd.iso

Compara el resultado con el checksum publicado en el portal de Red Hat.


Paso 2 — Crear USB booteable

En Linux o Mac:

bash
# 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=sync

Output esperado del lab:

bash
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/s

En 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:


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:

Si es para aprendizaje puedes agregar:


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:

bash
/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:

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

bash
cat /etc/redhat-release

Output del lab:

bash
Red Hat Enterprise Linux release 9.4 (Plow)
bash
uname -r

Output del lab:

bash
5.14.0-427.13.1.el9_4.x86_64

Registrar el sistema con subscription-manager

bash
sudo subscription-manager register --username TU_USUARIO_REDHAT

Output del lab:

bash
The system has been registered with ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
The registered system name is: servidor01.stackdeploy.local

Actualizar el sistema

bash
sudo dnf update -y

Output del lab (extracto):

bash
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.

bash
# Ver estado actual
getenforce

Output:

bash
Enforcing
bash
# Ver política activa
sestatus

Output del lab:

bash
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:      33

El modo Enforcing es el correcto para producción. Si algo no funciona por SELinux, audita con:

bash
sudo ausearch -m avc -ts recent

Paso 10 — Configurar firewall básico

bash
# Ver estado del firewall
sudo firewall-cmd --state

Output:

bash
running
bash
# Ver servicios activos
sudo firewall-cmd --list-all

Output del lab:

bash
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:
bash
# Permitir SSH permanentemente (ya viene por defecto)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

Paso 11 — Hardening básico

Deshabilitar acceso SSH como root

bash
sudo vi /etc/ssh/sshd_config

Cambia o agrega:

bash
PermitRootLogin no
PasswordAuthentication yes
MaxAuthTries 3
bash
sudo systemctl restart sshd

Configurar umask más restrictivo

bash
echo "umask 027" | sudo tee -a /etc/profile.d/umask.sh

Activar automatic security updates

bash
sudo dnf install -y dnf-automatic
sudo systemctl enable --now dnf-automatic-install.timer

Output:

bash
Created symlink /etc/systemd/system/timers.target.wants/dnf-automatic-install.timer

Verificación final del sistema

bash
# Resumen del sistema
hostnamectl

Output del lab:

bash
 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
bash
# Verificar particiones LVM
df -hT | grep -v tmpfs

Output del lab:

bash
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% /tmp

Conclusió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:

← Back to Articles
Written by Andres Bernal | @abernal093