PASSWORD

1.INTRODUCCION

Debido a los últimos avances tecnológicos, sobre todo en el campo de las comunicaciones, cada vez se encuentran más sistemas conectados a la red, a su vez, a estos sistemas pertenecen diferentes usuarios que se conectan a ellos de forma remota. Por este crecimiento de sistemas conectados a una misma red y de la cantidad de usuarios que acceden a estos sistemas, surge la necesidad de diferenciar, de alguna forma, que usuarios pueden entrar en unos sistemas y cuales no. Por eso surge la importancia de proteger los sistemas de ataques externos.

El sistema de protección más extendido es la protección por medio de contraseñas o passwords. Este sistema, a la vez de ser el más sencillo, es el más atacado por lo que tendremos que protegerlas de estos ataques utilizando contraseñas que no sean fáciles de suponer y almacenar estas en un lugar seguro.

Estas cuestiones son las que tratare en los siguientes puntos, centrándome especialmente en la protección de las contraseñas en el sistema UNIX y como escoger una buena contraseña.

2.LA SEGURIDAD EN SISTEMAS UNIX

La seguridad de las cuentas y contraseñas siempre ha sido una preocupación para los diseñadores y usuarios de UNIX.

El sistema de protección usada por UNIX se basa en el algoritmo DES. Esta función es la denominada crypt(3), su funcionamiento es el siguiente: cifra una constante utilizando la contraseña del usuario la clave para la codificación, este algoritmo se aplica 25 veces dando como resultado una cadena de 11 caracteres y estos los almacena en el etc/passwd , además ha estos 11 caracteres se le añade 2 caracteres mas denominados SALT, estos son un numero aleatorio de 0 a 4095 convertidos a carácter, de esta forma hace que el descifrado sea más complicado.

Este sistema es altamente fiable debido a que lo que ciframos no es la contraseña, por lo tanto la contraseña no la almacenamos en ningún sitio, lo que realmente almacenamos es una constante codificada por medio de nuestra contraseña. De este modo para comprobar que la contraseña que nosotros introducimos es valida solo habrá que codificar otra vez esa constante y compararla con el valor que ya habíamos calculado, si los dos resultados coinciden daremos por valida esta contraseña. Este mecanismo es bastante fiable por que una de las característica del DES es que a partir del texto y el criptograma no podemos obtener la clave, que es nuestra contraseña.

Pese ha todo, este sistema no puede ser del todo fiable a la larga, debido alos grandes avances que se están obteniendo en el aumento de las velocidades de CPU, ya que esta seguridad no se basa en que es imposible obtener la clave sino que simplemente es demasiado costoso y se tardaría mucho tiempo en obtenerla y cuando la obtendríamos lo mas seguro es que ya no nos haría falta.

Otra problemática que aparece es que se van desarrollando nuevas aplicaciones del algoritmo DES, para una codificación más rápida y esto de cierta manera es una ayuda más a la hora de tratar de obtener una clave por fuerza bruta.

Y un ultimo problema, y no por eso menos importante, son las contraseñas que los usuarios de un sistema utilizan, ya que estos tratan de utilizar, inconscientemente, contraseñas que puedan recordar sin caer en la cuenta que estas son las más fáciles de encontrar. Por estos motivos, los sistemas conectados a la red, cada vez están más expuestos a los ataques externos por medio de la fuerza bruta.

Estos ataques por fuerza bruta se pueden realizar ya que, por la forma en que el sistema UNIX gestiona su seguridad, el archivo que guarda las contraseñas es accesible por todos los usuarios y este es un gran problema porque una persona de un sistema podría averiguar las contraseñas de todos los demás usuarios.

Una de las soluciones que se han dado es la comprobación, por medio del supervisor, de todas las contraseñas del sistema para poder encontrar aquellas que son más fáciles de descifrar, por su estructura, e informar a los dueños de las más débiles que las modifiquen. Esta solución es un poco costosa ya que para realizar esta comprobación saturaríamos demasiado el sistema por que esta comprobación necesita mucho tiempo de CPU y tardaría demasiado tiempo en comprobar todas las contraseñas.

Otra solución es la implantación de una técnica llamada “shadowpassword”. Lo que esta técnica realiza es: en el archivo llamado /etc/passwd, al que tienen acceso todos los usuarios, quitaríamos las contraseñas y en su lugar pondríamos una “x”, después crearía otro archivo al cual solo tendrá acceso el root en el cual se almacenaran las contraseñas de cada usuario, de esta forma hemos conseguido que los usuarios no tengan acceso a otras contraseñas que no sean las de ellos, aunque estén cifradas. El implantar este sistema conlleva también unos pequeños cambios en los programas que utilicen los passwords.

1.EL ATAQUE A LAS CONTRASEÑAS

Un posible ataque, para poder averiguar las contraseñas, podría ser el siguiente:

·Primero de todo probaríamos diferentes combinaciones de la información personal del usuario: el nombre, las iniciales, el nombre de la cuenta… Por ejemplo: mi cuenta en Anubis al012320 y mi nombre “Juan Fco. Otero Pitarch” y mi edad 23, podríamos probar con: ‘al012320’, ’jfop23’, ’23jfop’, ’jfopjfop’, ’jpoppofj’, ‘juanfran’, ‘juanfran23’, ‘al012320jfop’, etc. La mayoría de usuarios utiliza este tipo de contraseñas.

·Luego probaríamos las combinaciones fáciles de teclear, como pueden ser: ‘12345678’, ‘qwerty’, ‘asdfgh’, ‘zxcvbnm’, etc.

·Otra forma de atacar es por medio de diccionarios. Estos son listas en las que se pueden encontrar miles de nombres de hombres, mujeres, países, nombres de personas famosas, nombres de dibujos animados, nombres de películas, de criaturas mitológicas, animales, nombres científicos, los números…

·Probar varias permutaciones de apartado anterior. Esto incluye cambiando las diferentes letras de mayúsculas a minúsculas, invirtiendo las palabras, cambiando el carácter ‘o’ por el numero ’0’, la ‘l’ por el ‘1’ y similares como la ‘z’ por el ‘2’ la ‘s’ por el ‘5’, etc.

·Si hay algún usuario extranjero probar con él el diccionario de su idioma, p.e.: si hay un usuario chino probar el diccionario chino.

·Probar los pares de palabras de prueba, esta opción no se suele usar porque ya es costoso realizar todas las pruebas citadas anteriormente solo faltaría ponerse a probar todas las combinaciones posibles entre dos palabras.

Realizando un ataque de este tipo se podrían obtener un gran número de contraseñas de un sistema.

2.ELECCION DE CONTRASEÑAS

Uno de los puntos más importantes en la seguridad de un sistema gestionado por contraseñas es la elección de estas.

Muchas veces la elección de una mala contraseña conllevar a que otras personas accedan al sistema como un usuario normal, estas personas suelen ponerse a investigar los posibles fallos del sistema para poder pasar a ser el root y de esta forma tener un control total del sistema y total libertad para realizar con el lo que quieran. Por este motivo es de suma importancia que todos los usuarios de un sistema utilicen contraseñas que no sean fáciles de deducir.

La elección de una buena contraseña supone tener claros unos pequeños conceptos, que pueden hacer que sus contraseñas sean lo suficientemente complicadas para que su detección sea bastante costosa:

·La contraseña debe de ser más o menos de unos 8 caracteres

·Debe de ser difícil de suponer pero fácil de recordar, porque de lo contrario esto llevaría al usuario a anotársela en algún sitio y esto seria peor.

·A ser posible es interesante, que no solo sea poner mayúsculas o minúsculas, sino que también se pueden introducir elementos no alfanuméricos (¡,$,%,&, =, *, etc.)

·Tratar de no utilizar palabras que se podrían encontrar dentro de algún tipo de diccionario, como los citados en el punto anterior.

·Una buena contraseña podría ser los primeros caracteres de una frase p.e.: para la frase “este es un trabajo para la asignatura seguridad y protección de la información”, la contraseña a utilizar seria “eeutplasypdli”, como se puede observar no es una contraseña fácil de suponer, pero si fácil de recordar (solo tendrías que recordar la frase).

3.SOLUCIONES PARA LA SEGURIDAD

Claramente, se puede observar que la elección de la contraseña es el punto débil de la seguridad de nuestro sistema, por lo tanto, para solucionar este problema lo que tenemos que comprobar son las contraseñas que usan nuestros usuarios y pedir que cambien aquellas que son fáciles de adivinar. Como he citado anteriormente esta solución ofrece una desventaja que reside en la gran cantidad de tiempo de CPU que utiliza para realizar estas comprobaciones.

Otra forma de quitar estas contraseñas fáciles seria el de obligar a los usuarios a modificar las contraseñas cada cierto tiempo. Esta opción puede llegar ha ser un poco engorrosa, ya que el usuario tendría que acordarse de diferentes contraseñas hasta llegar a un punto en el que no se acordaría de cual tiene puesta en ese momento. Esta opción no es del todo valida porque no nos estamos asegurando de que el usuario ponga otra contraseña que sea aun más fácil de encontrar, solo resulta útil en el caso de que alguien (no deseado) tenga la contraseña de algún usuario y al cambiarla esta persona (no deseada) se quede sin acceso a nuestro sistema.

Una tercera opción seria la de solo poder utilizar la contraseña facilitada por el operador. Estas contraseñas suelen ser palabras sin sentido, por lo tanto los problemas aquí son mayores porque estas palabras sin sentido suelen ser muy difíciles de recordar, ya que estas contraseñas no son familiares para los usuarios y les llevara a anotarlas en papeles (que normalmente lo dejarían al lado del ordenador). Esto desecha cualquier sistema de seguridad que pudiera existir porque ahora la contraseña es totalmente visible.

La mejor solución para la elección de passwords es impedir que los usuarios puedan poner una contraseña sencilla. Esto lo conseguimos por medio de un comprobador de contraseñas. El comprobador de contraseñas lo que realiza es: que cuando se pone una contraseña nueva este realiza las pruebas pertinentes para saber si esta nueva contraseña se encuentra en algún diccionario, si es demasiado corta, si es demasiado obvia… y le devuelve al usuario un mensaje por el cual no es valida esa contraseña. Estos mensajes los conseguimos por medio del archivo de configuración que especifica el nivel de verificación de las contraseñas. Este archivo no tiene que poder ser accesible por ningún usuario ya que podría ser una valiosa guía para poder encontrar las contraseñas validas. Y de este modo podemos evitar que en nuestro sistema residan contraseñas débiles.

Pero pese a todo siempre hay algún descuido en la seguridad, los usuarios son personas y suelen dejar las cosas y decir otras que no tendrían que decir… para que un sistema este realmente protegido tendría que haber una mayor implicación de los usuarios en la protección del sistema y esto solo se conseguiría dando unas pequeñas clases de seguridad, tambien se podria hacer como las simulaciones de incendios se les podría meter un poco de miedo quitándoles algún archivo importante o algo así, como una simulación más.