ClipperZ
Versión |
Community Edition 3 |
Página principal |
http://www.clipperz.com |
Observaciones |
Instalado por libre en Debian Lenny. |
Sumario
Qué es y cómo funciona
Este programa es un gestor de contraseñas en línea que permite tener acceso a información sensible desde cualquier conexión a la red (con todas las reservas que el caso admite).
Se caracteriza por lo siguiente:
- Está licenciado bajo AGPL v3.
- Dispone de un servicio de pago y de la opción de instalarlo en tu propio servidor lo que permite un mayor grado de confianza.
- Consiste en un programa javascript, y que como tal se ejecuta en el navegador, que permite organizar la información de contraseñas, códigos de acceso (PIN) y otros, pero que la transmite cifrada a un segundo componente que reside en el servidor. Éste guarda los datos como bloques no identificados en el servidor SQL.
Esto es lo que se conoce como Host-Proof hosting y es el problema que aparece cuando se debe confiar en máquinas controladas por terceros para salvaguardar información valiosa o secreta. Con esta técnica se pretende manipular estos datos tan especiales siempre desde el lado del cliente previo uso de una contraseña que no se envía nunca al servidor.
Enlaces y referencias
Instalación en Debian Lenny
Dependencias
- PHP versión 5 y los siguientes componentes:
- PDO incluído en el paquete
php5-common
. - JSON y BCMath incluídos en el paquete
php5-cgi
.
- PDO incluído en el paquete
- MySQL.
Cargando y configurando el programa
Este es el procedimiento que yo he seguido, consultando tanto las instrucciones incluídas en el paquete como la normativa Debian referente a las aplicaciones web.
- Instalación del software
- Descargar y descomprimir el software.
- Instalarlo bajo la jerarquía
/opt/Clipperz
y aplicarle las limitaciones de acceso habituales a cualquier otro programa web. En este caso la propiedad pasa a ser del usuario y grupowww-data
, limitándose la escritura a nadie. - Crear un archivo de configuración para el servidor web.
- Configuración manual
- Retocar a mano el archivo de configuración situado en
/opt/Clipperz/php/configuration.php
e indicar allí cómo acceder al servidor de datos MySQL modificando el array de nombre$configuration
. - Crear la base de datos y otorgar permisos al usuario que antes hemos indicado.
- Configuración automática
- Acceder a la dirección
http://example.net/php/setup/index.php
(reemplazando example.net con el URL del servidor web) para que se ejecute el programa de configuración automática que se encarga de crear las tablas en la base de datos y ejecutar los tests necesarios para el siguiente paso. - Este siguiente paso consiste en emplear un mecanismo llamado POG que sirve para crear objetos en lenguaje PHP que interactúan con la base de datos y reducen el tiempo de ejecución de los programas que lo emplean. Además permite crear de nuevo las tablas de la base de datos y vaciarlas de contenido.
- Tras seguir las indicaciones del paso anterior y obtener un visto bueno conviene proteger o desactivar el acceso a
/php/setup
desde la dirección de instalación. Para esto algo simple y rápido puede ser eliminar todos los permisos de acceso con unchmod 000 php/setup php/test.php
Personalización
Existen algunos aspectos que se pueden alterar sin necesidad de tocar el fuente del programa. Uno de ellos es la página de salida, que te da las gracias en varios idiomas y que no tiene mucho sentido en un servidor propio, tal y como puede verse en la imagen adjunta.
Queremos cambiarla para que indique que la sesión ha terminado pero que permita volver a la pantalla principal mediante un enlace, muy escueto además.
El archivo está en formato HTML y se encuentra situado en el directorio de instalación del programa, en mi caso concreto en /opt/ClipperZ/logout.html
, por lo que con los permisos administrativos adecuados es trivial alterarlo.
Anotaciones sobre seguridad
Tras la instalación y puesta en marcha es muy conveniente desactivar el acceso a un programa PHP que se incluye en la instalación llamado test.php
que sirve, como su nombre indica, para testear la instalación del entorno PHP. En este caso contiene una llamada a la función phpinfo() que proporciona demasiada información a terceros. Se puede eliminar sin más dado que sólo sirve para cuando hay problemas graves y en ese caso es muy sencillo recrearla.
Actualizando el programa
Existe un repositorio Git en el que se van volcando algunos cambios en la versión comunitaria y que puede emplearse para actualizar la versión instalada ya que no está todavía empaquetada en Debian.
Por si necesitamos disponer de más de una versión en línea es conveniente antes que nada trasladar la configuración del programa a su propio directorio /etc/Clipperz/configuration.php
y retocar en este archivo la localización de los complementos para que apunten a la ruta de explotación del programa:
< $configuration['plugins_path'] = dirname(__FILE__).'/plugins'; --- > $configuration['plugins_path'] = '/opt/Clipperz/php/plugins';
Despues podemos hacer lo siguiente con el código:
- Clonamos el repositorio desde
git clone git://github.com/clipperz/clipperz-communityEdition.git
- Instalamos en un directorio de explotación según la revisión y cambiamos los permisos a los del usuario
www-data
. - Cambiamos el archivo de configuración por un enlace a
/etc
. - Creamos un enlace simbólico de la versión que queremos emplear a la ruta de explotación.
Esto quedaría así:
# tree -d -L 1 /opt /opt |-- ClipperZ-svn-003 |-- ClipperZ-svn-009 |-- Clipperz -> ClipperZ-svn-009 ... # tree -L 2 /opt/Clipperz/ ... |-- php | |-- configuration.php -> /etc/Clipperz/configuration.php | |-- dump.php | |-- index.php ... #
Uso del programa
El programa incluye un buen montón de enlaces al sitio original http://www.clipperz.com, especialmente en las páginas de ayuda, aún cuando en realidad está funcionando desde nuestro servidor y accediendo a nuestra base de datos. No es algo malo pero sí un poco molesto porque no llegas a tener la certeza de que es tuyo realmente hasta que no modificas el código. Al hacerlo, obviamente, tienes que aceptar que mantendrás aparte tu propia versión del programa y que convendrá también incluir un mecanismo que evite la suplantación del código.
También hay que tener en cuenta que el navegador necesita poder ejecutar código javascript y que éste es bastante pesado, más de un megabyte, por lo que determinadas conexiones de datos, como las de los móviles, no serán cómodas de emplear.
Contraseñas offline
Es posible obtener una copia local de nuestras contraseñas para llevarlas con nosotros cuando no tengamos una conexión a la red. Al ser una copia y no existir una conexión con una base de datos el acceso será de sólo lectura. Si se producen cambios en la base de datos el programa avisará de la necesidad de sincronizar con esta copia local en cada nueva sesión.
La copia local tiene el mismo aspecto que la copia en línea y es igual de segura puesto que el descifrado se sigue haciendo en el programa javascript que incluye.
También existe la posibilidad de tener una copia impresa con todas las contraseñas desveladas. Muy útil para disponer de ellas -guardadas en algún lugar muy seguro- en caso de fallecimiento o incapacidad del dueño de las mismas.
Importando contraseñas
Clipperz dispone de varias posibilidades a la hora de importar lo que él llama tarjetas de datos, especialmente de algunos programas que se dedican a lo mismo como KeePass, RoboForm y Password Plus, así como CSV y JSON que viene a ser el mismo formato en el que él exporta sus datos.
Exportando contraseñas
Clipperz incluye la opción de exportar todas las contraseñas en formato JSON, muy conveniente para tener copias de seguridad (lo que no deja de ser un poco irónico) y para cambiar de cuenta de usuario.
Lidiando con errores
Los errores que emite un programa como ClipperZ no son sencillos de diagnosticar y suele ser necesario recurrir a herramientas especializadas como la extensión firebug para navegadores web y su consola de mensajes. Por lo que he podido observar el programa puede anunciar el mismo tipo de error genérico (como Clipperz.PM.DataModel.User.exception
) con diversas causas como las que detallo a continuación.
Como fuente de información anotar que existe un grupo de mensajes de Clipperz en Google
- Undefined index otpId in /opt/Clipperz/php/index.php on line 263
- Este error aparece en la consola de errores tanto en la identificación como en la creación de nuevas cuentas. Se debe, según descubrió Pieter Edelman, a que está activa la variable PHP
display_errors
y eso provoca que durante las transferencias de datos vía AJAX se inserten valores que el programa ClipperZ interpreta como errores. - La solución consiste en desactivarlo como bien indican en la documentación para servidores en produccción.
Firefox
Con el navegador Firefox (versiones 3 y 4) es necesario desactivar algunas extensiones para que funcione completamente.
Como caso excepcional y verdaderamente extraño citar que la extensión It's All Text! tiene que ser desactivada o desinstalada del navegador. En caso contrario no se podrá entrar en el programa.
Gestión de tarjetas
Con más o menos campos ClipperZ emplea registros -a los que llama tarjetas- identificados por una etiqueta concreta y que aparecen listados en una única columna por orden alfabético.
Es bastante útil emplear dicha etiqueta para añadir la mayor información posible sobre la tarjeta ya que aún no existe la forma buscar tarjetas o de organizarlas de otra manera.
Por ejemplo podemos usar una jerarquización como la siguiente:
Astillas.net:MySQL:root Astillas.net:MySQL:mediawiki
y ya dentro de ellas las correspondientes credenciales de acceso y los comentarios correspondientes.
Anexos
Creación de base de datos
Abrimos una sesión con el cliente MySQL y los datos del administrador (root) de la base de datos, creamos una cuenta de acceso, la base de datos donde se guardarán nuestras claves y le proporcionamos a este usuario privilegios sobre ella.
$ mysql -u admin -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1006
Server version: 5.0.51a-24+lenny4 (Debian)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create user clipperz identified by 'PASSWORD';
Query OK, 0 rows affected (0.05 sec)
mysql> create database clipperz;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on clipperz.* to clipperz@localhost ;
Query OK, 0 rows affected (0.01 sec)
mysql> \q
Bye
Configuración de apache
Este es el archivo de configuración del servidor web Apache que he creado para tener en línea la aplicación clipperz.
# Creando un alias especial
Alias /secretos /opt/Clipperz
# Ajustando permisos en el directorio
<Directory /opt/Clipperz>
Options -FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#
# La siguiente claúsula incluye las directivas
# de autentificación habituales hasta que
# se desactive todo el directorio
# tras la puesta en marcha del programa.
#
<Directory /opt/Clipperz/php/setup>
AuthType basic
AuthUserFile /etc/apache2/passwd
Require valid-user
</Directory>