Lista de comprobación para el refuerzo de servidores Linux

15 min de lectura - 8 de mayo de 2026

hero section cover
Tabla de contenidos
  • Lista de comprobación para el refuerzo de la seguridad de servidores Linux
  • Bloquea el SSH
  • Configurar cortafuegos y Fail2Ban
  • Aplicar parches y automatizar actualizaciones
  • Reforzar los sistemas de archivos y los permisos
  • Habilitar controles de acceso obligatorios
  • Configurar el registro de auditoría y la supervisión
  • Mantenimiento continuo
Compartir

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 ed25519

Una 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 2

Cambia 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/Fedora

Ejecuta 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.so

A continuación, actualice /etc/ssh/sshd_config:

KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

Manté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 enable

Para RHEL/Rocky/AlmaLinux (Firewalld):

firewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Refuerza 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 = 1

Instala 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 obsoletoPuerto(s)Alternativa segura
Telnet23SSH
RSH / Rlogin512, 513, 514SSH
FTP21SFTP / FTPS
TFTP69SFTP / SCP
NISVariableLDAP / 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/Rocky

A 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 -ls

Refuerza 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ónOpciones de montajePropósito
/tmpnodev, nosuid, noexecImpide la ejecución de malware en un área de escritura global
/var/tmpnodev, nosuid, noexecMismas protecciones que /tmp
/dev/shmnodev, nosuid, noexecProtege la memoria compartida
/homenodev, nosuidBloquea los binarios setuid y los nodos de dispositivo
/var/lognodev, nosuid, noexecProtege 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-plugins

Añada vigilancias del sistema de archivos para los archivos críticos:

-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity

Realice 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_commands

Cargue 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:514

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

background image
¿Su servidor está frenando su crecimiento?

¿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 ahora

Blog

Destacados de la semana

Más artículos
Por qué es importante tener un VPS potente y sin contador

Por 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

Más artículos