Checklist de seguridad para servidores Linux
Un servidor Linux expuesto a internet es un blanco constante de ataques automatizados. Este checklist cubre las medidas esenciales para proteger tu infraestructura.
SSH: primera línea de defensa
Deshabilitar login como root, usar autenticación por clave SSH (no contraseña), cambiar el puerto por defecto (22), limitar usuarios que pueden hacer SSH, y configurar timeout de sesiones inactivas.
Firewall: solo lo necesario
Política por defecto: denegar todo el tráfico entrante. Abrir solo los puertos que necesitás (SSH, HTTP, HTTPS, y los específicos de tu aplicación). Usar UFW (Ubuntu) o firewalld (RHEL/Rocky).
Actualizaciones automáticas
Configurar unattended-upgrades para parches de seguridad automáticos. Reiniciar el servidor periódicamente para aplicar actualizaciones de kernel. Suscribirse a listas de seguridad de tu distribución.
Fail2ban: bloquear atacantes
Instalar fail2ban para bloquear IPs que intenten fuerza bruta. Configurar jails para SSH, HTTP auth, y cualquier servicio expuesto. Ajustar bantime, findtime y maxretry según tu tolerancia.
Permisos y usuarios
Principio de mínimo privilegio: cada servicio corre con su propio usuario sin privilegios. No usar root para tareas cotidianas. Auditar permisos de archivos sensibles (/etc/shadow, claves SSH, configs).
Cifrado
HTTPS obligatorio con certificados Let's Encrypt (renovación automática). Cifrado de disco para datos sensibles (LUKS). Conexiones a base de datos cifradas con TLS. VPN para acceso administrativo si es posible.
Monitoreo y alertas
Monitorear logs de autenticación (/var/log/auth.log), configurar alertas para logins exitosos desde IPs desconocidas, revisar procesos corriendo periódicamente, y usar herramientas como OSSEC o Wazuh para detección de intrusiones.
Backups cifrados
Backups diarios automáticos, cifrados antes de transferir, almacenados en ubicación separada del servidor. Probar la restauración periódicamente. Un backup que no se puede restaurar no es un backup.