Guía VPS

Securización de sus VPS

Última actualización : 1 de enero de 2026

1. Configurar el acceso SSH con clave pública

Nivel: Esencial

El acceso SSH por contraseña es el principal objetivo de los ataques por fuerza bruta. La primera medida es pasar a una autenticación por clave pública/privada.

Paso 1 — Generar su par de claves en su máquina local:

ssh-keygen -t ed25519 -C "su@email.com"
# Siga las instrucciones y defina una passphrase fuerte

Paso 2 — Copiar la clave pública al VPS:

ssh-copy-id -i ~/.ssh/id_ed25519.pub root@su-ip-vps

Paso 3 — Desactivar la autenticación por contraseña:

nano /etc/ssh/sshd_config

PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
systemctl restart sshd

⚠️ Pruebe la conexión con su clave en un nuevo terminal ANTES de cerrar la sesión actual, para evitar quedarse bloqueado.

2. Crear un usuario no-root

Nivel: Esencial

Trabajar como root expone todo el sistema en caso de compromiso. Cree un usuario dedicado con privilegios sudo.

# Crear un usuario
adduser admin_cloudstore

# Añadir al grupo sudo
usermod -aG sudo admin_cloudstore

# Copiar las claves SSH a la nueva cuenta
rsync --archive --chown=admin_cloudstore:admin_cloudstore ~/.ssh /home/admin_cloudstore

💡 Elija un nombre de usuario no genérico (evite "admin", "ubuntu", "user"). Un nombre personalizado dificulta el ataque por enumeración.

3. Cambiar el puerto SSH

Nivel: Esencial

El puerto 22 es el primero atacado por los bots. Cambiarlo a un puerto no estándar reduce drásticamente el ruido en sus logs.

nano /etc/ssh/sshd_config

# Cambiar la línea Port:
Port 2222
# Elija un puerto entre 1024 y 65535

systemctl restart sshd

📌 No olvide abrir este nuevo puerto en su firewall antes de reiniciar SSH, y actualizar su comando de conexión: ssh -p 2222 user@ip

4. Configurar el firewall UFW

Nivel: Esencial

UFW (Uncomplicated Firewall) es la solución de firewall recomendada en Ubuntu/Debian. Aplique el principio del menor privilegio: bloquear todo por defecto, abrir solo lo necesario.

# Instalar UFW si no está
apt install ufw -y

# Política por defecto: bloquear todo en entrada
ufw default deny incoming
ufw default allow outgoing

# Permitir SSH en su nuevo puerto
ufw allow 2222/tcp

# Permitir HTTP/HTTPS si aloja un sitio web
ufw allow 80/tcp
ufw allow 443/tcp

# Activar el firewall
ufw enable

# Verificar el estado
ufw status verbose

💡 Si utiliza una IP fija para conectarse, puede restringir SSH a esa IP únicamente: ufw allow from SU_IP to any port 2222

5. Instalar Fail2Ban

Nivel: Esencial

Fail2Ban supervisa los logs del sistema y banea temporalmente las IPs que realizan demasiados intentos de autenticación fallidos.

apt install fail2ban -y

# Crear una configuración local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local

# Configurar estos parámetros en [DEFAULT]:
bantime = 3600          # Duración del baneo (1 hora)
findtime = 600          # Ventana de observación (10 min)
maxretry = 5            # Intentos antes del baneo

# Configurar la prisión SSH:
[sshd]
enabled = true
port = 2222
logpath = /var/log/auth.log

systemctl enable fail2ban && systemctl restart fail2ban
fail2ban-client status sshd

6. Mantener el sistema actualizado

Nivel: Esencial

Las actualizaciones de seguridad corrigen vulnerabilidades conocidas. Una política de actualización rigurosa es indispensable.

# Actualizar manualmente
apt update && apt upgrade -y && apt autoremove -y

# Activar las actualizaciones de seguridad automáticas
apt install unattended-upgrades -y
dpkg-reconfigure --priority=low unattended-upgrades

💡 Configure las actualizaciones automáticas únicamente para los parches de seguridad. Para las actualizaciones mayores (ej: nueva versión de PHP, MySQL), planifique una ventana de mantenimiento.

7. Gestionar los servicios activos

Nivel: Intermedio

Cada servicio activo es una puerta de entrada potencial. Desactive todo lo que no sea estrictamente necesario.

# Listar los servicios activos
systemctl list-units --type=service --state=active

# Desactivar un servicio innecesario (ejemplo)
systemctl disable bluetooth.service
systemctl stop bluetooth.service

# Verificar los puertos abiertos
ss -tuln
  • Desactive los servicios de escritorio (cups, avahi-daemon) en los VPS headless.
  • Instale solo el software estrictamente necesario.
  • Utilice ss -tuln regularmente para auditar los puertos abiertos.

8. Implementar una estrategia de copia de seguridad

Nivel: Intermedio

Los ransomwares y los errores humanos pueden poner fin a su servicio en pocos segundos. Las copias de seguridad regulares no son negociables.

  • Active los snapshots automáticos desde su área de cliente CLOUDSTORE.AFRICA
  • Configure una copia de seguridad externa en un segundo VPS o un almacenamiento de objetos
  • Pruebe la restauración de sus copias de seguridad regularmente (al menos una vez por trimestre)
  • Aplique la regla 3-2-1: 3 copias, 2 soportes diferentes, 1 externa
  • Cifre sus copias de seguridad si contienen datos sensibles
# Copia de seguridad MySQL con compresión
mysqldump --all-databases | gzip > /backup/mysql_$(date +%Y%m%d).sql.gz

# Rsync hacia un almacenamiento remoto
rsync -avz --delete /var/www/ backup_user@backup-server:/backups/www/

9. Supervisar su VPS

Nivel: Intermedio

La supervisión proactiva permite detectar intrusiones, sobrecargas de recursos y comportamientos anormales.

# Instalar Netdata para la supervisión en tiempo real
bash <(curl -Ss https://my-netdata.io/kickstart.sh)

# Instalar logwatch para los informes diarios de logs
apt install logwatch -y
logwatch --output mail --mailto su@email.com --detail high
  • Supervise el uso de CPU, RAM y disco.
  • Configure alertas sobre umbrales críticos (CPU > 90%, disco > 80%).
  • Consulte regularmente /var/log/auth.log y /var/log/syslog.
  • Utilice la supervisión integrada de su área de cliente CLOUDSTORE.AFRICA.

10. Securizar sus aplicaciones web

Nivel: Avanzado

Si su VPS aloja aplicaciones web, aplique estas medidas complementarias:

  • Instale un certificado SSL/TLS (Let's Encrypt gratuito o SSL comercial vía CLOUDSTORE.AFRICA)
  • Configure la redirección HTTP a HTTPS
  • Active las cabeceras de seguridad HTTP (HSTS, X-Frame-Options, CSP, X-Content-Type-Options)
  • Actualice regularmente WordPress, Joomla, y otros CMS
  • Instale un WAF (Web Application Firewall) como ModSecurity con Nginx/Apache
  • Desactive la visualización de errores PHP en producción (display_errors = Off)
  • Utilice contraseñas fuertes para las bases de datos y no las exponga públicamente

11. Checklist de securización rápida

Verifique que ha realizado correctamente cada uno de estos pasos:

  • ✅ Autenticación SSH por clave pública (desactivar la contraseña)
  • ✅ Cuenta de usuario no-root para la administración
  • ✅ Puerto SSH cambiado (no 22)
  • ✅ Firewall UFW activado con reglas mínimas
  • ✅ Fail2Ban instalado y configurado
  • ✅ Sistema actualizado (actualizaciones automáticas de seguridad)
  • ✅ Servicios innecesarios desactivados
  • ✅ Copias de seguridad automáticas activadas y probadas
  • ✅ Supervisión implementada
  • ✅ Certificado SSL instalado para los servicios web

¿Necesita ayuda para asegurar su VPS?

Nuestro equipo de expertos puede auditar y configurar su servidor por usted. Contáctenos para obtener un presupuesto personalizado.