Hardening inicial de un VPS recién entregado
Dedicados & VPS
24

Lo que harás en este tutorial

Cuando recibes un VPS nuevo viene con configuración de fábrica — adecuada para empezar pero lejos de estar blindada. En los próximos pasos endurecemos la seguridad con medidas estándar que deberías aplicar antes de poner el servidor en producción.

Paso 1 — Actualizar todo el sistema

Lo primero y más importante: parches. Un sistema desactualizado tiene vulnerabilidades conocidas que los atacantes explotan en minutos.

En Debian/Ubuntu:

sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y

En CentOS/Rocky/AlmaLinux:

sudo dnf update -y
sudo dnf autoremove -y

Si hay actualización de kernel, reinicia al terminar: sudo reboot.

Paso 2 — Crear un usuario administrador no-root

Trabajar siempre como root es peligroso — un error de tipeo puede destruir datos, y si un atacante consigue esa sesión tiene el control total. Crea un usuario separado con permisos sudo.

sudo adduser oxiraadmin
sudo usermod -aG sudo oxiraadmin    # en Debian/Ubuntu
sudo usermod -aG wheel oxiraadmin   # en CentOS/Rocky

Prueba que funciona: en otra terminal entra como el nuevo usuario (ssh oxiraadmin@tu-ip) y ejecuta sudo whoami — debe responder root.

Paso 3 — Configurar SSH con llaves y deshabilitar login root

Sigue nuestra guía de SSH con llaves públicas para configurar acceso sin contraseña al nuevo usuario. Cuando funcione, edita /etc/ssh/sshd_config:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers oxiraadmin

Reinicia con sudo systemctl restart sshd. No cierres la sesión actual hasta verificar en otra terminal que puedes seguir entrando con el nuevo usuario.

Paso 4 — Cambiar el puerto SSH (opcional pero útil)

El puerto 22 recibe miles de intentos de login al día de bots automatizados. Moverlo a otro puerto no es seguridad real, pero reduce el ruido de logs significativamente.

En /etc/ssh/sshd_config:

Port 2222

Abre el puerto nuevo en el firewall antes de reiniciar SSH, o te quedas fuera. Y verifica que SELinux/AppArmor no bloquean el puerto nuevo — en CentOS con SELinux activo:

sudo semanage port -a -t ssh_port_t -p tcp 2222

Paso 5 — Firewall activo

Sigue nuestra guía de Firewall con UFW o instala firewalld en CentOS. La regla básica es: denegar todo por defecto, permitir solo los puertos que el servidor necesita ofrecer (SSH, HTTP, HTTPS, y los del panel si lo tienes).

Paso 6 — Fail2ban para bloqueo automático

Fail2ban monitorea logs y bloquea automáticamente IPs que fallan repetidamente al intentar loguearse. Instálalo:

sudo apt install fail2ban      # Debian/Ubuntu
sudo dnf install epel-release && sudo dnf install fail2ban  # CentOS

Crea la configuración local:

sudo nano /etc/fail2ban/jail.local

Contenido mínimo:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = 2222
logpath = /var/log/auth.log
backend = systemd

Ajusta port si cambiaste SSH. En CentOS el logpath suele ser /var/log/secure. Reinicia: sudo systemctl enable --now fail2ban.

Paso 7 — Deshabilitar servicios que no usas

Mira qué está corriendo y escuchando puertos:

sudo ss -tulpn

Si ves servicios que no necesitas (rpcbind, NFS, Postfix sin usar, etc.), deshabilítalos:

sudo systemctl disable --now servicio

Menos superficie expuesta = menos riesgo.

Paso 8 — Establecer actualizaciones automáticas de seguridad

En Debian/Ubuntu:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

En CentOS/Rocky con dnf-automatic:

sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer

Revisa la configuración para que aplique solo parches de seguridad — no actualizaciones de funcionalidades que puedan romper cosas.

Paso 9 — Auditar periódicamente

Una vez blindado, no lo dejes al olvido. Una vez al mes:

  • Revisa last — quién entró al servidor recientemente.
  • Revisa sudo fail2ban-client status sshd — cuántas IPs bloqueó.
  • Corre sudo apt update && sudo apt upgrade aunque tengas automáticas.
  • Revisa /var/log/auth.log o /var/log/secure por patrones sospechosos.

Herramientas que te ayudarán

  • Lynis — auditor de seguridad automatizado. Escanea tu servidor y da recomendaciones puntuales.
  • rkhunter / chkrootkit — detectan rootkits conocidos.
  • ClamAV — antivirus opcional para escanear archivos subidos por usuarios.
  • ModSecurity — firewall de aplicación web (WAF) para servidores con Apache/Nginx.