====== [FORT] Práctica 4: Securizando las cuentas de usuario ====== ===== 1. Deshabilita el login a root, tanto en el Display Manager como en las Terminales Virtuales excepto tty3 ===== {{:master_cs:fortificacion:pasted:20250225-135459.png}} Para deshabilitar estos permisos vamos a modificar los archivos de PAM que se encuentran en /etc/pam.d. Para deshabilitar el acceso a root en la interfaz gráfica modificamos el archivo lightdm con las siguientes lineas: auth required pam_unix.so nullok account required pam_unix.so {{:master_cs:fortificacion:pasted:20250225-135744.png}} Para deshabilitar los permisos en las terminales virtuales modificamos el archivo login con lo siguiente: auth [success=1 default=ignore] pam_securetty.so {{:master_cs:fortificacion:pasted:20250225-140001.png}} ===== 2. Usando el módulo pam_wheel.so haz que solo usuario, user001, user002, user003 y user004 puedan volverser root con SU. ===== **Usuario no necesita saber la contraseña, mientras que los usuarios del 001 al 004 la necesitan para convertirse en root. Al resto de usuarios no se les preguntará por la contraseña.** Para aplicar los ajustes debemos modificar el archivo /etc/pam.d/su con las siguientes líneas: auth required pam_wheel.so group=wheel #Permite a los usuario del grupo Wheel a usar su sin contraseña auth [success=1 default=ignore] pam_succeed_if.so user = usuario #Permite al usuario "usuario" usar su sin contraseña auth required pam_unix.so #se configura para permitir que los usuarios indicados tengan que poner la contraseña {{:master_cs:fortificacion:pasted:20250225-143051.png}} También debemos añadir a los usuarios en cuestión al grupo wheel con el siguiente comando: sudo usermod -aG wheel usuario sudo usermod -aG wheel user001 sudo usermod -aG wheel user002 sudo usermod -aG wheel user003 sudo usermod -aG wheel user004 {{:master_cs:fortificacion:pasted:20250225-143255.png}} ===== 3. ¿Que método de cifrado se usa para las contraseñas? ¿Ha sido usado el mismo método para todas las contraseñas en el sistema? ===== **Deberíamos usar SHA256 y cambiar las contraseñas de todos los usuarios a SHA256 ¿Como deberíamos hacer?** Echando un vistazo a /etc/shadow podemos ver las contraseñas cifradas por un lado para root: {{:master_cs:fortificacion:pasted:20250225-143851.png}} y por otro lado para los demás usuarios: {{:master_cs:fortificacion:pasted:20250225-143926.png}} Las contraseñas en general comienzan con una cadena \$\$, estos primeros 3 caracteres señalan en que cifrado viene cada contraseña, por lo que sabemos que: * Root y usuario comienzan con \$y\$, por lo que sabemos que usa yescrypt * El resto de usuarios comienzan con \$6\$, por lo que sabemos que usan SHA-512 Esto lo sabemos gracias a las salidas del comando man 5 crypt, donde podemos ver que es cada cifrado, por ejemplo, el de root y usuario sería el siguiente: {{:master_cs:fortificacion:pasted:20250225-144815.png}} Y el del resto de usuarios sería el siguiente: {{:master_cs:fortificacion:pasted:20250225-144927.png}} Para cmbiar el cifrado de todos los usuarios a SHA256 habría que primero cambiar cual es el cifrado predeterminado en /etc/pam.d/common-password con las siguientes líneas: password requisite pam_unix.so sha256 {{:master_cs:fortificacion:pasted:20250225-145917.png}} Y tras eso modificar todas las contraseñas con un script como este: for user in $(cut -f1 -d: /etc/passwd); do sudo passwd --stdin $user done ===== 4. Fuerza los siguientes requisitos para los cambios de contraseña ===== * **Al menos 10 caracteres** * **Debe contener mayúsculas y minúsculas** * **Debe contener al menos 2 dígitos** * **Debe contener al menos un caracter no alphanumérico** * **No puede ser una de las 3 contraseñas anteriores** Para aplicar dichas políticas de contraseña debemos modificar el módulo common-password de PAM añadiendo la siguiente línea: password requisite pam_pwquality.so retry=3 minlen=10 minclass=4 minupper=1 mindigit=2 minother=1 {{:master_cs:fortificacion:pasted:20250225-150904.png}} Tras esto faltaría por establecer que no se puedan usar las 3 contraseñas anteriores, apara ello añadimos en el mismo fichero la siguiente línea: password requisite pam_unix.so remember=3 {{:master_cs:fortificacion:pasted:20250225-151200.png}} ===== 5. El usuario user010 SOLO puede ejecutar ls, rm, vi y wc ===== Para poder limitar el usuario de estam manera debemos comenzar por modificar el módulo login de PAM con la siguiente linea auth required pam_shells.so Tras eso creamos un archivo con los comandos restringidos llamado comandosrest.sh: allowed_commands=("ls" "rm" "vi" "wc") if [[ ! " ${allowed_commands[@]} " =~ " $1 " ]]; then echo "No puedes ejecutar ese comando :(" exit 1 fi {{:master_cs:fortificacion:pasted:20250225-153628.png}} Tras eso volvemos al archivo de login y añadimos la siguiente línea: session required pam_exec.so /etc/pam.d/comandosrest.sh ===== 6. El usuario user020 puede gestionar sistemas de archivos en el sistema usando fdisk, mkfs, mount y umount ===== ===== 7. Cualquier usuario del sistema puede usar cualquier cosa como user010 poniendo sus datos de autenticación ===== Para esto usamos el comando: sudo visudo y dentro añadimos la línea: ALL ALL=(user010) ALL {{:master_cs:fortificacion:pasted:20250225-155428.png}} ===== 8. Cualquier miembro del grupo adm puede realizar cualquier tarea adminsitrativa sin poner contraseña ===== Usamos de nuevo el comando visudo y añadimos la siguiente linea: %adm ALL=(ALL) NOPASSWD: ALL {{:master_cs:fortificacion:pasted:20250225-160130.png}} ===== 9. El usuario usuario no tiene que poner su contraseña para acceder al sistema. =====