Capítulo 5.4 - Buenas Prácticas
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Aplicar buenas prácticas de seguridad
- Gestionar usuarios de manera segura
- Comprender el principio de menor privilegio
- Implementar políticas de contraseñas
- Auditar los permisos
Principio de Menor Privilegio
Concepto
Otorgar solo los permisos necesarios, nada más.
Ventajas:
- Reducción de la superficie de ataque
- Limitación de daños en caso de compromiso
- Cumplimiento de seguridad
Gestión de Usuarios
Creación
Buenas prácticas:
- Crear usuarios con UID ≥ 1000
- Grupo principal dedicado
- Directorio home con permisos 700
- Shell apropiado (no /bin/false para usuarios normales)
# Buen ejemplo
sudo useradd -m -s /bin/bash -u 1001 -g users user1
sudo chmod 700 /home/user1
Eliminación
Buenas prácticas:
- Desactivar antes de eliminar (usermod -L)
- Respaldar datos importantes
- Verificar procesos activos
- Limpiar directorios y archivos
# Proceso recomendado
sudo usermod -L user1 # Bloquear
sleep 30 # Esperar
sudo pkill -u user1 # Matar procesos
sudo userdel -r user1 # Eliminar
Gestión de Grupos
Organización
Buenas prácticas:
- Grupos por proyecto/equipo
- Grupos por función (developers, admins)
- Evitar grupos demasiado amplios
- Documentar los grupos
# Ejemplo de organización
sudo groupadd proyecto-alpha
sudo groupadd developers
sudo groupadd admins
Miembros
Buenas prácticas:
- Agregar solo usuarios necesarios
- Revisar regularmente los miembros
- Retirar usuarios inactivos
- Documentar los añadidos
Contraseñas
Política
Configuración en /etc/login.defs:
# Duración mínima (días)
PASS_MIN_DAYS 1
# Duración máxima (días)
PASS_MAX_DAYS 90
# Advertencia (días antes de expiración)
PASS_WARN_AGE 7
Complejidad
Configuración con PAM:
# /etc/pam.d/common-password (Ubuntu/Debian)
password requisite pam_pwquality.so retry=3 minlen=8 difok=3
Requisitos:
- Longitud mínima (8+ caracteres)
- Complejidad (mayúsculas, minúsculas, números, símbolos)
- No palabras del diccionario
- Sin repeticiones
Expiración
# Forzar cambio en el próximo login
sudo chage -d 0 user1
# Definir expiración
sudo chage -E 2024-12-31 user1
# Ver información
chage -l user1
Permisos de Archivos
Directorios del Sistema
Buenas prácticas:
/etc: 755 (root:root)/bin,/sbin: 755 (root:root)/home: 755 (root:root)/home/user: 700 (user:user)/tmp: 1777 (root:root, sticky bit)
Archivos de Configuración
Buenas prácticas:
- Permisos restrictivos (600-644)
- Propietario root o servicio
- Sin ejecución salvo necesario
# Ejemplo
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/passwd
sudo chmod 640 /etc/group
Uso de sudo
Configuración
Buenas prácticas:
- Usar sudo en lugar de root directo
- Limitar los comandos autorizados
- Registrar las acciones
- Timeout apropiado
# /etc/sudoers
# Otorgar acceso completo
user1 ALL=(ALL:ALL) ALL
# Limitar a comandos específicos
user1 ALL=(ALL) /usr/bin/systemctl, /usr/bin/docker
# Sin contraseña (¡precaución!)
user1 ALL=(ALL) NOPASSWD: ALL
Verificación
# Ver privilegios sudo
sudo -l
# Ver historial
sudo cat /var/log/auth.log | grep sudo
Auditoría y Monitoreo
Verificar los Permisos
# Archivos con permisos amplios
find /home -type f -perm -o+w
# Archivos SUID/SGID
find / -type f -perm /4000 # SUID
find / -type f -perm /2000 # SGID
# Directorios world-writable
find / -type d -perm -o+w
Monitoreo de Conexiones
# Usuarios conectados
who
w
# Historial de conexiones
last
lastlog
# Intentos fallidos
sudo grep "Failed password" /var/log/auth.log
Seguridad de Root
Buenas Prácticas
Nunca:
- Conectarse directamente como root
- Compartir la cuenta root
- Usar root para tareas normales
Siempre:
- Usar sudo
- Limitar el acceso root
- Registrar acciones de root
- Cambiar la contraseña de root regularmente
Resumen
En este capítulo, usted ha aprendido:
Menor privilegio: Otorgar solo los permisos necesarios
Usuarios: Creación segura, eliminación adecuada
Grupos: Organización lógica, miembros controlados
Contraseñas: Política fuerte, expiración
Permisos: Restrictivos, auditoría regular
sudo: Configuración adecuada, registro
Auditoría: Verificaciones regulares, monitoreo
Próximos Pasos
Módulo 6: Scripting Shell (con crons)
Módulo 7: Red y Configuración
Capítulo creado el: Diciembre 2024