Cómo obligar a los usuarios a cambiar sus contraseñas en Linux

Un mensaje de "contraseña fallida" de sshd.
Ilya Titchev / Shutterstock

Las contraseñas son la piedra angular de la seguridad de la cuenta. Le mostraremos cómo restablecer contraseñas, establecer períodos de caducidad de contraseñas y hacer cumplir los cambios de contraseña en su red Linux.

La contraseña ha existido durante casi 60 años

Hemos estado demostrando a las computadoras que somos quienes decimos ser desde mediados de la década de 1960, cuando se introdujo por primera vez la contraseña. Siendo la necesidad la madre de la invención, el  Sistema Compatible de Tiempo Compartido  desarrollado en el  Instituto de Tecnología de Massachusetts  necesitaba una forma de identificar a diferentes personas en el sistema. También necesitaba evitar que las personas vieran los archivos de los demás.

Fernando J. Corbató  propuso un esquema que asignaba un nombre de usuario único a cada persona. Para demostrar que alguien era quien decía ser, tenía que usar una contraseña privada y personal para acceder a su cuenta.

El problema con las contraseñas es que funcionan como una llave. Cualquiera que tenga una llave puede usarla. Si alguien encuentra, adivina o descubre su contraseña, esa persona puede acceder a su cuenta. Hasta  que la autenticación de múltiples factores  esté disponible universalmente, la contraseña es lo único que mantiene a las personas no autorizadas ( actores de amenazas , en ciberseguridad) fuera de su sistema.

Las conexiones remotas realizadas por Secure Shell (SSH) se pueden configurar para usar claves SSH en lugar de contraseñas, y eso es genial. Sin embargo, ese es solo un método de conexión y no cubre los inicios de sesión locales.

Claramente, la administración de contraseñas es vital, al igual que la administración de las personas que están usando esas contraseñas.

La anatomía de una contraseña

De todos modos, ¿qué hace que una contraseña sea buena? Bueno, una buena contraseña debe tener todos los siguientes atributos:

  • Es imposible de adivinar o averiguar.
  • No lo ha usado en ningún otro lugar.
  • No ha estado involucrado en una  violación de datos .

El   sitio web Have I Been Pwned (HIBP) contiene más de 10 mil millones de conjuntos de credenciales violadas. Con cifras tan altas, es probable que alguien más haya usado la misma contraseña que tú. Esto significa que su contraseña podría estar en la base de datos, aunque no fue su cuenta la que fue violada.

Si su contraseña está en el sitio web de HIBP, esto significa que está en las listas de contraseñas  que utilizan las herramientas de ataque de diccionario y de fuerza bruta de los actores de amenazas  cuando intentan abrir una cuenta.

Una contraseña verdaderamente aleatoria (como 4HW @ HpJDBr% * Wt @ # b ~ aP) es prácticamente invulnerable, pero, por supuesto, nunca la recordaría. Le recomendamos que utilice un administrador de contraseñas para las cuentas en línea. Generan contraseñas complejas y aleatorias para todas sus cuentas en línea, y no es necesario que las recuerde; el administrador de contraseñas le proporciona la contraseña correcta.

Para las cuentas locales, cada persona debe generar su propia contraseña. También necesitarán saber cuál es una contraseña aceptable y cuál no. Tendrán que decirles que no reutilicen las contraseñas en otras cuentas, y así sucesivamente.

Relacionado:  Olvídese de Windows 11: la actualización 21H2 de Windows 10 llega en noviembre

Esta información suele estar en la Política de contraseñas de una organización. Instruye a las personas a utilizar un número mínimo de caracteres, mezclar letras mayúsculas y minúsculas, incluir símbolos y puntuación, etc.

Sin embargo, de acuerdo con  un artículo nuevo de un equipo de  la Universidad Carnegie Mellon , todos estos trucos añaden poco o nada a la solidez de una contraseña. Los investigadores descubrieron que los dos factores clave para la solidez de las contraseñas son que tengan al menos 12 caracteres de longitud y sean lo suficientemente fuertes. Midieron la fuerza de las contraseñas utilizando una serie de programas pirata informáticos, técnicas estadísticas y redes neuronales.

Un mínimo de 12 caracteres puede parecer abrumador al principio. Sin embargo, no piense en términos de una contraseña, sino más bien una frase de contraseña de tres o cuatro palabras no relacionadas separadas por puntuación.

Por ejemplo,  Experte Password Checker  dijo que se necesitarían 42 minutos para descifrar «chicago99», pero 400.000 millones de años para descifrar «chimney.purple.bag». También es fácil de recordar y escribir, y contiene solo 18 caracteres.

Revisión de la configuración actual

Antes de cambiar cualquier cosa relacionada con la contraseña de una persona, es prudente echar un vistazo a su configuración actual. Con el passwdcomando, puede  revisar su configuración actual  con su -Sopción (estado). Tenga en cuenta que también tendrá que usar sudocon passwdsi está trabajando con la configuración de contraseña de otra persona.

Escribimos lo siguiente:

sudo passwd -S mary

sudo passwd -S mary en una ventana de terminal.

Se imprime una sola línea de información en la ventana del terminal, como se muestra a continuación.

Salida de sudo passwd -S mary en una ventana de terminal.

Verá la siguiente información (de izquierda a derecha) en esa respuesta cortante:

  • El nombre de inicio de sesión de la persona.
  • Uno de los siguientes tres posibles indicadores aparece aquí:
    • P: indica que la cuenta tiene una contraseña válida que funciona.
    • L: Significa que la cuenta ha sido bloqueada por el propietario de la cuenta raíz.
    • NP:  No se ha establecido una contraseña.
  • La fecha en que se cambió por última vez la contraseña.
  • Antigüedad mínima de la contraseña: el período mínimo de tiempo (en días) que debe transcurrir entre los restablecimientos de contraseña realizados por el propietario de la cuenta. Sin embargo, el propietario de la cuenta raíz siempre puede cambiar la contraseña de cualquier persona. Si este valor es 0 (cero), no hay restricción en la frecuencia de los cambios de contraseña.
  • Antigüedad máxima de la contraseña: se solicita al propietario de la cuenta que cambie su contraseña cuando alcance esta edad. Este valor se da en días, por lo que un valor de 99,999 significa que la contraseña nunca caduca.
  • Período de advertencia de cambio de contraseña: si se aplica una edad máxima de contraseña, el propietario de la cuenta recibirá recordatorios para cambiar su contraseña. El primero de ellos se enviará el número de días que se muestra aquí antes de la fecha de reinicio.
  • Período de inactividad para la contraseña: si alguien no accede al sistema durante un período de tiempo que se superpone a la fecha límite para restablecer la contraseña, la contraseña de esta persona no se cambiará. Este valor indica cuántos días sigue el período de gracia a la fecha de vencimiento de la contraseña. Si la cuenta permanece inactiva este número de días después de que expira una contraseña, la cuenta está bloqueada. Un valor de -1 desactiva el período de gracia.

Establecer una antigüedad máxima de la contraseña

Para establecer un período de restablecimiento de contraseña, puede usar la -xopción (días máximos) con una cantidad de días. No deja un espacio entre -xy los dígitos, por lo que debe escribirlo de la siguiente manera:

sudo passwd -x45 mary

sudo passwd -x45 mary en una ventana de terminal.

Se nos dice que el valor de vencimiento ha cambiado, como se muestra a continuación.

Relacionado:  Cómo eliminar conexiones en LinkedIn

Notificación del cambio de caducidad de contraseña en una ventana de terminal.

Utilice la -Sopción (estado) para comprobar que el valor ahora es 45:

sudo passwd -S mary

sudo passwd -S mary en una ventana de terminal.

Ahora, en 45 días, se debe configurar una nueva contraseña para esta cuenta. Los recordatorios comenzarán siete días antes de eso. Si no se establece una nueva contraseña a tiempo, esta cuenta se bloqueará de inmediato.

Aplicación de un cambio de contraseña inmediato

También puede usar un comando para que otros en su red tengan que cambiar sus contraseñas la próxima vez que inicien sesión. Para hacer esto, debe usar la  -eopción (expirar), de la siguiente manera:

sudo passwd -e mary

sudo passwd -e mary en una ventana de terminal.

Luego se nos dice que la información de caducidad de la contraseña ha cambiado.

Salida de sudo passwd -e mary en una ventana de terminal.

Comprobemos la -Sopción y veamos qué ha pasado:

sudo passwd -S mary

sudo passwd -S mary en una ventana de terminal.

La fecha del último cambio de contraseña se establece en el primer día de 1970. La próxima vez que esta persona intente iniciar sesión, tendrá que cambiar su contraseña. También deben proporcionar su contraseña actual antes de poder escribir una nueva.

La pantalla de restablecimiento de contraseña.

¿Debería hacer cumplir los cambios de contraseña?

Obligar a las personas a cambiar sus contraseñas con regularidad solía ser de sentido común. Fue uno de los pasos de seguridad de rutina para la mayoría de las instalaciones y se consideró una buena práctica comercial.

El pensamiento ahora es el polo opuesto. En el Reino Unido, el  Centro Nacional de Seguridad Cibernética  desaconseja encarecidamente hacer cumplir las renovaciones periódicas de contraseñas , y el  Instituto Nacional de Estándares y Tecnología  de EE. Ambas organizaciones recomiendan la aplicación de un cambio de contraseña sólo si usted sabe o sospecha de una ya existente se conoce por otros .

Obligar a las personas a cambiar sus contraseñas se vuelve monótono y fomenta las contraseñas débiles. Las personas generalmente comienzan a reutilizar una contraseña base con una fecha u otro número etiquetado. O los escribirán porque tienen que cambiarlos con tanta frecuencia que no pueden recordarlos.

Las dos organizaciones que mencionamos anteriormente recomiendan las siguientes pautas para la seguridad de las contraseñas:

  • Utilice un administrador de contraseñas:  tanto para cuentas en línea como locales.
  • Active la autenticación de dos factores: siempre que  sea ​​una opción, úsela.
  • Use una frase de contraseña segura:  una excelente alternativa para aquellas cuentas que no funcionan con un administrador de contraseñas. Tres o más palabras separadas por signos de puntuación o símbolos es una buena plantilla a seguir.
  • Nunca reutilices una contraseña:  evita usar la misma contraseña que usas para otra cuenta, y definitivamente no uses una que aparezca en  Have I Been Pwned .

Los consejos anteriores le permitirán establecer un medio seguro para acceder a sus cuentas. Una vez que tenga estas pautas en su lugar, cúmplalas. ¿Por qué cambiar su contraseña si es fuerte y segura? Si cae en las manos equivocadas, o sospecha que lo ha hecho, puede cambiarlo.

A veces, sin embargo, esta decisión está fuera de tus manos. Si los poderes que se aplican a la contraseña cambian, no tiene muchas opciones. Puede defender su caso y dar a conocer su posición, pero a menos que sea el jefe, tendrá que seguir la política de la empresa.

El comando chage

Puede usar el chagecomando para cambiar la configuración con respecto al vencimiento de la contraseña. Este comando recibe su nombre de «cambiar el envejecimiento». Es como el passwdcomando con los elementos de creación de contraseña eliminados.

Relacionado:  Las 6 funciones de VPN que más importan

La -lopción (lista) presenta la misma información que el  passwd -S comando, pero de una manera más amigable.

Escribimos lo siguiente:

sudo chage -l eric

sudo chage -l eric en una ventana de terminal.

Otro buen toque es que puede establecer una fecha de vencimiento de la cuenta usando la  -Eopción (vencimiento). Pasaremos una fecha (en el formato año-mes-fecha) para establecer una fecha de vencimiento del 30 de noviembre de 2020. En esa fecha, la cuenta se bloqueará.

Escribimos lo siguiente:

sudo chage eric -E 2020-11-30

sudo chage eric -E 2020-11-30 en una ventana de terminal.

A continuación, escribimos lo siguiente para asegurarnos de que se haya realizado este cambio:

sudo chage -l eric

sudo change -l eric en una ventana de terminal.

Vemos que la fecha de vencimiento de la cuenta ha cambiado de «nunca» al 30 de noviembre de 2020.

Para establecer un período de vencimiento de la contraseña, puede utilizar la -Mopción (días máximos), junto con el número máximo de días que se puede utilizar una contraseña antes de que deba cambiarse.

Escribimos lo siguiente:

sudo chage -M 45 maría

sudo change -M 45 mary en una ventana de terminal.

Escribimos lo siguiente, usando la -lopción (lista), para ver el efecto de nuestro comando:

sudo chage -l mary

sudo change -l mary en una ventana de terminal.

La fecha de vencimiento de la contraseña ahora está configurada en 45 días a partir de la fecha en que la configuramos, que, como se muestra, será el 8 de diciembre de 2020.

Realizar cambios de contraseña para todos en una red

Cuando se crean cuentas, se utiliza un conjunto de valores predeterminados para las contraseñas. Puede definir cuáles son los valores predeterminados para los días mínimo, máximo y de advertencia. Luego, estos se guardan en un archivo llamado «/etc/login.defs».

Puede escribir lo siguiente para abrir este archivo en gedit:

sudo gedit /etc/login.defs

 en una ventana de terminal en una ventana de terminal

Desplácese hasta los controles de antigüedad de la contraseña.

Los controles de caducidad de la contraseña en el editor gedit.

Puede editarlos para adaptarlos a sus necesidades, guardar los cambios y luego cerrar el editor. La próxima vez que cree una cuenta de usuario, se aplicarán estos valores predeterminados.

Si desea cambiar todas las fechas de vencimiento de las contraseñas de las cuentas de usuario existentes, puede hacerlo fácilmente con un script. Simplemente escriba lo siguiente para abrir el gedit editor y crear un archivo llamado «password-date.sh»:

sudo gedit password-date.sh

sudo gedit password-date.sh en una ventana de terminal.

A continuación, copie el siguiente texto en su editor, guarde el archivo y luego cierre  gedit:

#! / bin / bash

reset_days = 28

para el nombre de usuario en $ (ls / home)
hacer
  sudo chage $ username -M $ reset_days
  echo $ El vencimiento de la contraseña del nombre de usuario cambió a $ reset_days
hecho

Esto cambiará el número máximo de días para cada cuenta de usuario a 28 y, por lo tanto, la frecuencia de restablecimiento de contraseña. Puede ajustar el valor de la reset_daysvariable para que se adapte.

Primero, escribimos lo siguiente para que nuestro script sea ejecutable:

chmod + x contraseña-fecha.sh

chmod + x password-date.sh en una ventana de terminal.

Ahora, podemos escribir lo siguiente para ejecutar nuestro script:

sudo ./password-date.sh

sudo ./password-date.sh en una ventana de terminal.

Luego, cada cuenta se procesa, como se muestra a continuación.

Cuatro cuentas de usuario con valores de caducidad de contraseña cambiaron a 28 en una ventana de terminal.

Escribimos lo siguiente para verificar la cuenta de «mary»:

sudo change -l mary

sudo chage -l mary en una ventana de terminal.

Valor máxima de días ha sido ajustada a 28, y se nos dice que va a caer el 21 de noviembre de 2020. También puede modificar fácilmente el guión y añadir más chageo passwdcomandos.


La gestión de contraseñas es algo que debe tomarse en serio. Ahora, tiene las herramientas que necesita para tomar el control.