Asegurando Servidores Linux en Produccion
Linux es el sistema operativo dominante en servidores web y cloud. En LATAM, la mayoria de la infraestructura de produccion corre sobre Ubuntu, Debian o CentOS/RHEL. Asegurar ("hardenear") estos servidores es fundamental para prevenir intrusiones, y muchas brechas de seguridad en la region ocurren por configuraciones por defecto que nunca se modificaron.
Checklist de Hardening Esencial
- Actualizaciones: Mantener el sistema actualizado es la medida mas importante. Configurar unattended-upgrades en Ubuntu para parches de seguridad automaticos.
- SSH seguro: Deshabilitar login como root, usar solo autenticacion por clave publica (no password), cambiar puerto por defecto (22), limitar intentos con fail2ban.
- Firewall (iptables/ufw): Permitir solo puertos necesarios. Regla por defecto: denegar todo, permitir solo lo explicito.
- Usuarios y permisos: Principio de menor privilegio. Cada servicio corre con su propio usuario no-root. Usar sudo en lugar de root directo.
- Monitoreo de logs: Centralizar logs con rsyslog, journald o ELK stack. Alertas automaticas para eventos sospechosos.
Dato Importante
El 60% de las brechas de seguridad en servidores LATAM involucran credenciales SSH comprometidas (ESET, 2024). Las dos medidas mas efectivas son: 1) Deshabilitar autenticacion SSH por password y usar solo claves, 2) Instalar fail2ban para bloquear intentos de fuerza bruta. Ambas son gratuitas y toman 10 minutos de configurar.
| Configuracion | Por Defecto | Recomendado |
|---|---|---|
| SSH root login | Permitido | PermitRootLogin no |
| SSH password auth | Habilitado | PasswordAuthentication no |
| SSH puerto | 22 | Puerto no estandar (ej: 2222) |
| Firewall | Sin configurar | UFW: deny incoming, allow 22,80,443 |
| Automatic updates | Deshabilitado | unattended-upgrades habilitado |
Docker Security
Con la popularidad de Docker en LATAM para deployments, la seguridad de contenedores es critica:
- No correr contenedores como root: usar USER en Dockerfile
- Escanear imagenes con Trivy o Snyk antes de deployar
- Limitar recursos (CPU, memoria) por contenedor
- No exponer el Docker socket sin necesidad
- Usar redes Docker para aislar contenedores entre si