4.3. Seguridad de contraseñas

Las contraseñas son el método principal que Red Hat Enterprise Linux utiliza para verificar la identidad de los usuarios. Por esta razón la seguridad de las contraseñas es de suma importancia para la protección del usuario, la estación de trabajo y la red.

Para propósitos de seguridad, el programa de instalación configura el sistema para usar el Message-Digest Algorithm (MD5) y contraseñas shadow. Se recomienda que no cambie estas configuraciones.

Si quita la selección de MD5 durante la instalación, se utilizará el formato más viejo Data Encryption Standard (DES). Este formato limita las contraseñas a ocho caracteres alfanuméricos (no permite caracteres de puntuación o especiales) y proporciona un nivel encriptación modesto de 56-bits.

Si usted deselecciona las contraseñas shadow durante la instalación, todas las contraseñas son almacenadas como hash de una sola vía en el archivo /etc/passwd, lo que hace al sistema vulnerable a ataques de piratas fuera de línea. Si un intruso puede obtener acceso a la máquina como un usuario regular, puede también copiar el archivo /etc/passwd a su propia máquina y ejecutar cualquier cantidad de programas de descifrado de contraseñas contra el. Si hay una contraseña insegura en el archivo, es sólo una cosa de tiempo antes de que el maleante informático la descubra.

Las contraseñas shadow eliminan este tipo de ataques almacenando los hash de las contraseñas en el archivo /etc/shadow, el cual sólo es leído por el usuario root.

Esto obliga al atacante potencial a intentar descubrir la contraseña remotamente mediante la conexión a un servicio de la red en la máquina, tal como SSH o FTP. Este tipo de ataques de fuerza bruta son mucho más lentos y dejan rastros obvios, pues los intentos fallidos de conexión son registrados a los archivos del sistema. Por supuesto, si el maleante o cracker comienza un ataque durante la noche y usted tiene contraseñas débiles, éste podría obtener acceso antes del amanecer y editar el archivo de registro para borrar sus rastros.

Más allá de los detalles sobre el formato y almacenamiento, está el problema del contenido. La cosa más importante que un usuario puede hacer para proteger su cuenta contra un ataque de piratas, es crear una contraseña robusta.

4.3.1. Creación de contraseñas robustas

Cuando se cree una contraseña segura, es una buena idea seguir las siguientes pautas:

No haga lo siguiente:

  • No utilice solamente palabras o números — Nunca debería utilizar únicamente letras o sólo números en una contraseña.

    Algunos ejemplos inseguros incluyen:

    • 8675309

    • juan

    • atrapame

  • No utilice palabras reconocibles — Palabras tales como nombres propios, palabras del diccionario o hasta términos de shows de televisión o novelas deberían ser evitados, aún si estos son terminados con números.

    Algunos ejemplos inseguros incluyen:

    • john1

    • DS-9

    • mentat123

  • No utilice palabras en idiomas extranjeros — Los programas de descifrado de contraseñas a menudo verifican contra listas de palabras que abarcan diccionarios de muchos idiomas. No es seguro confiarse en un idioma extranjero para asegurar una contraseña.

    Algunos ejemplos inseguros incluyen:

    • cheguevara

    • bienvenue1

    • 1dumbKopf

  • No utilice terminología de hackers — Si piensa que usted pertenece a una élite porque utiliza terminología hacker — también llamado hablar l337 (LEET) — en su contraseña, piense otra vez. Muchas listas de palabras incluyen lenguaje LEET.

    Algunos ejemplos inseguros incluyen:

    • H4X0R

    • 1337

  • No utilice información personal — Mantengase alejado de la información personal. Si un atacante conoce quién es usted, la tarea de deducir su contraseña será aún más fácil. La lista siguiente muestra los tipos de información que debería evitar cuando esté creando una contraseña:

    Algunos ejemplos inseguros incluyen:

    • Su nombre

    • El nombre de sus mascotas

    • El nombre de los miembros de su familia

    • Fechas de cumpleaños

    • Su número telefónico o código postal

  • No invierta palabras reconocibles — Los buenos verificadores de contraseñas siempre invierten las palabras comunes, por tanto invertir una mala contraseña no la hace para nada más segura.

    Algunos ejemplos inseguros incluyen:

    • R0X4H

    • nauj

    • 9-DS

  • No escriba su contraseña — Nunca guarde su contraseña en un papel. Es mucho más seguro memorizarla.

  • No utilice la misma contraseña para todas las máquinas — Es importante que tenga contraseñas separadas para cada máquina. De esta forma, si un sistema es comprometido, no todas sus máquinas estarán en peligro inmediato.

Haga lo siguiente:

  • Cree contraseñas de al menos ocho caracteres — Mientras más larga sea la contraseña, mejor. Si está usando contraseñas MD5, debería ser de 15 caracteres de largo o más. Con las contraseñas DES, use el largo máximo (ocho caracteres).

  • Mezcle letras mayúsculas y minúsculas — Red Hat Enterprise Linux es sensitivo a las mayúsculas y minúsculas, por la tanto mezcle las letras para reenforzar su contraseña.

  • Mezcle letras y números — Agregando números a las contraseñas, especialmente cuando se añaden en el medio (no solamente al comienzo o al final), puede mejorar la fortaleza de su contraseña.

  • Incluya caracteres no alfanuméricos — Los caracteres especiales tales como &, $, y > pueden mejorar considerablemente su contraseña (esto no es posible si esta usando contraseñas DES).

  • Seleccione una contraseña que pueda recordar — La mejor contraseña en el mundo será de poca utilidad si usted no puede recordarla. Por lo tanto utilice acrónimos u otros dispositivos nemónicos que lo ayuden a memorizar las contraseñas.

Con todas estas reglas, puede parecer dificil crear una contraseña que reúna todos estos requisitos para las buenas contraseñas a la vez que se evitan los rasgos de las malas. Afortunadamente, hay algunos pasos que uno puede tomar para generar una contraseña segura y fácil de recordar.

4.3.1.1. Metodología para la creación de contraseñas seguras

Hay muchos métodos que la gente utiliza para crear contraseñas seguras. Uno de los métodos más populares incluyen acrónimos. Por ejemplo:

  • Piense en una frase memorable, tal como:

    "Es más fácil creer que pensar con espíritu crítico."

  • Luego, cámbielo a un acrónimo (incluyendo la puntuación).

    emfcqpcec.

  • Añada un poco de complejidad sustituyendo números y símbolos por letras en el acrónimo. Por ejemplo, sustituya7 por e y el símbolo arroba (@) por c:

    7mf@qp@7@.

  • Añada un poco más de complejidad colocando mayúscula al menos una letra, tal como M.

    7Mf@qp@7@.

  • Por último, no utilice esta contraseña de ejemplo en ninguno de sus sistemas.

Mientras que la creación de contraseñas seguras es imperativo, manejarlas adecuadamente es también importante, especialmente para los administradores de sistemas dentro de grandes organizaciones. La próxima sección detalla buenos hábitos en la creación y manejo de contraseñas de usuarios dentro de una organización.

4.3.2. Creación de cuentas de usuario dentro de la organización

Si hay un número significativo de usuarios dentro de una organización, los administradores de sistemas tienen dos opciones básicas disponibles para forzar el uso de buenas contraseñas. Ellos pueden crear contraseñas para el usuario o dejar que los usuarios crean sus propias contraseñas, a la vez que verifican que las contraseñas sean de calidad aceptable.

Al crear las contraseñas para los usuarios asegura que las contraseñas sean buenas, pero se vuelve una tarea agotadora a medida que la organización crece. También incrementa el riesgo de que los usuarios escriban sus contraseñas en papel.

Por estas razones, la mayoría de los administradores de sistemas prefieren dejar que los usuarios creen sus propias contraseñas, pero activamente verifican que las contraseñas sean buenas y, en algunos casos, obligan a los usuarios a cambiarlas periódicamente haciéndolas caducar.

4.3.2.1. Forzar la creación de contraseñas robustas

Para proteger la red contra intrusos, es una buena idea para los administradores de sistemas verificar que las contraseñas usadas dentro de la organización sean robustas. Cuando se les pide a los usuarios crear o modificar sus contraseñas, ellos pueden utilizar la aplicación de línea de comandos passwd, la cual es de tipo Pluggable Authentication Manager (PAM) y por lo tanto verificará para ver si la contraseña es fácil de descifrar o si es demasiado corta, a través del módulo PAM pam_cracklib.so. Puesto que PAM es personalizable, es posible añadir más verificaciones para la integridad de la contraseña, tales como pam_passwdqc (disponible desde http://www.openwall.com/passwdqc/) o escribir un nuevo módulo. Para una lista de los módulos PAM disponibles, consulte http://www.kernel.org/pub/linux/libs/pam/modules.html. Para más información sobre PAM, consulte el capítulo llamado Pluggable Authentication Modules (PAM) en el Manual de referencia de Red Hat Enterprise Linux.

Sin embargo, es importante resaltar que la verificación realizada en las contraseñas al momento de su creación, no descubren las malas contraseñas de forma tan efectiva como lo haría un programa específico para descifrado ejecutado sobre las contraseñas dentro de la organización.

Hay muchos programas de descifrado de contraseñas que corren bajo Red Hat Enterprise Linux aunque ninguno es suministrado con el sistema operativo. Abajo se muestra una breve lista de algunos de los programas de descifrado de contraseñas más populares:

NotaNota
 

Ninguna de estas herramientas son suministradas con Red Hat Enterprise Linux y, por lo tanto, no son soportadas por Red Hat, Inc. de ninguna manera.

  • John The Ripper — Un programa rápido y flexible de descifrado de contraseñas. Permite el uso de múltiples listas de palabras y es capaz de usar descifrado de contraseñas con fuerza bruta. Está disponible en http://www.openwall.com/john/.

  • Crack — Quizás el software más conocido sobre descifrado de contraseñas, muy rápido, pero no tan fácil de usar como John The Ripper. Se puede encontrar en línea desde http://www.crypticide.com/users/alecm/.

  • SlurpieSlurpie es similar a John The Ripper y a Crack excepto que está diseñado para ejecutarse en varias máquina simultáneamente, creando un ataque de contraseñas distribuido. Se puede encontrar junto a otros grupos de herramientas de evaluación de ataques distribuidos a la seguridad en http://www.ussrback.com/distributed.htm.

AvisoAviso
 

Siempre obtenga autorización por escrito antes de intentar descifrar las contraseñas dentro de la organización.

4.3.2.2. Envejecimiento de las contraseñas

El envejecimiento de contraseñas es una técnica utilizada por los administradores de sistemas para defenderse de las malas contraseñas dentro de la organización. El envejecimiento de contraseñas significa que luego de un tiempo determinado (usualmente 90 días) se le pide al usuario que creee una nueva contraseña. La teoría detrás de esto es que si un usuario es forzado a cambiar su contraseña periódicamente, una contraseña que ha sido descifrada por un cracker sólo le es útil por un tiempo determinado. La desventaja del envejecimiento de contraseñas, es que los usuarios tienden a escribir sus contraseñas.

Existen dos programas principales usados para especificar la caducidad de contraseñas bajo Red Hat Enterprise Linux: el comando chage o la aplicación gráfica Administrador de usuarios (system-config-users).

La opción -M del comando chage especifica el número de días máximo en que la contraseña será válida. Por lo tanto, si desea que la contraseña de un usuario expire en 90 días, escriba el comando siguiente:

chage -M 90 <username>

En el comando anterior, reemplace <username> con el nombre del usuario. Para desactivar la expiración de contraseñas, es común utilizar un valor de 99999 después de la opción -M (esto equivale a un poco más de 273 años).

La aplicación gráfica Administrador de usuarios también se puede usar para crear políticas de caducidad de contraseñas. Para acceder a esta aplicación, vaya al Menú principal (en el Panel) => Configuración del sistema => Usuarios & Grupos o escriba el comando system-config-users en un prompt del shell (por ejemplo, en un terminal XTerm o GNOME). Haga clic en la pestaña Usuarios, seleccione el usuario desde la lista y pulse en Propiedades desde el menú de botones (o seleccione Fichero => Propiedades desde el menú desplegable).

Luego haga clic en la pestaña Información de la contraseña e introduzca el número de días antes de que la contraseña expire, como se muestra en la Figura 4-1.

Figura 4-1. Panel Información de la contraseña

Para más información sobre la configuración de grupos y usuarios (incluyendo instrucciones sobre cómo forzar contraseñas de la primera vez), refiérase al capítulo llamado Configuración de usuarios y grupos en el Manual de administración del sistema de Red Hat Enterprise Linux. Para una vista general de los usuarios y el manejo de recursos, refiérase al capítulo llamado Administración de cuentas de usuarios y acceso a recursos en la Introducción a la administración de sistemas de Red Hat Enterprise Linux.