stringtranslate.com

contraseña

passwd es un comando en Unix , Plan 9 , Inferno y la mayoría de los sistemas operativos similares a Unix que se utilizan para cambiar la contraseña de un usuario . La contraseña ingresada por el usuario se ejecuta a través de una función de derivación de clave para crear una versión hash de la nueva contraseña, que se guarda. Sólo se almacena la versión hash; la contraseña ingresada no se guarda por razones de seguridad.

Cuando el usuario inicia sesión, la contraseña ingresada por el usuario durante el proceso de inicio de sesión se ejecuta a través de la misma función de derivación de clave y la versión hash resultante se compara con la versión guardada. Si los hashes son idénticos, la contraseña ingresada se considera correcta y el usuario queda autenticado. En teoría, es posible que dos contraseñas diferentes produzcan el mismo hash . Sin embargo, las funciones hash criptográficas están diseñadas de tal manera que encontrar cualquier contraseña que produzca el mismo hash es muy difícil y prácticamente inviable, por lo que si el hash producido coincide con el almacenado, el usuario puede autenticarse.

El comando passwd se puede usar para cambiar contraseñas de cuentas locales y, en la mayoría de los sistemas, también se puede usar para cambiar contraseñas administradas en un mecanismo de autenticación distribuida como NIS , Kerberos o LDAP .

archivo de contraseña

El /etc/passwdarchivo es una base de datos basada en texto con información sobre los usuarios que pueden iniciar sesión en el sistema u otras identidades de usuario del sistema operativo que poseen procesos en ejecución.

En muchos sistemas operativos, este archivo es sólo uno de los muchos posibles servidores del servicio de nombres passwd más general .

El nombre del archivo proviene de una de sus funciones iniciales, ya que contenía los datos utilizados para verificar las contraseñas de las cuentas de usuario. Sin embargo, en los sistemas Unix modernos, la información de contraseña sensible a la seguridad a menudo se almacena en un archivo diferente utilizando contraseñas ocultas u otras implementaciones de bases de datos.

El /etc/passwdarchivo normalmente tiene permisos del sistema de archivos que permiten que todos los usuarios del sistema lo puedan leer ( legible mundialmente ), aunque solo puede ser modificado por el superusuario o mediante el uso de algunos comandos privilegiados con fines especiales.

El /etc/passwdarchivo es un archivo de texto con un registro por línea , cada uno de los cuales describe una cuenta de usuario . Cada registro consta de siete campos separados por dos puntos . El orden de los registros dentro del archivo generalmente no es importante.

Un registro de ejemplo puede ser:

jsmith : x : 1001 : 1000 : Joe Smith, habitación 1007, (234) 555-8910, (234) 555-0044, correo electrónico : /home/jsmith : /bin/sh

Los campos, en orden de izquierda a derecha, son: [1]

  1. jsmith: Nombre de usuario: la cadena que un usuario escribiría al iniciar sesión en el sistema operativo: el nombre de registro . Debe ser único entre los usuarios enumerados en el archivo.
  2. x: Información utilizada para validar la contraseña de un usuario . El formato es el mismo que el del campo análogo en el archivo de contraseña oculta, con la convención adicional de que establecerlo en "x" significa que la contraseña real se encuentra en el archivo de contraseña oculta, algo común en los sistemas modernos. [2]
  3. 1001: número de identificación de usuario , utilizado por el sistema operativo para fines internos. Debe ser único ya que identifica a los usuarios de forma única.
  4. 1000: número de identificador de grupo , que identifica el grupo principal del usuario; Todos los archivos creados por este usuario pueden ser accesibles inicialmente para este grupo.
  5. Joe Smith,Room 1007...: Campo Gecos , comentario que describe a la persona o cuenta. Normalmente, se trata de un conjunto de valores separados por comas que incluyen el nombre completo y los datos de contacto del usuario. [3]
  6. /home/jsmith: Ruta al directorio de inicio del usuario .
  7. /bin/sh: Programa que se inicia cada vez que el usuario inicia sesión en el sistema. Para un usuario interactivo, este suele ser uno de los intérpretes de línea de comandos del sistema ( shells ).

Archivo de sombra

/etc/shadowse utiliza para aumentar el nivel de seguridad de las contraseñas restringiendo el acceso de todos los usuarios, excepto los más privilegiados, a los datos de contraseñas cifrados. Normalmente, esos datos se guardan en archivos propiedad del superusuario y a los que sólo puede acceder el superusuario .

Los administradores de sistemas pueden reducir la probabilidad de ataques de fuerza bruta haciendo que la lista de contraseñas hash sea ilegible para usuarios sin privilegios. La forma obvia de hacer esto es hacer que la passwdbase de datos sea legible solo por el usuario root. Sin embargo, esto restringiría el acceso a otros datos del archivo, como las asignaciones de nombre de usuario a ID de usuario, lo que interrumpiría muchas utilidades y disposiciones existentes. Una solución es un archivo de contraseña "sombra" para mantener los hashes de contraseña separados de los demás datos en el archivo passwd legible en todo el mundo . Para archivos locales, esto suele ser /etc/shadowen sistemas Linux y Unix, o /etc/master.passwden sistemas BSD ; cada uno es legible sólo por root . (El acceso root a los datos se considera aceptable ya que en sistemas con el modelo de seguridad tradicional "root todopoderoso", el usuario root podría obtener la información de otras maneras en cualquier caso). Prácticamente todos los sistemas operativos recientes tipo Unix utilizan contraseñas ocultas.

El archivo de contraseña oculta no resuelve por completo el problema del acceso de los atacantes a contraseñas hash, ya que algunos esquemas de autenticación de red operan transmitiendo la contraseña hash a través de la red (a veces en texto sin formato , por ejemplo, Telnet [4] ), lo que la hace vulnerable a la interceptación. Las copias de datos del sistema, como las copias de seguridad del sistema escritas en cinta o en medios ópticos, también pueden convertirse en un medio para obtener ilícitamente contraseñas cifradas. Además, las funciones utilizadas por los programas legítimos de verificación de contraseñas deben escribirse de tal manera que los programas maliciosos no puedan realizar grandes cantidades de comprobaciones de autenticación a altas velocidades.

Independientemente de si el sombreado de contraseña está vigente en un sistema determinado, todos los usuarios pueden leer el archivo passwd para que varias utilidades del sistema (por ejemplo, grep ) puedan funcionar (por ejemplo, para garantizar que los nombres de usuario existentes en el sistema se puedan encontrar dentro del archivo). archivo), mientras que sólo el usuario root puede escribir en él. Sin ocultamiento de contraseñas, esto significa que un atacante con acceso sin privilegios al sistema puede obtener la forma hash de la contraseña de cada usuario. Esos valores se pueden usar para montar un ataque de fuerza bruta fuera de línea, probando posibles contraseñas contra las contraseñas hash con relativa rapidez sin alertar a las disposiciones de seguridad del sistema diseñadas para detectar una cantidad anormal de intentos fallidos de inicio de sesión . Especialmente cuando el hash no tiene sal, también es posible buscar estas contraseñas con hash en tablas Rainbow , bases de datos creadas especialmente para devolver una contraseña para un hash único.

Cuando se utiliza un esquema de contraseña oculta, el /etc/passwdarchivo normalmente muestra un carácter como " *" o " x" en el campo de contraseña para cada usuario en lugar de la contraseña hash y /etc/shadownormalmente contiene la siguiente información de usuario:

El formato del archivo sombra es simple y básicamente idéntico al del archivo de contraseña, es decir, una línea por usuario, campos ordenados en cada línea y campos separados por dos puntos. Muchos sistemas [ cuantificar ] requieren que el orden de las líneas de usuario en el archivo oculto sea idéntico al orden de los usuarios correspondientes en el archivo de contraseñas.

Historia

Antes del sombreado de contraseñas, la contraseña hash de un usuario de Unix se almacenaba en el segundo campo de su registro en el /etc/passwdarchivo (dentro del formato de siete campos como se describió anteriormente).

El sombreado de contraseñas apareció por primera vez en los sistemas Unix con el desarrollo de SunOS a mediados de la década de 1980, [10] System V Release 3.2 en 1988 y BSD 4.3 Reno en 1990. Sin embargo, los proveedores que habían realizado ports de versiones anteriores de UNIX no siempre incluían el nuevas funciones de ocultación de contraseñas en sus versiones, lo que deja a los usuarios de esos sistemas expuestos a ataques de archivos de contraseñas.

Los administradores del sistema también pueden organizar el almacenamiento de contraseñas en bases de datos distribuidas como NIS y LDAP , en lugar de en archivos en cada sistema conectado. En el caso de NIS, el mecanismo de contraseña oculta todavía se utiliza a menudo en los servidores NIS; en otros mecanismos distribuidos, el problema del acceso a los diversos componentes de autenticación de usuarios lo manejan los mecanismos de seguridad del depósito de datos subyacente.

En 1987, la autora del Shadow Password Suite original , Julie Haugh, experimentó un robo en su computadora y escribió la versión inicial de Shadow Suite que contenía los logincomandos passwdy su. La versión original, escrita para el sistema operativo SCO Xenix , rápidamente fue trasladada a otras plataformas. Shadow Suite fue portado a Linux en 1992, un año después del anuncio original del proyecto Linux, y se incluyó en muchas de las primeras distribuciones y continúa estando incluido en muchas distribuciones actuales de Linux .

En el pasado, era necesario tener diferentes comandos para cambiar contraseñas en diferentes esquemas de autenticación. Por ejemplo, el comando para cambiar una contraseña NIS era yppasswd . Esto requería que los usuarios estuvieran conscientes de los diferentes métodos para cambiar contraseñas para diferentes sistemas, y también resultaba en una duplicación inútil de código en los diversos programas que realizaban las mismas funciones con diferentes backends . En la mayoría de las implementaciones, ahora existe un único comando passwd, y el control de dónde se cambia realmente la contraseña se maneja de forma transparente para el usuario a través de módulos de autenticación conectables (PAM). Por ejemplo, el tipo de hash utilizado lo dicta la configuración del pam_unix.somódulo. De forma predeterminada, se ha utilizado el hash MD5 , mientras que los módulos actuales también son capaces de utilizar hashes más potentes como Blowfish , SHA256 y SHA512 .

Ver también

Referencias

  1. ^ Comprensión del formato de archivo /etc/passwd
  2. ^ "contraseña (5) - página del manual de Linux". Man7.org . Consultado el 25 de agosto de 2014 .
  3. ^ Adams, David. "Cómo ver y comprender el archivo /etc/passwd en Linux".
  4. ^ RFC 2877: 5250 mejoras de Telnet
  5. ^ "Hash de contraseña con MD5-crypt en relación con MD5 - Blog de Vidar".
  6. ^ "Implementación de SHA512-crypt vs MD5-crypt - Blog de Vidar".
  7. ^ "Formato de cripta modular". Archivado desde el original el 7 de enero de 2022 . Consultado el 29 de enero de 2022 .
  8. ^ "solaris - contraseña (1)". cs.bgu.ac.il. ​Archivado desde el original el 17 de diciembre de 2013.
  9. ^ "6.3. Información específica de Red Hat Enterprise Linux". Acceso.redhat.com . Consultado el 25 de agosto de 2014 .
  10. ^ "passwd.adjunt(5) en SunOS-4.1.3". Modman.unixdev.net . Consultado el 3 de enero de 2016 .

enlaces externos