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 servidores Linux
  • Bloquee SSH
  • Configurar cortafuegos y Fail2Ban
  • Parches y actualizaciones automáticas
  • Proteger los sistemas de archivos y los permisos
  • Habilitar controles de acceso obligatorios
  • Establecer registros de auditoría y 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 servidores Linux

Una instalación de Linux por defecto no es una instalación de Linux segura. Los errores de configuración, como el acceso root SSH abierto, los cortafuegos débiles y el software sin parches, son responsables de la mayoría de las infracciones. Los nuevos servidores se enfrentan a análisis automatizados a los pocos minutos de conectarse, por lo que el refuerzo debe realizarse antes que cualquier otra cosa.

Esta lista de comprobación cubre los pasos fundamentales: bloqueo de SSH, configuración de cortafuegos, aplicación de parches, refuerzo de los permisos de archivos, activación de controles de acceso obligatorios y creación de registros de auditoría.

Bloquee SSH

SSH es su principal punto de acceso y lo primero que sondean los atacantes. La configuración por defecto (autenticación por contraseña, inicio de sesión root, puerto 22) es exactamente lo que buscan los escáneres automáticos.

Genere un par de claves Ed25519, que ofrece mejor seguridad y rendimiento que RSA:

ssh-keygen -t ed25519

Una vez que el inicio de sesión basado en claves funcione, actualice /etc/ssh/sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers yourname
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

Cambia el puerto por defecto de 22 a algo menos obvio. Esto no detendrá a un atacante decidido, pero reduce significativamente el ruido de los escaneos automáticos.

Pruebe siempre los cambios desde un segundo terminal antes de cerrar la sesión actual. Ejecute 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 autenticación de dos factores

2FA significa que un atacante necesita tanto su clave SSH como acceso físico a su dispositivo. Instale el módulo PAM de Google Authenticator:

sudo apt install libpam-google-authenticator   # Debian/Ubuntu
sudo dnf install google-authenticator           # RHEL/Fedora

Ejecute google-authenticator para cada usuario para generar una clave secreta y códigos de recuperación. Almacena 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, actualiza /etc/ssh/sshd_config:

KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

Mantén abierta una sesión activa mientras realizas las pruebas. Los códigos TOTP dependen de la hora exacta del sistema, así que asegúrate de que NTP está funcionando.

Configurar cortafuegos y Fail2Ban

Ejecute un cortafuegos basado en host aunque su servidor se encuentre detrás de un cortafuegos de red. El principio es sencillo: deniegue todo el tráfico entrante por defecto y permita sólo 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

Endurezca la pila de red del kernel añadiendo esto a /etc/sysctl.conf:

net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1

Instalar Fail2Ban

Fail2Ban monitoriza los intentos de acceso y bloquea las IPs después de repetidos fallos. Cree /etc/fail2ban/jail.local (no edite jail.conf directamente, las actualizaciones lo sobrescribirán) y configúrelo para prohibir IPs durante una hora después de tres intentos fallidos en 10 minutos. Configura el backend correcto para tu cortafuegos(banaction = ufw o banaction = nftables).

Auditoría de servicios y eliminación de protocolos heredados

Compruebe lo que está escuchando con ss -tlnp y lo que se está ejecutando con systemctl list-units --type=service --state=running. Desactiva todo lo que no necesites: Bluetooth, CUPS, avahi-daemon, rpcbind.

Elimine los protocolos heredados que transmiten datos en texto claro:

Protocolo heredadoPuerto(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. Verifique la eliminación con ss -tulpn.

Parches y actualizaciones automáticas

Actualizar el sistema es la forma más rápida de cerrar las brechas de seguridad conocidas. Ejecute las actualizaciones inmediatamente después del aprovisionamiento:

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 sólo aplique parches de seguridad. En RHEL/Rocky, instale dnf-automatic y establezca 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 de alto tiempo de actividad, considere la aplicación de parches en vivo con Canonical Livepatch (Ubuntu) o kpatch (RHEL).

Proteger los sistemas de archivos y los permisos

Audite primero los binarios SUID y SGID. Estos archivos se ejecutan con privilegios elevados y son los principales objetivos de explotación:

find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -ls

Refuerce los permisos de los archivos críticos: /etc/shadow debe ser 600, /etc/passwd debe ser 644, /etc/ssh/sshd_config debe ser 600. Establezca una umask global de 027 en /etc/profile para evitar que los nuevos archivos sean legibles por todo el mundo.

Busque y corrija los archivos que pueden ser leídos desde el exterior con find / -xdev -type f -perm -0002 -ls. Para los directorios que deben permanecer legibles para el mundo (como /tmp), aplique el sticky bit: chmod 1777 /tmp.

Opciones de montaje seguro

Edite /etc/fstab para restringir lo que puede ocurrir en particiones críticas:

ParticiónOpciones de montajePropósito
/tmpnodev, nosuid, noexecEvita la ejecución de malware en un área escribible por todo el mundo
/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 del registro

Pruebe 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 incluya su distribución: SELinux para RHEL/CentOS/Fedora, AppArmor para Ubuntu/Debian/SUSE. Cambiar de una a otra causa problemas de compatibilidad.

SELinux: Comprueba el estado con getenforce. Inicie en modo permisivo(setenforce 0) durante al menos dos semanas para capturar el comportamiento de la carga de trabajo sin romper nada. Monitoriza las violaciones con ausearch -m avc -ts recent. Utilice audit2why para diagnosticar bloqueos y audit2allow -M [module_name] para crear módulos de políticas. Una vez que los registros estén limpios, cambie a enforcing con setenforce 1, luego hágalo permanente en /etc/selinux/config.

AppArmor: Compruebe los perfiles activos con aa-status. Instale apparmor-utils para los comandos de gestión. Inicie los perfiles en modo queja con aa-complain, luego pase al modo enforce con aa-enforce una vez que esté seguro. Utilice aa-genprof para crear perfiles para aplicaciones personalizadas.

Establecer registros de auditoría y supervisión

Sin registro, los incidentes no dejan rastro. Instale 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

Rastree toda ejecución de comandos a nivel de raíz:

-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands

Cargue reglas con augenrules --load y añada -e 2 al final de su archivo de reglas para que la configuración sea a prueba de manipulaciones (los cambios requieren un reinicio).

Monitorización de la integridad de ficheros con AIDE

AIDE detecta cambios no autorizados en los archivos comparando el estado actual con una línea de base conocida. Instálelo, inicialice la base de datos con aideinit y mueva el archivo resultante a /var/lib/aide/aide.db.gz. Configure una tarea cron diaria para ejecutar aide --check y envíe los resultados por correo electrónico a los administradores.

Centralizar los registros

Los registros locales son inútiles si un atacante con acceso root los borra. Reenvíe los registros a un servidor remoto en tiempo real utilizando rsyslog con cifrado TLS. Añádalo a /etc/rsyslog.conf:

*.* @@remote-host:514

Establezca LogLevel VERBOSE en su configuración SSH para que los registros incluyan huellas digitales de claves para cada inicio de sesión correcto. Para entornos de producción que gestionan múltiples servidores, herramientas como Wazuh u OSSEC proporcionan detección de intrusiones basada en host con análisis centralizado de registros.

Mantenimiento continuo

El refuerzo no es una tarea que se haga una sola vez. Las configuraciones varían, aparecen nuevas vulnerabilidades y los cambios de personal dejan cuentas huérfanas.

Semanalmente: Revise los registros de Fail2Ban, compruebe si hay actualizaciones fallidas, verifique las copias de seguridad.

Mensualmente: Audite las cuentas de usuario y los permisos, revise los servicios en ejecución, ejecute un análisis completo con Lynis u OpenSCAP.

Trimestralmente: Rote las credenciales, actualice las reglas del cortafuegos, pruebe la recuperación ante desastres.

Utilice herramientas de infraestructura como código, como Ansible, con funciones de refuerzo dev-sec.io para aplicar configuraciones coherentes en toda su flota y evitar desviaciones entre auditorías.

Los servidores dedicados de FDC le ofrecen acceso root total y control completo sobre su pila de seguridad. Explore las opciones de servidores dedicados para construir sobre una plataforma en la que usted controla 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
Lista de comprobación para el refuerzo de servidores Linux

Lista de comprobación para el refuerzo de servidores Linux

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

15 min de lectura - 8 de mayo de 2026

tutorial de iperf3: Prueba de velocidad de red en Linux y Windows

10 min de lectura - 7 de mayo de 2026

Más artículos