Lista de comprobación para el refuerzo de servidores Linux
15 min de lectura - 8 de mayo de 2026

Lista de comprobación paso a paso para reforzar un servidor Linux. Cubre SSH, cortafuegos, parches, permisos de archivos, SELinux/AppArmor y registro de auditorías
Lista de comprobación para el refuerzo de la seguridad de servidores Linux
Una instalación predeterminada de Linux no es una instalación segura de Linux. Las configuraciones erróneas, como el acceso SSH con privilegios de root, los cortafuegos débiles y el software sin parches, son la causa de la mayoría de las brechas de seguridad. Los servidores nuevos se enfrentan a escaneos automatizados a los pocos minutos de conectarse a Internet, por lo que el refuerzo de la seguridad debe realizarse antes que nada.
Esta lista de verificación cubre los pasos fundamentales: bloquear el SSH, configurar los cortafuegos, aplicar parches, restringir los permisos de los archivos, habilitar controles de acceso obligatorios y configurar el registro de auditoría.
Bloquea el SSH
SSH es su principal punto de acceso y lo primero que exploran los atacantes. La configuración predeterminada (autenticación por contraseña, inicio de sesión como root, puerto 22) es exactamente lo que buscan los escáneres automatizados.
Genera un par de claves Ed25519, que ofrece mayor seguridad y rendimiento que RSA:
ssh-keygen -t ed25519Una vez que el inicio de sesión con clave funcione, actualiza /etc/ssh/sshd_config:
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers yourname
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2Cambia el puerto predeterminado del 22 a uno menos obvio. Esto no detendrá a un atacante decidido, pero reduce significativamente el ruido de los escáneres automatizados.
Prueba siempre los cambios desde un segundo terminal antes de cerrar tu sesión actual. Ejecuta sudo sshd -t para comprobar si hay errores de sintaxis y, a continuación, systemctl reload sshd para aplicar los cambios sin interrumpir las conexiones activas.
Añade la autenticación de dos factores
La 2FA implica que un atacante necesitaría tanto tu clave SSH como acceso físico a tu dispositivo. Instala el módulo PAM de Google Authenticator:
sudo apt install libpam-google-authenticator # Debian/Ubuntu
sudo dnf install google-authenticator # RHEL/FedoraEjecuta google-authenticator para cada usuario para generar una clave secreta y códigos de recuperación. Guarda los códigos de recuperación sin conexión.
Añade esta línea a /etc/pam.d/sshd:
auth required pam_google_authenticator.soA continuación, actualice /etc/ssh/sshd_config:
KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactiveMantén una sesión activa abierta mientras realizas las pruebas. Los códigos TOTP dependen de que la hora del sistema sea precisa, así que asegúrate de que NTP esté en funcionamiento.
Configurar cortafuegos y Fail2Ban
Ejecute un cortafuegos basado en el host incluso si su servidor se encuentra detrás de un cortafuegos de red. El principio es sencillo: rechace todo el tráfico entrante por defecto y, a continuación, permita solo lo que necesite.
Para Ubuntu/Debian (UFW):
ufw default deny incoming
ufw default allow outgoing
ufw limit ssh
ufw enablePara RHEL/Rocky/AlmaLinux (Firewalld):
firewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadRefuerza la pila de red del kernel añadiendo lo siguiente a /etc/sysctl.conf:
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1Instala Fail2Ban
Fail2Ban supervisa los intentos de inicio de sesión y bloquea las direcciones IP tras repetidos fallos. Crea /etc/fail2ban/jail.local (no edites jail.conf directamente, las actualizaciones lo sobrescribirán) y configúralo para bloquear las direcciones IP durante una hora tras tres intentos fallidos en un plazo de 10 minutos. Establece el backend adecuado para tu cortafuegos (banaction = ufw o banaction = nftables).
Servicios de auditoría y eliminar protocolos heredados
Comprueba qué servicios están a la escucha con ss -tlnp y qué se está ejecutando con systemctl list-units --type=service --state=running. Desactiva todo lo que no necesites: Bluetooth, CUPS, avahi-daemon, rpcbind.
Elimina los protocolos heredados que transmiten datos en texto sin cifrar:
| Protocolo obsoleto | Puerto(s) | Alternativa segura |
|---|---|---|
| Telnet | 23 | SSH |
| RSH / Rlogin | 512, 513, 514 | SSH |
| FTP | 21 | SFTP / FTPS |
| TFTP | 69 | SFTP / SCP |
| NIS | Variable | LDAP / Kerberos |
En Debian/Ubuntu: sudo apt-get --purge remove xinetd nis tftpd telnetd rsh-server. En sistemas basados en RHEL: yum erase xinetd ypserv tftp-server telnet-server rsh-server. Comprueba la eliminación con ss -tulpn.
Aplicar parches y automatizar actualizaciones
Actualizar el sistema es la forma más rápida de cerrar las brechas de seguridad conocidas. Ejecute las actualizaciones inmediatamente después de la implementación:
apt update && apt upgrade -y # Debian/Ubuntu
dnf update -y # RHEL/RockyA continuación, automatice los parches de seguridad. En Debian/Ubuntu, instale unattended-upgrades y configúrelo para que aplique únicamente parches de seguridad. En RHEL/Rocky, instale dnf-automatic y configura upgrade_type = security en /etc/dnf/automatic.conf.
Configure notificaciones por correo electrónico para los resultados de las actualizaciones. Desactive los reinicios automáticos en los servidores de producción (Automatic-Reboot = false) para que los reinicios se produzcan durante las ventanas de mantenimiento planificadas. Para entornos con un alto tiempo de actividad, considere la posibilidad de aplicar parches en vivo con Canonical Livepatch (Ubuntu) o kpatch (RHEL).
Reforzar los sistemas de archivos y los permisos
Audite primero los binarios SUID y SGID. Estos archivos se ejecutan con privilegios elevados y son objetivos principales para la explotación:
find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -lsRefuerza los permisos de los archivos críticos: /etc/shadow deberían ser 600, /etc/passwd debería ser 644, /etc/ssh/sshd_config debería ser 600. Establezca un umask de 027 en /etc/profile para evitar que los archivos nuevos sean legibles por todos.
Busca y corrige los archivos con permisos de escritura para todos con find / -xdev -type f -perm -0002 -ls. Para los directorios que deben seguir siendo escribibles por todos (como /tmp), aplique el bit sticky: chmod 1777 /tmp.
Opciones de montaje seguro
Edita /etc/fstab para restringir lo que puede suceder en particiones críticas:
| Partición | Opciones de montaje | Propósito |
|---|---|---|
/tmp | nodev, nosuid, noexec | Impide la ejecución de malware en un área de escritura global |
/var/tmp | nodev, nosuid, noexec | Mismas protecciones que /tmp |
/dev/shm | nodev, nosuid, noexec | Protege la memoria compartida |
/home | nodev, nosuid | Bloquea los binarios setuid y los nodos de dispositivo |
/var/log | nodev, nosuid, noexec | Protege la integridad de los registros |
Prueba los cambios con mount -o remount antes de reiniciar para evitar problemas de arranque.
Habilitar controles de acceso obligatorios
SELinux y AppArmor añaden restricciones a nivel del núcleo sobre lo que pueden hacer los procesos. Utilice el que venga con su distribución: SELinux para RHEL/CentOS/Fedora, AppArmor para Ubuntu/Debian/SUSE. Cambiar de uno a otro provoca problemas de compatibilidad.
SELinux: compruebe el estado con getenforce. Comience en modo permisivo (setenforce 0) durante al menos dos semanas para capturar el comportamiento de la carga de trabajo sin causar problemas. Supervise las infracciones con ausearch -m avc -ts recent. Utilice audit2why para diagnosticar bloqueos y audit2allow -M [module_name] para crear módulos de política. Una vez que los registros estén limpios, cambie a modo de aplicación con setenforce 1, y luego hazlo permanente en /etc/selinux/config.
AppArmor: comprueba los perfiles activos con aa-status. Instala apparmor-utils para obtener los comandos de gestión. Inicie los perfiles en modo de aviso con aa-complain, y luego pasa al modo de aplicación aa-enforce una vez que estés seguro. Usa aa-genprof para crear perfiles para aplicaciones personalizadas.
Configurar el registro de auditoría y la supervisión
Sin registro, los incidentes no dejan rastro. Instalar auditd:
sudo apt-get install auditd audispd-pluginsAñada vigilancias del sistema de archivos para los archivos críticos:
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identityRealice un seguimiento de toda la ejecución de comandos a nivel de root:
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commandsCargue reglas con augenrules --load y añade -e 2 al final de tu archivo de reglas para que la configuración sea a prueba de manipulaciones (los cambios requieren un reinicio).
Supervisión de la integridad de los archivos con AIDE
AIDE detecta cambios no autorizados en los archivos comparando el estado actual con una referencia válida conocida. Instálalo, inicializa la base de datos con aideinity mueve el archivo resultante a /var/lib/aide/aide.db.gz. Configura una tarea cron diaria para ejecutar aide --check y enviar los resultados por correo electrónico a los administradores.
Centralice los registros
Los registros locales son inútiles si un atacante con acceso de root los borra. Reenvía los registros a un servidor remoto en tiempo real utilizando rsyslog con cifrado TLS. Añade a /etc/rsyslog.conf:
*.* @@remote-host:514Set LogLevel VERBOSE en tu configuración de SSH para que los registros incluyan las huellas digitales de las claves de cada inicio de sesión correcto. Para entornos de producción que gestionan varios servidores, herramientas como Wazuh u OSSEC proporcionan detección de intrusiones basada en el host con análisis de registros centralizado.
Mantenimiento continuo
El refuerzo de la seguridad no es una tarea puntual. Las configuraciones se desvían, aparecen nuevas vulnerabilidades y los cambios de personal dejan cuentas huérfanas.
Semanal: revisar los registros de Fail2Ban, comprobar si hay actualizaciones fallidas y verificar las copias de seguridad.
Mensualmente: auditar las cuentas de usuario y los permisos, revisar los servicios en ejecución, ejecutar un análisis completo con Lynis u OpenSCAP.
Trimestralmente: Rotar credenciales, actualizar reglas de firewall, probar la recuperación ante desastres.
Utiliza herramientas de infraestructura como código, como Ansible con roles de refuerzo de seguridad de dev-sec.io, para aplicar configuraciones coherentes en todo tu parque de servidores y evitar desviaciones entre auditorías.
Los servidores dedicados de FDC te ofrecen acceso root completo y control total sobre tu pila de seguridad. Explora las opciones de servidores dedicados para construir sobre una plataforma en la que tú controlas cada capa.

¿Cansado de despliegues lentos o límites de ancho de banda? FDC Servers ofrece potencia dedicada instantánea, alcance global y planes flexibles diseñados para cualquier escala.
Actualizar ahoraPor qué es importante tener un VPS potente y sin contador
Un VPS sin contador proporciona un ancho de banda fijo a una velocidad de puerto fija. En qué se diferencia de los planes con contador, cuándo compensa y qué hay que comprobar antes de comprarlo.
7 min de lectura - 9 de mayo de 2025
Gestión de memoria en Linux: Swap, OOM Killer y Cgroups
12 min de lectura - 31 de mayo de 2026