sábado, 21 de mayo de 2011

Blog SKS

Servidor SKS

Un servidor de llaves, es un servidor que almacena llaves públicas de usuarios. El objetivo principal del servidor es una fácil distribución de llaves públicas para la comunicación entre usuarios de forma segura. Para obtener una llave del servidor se busca por el nombre del propietario o por el id de la llave.

En este artículo se realizará la instalación y configuración de un servidor de llaves públicas. El servidor a instalar será SKS-Keyserver, que es un servidor OpenPGP, cuya meta es la sincronización de llaves de manera sencilla, descentralizada y confiable.


En este caso se instalará solo un servidor local, se omitirá la parte de comunicación con otros servidores; pero de igual forma se explicará el procedimiento para la comunicación entre servidores.

Instalación:

Para empezar la instalación, se necesitará de una máquina linux, en este caso se usará Ubuntu 10.10. Lo siguiente será la instalación y posterior configuración del servidor, siguiendo estos pasos:

1. instalar los paquetes de SKS:

# apt-get -y install sks

2. Crear e inicializar la base de datos:

# sks build  
  



3. Modificar los archivos de configuración:
  



# nano /etc/sks/sksconf
  





Dentro de este archivo se encontrará cierta información, que deberá ser editada con la información del servidor:
 


# Set server hostname

Hostname: Ubuntu # Set hkp binding address
Hkp_address: 192.168.0.104 Set hkp port number
Hkp_port: 11371

 
La dirección IP que se ingresa es la del servidor, ésta debe ser estática por lo tanto se deberá modificar el archivo de interfaces y configurar el adaptador para que la dirección sea estática.





  
4. Si se desea se puede agregar una interfaz web para subir y buscar llaves en el servidor, ésta se debe descargar de internet, en este caso se recurrió a la página web:

http://www.rainydayz.org/sites/default/files/download/sks/sks_www.tar.bz2


  
Se crea una carpeta llamada www, que estará ubicada en: /var/lib/sks/, en donde estará alojada la página 
web:
  
# mkdir /var/lib/sks/www
Se ubica en esa ruta:  
# cd /var/lib/sks/www 
Luego se descargan los archivos desde la página:


 
#wget http://www.rainydayz.org/sites/default/files/download/sks/sks_www.tar.bz2


 
5. El archivo descargado viene comprimido, por lo tanto se debe descomprimir:





 
# tar xjvf sks_www.tar.bz2





 
Donde:



tar es el formato de empaquetado.
x -> Desempaquetado
v -> Visualización del progreso o una salida muy detallada
z -> Descomprimir (gzip)
f -> El archivo indicado





 
6. Se modifica el archivo index.html descargado de internet, se deben reemplazar todas las instancias de "your.site.name" con el nombre del sitio propio o la IP del servidor:




 
# nano /var/lib/sks/www/index.html





 
7. Se le deben cambiar los permisos a la carpeta donde se está ubicado:





 
# chown debian-sks:debian-sks *





 
Se le asigna como dueño debian-sks y grupo debian-sks.






 
8. Para que el servidor se inicie automáticamente se cambia set initstart=no por set initstart=yes en el siguiente archivo:




 
# nano /etc/default/sks






 
9. Se inicia el servidor:





 
# /etc/init.d/sks start






 
10. Se lanza sks en background:





 
# sks db & 
 
Se verifica que la página web esté funcionando al ingresar en el navegador el socket por el cual escucha el servidor:












 
Prueba del servidor:





 
Para probar que el servidor funciona correctamente, se procede a crear una llave y luego subirla al servidor:





 
1. Para crear una llave, desde la consola se ingresa la siguiente línea de comandos:





 
# gpg --gen-key
 



Lo que se hizo fue:
En la selección del tipo de llave se escogió la opción 1 (RSA and RSA).
Luego se ingresó el tamaño de la llave, en este caso se escogió 1024.
Después se ingresó el tiempo de duración de la llave, o sea la fecha de caducidad,
en este caso se escogió 5 días.
Luego se ingresaron los datos del usuario:
Real name: Cristina
Email address: cristina@gmail.com
Comment: Llave de Cristina
Luego se ingresó la contraseña pedida
Enter passphrase:
Luego se generó la llave con éxito.
2. Luego se consulta la lista de llaves para mirar:
# gpg --list-keys  3. Con esta información (ID de la llave) se escoge la llave y se sube al servidor:  # gpg --keyserver hkp://192.168.0.104 --send-keys CD75E1D9




4. Para verificar que la llave esté en el servidor se hace lo siguiente:
# gpg --keyserver hkp://192.168.0.104 --search-key cristina
Aquí se pudo verificar que la llave fue guardada en el servidor y está disponible para los usuarios que la requieran.
Ahora se probará mediante la interfaz web:
1. Se debe exportar una llave existente, con formato ascii:
# gpg --armor --export --output Llave-David.asc F41B1724
2. Mediante la página web se sube la llave al servidor:
3. Se busca la llave ingresada anteriormente para verificar que si se encuentre en el servidor:
El servidor está instalado y funcionando correctamente, ya se pueden subir llaves desde la consola y la página web 
sin ningún problema.

Inconvenientes:





Un inconveniente a la hora de desarrollar el trabajo, fue la búsqueda de información acerca de la instalación y configuración del servidor de llaves. Casi no se encuentran buenas fuentes de información que aclaren los procedimientos a seguir.

Otro inconveniente surgió al tratar de iniciar el servidor, aparecía un error que no permitía que el servidor funcionara; este error fue corregido mediante la modificación de un archivo de configuración ubicado en /etc/defaulf/sks, en este archivo hay una línea que permite la automatización del servidor. Luego se inicio el servicio con /etc/init.d/sks start.





Adicional:





Se puede también configurar el servidor para que se comunique con otros servidores de llaves, de la siguiente manera:





1. En el archivo de configuración de sks se modifican los datos del servidor:





# nano /etc/sks/sksconf

# Replace IP with binding IP
recon_address: 192.168.0.104
recon_port: 11370


2. Se modifica el archivo membership con los datos del servidor remoto:




# Add remote sks recon IP with recon port
172.16.0.20 11370
Se le debe pedir al administrador del servidor remoto que agregue la ip y el puerto del servidor local en su archivo también.
3. Luego se inicia Recon:
# sks recon &
Después de esto se deberá poder distribuir llaves a través de otros servidores agregados al archivo.
 

Referencias:




[1] http://emerge.badfoo.net/2010/03/entry_14.html
[2] http://www.rainydayz.org/node/10
[3] http://www.zimbio.com/Ubuntu+Linux/articles/8NtdwaUbnDB/How+Setup+Free+PGP+Key+Server+Ubuntu
[4] http://code.google.com/p/sks-keyserver/