Gestión de Seguridad
Garantizar la seguridad de un sistema Debian es una tarea central en la administración de sistemas. Esta guía cubrirá varias áreas clave para ayudarte a fortalecer tu sistema y protegerlo contra amenazas potenciales.
🔐 Usuarios y Control de Acceso
Limitar el acceso al sistema es la primera línea de defensa en seguridad.
Aplicar Políticas de Contraseñas Fuertes
Utiliza el módulo libpam-pwquality para obligar a los usuarios a crear contraseñas más seguras.
Instalar el módulo:
bashsudo apt update sudo apt install libpam-pwqualityConfigurar la política: Edita el archivo
/etc/security/pwquality.confpara definir las reglas de las contraseñas.ini# Configuración de ejemplo: minlen = 10 # Longitud mínima de 10 dcredit = -1 # Al menos 1 dígito ucredit = -1 # Al menos 1 letra mayúscula lcredit = -1 # Al menos 1 letra minúscula ocredit = -1 # Al menos 1 carácter especial difok = 3 # Al menos 3 caracteres diferentes de la contraseña anterior
Fortalecer la Seguridad de SSH
SSH es el método más común para acceder a servidores de forma remota. Aquí hay algunas recomendaciones para fortalecerlo:
Editar el archivo de configuración de SSH:
bashsudo nano /etc/ssh/sshd_configConfiguración recomendada:
- Deshabilitar inicio de sesión root:
PermitRootLogin no - Deshabilitar autenticación por contraseña (recomendado usar claves):
PasswordAuthentication no - Habilitar autenticación por clave pública:
PubkeyAuthentication yes - Cambiar el puerto predeterminado (opcional):
Port 2222
- Deshabilitar inicio de sesión root:
Reiniciar el servicio SSH:
bashsudo systemctl restart sshd
🔥 Configuración del Cortafuegos (UFW)
Debian no habilita un cortafuegos por defecto. UFW (Uncomplicated Firewall) es una herramienta de interfaz amigable. En Debian 13, UFW utiliza el framework nftables en segundo plano (compatible con la sintaxis antigua de iptables).
Instalar UFW:
bashsudo apt install ufwConfigurar reglas básicas:
bashsudo ufw default deny incoming # Denegar todas las conexiones entrantes sudo ufw default allow outgoing # Permitir todas las conexiones salientes sudo ufw allow ssh # Permitir conexiones SSH (o el puerto que hayas cambiado) sudo ufw allow http # Si es un servidor web, permitir HTTP sudo ufw allow https # Permitir HTTPSHabilitar UFW:
bashsudo ufw enableEl sistema advertirá que esto podría interrumpir conexiones SSH existentes; confirma para continuar.
Verificar el estado:
bashsudo ufw status verbose
🔄 Actualizaciones de Seguridad Automáticas
Aplicar parches de seguridad de manera oportuna es crucial. unattended-upgrades puede instalar actualizaciones de seguridad automáticamente.
Instalar:
bashsudo apt install unattended-upgradesHabilitar: Ejecuta el asistente de configuración, que creará un archivo de configuración básico.
bashsudo dpkg-reconfigure -plow unattended-upgradesSelecciona "Sí" en el cuadro de diálogo que aparece.
Ajustar la configuración (opcional): Puedes editar el archivo
/etc/apt/apt.conf.d/50unattended-upgradespara personalizar el comportamiento de las actualizaciones, por ejemplo, habilitando reinicios automáticos.
🛡️ Protección contra Intrusiones (Fail2Ban)
Fail2Ban monitorea archivos de registro y actualiza automáticamente las reglas del cortafuegos para bloquear direcciones IP basándose en comportamientos sospechosos (como múltiples intentos de inicio de sesión fallidos).
Instalar Fail2Ban:
bashsudo apt install fail2banCrear archivo de configuración local: No modifiques directamente los archivos
.conf. En su lugar, crea un archivo.localpara sobrescribir la configuración.bashsudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.localConfigurar protección SSH: En
jail.local, encuentra la sección[sshd]y asegúrate de queenabled = true. Puedes ajustarmaxretry(número máximo de intentos) ybantime(duración del bloqueo).ini[sshd] enabled = true port = ssh maxretry = 3 bantime = 3600 # Bloquear durante 1 horaReiniciar el servicio:
bashsudo systemctl restart fail2ban
📝 Gestión y Auditoría de Registros
Revisar regularmente los registros del sistema es clave para detectar actividades anómalas.
- Usar
journalctlpara ver registros:bash# Ver todos los registros (de más antiguo a más reciente) journalctl # Monitorear registros en tiempo real journalctl -f # Ver registros de un servicio específico, por ejemplo sshd journalctl -u sshd.service # Ver registros del kernel journalctl -k