Protege tu VPS: una lista de comprobación que puedes terminar en 20 minutos
Esta guía está traducida del inglés. Algunas páginas enlazadas solo están disponibles en inglés.
Los pasos concretos que frenan a la inmensa mayoría de los ataques oportunistas.
Nunca conseguirás un servidor perfectamente seguro. Lo que sí puedes es convertirlo en un objetivo poco atractivo en unos veinte minutos, lo que desvía prácticamente todos los ataques automatizados.
1. SSH solo con claves
Se explica por completo en Claves SSH y acceso. Es el paso individual de mayor valor. La fuerza bruta de contraseñas es el método de intrusión más común en internet y esto lo elimina.
PasswordAuthentication no
PermitRootLogin prohibit-password2. Un firewall que deniega por defecto
Permite solo lo que realmente sirves. En Debian/Ubuntu:
apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp # SSH — see the warning below
ufw allow 80,443/tcp # web
ufw enable
ufw status verboseEn la familia RHEL, usa firewalld:
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadAdvertencia: activa el firewall con tu sesión SSH abierta y confirma que SSH está permitido antes de desconectarte. Si cambias el puerto SSH, permite primero el puerto nuevo. Consulta Conceptos básicos del firewall para ver los detalles, incluida nuestra interfaz de malla privada, que siempre debe estar permitida.
3. Actualizaciones de seguridad automáticas
apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades # choose yes
# verify:
systemctl status unattended-upgrades --no-pagerEn la familia RHEL, dnf-automatic hace el mismo trabajo. Los parches de seguridad automáticos cierran la ventana entre que se publica una vulnerabilidad y que se explota, que en la práctica suele ser cuestión de horas.
4. Fail2ban
Bloquea una IP tras varios inicios de sesión fallidos, convirtiendo un intento interminable de fuerza bruta en un callejón sin salida. Consulta Conceptos básicos de Fail2ban.
apt install -y fail2ban
systemctl enable --now fail2ban5. Desactiva lo que no uses
Cada servicio que escucha es una posible puerta de entrada.
ss -tulpn # what is listening, and who owns it
systemctl --type=service --state=running # what is runningDetén y deshabilita todo lo que no hayas pedido. Un servidor mínimo es un servidor seguro.
6. Ejecuta los servicios con usuarios sin privilegios
Las bases de datos, las aplicaciones web y los workers nunca deben ejecutarse como root. La mayoría de los paquetes crean automáticamente su propio usuario de servicio; úsalo. Si escribes tu propio archivo de unidad, define User= y Group= de forma explícita.
7. Protege los secretos
Nunca subas secretos a git. Usa archivos de entorno con
chmod 600.Nunca dejes un archivo de configuración legible por todos si contiene una contraseña o una clave.
Prefiere credenciales por servicio en lugar de una sola credencial de administrador compartida.
8. Ten una vía para volver a entrar
Confirma que la consola de rescate en /panel/vps funciona antes de necesitarla.
Haz una instantánea antes de cambios arriesgados; consulta Redimensionar, instantáneas y reinstalar.
Guarda al menos una clave SSH en un lugar distinto de tu portátil de uso diario.
9. Monitoriza
Un servidor que nunca miras es un servidor que no puedes defender. Añade una comprobación de monitorización y lee tus registros de vez en cuando; Cómo leer tus registros te enseña cómo.
Opcional: detección de intrusiones
Para hosts de mayor valor, CrowdSec (bloqueo colaborativo, licencia MIT) y Wazuh (detección de intrusiones en el host) aportan una profundidad real. Ambos están documentados en nuestras guías de hosting de aplicaciones.
Lecturas relacionadas