Solaris me dejó entrar con una contraseña diferente con los mismos 8 primeros caracteres

42

No sé si esto es normal, pero la cuestión es que, digamos que tengo un usuario de Solaris llamado gloaiza y su contraseña es password2getin

Estoy iniciando sesión en el servidor con PuTTY, acabo de poner 192.168.224.100 y aparece una ventana que pregunta por un usuario, así que escribo gloaiza , luego pide una contraseña y digamos que escribo contraseña2geti por error, ¡y funcionó! Estoy en el servidor!

¿Eso es normal? También funciona si pongo algo como contraseña2getin2 .

No soy un hablante nativo de inglés, así que, en caso de que haya algo que no puedas entender, por favor pregúntame

SO: Oracle Solaris 10 1/13

gloaiza
fuente
44
¿Qué pasa bajo ocho personajes? ¿ passworkTe mete?
thrig
@thrig Ok, mi contraseña real es de 9 caracteres de largo, así que digamos que la contraseña es pass2word, entonces funciona con pass2wor, pass2word1, pass2worr1, y así sucesivamente ... creo que funciona con todo una vez que escribe pass2wor no creo que es un gran problema, pero tampoco es bueno.
gloaiza
3
Siempre que tenga los primeros 8 caracteres correctos, lo dejará entrar. Desafortunadamente, generar una contraseña tiene cifrado en versiones anteriores de Solaris, ignora el carácter 9 y luego.
MelBurslan
14
Recordatorio suave para todos los desarrolladores incrustados aquí que piensan, "esto nunca podría suceder en mi sistema:" busyboxretrocederá silenciosamente a DES si no tiene todas las opciones de cifrado habilitadas en su .config y su libc. ¿Tal vez tome un minuto hoy para verificar sus archivos passwd/ shadow? ;)
11
@drewbenn: ¿quién demonios pensó que degradar la seguridad en silencio es una buena idea? Jesucristo.
Davor

Respuestas:

65

El sistema operativo almacena un hash de la contraseña en /etc/shadow(o, históricamente, /etc/passwd; o una ubicación diferente en alguna otra variantes de Unix). Históricamente, el primer hash de contraseña generalizado fue un esquema basado en DES que tenía la limitación de que solo tenía en cuenta los primeros 8 caracteres de la contraseña. Además, un algoritmo de hash de contraseña debe ser lento; El esquema basado en DES era algo lento cuando se inventó, pero es insuficiente para los estándares actuales.

Desde entonces, se han ideado mejores algoritmos. Pero Solaris 10 se predetermina al esquema histórico basado en DES. Solaris 11 adopta de manera predeterminada un algoritmo basado en SHA-256 iterado que cumple con los estándares modernos.

A menos que necesite compatibilidad histórica con sistemas antiguos, cambie al esquema SHA-256 iterado. Edite el archivo /etc/security/policy.confy cambie la CRYPT_DEFAULTconfiguración a 5 que significa crypt_sha256. También es posible que desee configurar CRYPT_ALGORITHMS_ALLOWy CRYPT_ALGORITHMS_DEPRECATE.

Una vez que haya cambiado la configuración, ejecute passwdpara cambiar su contraseña. Esto actualizará el hash de contraseña con el esquema configurado actualmente.

Gilles 'SO- deja de ser malvado'
fuente
1
Gracias por la respuesta. Cuando dijo " A menos que necesite compatibilidad histórica con sistemas antiguos ", lo dice en serio, lo que quiero decir es ... ¿Es posible realmente necesitar el esquema basado en DES y no poder cambiar a SHA-256, para algunos ¿razón?
gloaiza
11
@gloaiza Puede hacerlo si su archivo hash de contraseña se comparte con NIS o algún otro método con una máquina que ejecuta un sistema operativo verdaderamente antiguo (como Solaris 2.x). De otra manera no.
Gilles 'SO- deja de ser malvado'
21

Esto se espera, al menos en una configuración predeterminada de Solaris 10 y anteriores.

Su sistema está utilizando el crypt_unixalgoritmo heredado de Unix que de hecho limita el número de caracteres utilizados a ocho.

Esto está documentado en la passwdpágina del manual :

Las contraseñas se deben construir para cumplir con los siguientes requisitos:

  Cada contraseña debe tener caracteres PASSLENGTH, donde PASSLENGTH se define en
  / etc / default / passwd y está configurado en 6. Establecer PASSLENGTH en más de ocho
  los caracteres requieren configurar policy.conf (4) con un algoritmo que admita
  mayor de ocho caracteres .

Como este algoritmo es esencialmente obsoleto. Debe cambiar a algo mejor (los valores disponibles se enumeran en la crypt.confpágina del manual) configurando las entradas CRYPT_ALGORITHMS_DEPRECATEy CRYPT_DEFAULTel /etc/security/policy.confarchivo.

Ver http://docs.oracle.com/cd/E19253-01/816-4557/concept-63/index.html

jlliagre
fuente
1
No es cierto que "cuanto más alto mejor". Algoritmo 2a(bcrypt) puede ser el mejor .
Deja de dañar a Mónica el
@OrangeDog Punto tomado, consejo eliminado
jlliagre
7

Vea este hilo en los foros de Oracle :

El comportamiento que describe se espera cuando se utiliza el esquema de cifrado de contraseña "crypt_unix" predeterminado. Este esquema solo cifrará los primeros ocho caracteres de una contraseña y, por lo tanto, solo los primeros ocho caracteres deben coincidir cuando la contraseña se vuelva a escribir. No es un "error", sino una limitación conocida del algoritmo: se mantiene en gran medida para la compatibilidad con versiones anteriores, y desafortunadamente se establece como predeterminado en los sistemas Solaris cuando está instalado.

Para resolver esto, configure su sistema operativo para usar algoritmos MD5 o Blowfish en lugar de crypt_unix.

Esto se puede cambiar en el archivo /etc/security/policy.conf. Puede establecer algoritmos de cripta para permitir, y también hay una configuración para desaprobar (prohibir) el uso del algoritmo "crypt_unix" y cambiar el valor predeterminado a uno más seguro.

Consulte su "Guía de administración del sistema Solaris 10: servicios de seguridad" para obtener más información.

Consulte también Cambiar el algoritmo de contraseña (mapa de tareas) y especialmente Cómo especificar un algoritmo para el cifrado de contraseña :

Especifique el identificador para su algoritmo de cifrado elegido.

...

Escriba el identificador como el valor para la variable CRYPT_DEFAULT en el archivo /etc/security/policy.conf.

...

Para obtener más información sobre la configuración de las opciones de algoritmo, consulte la policy.conf(4)página del manual.

Andrew Henle
fuente
2

Solo para su información, esto también sucede en los sistemas IBM AIX hasta la versión 7.1.

Es curioso, porque este sistema con el que trabajé tiene una política de "no se puede reutilizar ninguna de las últimas 10 contraseñas" que tiene en cuenta toda la longitud de la contraseña, pero luego solo verifica los primeros 8 caracteres al iniciar sesión. Para que pueda configurar sus contraseñas como easypass_%$xZ!01, easypass_%&ssY!02, easypass_%$33zoi@@, ... para cada cambio de contraseña obligatoria, manteniendo efectivamente easypasscomo contraseña durante años.

walen
fuente