jueves, 22 de enero de 2015

Copias de Seguridad en OpenLDAP

En este artículo os voy a mostrar como exportar e importar datos. De esta manera nos aseguramos de tener un backup o copia de seguridad de nuestro directorio activo.

EXPORTAR LDAP

Asumiendo una sesión de terminal Linux, como usuario root, introduciremos el siguiente comando:

slapcat -l ruta/archivo_backup.ldif

Si deseamos exportar también la configuración de la base de datos de LDAP, utilizaremos la siguiente sintaxis:

slapcat -l ruta/archivo_backup.ldif -f ruta/archivo_config.conf

IMPORTAR LDAP

La importación de los datos es un poco más compleja, ya que requiere que se elimine la base de datos para añadir todos los datos del fichero ldif que se exportaron en el paso anterior.

Para ello, desde la terminal Linux, y como usuario root, Seguiremos los siguientes pasos:

1) Detenemos el servicio de LDAP:

/etc/init.d/slapd stop

2) Eliminamos los ficheros de la base de datos de LDAP:

rm -Rf /var/lib/ldap/*

3) Importamos los datos del backup de LDAP:

slapadd -v -c -l ruta/archivo_backup.ldif

Si deseamos recuperar también el fichero de configuración de LDAP:

slapadd -v -c -l ruta/archivo_backup.ldif -f /etc/ldap/slapd.conf

4) Reconstruimos los índices de la base de datos de LDAP:

slapindex -v

5) Otorgamos los ficheros de base de datos al usuario LDAP:

chown -Rf openldap.openldap /var/lib/ldap/*

6) Arrancamos el servicio de LDAP:

/etc/init.d/slapd start

Librería de encriptación en Python

En esta entrada quisiera compartir con vosotros una librería en Python que he desarrollado para encriptar y desencriptar vuestros datos, pudiéndola adaptar a vuestras necesidades. Esta librería la podéis descargar desde el siguiente enlace: https://drive.google.com/file/d/0B1-JQdWrVRabY1FDTEdvcG5CSWM/view?usp=sharing

Al final del código tenéis comentados diferentes bloques de código para poder probar la librería.

A continuación os explico, en términos generales, para qué sirve cada parte del código.

CODEBASE (Código base)

El código base contiene un juego de 140 caracteres (sin repetir). Este juego de caracteres debe ser el mismo utilizado en los textos que se desean encriptar. El juego que he preparado contiene la inmensa mayoría de caracteres utilizados en el idioma español.

MATRIX (Matriz de códigos)

La matriz es un array de códigos, mediante el cual se realiza la trasposición de caracteres para la encriptación y desencriptación de las datos.

Esta librería ya viene con una matriz predeterminada, pero se puede generar una nueva matriz mediante la función create_random_matrix().

La matriz contiene tantos elementos o filas como número de caracteres tiene el código base. Cada uno de estos elementos o filas es una cadena de texto con los mismos caracteres que el código base, pero dispuestos de forma aleatoria. Para obtener una de estas filas, create_random_matrix() utiliza internamente la función get_random_line().

ENCRIPTAR

Para encriptar un dato, se utiliza la función encrypt(), a la cual se le pasan dos parámetros de tipo string: la cadena de texto a encriptar, y la clave utilizada para encriptar.

Internamente, el proceso de encriptar posee dos pasos que realiza automáticamente la función encrypt(): encriptar (filtro 1) y codificar (filtro 2).

El proceso de encriptar lo lleva a cabo la función code(), la cual realiza la trasposición de caracteres de la cadena de texto a través de la clave, y utilizando la matriz de códigos. El resultado es un galimatías que utiliza los caracteres del código base.

El proceso de codificar lo lleva a cabo la función code_hex(), la cual transforma la cadena encriptada en una secuencia hexadecimal.

El resultado final de la encriptación es una cadena en hexadecimal que contiene, exactamente, el doble de caracteres que la cadena original.

DESENCRIPTAR

Para desencriptar el dato encriptado, se utiliza la función decrypt(), a la cual se le pasan dos parámetros de tipo string: la cadena de texto encriptada, y la clave utilizada para encriptar.

El proceso de desencriptar posee dos pasos que realiza automáticamente la función decrypt: decodificar (filtro 1) y desencriptar (filtro 2).

El paso de decodificar lo lleva a cabo la función decode_hex(), la cual transforma la cadena en hexadecimal en una cadena de texto encriptada, la cual es un galimatías que utiliza los caracteres del código base.

El paso de desencriptar lo lleva a cabo la función decode(), la cual transforma la cadena de texto encriptada en el texto original. Esto lo realiza mediante la clave y la matriz de códigos, realizando el proceso de trasposición inverso al que se utilizó para la encriptación.

El resultado final de la desencriptación será la cadena de texto original, la cual contiene, exactamente, la mitad de caracteres que la cadena encriptada.

Librería de encriptación en PHP

En esta entrada quisiera compartir con vosotros una librería en PHP que he desarrollado para encriptar y desencriptar vuestros datos, pudiéndola adaptar a vuestras necesidades. Esta librería la podéis descargar desde el siguiente enlace: https://drive.google.com/file/d/0B1-JQdWrVRabNVpsTHNpb3JCaXM/view?usp=sharing

Al final del código tenéis comentados diferentes bloques de código para poder probar la librería.

A continuación os explico, en términos generales, para qué sirve cada parte del código.

CODEBASE (Código base)

El código base contiene un juego de 140 caracteres (sin repetir). Este juego de caracteres debe ser el mismo utilizado en los textos que se desean encriptar. El juego que he preparado contiene la inmensa mayoría de caracteres utilizados en el idioma español.

MATRIX (Matriz de códigos)

La matriz es un array de códigos, mediante el cual se realiza la trasposición de caracteres para la encriptación y desencriptación de las datos.

Esta librería ya viene con una matriz predeterminada, pero se puede generar una nueva matriz mediante la función create_random_matrix().

La matriz contiene tantos elementos o filas como número de caracteres tiene el código base. Cada uno de estos elementos o filas es una cadena de texto con los mismos caracteres que el código base, pero dispuestos de forma aleatoria. Para obtener una de estas filas, create_random_matrix() utiliza internamente la función get_random_line().

ENCRIPTAR

Para encriptar un dato, se utiliza la función encrypt(), a la cual se le pasan dos parámetros de tipo string: la cadena de texto a encriptar, y la clave utilizada para encriptar.

Internamente, el proceso de encriptar posee dos pasos que realiza automáticamente la función encrypt(): encriptar (filtro 1) y codificar (filtro 2).

El proceso de encriptar lo lleva a cabo la función code(), la cual realiza la trasposición de caracteres de la cadena de texto a través de la clave, y utilizando la matriz de códigos. El resultado es un galimatías que utiliza los caracteres del código base.

El proceso de codificar lo lleva a cabo la función code_hex(), la cual transforma la cadena encriptada en una secuencia hexadecimal.

El resultado final de la encriptación es una cadena en hexadecimal que contiene, exactamente, el doble de caracteres que la cadena original.

DESENCRIPTAR

Para desencriptar el dato encriptado, se utiliza la función decrypt(), a la cual se le pasan dos parámetros de tipo string: la cadena de texto encriptada, y la clave utilizada para encriptar.

El proceso de desencriptar posee dos pasos que realiza automáticamente la función decrypt: decodificar (filtro 1) y desencriptar (filtro 2).

El paso de decodificar lo lleva a cabo la función decode_hex(), la cual transforma la cadena en hexadecimal en una cadena de texto encriptada, la cual es un galimatías que utiliza los caracteres del código base.

El paso de desencriptar lo lleva a cabo la función decode(), la cual transforma la cadena de texto encriptada en el texto original. Esto lo realiza mediante la clave y la matriz de códigos, realizando el proceso de trasposición inverso al que se utilizó para la encriptación.

El resultado final de la desencriptación será la cadena de texto original, la cual contiene, exactamente, la mitad de caracteres que la cadena encriptada.