Conceptos básicos de seguridad en VPS

Los pasos esenciales para proteger tu servidor virtual de ataques y malware.

Tu VPS es tu servidor — la seguridad depende completamente de ti. La mayoría de las intrusiones no provienen de vulnerabilidades del proveedor, sino de software desactualizado, contraseñas débiles o código malicioso introducido a través de FTP, plugins o equipos locales comprometidos.

Cómo se comprometen los servidores habitualmente

  1. CMS/plugins desactualizados Escáneres automatizados rastrean la web en busca de instalaciones de WordPress, Joomla, OpenCart, etc. con versiones antiguas o plugins vulnerables. Al encontrarlas → se inyecta código malicioso (iframes, redirecciones, mineros).

  2. Credenciales FTP comprometidas Un malware en tu equipo local roba las credenciales FTP → el atacante inicia sesión y deposita código directamente en los archivos.

  3. Manipulación del .htaccess Los atacantes reescriben el .htaccess para redirigir a los visitantes hacia sitios de phishing o malware, o para ejecutar scripts ocultos.

  4. Archivos maliciosos subidos Archivos PHP disfrazados de imágenes se suben a /uploads, /images, etc. → y se ejecutan al ser accedidos.

Medidas de seguridad fundamentales (aplícalas de inmediato)

  1. Solo contraseñas fuertes y claves SSH

    • Contraseña de root/admin: 16 o más caracteres aleatorios
    • Deshabilita el acceso por contraseña en SSH — usa exclusivamente claves:
      sudo nano /etc/ssh/sshd_config
      # Cambia o añade:
      PasswordAuthentication no
      PermitRootLogin prohibit-password   # o no
      sudo systemctl restart ssh
      
  2. Mantén todo actualizado Ejecuta a diario:

    sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
    
  3. Permisos de archivo correctos

    • Archivos: 644
    • Carpetas: 755
    • wp-config.php / configuration.php: 600
      find /var/www/ -type f -exec chmod 644 {} \;
      find /var/www/ -type d -exec chmod 755 {} \;
      
  4. Cortafuegos — permite solo lo necesario Ejemplo con UFW (22/SSH, 80/HTTP, 443/HTTPS):

    sudo ufw allow OpenSSH
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
    sudo ufw status
    
  5. Fail2Ban — detén los ataques de fuerza bruta Instalación:

    sudo apt install fail2ban -y
    

    Fail2Ban bloquea automáticamente las IPs tras varios intentos de acceso fallidos (funciona sin configuración adicional para SSH).

  6. Escáneres de malware y detectores de rootkits

    • ClamAV — escáner de archivos:
    sudo apt install clamav clamav-daemon -y
    sudo freshclam
    sudo clamscan -r /var/www
    
    • Rkhunter — detección de rootkits y malware:
    sudo apt install rkhunter -y
    sudo rkhunter --update
    sudo rkhunter --check
    
    • Lynis — auditoría de seguridad:
    sudo apt install lynis -y
    sudo lynis audit system
    
  7. Copias de seguridad — tu red de protección

  • Copias de seguridad automatizadas diarias (no solo en el servidor — cópialas en local o en la nube)
  • Prueba las restauraciones regularmente
  • En caso de infección → restaurar una copia limpia es más rápido que una limpieza manual

Si tu sitio/servidor ya está comprometido

  1. Aísla — desactiva el sitio temporalmente (renombra index.php o bloquéalo mediante .htaccess)
  2. Cambia todas las contraseñas (FTP, admin del CMS, SSH, base de datos, panel de control)
  3. Realiza un escaneo (ClamAV + Rkhunter + revisión manual)
  4. Inspección manual:
    • Archivos modificados recientemente:
    find /var/www/tu_sitio/ -type f -mtime -7 -ls
    
    • Archivos PHP en carpetas de uploads/images:
    find /var/www/tu_sitio/uploads/ -type f -iname "*.php"
    
    • Patrones de código sospechosos:
    grep -ril "base64_decode\|eval\|gzinflate\|fromCharCode" /var/www/tu_sitio/
    
  5. Restaura desde una copia de seguridad limpia
  6. Actualiza el CMS, los plugins y los temas
  7. Revisa el .htaccess en busca de redirecciones e iframes

Ayuda

¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!

¿Necesitas ayuda?Nuestros ingenieros te ayudarán gratuitamente con cualquier pregunta en minutosContáctanos