Tutorial

Endurecimiento (hardening) inicial de un servidor Linux

Seguridad y monitorización8 min de lectura7 pasos

Un VPS recién entregado por su proveedor de alojamiento nunca es seguro por defecto: el acceso root por SSH está abierto, ningún cortafuegos filtra el tráfico entrante y ningún sistema detecta los intentos de intrusión. En unas decenas de minutos puede reducir drásticamente su superficie de ataque. Esta guía le acompaña paso a paso en Ubuntu 22.04 y Debian 12, desde la creación de un usuario sudo hasta la activación de las actualizaciones automáticas de seguridad.

Contenido· Por qué su VPS es vulnerable desde la entrega1/9
  1. 01Por qué su VPS es vulnerable desde la entrega
  2. 02Lo que esta guía pone en marcha
  3. 03Requisitos previos antes de empezar
  4. 04Lo que necesita
  5. 05Los 7 pasos del endurecimiento
  6. 06Ir más lejos tras el endurecimiento inicial
  7. 07fail2ban vs CrowdSec: ¿cuál elegir?
  8. 08Solución de problemas: casos habituales tras el endurecimiento
  9. 09Conclusión

Por qué su VPS es vulnerable desde la entrega

En cuanto se asigna una dirección IP a su servidor, robots automatizados empiezan a escanearla. Shodan, Censys y miles de bots maliciosos catalogan de forma permanente los puertos abiertos en Internet. Un servidor Linux recién instalado expone por defecto el puerto 22 en SSH, con el usuario root accesible desde cualquier dirección IP del mundo. Si su contraseña de root es débil —o si ha reutilizado una contraseña ya comprometida en otras filtraciones de datos—, su servidor puede quedar comprometido en unas horas, incluso en unos minutos. Sin cortafuegos, todos los puertos que abran sus futuras aplicaciones también quedarán accesibles sin restricción. Sin sistema de detección de intrusiones, ninguna alerta le avisará de un ataque de fuerza bruta en curso. Esta guía corrige estos tres problemas fundamentales con herramientas contrastadas, disponibles directamente en los repositorios oficiales de su distribución.

Lo que esta guía pone en marcha

  • Usuario no root con sudo — reduce la superficie de ataque al desactivar las conexiones directas como root
  • Autenticación por clave SSH — elimina los ataques de fuerza bruta sobre las contraseñas: solo su clave privada da acceso
  • Desactivación del acceso root por SSH — aunque la contraseña de root esté comprometida, la conexión directa sigue siendo imposible
  • UFW (cortafuegos) — bloquea por defecto todo el tráfico entrante y solo permite los puertos declarados explícitamente
  • fail2ban — banea automáticamente las direcciones IP que acumulan intentos de conexión fallidos
  • Actualizaciones de seguridad automáticas — los parches críticos se aplican sin intervención manual diaria
  • Sincronización del reloj del sistema — garantiza registros coherentes y certificados TLS válidos

Requisitos previos antes de empezar

Antes de seguir esta guía, asegúrese de disponer de todo lo necesario. Una preparación correcta le evitará quedarse bloqueado a mitad de camino, sobre todo en el momento de configurar SSH, donde un error puede dejarle sin acceso al servidor.

Lo que necesita

  • Acceso root por SSH operativo — debe poder conectarse con ssh [email protected] antes de empezar
  • Ubuntu 22.04 LTS o Debian 12 — esta guía está probada en estas dos distribuciones y los comandos son idénticos
  • Un par de claves SSH generado localmente — ejecute ssh-keygen -t ed25519 en su máquina si todavía no lo tiene
  • Un terminal con dos pestañas abiertas — mantenga siempre una sesión root activa durante la configuración de SSH para evitar cualquier bloqueo

Los 7 pasos del endurecimiento

  1. Actualizar el sistema

    Empiece por sincronizar la lista de paquetes y aplicar todos los parches disponibles: apt update && apt upgrade -y. Reinicie si se ha instalado un nuevo kernel: reboot. Vuelva a conectarse como root tras el reinicio antes de pasar al paso siguiente.

  2. Crear un usuario no root con sudo

    Cree un nuevo usuario que será su cuenta de trabajo diaria. Sustituya deploy por el nombre que prefiera: adduser deploy. Siga las indicaciones para definir una contraseña robusta. Añada después este usuario al grupo sudo: usermod -aG sudo deploy. Compruebe que se ha añadido correctamente: groups deploy debe mostrar deploy sudo.

  3. Copiar su clave SSH al nuevo usuario

    Desde su máquina local, copie su clave pública a la cuenta deploy: ssh-copy-id [email protected]. Si ssh-copy-id no está disponible, cópiela manualmente conectándose por SSH como deploy y ejecute: mkdir -p ~/.ssh && chmod 700 ~/.ssh, pegue su clave pública en ~/.ssh/authorized_keys y aplique chmod 600 ~/.ssh/authorized_keys. Pruebe la conexión de inmediato en una pestaña nueva: ssh [email protected]. No cierre la sesión root mientras esa conexión no esté confirmada.

  4. Endurecer la configuración de SSH

    Edite el archivo de configuración del demonio SSH: nano /etc/ssh/sshd_config. Modifique o añada estas directivas: PermitRootLogin no para prohibir el acceso root directo, PasswordAuthentication no para desactivar la autenticación por contraseña y, opcionalmente, Port 2222 para cambiar el puerto de escucha (no olvide abrir ese puerto en UFW antes de reiniciar). Recargue la configuración: systemctl reload sshd. Pruebe de inmediato la conexión con el nuevo usuario desde otro terminal antes de cerrar su sesión actual.

  5. Configurar UFW (cortafuegos)

    Instale UFW si es necesario: apt install ufw -y. Defina la política por defecto: ufw default deny incoming y ufw default allow outgoing. Autorice los puertos que necesite: si ha cambiado el puerto SSH, ufw allow 2222/tcp; si no, ufw allow 22/tcp. Añada los puertos web: ufw allow 80/tcp y ufw allow 443/tcp. Active el cortafuegos: ufw enable. Confirme con Y cuando se le pida. Compruebe el estado: ufw status verbose.

  6. Instalar y configurar fail2ban

    Instale fail2ban: apt install fail2ban -y. Cree un archivo de configuración local para que sus ajustes no se sobrescriban en las actualizaciones: cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local. Edite jail.local para activar la protección SSH: en la sección [sshd], asegúrese de que enabled = true está presente y ajuste bantime = 1h, findtime = 10m, maxretry = 5. Reinicie y active el servicio: systemctl enable --now fail2ban. Compruebe que la jail SSH está activa: fail2ban-client status sshd.

  7. Activar las actualizaciones de seguridad automáticas

    Instale el paquete unattended-upgrades: apt install unattended-upgrades -y. Lance el asistente de configuración: dpkg-reconfigure -plow unattended-upgrades y responda Yes. Para comprobar que las actualizaciones automáticas de seguridad están realmente activadas, consulte /etc/apt/apt.conf.d/20auto-upgrades: deben aparecer las dos líneas APT::Periodic::Update-Package-Lists "1"; y APT::Periodic::Unattended-Upgrade "1";. Asegúrese también de que systemd-timesyncd está activo para mantener el reloj en hora: systemctl status systemd-timesyncd.

Consejo crítico: pruebe SIEMPRE la conexión SSH con su nuevo usuario en un segundo terminal ANTES de cerrar su sesión root. Si cierra la sesión root sin haber comprobado que la autenticación por clave funciona para deploy, corre el riesgo de quedarse definitivamente fuera de su servidor. En caso de duda, utilice la consola KVM/VNC disponible en su panel de control ServOrbit.

Ir más lejos tras el endurecimiento inicial

Una vez completados los siete pasos, su servidor es mucho más seguro que en el momento de la entrega. Pero la seguridad es un proceso continuo, no un estado fijo. Varias herramientas complementarias pueden reforzar aún más su postura de seguridad según su contexto. Para los entornos que deben responder a exigencias de cumplimiento (RGPD, PCI-DSS, ISO 27001), instale auditd: apt install auditd -y y después systemctl enable --now auditd. Este demonio registra todas las llamadas al sistema sensibles —ejecución de comandos, modificaciones de archivos, conexiones— y facilita las auditorías regulatorias. Para una protección más avanzada frente a las botnets y los escaneos coordinados, CrowdSec es una excelente alternativa a fail2ban: analiza los comportamientos de forma colaborativa, comparte las reputaciones de IP entre sus usuarios y dispone de paneles de supervisión modernos. Nuestro artículo dedicado detalla su instalación y su configuración en Ubuntu y Debian.

fail2ban vs CrowdSec: ¿cuál elegir?

Desplace la tabla

Criteriofail2banCrowdSec
Facilidad de instalaciónMuy sencilla (apt)Sencilla (script oficial)
Inteligencia colectivaNo (solo local)Sí (base compartida)
Interfaz de supervisiónSolo CLIDashboard web incluido
Consumo de recursosMuy bajoBajo o moderado
Ideal paraServidores sencillos, principiantesInfraestructuras multiservidor, compliance

Solución de problemas: casos habituales tras el endurecimiento

Incluso con un procedimiento cuidadoso, puede ocurrir que se quede bloqueado o que se encuentre con comportamientos inesperados. Estas son las tres situaciones más frecuentes y cómo resolverlas. Primer caso: se ha quedado fuera por SSH. Conéctese mediante la consola KVM o VNC de su panel ServOrbit, que da acceso directo al servidor con independencia de SSH. Una vez conectado por consola, puede corregir la configuración de sshd, añadir su clave en authorized_keys o restablecer una contraseña. Segundo caso: fail2ban ha baneado su propia dirección IP. Desbanéese desde la consola o desde otra IP: fail2ban-client set sshd unbanip SU_IP. Para evitar que vuelva a ocurrir, añada su IP fija en la sección [DEFAULT] de jail.local: ignoreip = 127.0.0.1/8 SU_IP. Tercer caso: ha cambiado el puerto SSH pero ha olvidado abrirlo en UFW antes de reiniciar sshd. Conéctese por consola, añada la regla que falta ufw allow 2222/tcp y ejecute ufw reload.

Conclusión

En menos de una hora ha transformado un servidor vulnerable en una base sólida: el acceso root por SSH está desactivado, solo las claves criptográficas permiten conectarse, un cortafuegos filtra todo el tráfico no autorizado, fail2ban bloquea automáticamente a los atacantes y los parches de seguridad se aplican sin intervención manual. Estos siete pasos son el mínimo absoluto para cualquier servidor expuesto a Internet. No sustituyen a una securización a nivel de aplicación (HTTPS, cabeceras de seguridad, validación de entradas), pero cierran los vectores de ataque más explotados en los VPS Linux. Recuerde documentarlos en el runbook de su equipo y aplicarlos sistemáticamente a cada nuevo servidor que aprovisione.

Un VPS Linux listo para endurecer en 60 segundos

Los VPS de ServOrbit se entregan con el sistema que elija entre Ubuntu 24.04 LTS, Ubuntu 22.04 LTS, Debian 12 y AlmaLinux 9, con acceso root por SSH inmediato y consola KVM incluida. Aplique esta guía desde la entrega y empiece sobre bases sólidas.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva