Qué vas a conseguir
Saber manejar un servidor RHEL (o Rocky/Alma, que son compatibles) para lo que se pide en operaciones: que esté registrado y reciba parches, que los servicios arranquen y se vigilen, que el firewall deje pasar solo lo necesario, y que SELinux siga activado aunque una aplicación proteste.
Antes de empezar
- Acceso por SSH con un usuario que tenga
sudo. No trabajes comorootdirectamente. - La cuenta o la clave de activación de Red Hat para registrar el sistema (la tiene quien gestione las suscripciones).
- Saber qué servicios debe dar ese servidor (web, base de datos, aplicación) y en qué puertos: es lo que decide el firewall.
1. Registrar y parchear
sudo subscription-manager register --org 1234567 --activationkey rhel9-serversThe system has been registered with ID: 8a1c...-...-...sudo subscription-manager statusOverall Status: Currentsudo dnf check-update | tail -n +2 | wc -l47sudo dnf update -y...Complete!sudo dnf needs-restarting -rCore libraries or services have been updated since boot-up: * kernelReboot is required to fully utilize these updates.needs-restarting -r es lo que te dice si el parche necesita reinicio (kernel, glibc, systemd). Un servidor parcheado y sin reiniciar sigue corriendo el kernel viejo. Planifica el reinicio en la ventana de cambios y apúntalo en el ticket.
Para parchear solo seguridad (lo habitual fuera de la ventana mensual): sudo dnf update --security -y.
2. Servicios con systemd
systemctl status httpd --no-pager● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled) Active: failed (Result: exit-code) since Wed 2026-10-21 08:02:11 CEST; 3min agosudo journalctl -u httpd -n 20 --no-pageroct 21 08:02:11 srv-web-01 httpd[1842]: (13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:8081sudo systemctl enable --now httpd # activar al arranque y arrancar ahorasystemctl is-enabled httpd; systemctl is-active httpdenabledactiveLas cuatro órdenes que usarás todos los días: status, restart, enable --now y journalctl -u <servicio>. journalctl -p err -b muestra todos los errores desde el último arranque, de cualquier servicio; journalctl -f los sigue en vivo.
3. Firewall: firewalld
En RHEL el firewall es firewalld, con zonas y servicios con nombre. Lo que no está abierto, está cerrado.
sudo firewall-cmd --get-default-zonepublicsudo firewall-cmd --list-allpublic (active) interfaces: ens192 services: cockpit dhcpv6-client ssh ports:sudo firewall-cmd --add-service=http --add-service=https --permanentsudo firewall-cmd --add-port=8081/tcp --permanentsudo firewall-cmd --reloadsudo firewall-cmd --list-services --list-portscockpit dhcpv6-client http https ssh8081/tcp--permanent escribe la regla a disco; sin --reload no se aplica. Prueba desde fuera con nc -zv srv-web-01 8081 o Test-NetConnection desde Windows. Y antes de tocar ssh en el firewall, ten otra sesión abierta.
4. SELinux: no lo desactives
El error del paso 2 (Permission denied al abrir el puerto 8081) no es el firewall ni los permisos del fichero: es SELinux, que solo permite a Apache escuchar en los puertos etiquetados como http_port_t. La solución correcta es decírselo, no apagarlo.
getenforceEnforcingsudo sealert -a /var/log/audit/audit.log | grep -A3 "httpd" # instala setroubleshoot-server si no estáSELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port 8081.***** Plugin bind_ports (92.2 confidence) suggests ************************If you want to allow /usr/sbin/httpd to bind to network port 8081Then you need to modify the port type.Do: # semanage port -a -t http_port_t -p tcp 8081sudo semanage port -a -t http_port_t -p tcp 8081sudo systemctl restart httpd && systemctl is-active httpdactiveLos dos comandos que resuelven el 90 %: semanage port para puertos y restorecon -Rv /ruta para ficheros con contexto incorrecto (los que se copiaron desde otro sitio y Apache no puede leer). Los booleanos (getsebool -a | grep httpd, setsebool -P httpd_can_network_connect on) cubren el resto. setenforce 0 solo sirve para confirmar en un minuto que es SELinux; después vuelve a 1 y arregla el contexto.
5. Lo que miras cada mes
subscription-manager statusydnf check-update: que sigue registrado y cuánto hay pendiente.needs-restarting -rtras parchear, y el reinicio en la ventana.journalctl -p err -S "1 month ago" --no-pager | tail: errores repetidos que nadie ha mirado.df -hy el script de la guía de Bash en cron.- Con Red Hat Insights (incluido en la suscripción), los sistemas registrados aparecen en
console.redhat.comcon CVE pendientes y recomendaciones; es el informe que llevas a la reunión de parcheo.
Siguientes pasos
- Con más de cinco servidores, el parcheo mensual se hace con Ansible (Nivel 3): un playbook con
dnf updatey reinicio controlado, servidor a servidor. - Mira Cockpit (
https://srv-web-01:9090): la consola web que viene con RHEL para ver servicios, logs y actualizaciones sin SSH. - La guía de Ubuntu cubre lo mismo con
apt,ufwy AppArmor: las diferencias son menos de lo que parece.
¿Quieres practicarlo? Resuelve el ticket «502 Bad Gateway: la aplicación de fichajes no funciona» en SysAdmin Desks, gratis y en el navegador.
¿Falta algo o en tu entorno es distinto? Escríbeme y lo corrijo.
Tech Career Lab · newsletter
¿Te ha servido? Cada dos semanas envío una idea práctica para perfiles IT: LinkedIn, proyectos, networking y procesos de selección.
Apúntate y llévate las 33 ideas →