Proteger un VPS tras la instalación: checklist completa
Proteger tu VPS es la máxima prioridad tras poner en marcha un servidor nuevo. Un VPS sin proteger es como una casa con la puerta principal abierta: es cuestión de tiempo que alguien entre. En esta checklist completa repasamos todos los pasos esenciales para proteger tu VPS a fondo tras la instalación. Desde el hardening de SSH hasta la configuración del firewall, desde las actualizaciones automáticas hasta la detección de intrusiones, lo cubrimos todo.
¿Por qué debes proteger tu VPS justo después de la instalación?
En cuanto tu VPS se conecta a internet, bots automatizados escanean su dirección IP en busca de vulnerabilidades. Según los estudios, un servidor nuevo recibe un ataque, de media, en los primeros 15 minutos tras su activación. Por eso es fundamental proteger tu VPS como primera tarea, incluso antes de instalar aplicaciones o configurar páginas web.
Los riesgos de un VPS sin proteger
- Ataques de fuerza bruta: miles de intentos de inicio de sesión al día en SSH
- Instalación de malware: tu servidor se usa para minar criptomonedas o enviar spam
- Robo de datos: se roban datos sensibles y es posible que se publiquen
- Lanzamiento de ataques DDoS: tu servidor pasa a formar parte de una botnet
- Ransomware: tus archivos se cifran y se exige un rescate
Paso 1: proteger SSH, el paso más importante para proteger tu VPS
SSH es la forma principal de administrar tu VPS y, por tanto, la superficie de ataque más importante. Por eso, proteger el VPS empieza por endurecer el acceso SSH.
Configurar la autenticación con clave SSH
Sustituye la autenticación por contraseña por claves SSH. Las claves SSH son pares de claves criptográficas que prácticamente no se pueden descifrar por fuerza bruta. Genera un par de claves SSH en tu ordenador local y copia la clave pública a tu VPS. Prueba la conexión con la clave antes de desactivar la autenticación por contraseña.
Desactivar la autenticación por contraseña
Una vez que hayas comprobado que el inicio de sesión con clave SSH funciona, desactiva la autenticación por contraseña en la configuración de SSH. Cambia los siguientes ajustes en /etc/ssh/sshd_config:
- PasswordAuthentication no: desactiva el inicio de sesión con contraseña
- PubkeyAuthentication yes: activa la autenticación basada en claves
- PermitRootLogin no: impide el inicio de sesión directo como root
- MaxAuthTries 3: limita el número de intentos de inicio de sesión
Cambiar el puerto SSH
El puerto SSH estándar, el 22, es el primer objetivo de los escaneos automatizados. Si cambias el puerto SSH a un número alto aleatorio (por ejemplo, 2222 o 49152), reduces drásticamente el número de intentos de fuerza bruta. No es una medida de seguridad en sí misma (security through obscurity), pero sí reduce bastante el ruido en tus logs.
Paso 2: configurar un firewall
Un firewall es una parte fundamental de tu estrategia para proteger el VPS. El firewall decide qué tráfico puede llegar a tu servidor y bloquea todo lo demás.
Configurar UFW (Uncomplicated Firewall)
UFW es el firewall más sencillo de usar para servidores Ubuntu/Debian. Ofrece una interfaz simple sobre iptables. Por defecto bloqueas todas las conexiones entrantes y solo permites los puertos específicos que necesitas.
Reglas de firewall esenciales
| Puerto | Servicio | Acción | Explicación |
|---|---|---|---|
| 22 (o personalizado) | SSH | Permitir | Solo desde IPs de confianza, si es posible |
| 80 | HTTP | Permitir | Tráfico web (redirección a HTTPS) |
| 443 | HTTPS | Permitir | Tráfico web cifrado |
| Todos los demás | - | Denegar | Bloquear todo por defecto |
Añade solo los puertos que realmente necesites. Cada puerto abierto es una posible superficie de ataque. Usa certificados SSL para las conexiones cifradas en el puerto 443.
Paso 3: instalar Fail2ban
Fail2ban es una herramienta imprescindible para proteger un VPS. Monitoriza los archivos de registro en busca de actividad sospechosa y bloquea automáticamente las direcciones IP que hacen intentos de inicio de sesión fallidos repetidos.
Cómo funciona Fail2ban
Fail2ban lee los archivos de registro de servicios como SSH, Apache y Nginx. Cuando detecta un patrón que apunta a un ataque (por ejemplo, 5 inicios de sesión SSH fallidos en 10 minutos), añade automáticamente una regla de firewall que bloquea la dirección IP atacante durante un periodo establecido.
Configuración recomendada de Fail2ban
- SSH jail: bloquea tras 3 intentos fallidos durante 1 hora
- Apache/Nginx jail: bloquea ante peticiones 404 repetidas o patrones de URL sospechosos
- Recidive jail: bloquea a los infractores reincidentes durante periodos más largos (hasta 1 semana)
- Notificaciones por correo electrónico: recibe un mensaje con cada bloqueo
Paso 4: actualizaciones de seguridad automáticas
Proteger un VPS es un proceso continuo. Las actualizaciones de seguridad deben aplicarse lo antes posible para cerrar las vulnerabilidades conocidas. Configura actualizaciones automáticas para los parches de seguridad, de modo que tu servidor esté siempre protegido, incluso cuando no lo administras activamente.
Configurar unattended-upgrades
En Ubuntu/Debian usas el paquete unattended-upgrades. Instala automáticamente las actualizaciones de seguridad sin intervención manual. Configúralo para que solo las actualizaciones de seguridad se instalen automáticamente, no todas las actualizaciones, para garantizar la estabilidad.
Configurar el reinicio automático
Algunas actualizaciones requieren reiniciar el servidor. Puedes configurar los reinicios automáticos para que se hagan en un momento tranquilo, por ejemplo, a las 04:00 de la madrugada. Eso sí, asegúrate de que tus aplicaciones se inicien automáticamente después de un reinicio.
Paso 5: gestión de usuarios y permisos
Una gestión de usuarios correcta es esencial para proteger un VPS. No trabajes nunca como usuario root por defecto y da a los usuarios solo los permisos que necesitan.
Crear un usuario sudo
Crea un usuario aparte con permisos sudo para la administración diaria del servidor. Este usuario puede obtener temporalmente permisos de root mediante el comando sudo, pero trabaja por defecto con permisos limitados. Así se limita el daño si la cuenta se ve comprometida.
Proteger la cuenta root
- Desactiva el inicio de sesión directo como root por SSH
- Establece una contraseña muy segura para la cuenta root
- Plantéate desactivar por completo la cuenta root si no la necesitas
- Registra todas las acciones sudo con fines de auditoría
Paso 6: permisos de archivos e integridad
Unos permisos de archivos correctos impiden que usuarios o procesos no autorizados puedan leer o modificar archivos sensibles. Es un aspecto que a menudo se pasa por alto al proteger un VPS.
Permisos de archivos importantes
| Archivo/Carpeta | Permiso | Propietario | Motivo |
|---|---|---|---|
| /etc/ssh/sshd_config | 600 | root | Proteger la configuración de SSH |
| /etc/shadow | 600 | root | Proteger los hashes de contraseñas |
| Directorios home | 700 | usuario | Privacidad por usuario |
| Raíz web | 755 | www-data | El servidor web puede leer, pero no escribir |
| Archivos de configuración | 644 | root | Se pueden leer, pero no escribir |
Monitorización de la integridad de archivos
Instala una herramienta como AIDE (Advanced Intrusion Detection Environment) que crea una base de datos de todos los archivos del sistema y te avisa cuando se modifican archivos de forma inesperada. Es una forma potente de detectar intrusiones de manera temprana.
Paso 7: hardening de red
Además del firewall, existen configuraciones de red adicionales que ayudan a proteger el VPS.
Ajustar los parámetros del kernel
- Protección contra SYN flood: activa las SYN cookies contra los ataques SYN flood
- Protección contra IP spoofing: activa el reverse path filtering
- Desactivar las redirecciones ICMP: evita la manipulación de rutas
- Desactivar el source routing: bloquea los paquetes con enrutamiento de origen
- Desactivar IPv6: si no lo usas, desactívalo
Desactivar los servicios innecesarios
Cada servicio en ejecución es una posible superficie de ataque. Haz un inventario de los servicios activos y desactiva todo lo que no necesites. Entre los servicios que suelen ejecutarse sin necesidad están Avahi (mDNS), CUPS (impresión), NFS y los servicios relacionados con RPC.
Paso 8: monitorización y logging
Proteger un VPS no está completo sin una buena monitorización y un buen logging. Necesitas saber qué ocurre en tu servidor para poder reaccionar rápido ante las amenazas.
Configurar el logging
- Centraliza los logs con rsyslog o journald
- Configura la rotación de logs para gestionar el espacio en disco
- Plantéate un almacenamiento externo de logs para que se conserven en caso de ataque
- Monitoriza auth.log en busca de intentos de inicio de sesión sospechosos
Herramientas de monitorización
Instala software de monitorización para vigilar el estado y la seguridad de tu servidor. Entre las opciones más populares están Netdata (gratis, monitorización en tiempo real), Zabbix (completo, para varios servidores) y Prometheus con Grafana (para métricas y paneles avanzados). Consulta también nuestra guía sobre monitorización de páginas web para obtener más información.
Paso 9: estrategia de copias de seguridad
Una buena copia de seguridad es tu última línea de defensa al proteger un VPS. Si fallan todas las demás medidas, con una copia de seguridad puedes restaurarlo todo.
Buenas prácticas de copias de seguridad para VPS
- Haz copias de seguridad automáticas diarias
- Guarda las copias de seguridad en una ubicación externa (no en el mismo VPS)
- Prueba el proceso de restauración con regularidad
- Conserva varias generaciones de copias de seguridad
- Cifra las copias de seguridad con una contraseña segura
Lee nuestra guía sobre cómo hacer una copia de seguridad de una página web para obtener instrucciones detalladas sobre cómo configurar una estrategia de copias de seguridad robusta.
Checklist para proteger un VPS: resumen completo
Esta es la checklist completa para proteger tu VPS tras la instalación:
- Configurar la autenticación con clave SSH y desactivar el inicio de sesión con contraseña
- Cambiar el puerto SSH y desactivar el inicio de sesión como root
- Configurar el firewall (UFW) con el mínimo de puertos abiertos
- Instalar y configurar Fail2ban
- Activar las actualizaciones de seguridad automáticas
- Crear un usuario sudo y desactivar el inicio de sesión como root
- Revisar y reforzar los permisos de archivos
- Instalar la monitorización de la integridad de archivos (AIDE)
- Endurecer los parámetros del kernel
- Desactivar los servicios innecesarios
- Configurar el logging y la monitorización
- Implementar y probar una estrategia de copias de seguridad
- Instalar certificados SSL para todos los servicios web
- Programar auditorías de seguridad periódicas
Proteger un VPS no es una tarea puntual, sino un proceso continuo. Programa una revisión de seguridad mensual en la que compruebes todos los puntos anteriores y actualices tu configuración según las nuevas amenazas. Con esta checklist completa tienes una base sólida para un VPS seguro en el que alojar tus páginas web y aplicaciones con confianza. Consulta también nuestra comparativa de hosting VPS administrado frente a no administrado si te planteas externalizar la gestión de la seguridad.
Proteger un VPS: configuración avanzada del firewall
Un firewall es la primera línea de defensa al proteger tu VPS. Por defecto, en un VPS nuevo todos los puertos están abiertos, lo que hace que tu servidor sea vulnerable a los ataques. Por eso, una configuración estricta del firewall es el primer paso de todos tras la instalación.
UFW frente a iptables
UFW (Uncomplicated Firewall) es el firewall más accesible para quienes empiezan con Linux, mientras que iptables ofrece más control a los usuarios avanzados. Para la mayoría de los administradores de VPS, UFW es la mejor opción por su sintaxis sencilla.
| Característica | UFW | iptables | nftables |
|---|---|---|---|
| Facilidad de uso | Muy sencilla | Compleja | Media |
| Flexibilidad | Básica | Completa | Completa |
| Compatibilidad con IPv6 | Automática | Configuración aparte | Integrada |
| Logging | Sencillo | Detallado | Detallado |
| Recomendado para | Principiantes/nivel medio | Usuarios avanzados | Nuevos/avanzados |
Empieza bloqueando todo el tráfico entrante y permite después solo los puertos necesarios. El conjunto mínimo de puertos para un servidor web es: SSH (22 o un número de puerto personalizado), HTTP (80) y HTTPS (443). No permitas el acceso a los puertos de bases de datos (3306 para MySQL, 5432 para PostgreSQL) desde la red pública de internet.
Detección y prevención de intrusiones en tu VPS
Además de un firewall, necesitas una vigilancia activa para detectar los intentos de intrusión y bloquearlos automáticamente. Es una parte crucial de proteger tu VPS frente a ataques tanto automatizados como dirigidos.
Fail2Ban es la herramienta de prevención de intrusiones más utilizada en servidores Linux. Analiza los archivos de registro en busca de intentos de inicio de sesión fallidos y bloquea automáticamente las direcciones IP que muestran un comportamiento sospechoso. Configura Fail2Ban para:
- SSH: bloquea las direcciones IP después de entre 3 y 5 intentos de inicio de sesión fallidos durante al menos 30 minutos
- Servidor web: detecta y bloquea los escáneres que buscan vulnerabilidades
- FTP: si usas FTP (mejor: usa SFTP a través de SSH)
- Páginas de inicio de sesión del CMS: protege wp-login.php de WordPress u otras páginas de administración
Plantéate además instalar un sistema de detección de intrusiones basado en host (HIDS) como OSSEC o Wazuh. Estas herramientas monitorizan los cambios en los archivos, detectan rootkits y avisan ante actividad sospechosa en el sistema. Combínalo con herramientas de monitorización de servidores para tener una visión completa del estado y la seguridad de tu VPS.
Proteger un VPS: gestión de usuarios y control de acceso
Una gestión de usuarios correcta es fundamental para un VPS seguro. Muchos incidentes de seguridad se deben a permisos demasiado amplios o a cuentas compartidas. Sigue estas pautas para un control de acceso sólido:
- Desactiva el inicio de sesión como root por SSH: usa un usuario normal con permisos sudo y desactiva el inicio de sesión directo como root en sshd_config.
- Crea cuentas individuales: da a cada administrador su propia cuenta en lugar de una cuenta de administrador compartida. Esto hace posibles los registros de auditoría.
- Usa claves SSH: desactiva la autenticación por contraseña y usa exclusivamente claves SSH para un acceso seguro.
- Limita los permisos sudo: da a los usuarios solo los comandos sudo específicos que necesitan mediante el archivo sudoers.
- Implementa 2FA para SSH: añade la autenticación de dos factores a SSH para una capa de seguridad adicional mediante el módulo PAM de Google Authenticator.
Actualizaciones automáticas y gestión de parches para tu VPS
El software obsoleto es uno de los mayores riesgos para tu VPS. La gestión automática de parches garantiza que las actualizaciones de seguridad se apliquen rápido, incluso cuando no estás pendiente de la administración del servidor. Es una parte esencial de proteger tu VPS.
En Ubuntu y Debian puedes configurar unattended-upgrades para las actualizaciones de seguridad automáticas. Instala los parches del sistema operativo sin intervención manual. Para las actualizaciones de aplicaciones (como imágenes de Docker o versiones de CMS) hace falta un proceso más controlado.
- Parches del sistema operativo: automáticos con unattended-upgrades o yum-cron
- Actualizaciones del servidor web: prueba primero en un entorno de staging antes de actualizar Nginx o Apache
- Actualizaciones de la base de datos: haz siempre una copia de seguridad antes de actualizar el software de la base de datos
- Actualizaciones de aplicaciones: planifica ciclos de actualización mensuales para tu CMS, tus frameworks y tus plugins
Monitoriza las actualizaciones disponibles con comandos de Linux para administrar un VPS. El comando apt list --upgradable muestra las actualizaciones disponibles en sistemas basados en Debian. Lleva un changelog de todas las actualizaciones que realices, para poder revertir rápido si hay problemas. Combina todo esto con un firewall para páginas web para una protección óptima de tu servidor y de las páginas web que se ejecutan en él.
Proteger un VPS: hardening del kernel y seguridad del sistema
Además de la seguridad de red y de acceso, endurecer el kernel de Linux es una parte importante de proteger tu VPS. El kernel es el núcleo del sistema operativo y las vulnerabilidades en él tienen las consecuencias de mayor alcance.
Con los ajustes de sysctl puedes modificar varios parámetros del kernel para mejorar la seguridad. Protégete contra el IP spoofing activando el reverse path filtering. Evita los ataques de redirección ICMP desactivando la aceptación de redirecciones. Activa la protección SYN cookie contra los ataques SYN flood, una forma muy habitual de denegación de servicio. Limita la información que revela el kernel activando kernel.dmesg_restrict, de modo que solo los usuarios root puedan leer los mensajes de registro del kernel.
AppArmor y SELinux ofrecen control de acceso obligatorio (MAC), un complemento a los permisos de archivos estándar de Linux. Estos sistemas limitan lo que pueden hacer los programas, incluso cuando se ejecutan como root. AppArmor viene disponible por defecto en Ubuntu y es más fácil de configurar, mientras que SELinux (por defecto en CentOS y RHEL) ofrece un control más granular, pero tiene una curva de aprendizaje más pronunciada.
Proteger un VPS: logging y registro de auditoría
Un sistema de logs bien configurado es imprescindible para detectar e investigar incidentes de seguridad en tu VPS. Sin un logging adecuado no puedes averiguar qué ocurrió durante una intrusión ni qué datos pueden haberse visto comprometidos.
Configura auditd para una auditoría completa del sistema. Registra todos los eventos relevantes del sistema: acceso a archivos, acciones de los usuarios, conexiones de red y llamadas de procesos. Centraliza tus logs con rsyslog o journald en un servidor de logs externo o un servicio en la nube. Así evitas que un atacante pueda borrar los logs locales para ocultar sus huellas. Configura la rotación de logs para evitar que los archivos de log llenen tu disco, pero conserva los logs al menos 90 días para el análisis forense. Monitoriza tus logs de forma activa con herramientas como Logwatch, que envían un resumen diario, o con sistemas SIEM avanzados que reconocen patrones en tiempo real y avisan ante actividad sospechosa. Una buena estrategia de logging, combinada con las medidas mencionadas antes, hace que tu VPS resista la mayoría de los ataques y te permite reaccionar rápido cuando algo sale mal.
Proteger un VPS: estrategia de copias de seguridad y recuperación ante desastres
Un VPS protegido solo está completo con una estrategia de copias de seguridad bien pensada. Incluso con la mejor seguridad, los fallos de hardware, los errores humanos o los ataques avanzados pueden provocar pérdida de datos. Tu copia de seguridad es tu última línea de defensa al proteger tu VPS.
Aplica la regla de copias de seguridad 3-2-1: guarda tres copias de tus datos en dos tipos de medios distintos, con una de las copias en una ubicación externa. Automatiza las copias de seguridad diarias de tus bases de datos y las copias semanales de todos los archivos. Guarda las copias de seguridad cifradas con cifrado AES-256 y conserva la clave de cifrado separada de las propias copias.
Prueba tus copias de seguridad cada mes haciendo una restauración completa en un entorno de pruebas. Una copia de seguridad que no se puede restaurar no vale nada. Documenta el procedimiento de restauración paso a paso para que incluso un compañero que no participa a diario en la administración del servidor pueda hacer una restauración en caso de emergencia. Define tu Recovery Time Objective (cuánto tiempo debe tardar el sistema en volver a funcionar) y tu Recovery Point Objective (cuántos datos puedes perder como máximo) y ajusta a ellos la frecuencia de tus copias de seguridad. Para páginas web críticas para el negocio, un RPO de como máximo una hora y un RTO de como máximo cuatro horas es una pauta habitual.
Proteger un VPS: resumen y lista de prioridades
Proteger tu VPS puede parecer abrumador con todas las medidas disponibles. Usa esta lista de prioridades para ejecutar los pasos más importantes en el orden correcto. Empieza justo después de la instalación cambiando la contraseña SSH por defecto y creando un usuario no root con permisos sudo. Configura después la autenticación con clave SSH y desactiva el inicio de sesión con contraseña. Instala y configura un firewall que bloquee todo el tráfico entrante excepto los puertos que necesites. Configura Fail2Ban para bloquear automáticamente los ataques de fuerza bruta. Activa las actualizaciones de seguridad automáticas del sistema operativo. Configura copias de seguridad automáticas diarias en una ubicación externa. Instala una monitorización que te avise ante comportamientos anómalos. Documenta toda la configuración de tu servidor para poder reproducirla en caso de emergencia. Con estos pasos en el orden correcto tienes una base de seguridad sólida que luego puedes ampliar con medidas más avanzadas como el hardening del kernel y la detección de intrusiones.