contraseñas

  • Auditando código PHP me topé con una implementación de seguridad de contraseñas que me hizo pasar por los cinco estados emocionales del Modelo de Kübler-Ross: 1- Negación: "Esto no puede estar hecho así"; 2- Ira: "¡Por qué carajo hicieron ésto!"; 3- Negociación: "Por lo menos voy a tratar de que lo arreglen"; 4- Depresión: "¿Por qué me toca auditar este software horrible? ¡No quiero seguir revisando este código!"; 5- Aceptación: "No hay nada que hacer, no puedo luchar contra la ineptitud de los desarrolladores de software".

    Como muchos sabrán, las contraseñas son uno de los eslabones más débiles en la cadena de protección de acceso a un sistema informático. Por ello, hay que implementar políticas y mecanismos seguros para generarlas, almacenarlas, modificarlas, y transmitirlas por al red. En este artículo voy a puntualizar el tema del almacenamiento seguro de contraseñas.

  • Este breve artículo explica cómo modificar la contraseña de un usuario de base de datos MySQL.

  • Cada vez que solicitan la creación de un nuevo usuario en un sistema, suele surgir la necesidad de crear una nueva contraseña. Como buenos sysadmins que somos, debemos crear contraseñas fuertes, preferentemente aleatorias, que incluyan letras, números y símbolos. El problema es que a veces estamos faltos de inspiración, entonces qué mejor que dejar que un simple comando lo haga por nosotros.

  • La semana pasada se me acercó un amigo y me preguntó "Emi, me olvidé el password de root, ¿me ayudás a recuperarlo?" a lo que yo respondí: "no hay problema, sólo hace falta iniciar el sistema en single user mode". Muy bonito, pero del dicho al hecho hay mucho trecho.

  • El siguiente artículo explica cómo restablecer la contraseña del usuario root (administrador) de un servidor de bases de datos MySQL.

  • Este artículo explica cómo recuperar la contraseña del usuario Administrador de Windows Server, en caso de haberla olvidado o perdido.

  • Este artículo explica cómo cifrar archivos con criptografía simétrica (sin necesidad de claves públicas) utilizando GnuPG. De esta forma es posible proteger archivos que contienen información confidencial a través de una contraseña.

  • En los tiempos que corren, una persona promedio debe recordar decenas de contraseñas (passwords). Esto se debe a que es el método de autenticación más utilizado en sistemas informáticos de todo tipo. Imaginen entonces el caso de los Sysadmins, que además de ser personas comunes y corrientes, deben recordar cientos de pares usuario/contraseña para acceder a todos los sistemas informáticos que administran con privilegios elevados: sistemas operativos, bases de datos, aplicaciones de alto nivel, correo, sistemas de virtualización, herramientas de backup, y un largo etcétera.

    Lo que sucede comúnmente cuando uno debe recordar tantas contraseñas es que la seguridad va disminuyendo cada vez más. Un ser humano no es capaz de recordar tantas contraseñas, entonces puede que haga uno (o varias) de tres alternativas: 1- utilizar contraseñas débiles; 2- repetir contraseñas entre sistemas; ó 3- guardar las contraseñas en un medio inseguro. No hace falta que diga que utilizar contraseñas débiles (de poca longitud, palabras de diccionarios, predecibles) es una mala opción. Tampoco es una buena idea guardarlas en un medio no seguro (el clásico del post it pegado en el escritorio).

    El problema de repetir contraseñas entre sistemas sin embargo, es más sutil. Uno puede aducir que no importa si repite una misma contraseña entre varios sistemas, siempre que esta tenga una complejidad prácticamente indescifrable. El error en esta forma de pensar es que uno no tiene en cuenta el problema del almacenamiento seguro de contraseñas. ¿Qué pasa si uno de los sistemas ve vulnerada su seguridad y divulga las claves de los usuarios (pasa todo el tiempo, hay cientos de ejemplos, nadie de salva). Claramente quien logre acceder a nuestra clave replicada, podrá acceder a todos los sistemas que la comparten.

    La situación es esta, necesitamos claves fuertes y únicas para todos los sistemas a los que accedemos, pero nuestra memoria no alcanza para recordar tantas. Es allí cuando surgen las herramientas de gestión y almacenamiento de contraseñas de forma segura. La idea detrás de estas aplicaciones es guardar todas nuestras contraseñas en una base de datos encriptada (almacenada en un archivo generalmente) mediante una clave maestra. De esta forma necesitamos recordar una única clave, la de encriptación de la base de datos, y resguardar el archivo generado en un lugar seguro (o varios lugares diferentes) para que no se pierda ni se corrompa.

    Cuando comenzó mi carrera de Sysadmin lo primero que utilicé fue un volumen encriptado con TrueCrypt, el cual contenía archivos con los pares usuario/contraseña para cada sistema. El día que TrueCrypt se auto declaró vulnerable por razones desconocidas (no divulgadas, lo cual invita a pensar que fue algo extremadamente grave) simplemente dejé de usarlo. Para ese momento ya lo había reemplazado por Password Gorilla gracias a un colega. Esta herramienta funciona muy bien y corre tanto en Windows como GNU/Linux. No tengo queja alguna y nunca me ha dado problemas, pero ver ese gorila con un candado siempre me pareció poco serio (:S). Cuestiones de gustos. Por eso me decidí a probar definitivamente KeePass.

  • Hoy tuve la necesidad de verificar y modificar la fecha de expiración de la contraseña de un usuario GNU/Linux. Para ello existe la herramienta chage.

  • Este artículo explica cómo proteger el acceso a un directorio en un servidor Web Apache utilizando archivos .htaccess

  • Este artículo explica cómo hackear una base de datos de MediaWiki para alterar la contraseña de un usuario, sin recurrir al método de restablecimiento por correo electrónico. Durante el proceso se repasan algunos conceptos interesantes como búsqueda de archivos por nombre y contenido; chroot, acceso a bases de datos SQLite, consultas SQL, codificación en Base64, generación de claves utilizando la función PBKDF2, ejecución de código PHP en modo interactivo, y más...