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 upgradeaunque tengas automáticas. - Revisa
/var/log/auth.logo/var/log/securepor 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.