Encontranos en redes
Hardening básico de Linux
Configuración de SSH seguro, fail2ban, actualizaciones automáticas y usuario no-root.
¿Qué es hardening?
Hardening es el proceso de asegurar un servidor reduciendo su superficie de ataque. Un servidor recién instalado tiene configuraciones por defecto que no son seguras para producción. Esta guía cubre las medidas esenciales que todo servidor debería tener.
Paso 1: Actualizar el sistema
Antes de cualquier otra cosa:
sudo apt update && sudo apt upgrade -y
sudo apt autoremove -yPaso 2: Crear usuario no-root
Nunca trabajes como root directamente:
adduser deploy
usermod -aG sudo deployVerificá el acceso sudo:
su - deploy
sudo whoami # Debe mostrar: rootPaso 3: Configurar SSH seguro
Editá /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_configCambiá estas directivas:
# Deshabilitar acceso root
PermitRootLogin no
# Solo autenticación por clave
PasswordAuthentication no
PubkeyAuthentication yes
# Cambiar puerto (opcional pero recomendado)
Port 2222
# Limitar intentos
MaxAuthTries 3
MaxSessions 3
# Timeout de sesiones inactivas
ClientAliveInterval 300
ClientAliveCountMax 2
# Deshabilitar métodos inseguros
X11Forwarding no
PermitEmptyPasswords noAntes de reiniciar SSH, asegurate de tener tu clave pública copiada:
# Desde tu máquina local
ssh-copy-id -p 2222 deploy@TU_IPReiniciá SSH:
sudo systemctl restart sshdPaso 4: Instalar y configurar fail2ban
fail2ban bloquea IPs que intentan fuerza bruta:
sudo apt install -y fail2banCreá /etc/fail2ban/jail.local:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
banaction = ufw
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400Activá el servicio:
sudo systemctl enable fail2ban
sudo systemctl start fail2banVerificá el estado:
sudo fail2ban-client status sshdPaso 5: Configurar actualizaciones automáticas
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesEditá /etc/apt/apt.conf.d/50unattended-upgrades para configurar qué se actualiza:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";Paso 6: Deshabilitar servicios innecesarios
# Ver servicios activos
systemctl list-units --type=service --state=running
# Deshabilitar servicios que no uses
sudo systemctl disable --now cups
sudo systemctl disable --now avahi-daemonPaso 7: Configurar límites de recursos
Editá /etc/security/limits.conf:
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096Paso 8: Auditoría básica
Instalá herramientas de auditoría:
sudo apt install -y lynis
sudo lynis audit systemLynis te da un reporte con sugerencias de mejora específicas para tu servidor.
Checklist de hardening
- Sistema actualizado
- Usuario no-root con sudo
- SSH: sin root, sin password, puerto cambiado
- fail2ban activo
- Actualizaciones automáticas de seguridad
- Servicios innecesarios deshabilitados
- Firewall configurado (ver guía de UFW)
Recomendaciones
- Ejecutá
lynis audit systemmensualmente para detectar nuevas vulnerabilidades - Revisá los logs de fail2ban para ver intentos de intrusión
- Mantené un registro de los cambios de configuración
- Considerá herramientas adicionales como
rkhunterpara detectar rootkits