Story Transcript
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Area51 - Memoria trabajos realizados
Versión del documento
Autor
Fecha
Versión 1.0
David Rodeiro
26/03/2012
Versión 1.1
Alfredo Sánchez
02/04/2012
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Índice de contenido Kerozain - Memoria trabajos realizados.......................................................................................1 Introducción............................................................................................................................ 3 Alcance del servicio................................................................................................................. 3 Solución implementada...................................................................................................... 3 Descripción funcional..................................................................................................... 3 Descripción técnica............................................................................................................. 4 Entorno tecnológico adoptado........................................................................................ 4 Arquitectura global implementada.................................................................................5 Aspectos particulares..................................................................................................... 5 Características de la aplicación............................................................................................... 8 Página principal.................................................................................................................. 8 Acceso a la aplicación......................................................................................................... 9 Mi perfil............................................................................................................................. 11 Datos básicos............................................................................................................... 11 Clave de seguridad....................................................................................................... 11 Secretos............................................................................................................................ 12 Creación de un nuevo secreto......................................................................................13 Tipos de secretos..................................................................................................... 13 Datos básicos (creación secreto).............................................................................14 Datos cifrados (creación secreto).............................................................................14 Asignación de etiquetas........................................................................................... 15 Detalles de un secreto.................................................................................................. 15 Ver datos cifrados.................................................................................................... 16 Edición de secretos...................................................................................................... 17 Edición de los datos básicos.....................................................................................17 Edición de datos cifrados.........................................................................................18 Borrado de un secreto.................................................................................................. 19 Búsqueda de secretos.................................................................................................. 19 Permisos de los secretos.............................................................................................. 20 Administración.................................................................................................................. 21 Gestión de usuarios...................................................................................................... 21 Creación de un nuevo usuario..................................................................................22 Modificar un usuario.................................................................................................22 Asignación de usuarios a grupos..............................................................................23 Confirmación de usuarios a grupos..........................................................................24 Gestión de grupos........................................................................................................ 25 Creación de un nuevo grupo....................................................................................25 Modificación de un grupo......................................................................................... 26
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Introducción Las empresas normalmente manejan mucha información y normalmente claves de acceso relacionadas con dicha información. Es común disponer de una hoja de cálculo en el ordenador con las credenciales de acceso y las claves, o apuntadas en un papel, o casi peor, siempre la misma o con un patrón muy similar, fácilmente adivinable una vez se conoce una. En Linux hay múltiples aplicaciones para gestionar contraseñas, pero todas ellas son de tipo escritorio. Por lo tanto se ha desarrollado un sistema centralizado de gestión segura de claves que permita la definición de grupos de usuarios con diferentes accesos a las diferentes contraseñas y recuperación de las mismas a través del cifrado simétrico y asimétrico. El desarrollo ha sido ejecutado con la la supervisión y colaboración del equipo jurídico de Iurismática con el marco normativo vigente para los gestores de contraseñas web que inciden en diversos ámbitos en función de la utilización de los mismos. Cabe mencionar que aunque el nombre en clave de la aplicación desarrollada es area51, finalmente ha sido adoptado como nombre final de la aplicación kerozain.
Alcance del servicio El objetivo del servicio es ofrecer a los asociados una herramienta para mantener los recursos seguros, centralizados y poder compartirlos de manera sencilla y segura.
Solución implementada Descripción funcional Como se ha comentado en la introducción la solución cubre los siguientes aspectos desde el punto de vista funcional. 1. Permitir almacenar usuario/password asociado a una página web/conexión ssh etc.. 2. Permitir recuperar el usuario/password. 3. Sistema de grupos y permisos que permita a otros usuarios, recuperar el usuario/password asociado a una página web/conexión ssh etc.. siempre que el dueño así lo haya definido.
Además de las funcionalidades anteriores se han implementado los siguientes puntos: 1. Almacenar datos de acceso usuario/password /url 1.1 Manual 1.2 Automático (recordar password/pagina desde navegador, a modo de plugin de firefox) 2. Bilingüe (euskera y castellano) 3. Recuperar una clave desde la interfaz (usuario/password /url)
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
4. Disponer de un sistema de auditado, es decir quién ha accedido a que password y cuando, quién ha dado de alta, borrado, modificado un registro. 5. Servir para almacenar no solo usuarios/passwords/urls sino: 5.1 números de cuenta 5.2 Pin/puk de un teléfono móvil 5.3 Notas privadas
Descripción técnica A continuación se presentan las consideraciones más importantes relacionadas con la solución técnica implementada tanto a nivel general, como a nivel particular.
Entorno tecnológico adoptado Se ha utilizado el siguiente entorno tecnológico: Lenguajes de desarrollo de los componentes • • • •
Java 1.6 tomcat 6,x mysql 5,x Liferay Portal 6.1
Con la siguiente estructura estándar basada en una división por capas que se muestra en el siguiente gráfico.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Webtier Que es la capa desde la que se ofrecen los servicios de conectividad con el usuarios a través de los distintos dispositivos, navegador web lector de RSS, navegador móvil y distintos los APIs consumibles. Esta capa está basada en el popular servidor web de apache en su versión 2.x y se conecta con el aplicativo haciendo uso del protocolo AJP13 definido para conectar servidores web con servidores de aplicaciones.
Application-tier En esta segunda capa reside el servicos desarrollado. La plataforma esta basada en java 1.6 y el contenedor de servlets tomcat 6.x ( Liferay Portal).
Backend-tier En esta tercera residen todos backends necesarios para el correcto funcionamiento de la solución, en este caso “Almacén relacional basado en mysql”. Todas las capas ha sido diseñadas para que puedan hacerse crecer en un cluster horizontal.
Arquitectura global implementada A continuación se detalla la estructura general de la solución implementada a nivel de componentes, y de como estos se comunican entre si. Los componente principales son: • Navegador web con el plugin de firefox • Capa de servicios de area51 • Almacenes de información (backend) La comunicación entre el navegador y la capa de servicios se realiza usando un canal seguro como es https. Y la comunicación entre el la capa de servicios y el backend intercambia los mensajes con la información sensible cifrada.
Aspectos particulares A continuación vamos a detallar algunos aspectos que hemos considerado críticos a nivel técnico para afrontar el proyecto con las garantías pertinentes relacionadas con privacidad y seguridad.
Aspectos relacionados con la seguridad Se han tenido en cuenta las siguiente problemáticas relacionadas con las seguridad:
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
•
Securización de las comunicaciones (para evitar que un sniffer nos robe información).
•
Almacenamiento securizado (para evitar que si se accede al backend se pueda obtener información)
•
Asegurar la identidad de la personas que accede.
•
Tratamiento de las claves durante el procesado de las mismas en memoria (para evitar que la inyección de código binario en una maquina robe información útil)
•
Saber quién ha accedido a que y quién ha modificado que.
Para evitar este tipo de ataques desde el punto vista técnico se han implementado las siguientes soluciones:
E s l e
•
Securizar el canal http https, usando el conector https → del servido de web propuesto, en este caso apache web server 2.x con soporte ssl.
•
Uso del lenguaje java en el servidor para poder utilizar el concepto de password protection a nivel binario que este lenguaje facilita. Esto sirve para minimizar el riesgo de un ataque por inyeccción de código binario o por lectura de la memoria del ordenador.
•
La información sensible se almacena encriptada. Esto asegura que ni el administrador del backend es capaz de recuperar la información guardada por un usuario en el sistema.
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Modelo de encriptación/desencriptación usando una llave asimétrica A continuación presentamos un diagrama con el modelo de encriptación / desencriptación asimétrico utilizado.
1. El usuario solicita visualizar una password y la petición viaja por https al servidor. 2. La petición es procesada por el aplicativo y accede a la base de datos para recuperar la información encriptada. 3. La información encriptada llega de la capa de backend al aplicativo. 4. La información, se desencripta justo antes de enviar la respuesta al usuario. 5. Llega por https al navegador para que el usuario la visualice.
Plugin de firefox Este componente a nivel técnico lo que hace es conectarse por medio de un API REST sobre https con el servidor de kerozain y recuperar la información necesaria para autocompletar los formularios de login en un caso y para almacenar la información en el caso de querer guardarla.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Características de la aplicación A continuación con el objetivo de mostrar el resultado final de la aplicación, se revisarán las características de la aplicación a modo de guía.
Página principal En la página principal de Kerozain se muestra una pequeña presentación con las principales características de la aplicación.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Acceso a la aplicación Cuando el administrador del sistema crea un nuevo usuario, se le enviaran por correo electrónico el nombre de usuario y la password de acceso a la aplicación. Con dichas credenciales el usuario podrá acceder a la aplicación desde el enlace “Acceder”.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Una vez que el usuario acceda por primera vez en la aplicación será redirigido a la pantalla de edición de la clave de seguridad.
Una vez logeado, en la esquina superior derecha de la pantalla se mostrará el nombre completo del usuario. Y en esta misma sección se podrá cambiar el idioma de la aplicación (entre Castellano, Euskera e Inglés), y cerrar la sesión mediante el enlace “Salir”.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Mi perfil Desde el menú “Mi perfil” el usuario puede modificar sus datos básicos, y su contraseña de acceso al sistema.
Datos básicos
Clave de seguridad
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Secretos Desde el menú “Secretos” el usuario puede buscar un secreto, crear un nuevo secreto, elegir el tipo de secreto que se va a crear, asignar etiquetas a sus secretos y ver los detalles de los secretos.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Creación de un nuevo secreto Para crear un nuevo secreto hay que hacer click en el botón "Crear nuevo secreto".
Tipos de secretos Una vez pulsado dicho botón se abrirá la página con el listado de los distintos tipo de secretos que se pueden crear.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Una vez seleccionado un tipo aparecerá la pantalla de creación con los campos correspondientes a dicho tipo de secreto.
Datos básicos (creación secreto) Los datos básicos sirven para organizar los secretos y poder así encontrarlos de forma sencilla. Es muy importante no almacenar información confidencial en esta sección. Título: En este campo se introduce el nombre que se le quiere dar al secreto. Notas: En este campo se introducen los comentarios que el usuario quiera darle al secreto.
Datos cifrados (creación secreto) Los datos privados se cifran antes de ser almacenados y por tanto la propia aplicación desconoce el contenido real de los mismos. Por esta razón no es posible buscar y encontrar secretos a partir de los datos de esta sección.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Asignación de etiquetas En este apartado se pueden establecer las etiquetas a los secretos. Esta característica es de utilidad para encontrar los secretos de una forma sencilla y rápida.
Detalles de un secreto En este apartado se visualizan los detalles de un secreto. Es decir, el título, su descripción, la fecha de creación, la fecha de modificación, etiquetas y el propietario.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Ver datos cifrados Para ver los datos cifrados de un secreto hay que hacer click en el botón "Ver secreto". Una vez hecho esto se abrirá una pequeña pantalla para introducir la clave de seguridad que hará posible la visualización de los datos cifrados del secreto.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Edición de secretos Para editar un secreto hay que hacer click en el botón “Editar“.
Edición de los datos básicos En esta página es posible editar los datos básicos del secreto. Es decir: el título, la descripción y las etiquetas.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Edición de datos cifrados Para editar los datos cifrados es necesario pulsar el botón “Editar secreto“ que se encuentra en la pantalla de edición de los datos básicos. Si pulsamos dicho botón aparecerá el dialogo de petición de la clave de seguridad y una vez introducida se accederá a la pantalla de edición de los datos cifrados.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Borrado de un secreto Para borrar un secreto, debe situarse el menú “Secretos“, donde aparece un listado de todos sus secretos. En cada secreto, en el margen derecho aparece un botón con el nombre “Acciones“, pulsándolo se despliega un menú y debe pulsar el botón “Eliminar“.
Búsqueda de secretos El apartado de búsqueda de secretos consiste en lo siguiente, introduciendo en el cuadro de búsqueda una palabra o una parte de dicha palabra, el buscador buscará los caracteres introducidos en los siguientes campos, "Título", "Descripción" y "Etiquetas".
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Permisos de los secretos En esta sección se definen los permisos a los secretos. Es decir, poder definir que acciones puede realizar los usuarios sobre ellos.
A continuación se explica cada uno de los permisos: • Ver: Establece que grupos pueden ver el secreto, es decir, ver la información básica del secreto. • Ver secreto: Establece que grupos pueden ver la información cifrada del secreto. • Editar: Establece que grupos pueden editar la información básica del secreto. • Editar secreto: Establece que grupos pueden editar la información cifrada del secreto. • Borrar: Establece que grupos pueden borrar los secretos. • Permisos: Establece que grupos pueden dar permisos a otros grupos.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Administración Los usuarios con roles adecuados pueden realizar tareas de administración de la organización actual, incluyendo la gestión de los usuarios y sus grupos, de manera que el sistema puede identificarles como adecuados para determinadas tareas (acceder a distintos secretos).
Gestión de usuarios Desde esta sección se puede crear un nuevo usuario, y modificar los datos de los existentes. Además, en esta sección se determinan los grupos que cada uno de los usuarios tiene, lo que implica el tipo de tareas que se le permiten.
Nota: El icono del "reloj" indica que el usuario aun no hay tenido actividad alguna dentro del sistema (no se a loggeado), y por lo tanto permanece en un estado inactivo.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Creación de un nuevo usuario Para crear un nuevo usuario hay que hacer click en el botón “Crear nuevo usuario“, el cual te redirige a una página donde se establecen los siguientes parámetros, nombre de usuario, correo electrónico, primer nombre y segundo nombre, una vez insertados, hacer click en el botón “Guardar“.
Modificar un usuario En la página de gestión de usuarios en cada usuario hay un botón llamado “Acciones“, en el cual al hacer click se despliega un menú y una de las opciones de ese menú es la de “Editar“ la cual se utiliza para modificarlos.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Asignación de usuarios a grupos De la misma forma a la que se accede anteriormente para modificar un usuario, aparece en el botón "Acciones" la opción de “Asignar grupos“. Después de acceder aparece una lista de todos los grupos que hay creados, y para añadir el usuario a uno de ellos o a varios hay que hacer click en el botón “Asignar grupo“.
Nota: El icono del tick verde indica que el usuarios ya es miembro de ese grupo.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Confirmación de usuarios a grupos En la siguiente captura aparece el mensaje de solicitud del ingreso en el grupo. Esta notificación se les mostrará a todos los miembros pertenecientes al grupo. Si uno de ellos acepta la solicitud el usuario será añadido automáticamente al grupo, mientras que si la rechaza aun podrá ser aceptada por el resto de los usuarios del grupo.
Nota: El icono del "reloj" significa que el usuario esta pendiente de entrar en el grupo indicado.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Gestión de grupos Hay que situarse en el apartado "Grupos" del menú "Administración", y una vez allí aparece la lista de los grupos que están creados.
Creación de un nuevo grupo Hay que estar situado en el apartado "Grupos", una vez allí, aparece un botón llamado “Crear nuevo grupo“, haciendo click en el, accedemos a la página de creación de grupos en la cual aparecen dos opciones, “Nombre“ para introducir el nombre del grupo y “Descripción“ para añadir una descripción del grupo.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a d i
Modificación de un grupo Estando situados en el apartado “Grupos“, aparece la lista de todos ellos y en cada uno de ellos aparece un botón llamado “Acciones“, el cual sirve para modificar los grupos, así como sus nombres y descripciones.
E s l e
–
a s o c i a c i ó n
d e
s o f t w a r e
l i b r e
d e
e u s k a k i