Seguridad

Audite las contraseñas que nunca caducan para las cuentas de usuario con el script Bash

Los cambios regulares de contraseña han sido un elemento básico de la seguridad del sistema durante décadas. La idea es que si alguien obtiene tu contraseña, pueda acceder por un tiempo limitado. Por lo general, es más fácil dejar que el sistema les solicite en lugar de confiar en que el usuario recuerde cambiar su contraseña. Sin embargo, las cuentas de usuario normales pueden tener configuradas contraseñas que nunca caducan, por lo que no se solicita a los usuarios que cambien sus contraseñas.

El script de Bash en este artículo enumera todas las cuentas de usuario regulares en el sistema cuyas contraseñas están configuradas para que nunca caduquen.atravesar usuario generalme refiero a cuentas que normalmente tienen acceso de shell interactivo y /home contenido.

[ Learn more about Forcing Linux system password changes with the chage command. ]

Para este ejemplo puedes usar lo siguiente /etc/passwd Envíe archivos a los usuarios habituales Alice, Bob y Charlie:

[root@f3f6383512d0 /]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
alice:x:1000:1000::/home/alice:/bin/bash
bob:x:1001:1001::/home/bob:/bin/bash
charlie:x:1002:1002::/home/charlie:/bin/bash

Como puede ver, los directorios de inicio de estos usuarios regulares están en /homeAntes de iniciar el script Bash, verifique las tres cuentas de usuario con chage(1):

[root@f3f6383512d0 /]# for USER in alice bob charlie; do echo $USER; chage -l $USER; done
alice
Last password change                                : Aug 04, 2021
Password expires                                    : never
Password inactive                                   : never
Account expires                                     : never
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7

bob
Last password change                                : Aug 04, 2021
Password expires                                    : Nov 02, 2021
Password inactive                                   : never
Account expires                                     : never
Minimum number of days between password change      : 1
Maximum number of days between password change      : 90
Number of days of warning before password expires   : 7

charlie
Last password change                                : Aug 04, 2021
Password expires                                    : never
Password inactive                                   : never
Account expires                                     : never
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7

Solo la contraseña de Bob caducará en algún momento. El código de Alice y Charlie nunca lo será. Pero, ¿cómo puedo mostrar todas las cuentas de usuario cuyas contraseñas nunca caducan sin verificar cada cuenta individual?Como se mencionó, todas sus cuentas de usuario regulares tienen un directorio de inicio /homePuedes usar este dato para filtrarlos /etc/passwdEchemos un vistazo al script de Bash:

#!/bin/bash
for USER in $(grep home /etc/passwd | cut -d':' -f1)
do
  if [ "$(chage -l $USER | grep 'Password expires' | cut -d':' -f2)" == ' never' ]
 then
   echo $USER
 fi
done

documento /etc/passwd consta de varias columnas :, la primera columna de cada fila contiene el nombre de usuario.para cada línea que contiene la cadena Familiael script extrae el nombre de usuario y lo almacena en una variable usuarioEsto encontrará todas las cuentas de usuario regulares.A continuación, ejecuta el comando chage En estas cuentas de usuario, si el atributo La contraseña expiró establecer como de ninguna maneraSalida de nombre de usuario a salida estándar.

LEER  Cómo BlackBerry hizo que la votación con teléfonos inteligentes fuera segura

Eso no es demasiado difícil, ¿verdad? Si necesita hacer esto en un shell interactivo, no necesita ningún script, puede usar una sola línea de Bash en su lugar:

[root@f3f6383512d0 /]# for USER in $(grep home /etc/passwd | cut -d':' -f1);do if [ "$(chage -l $USER | grep 'Password expires' | cut -d':' -f2)" == ' never' ]; then echo $USER;fi;done
alice
charlie
[root@f3f6383512d0 /]#

Esa es la belleza de Bash.

envolver

Las contraseñas que no caducan pueden considerarse una brecha de seguridad y violar las políticas de seguridad de su organización. La auditoría de la configuración de contraseñas es fácil con el script Bash de este artículo, que genera una lista de cuentas de usuarios regulares cuyas contraseñas nunca caducan.Este script Bash utiliza algunas de las herramientas GNU más comunes, como chage(1), cut(1), echo(1) y grep(1).

Los scripts de Bash usan estructuras típicas como for bucle y if-then Las condiciones para la realización de la obra. Esta es una poderosa herramienta que todo administrador de sistemas debería conocer.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba