Centos Postgresql Python
Centos Postgresql Python
ENCRIPTACION DE UNA
BASE DE DATOS PYTHON-
POSTGRESQL
Reporte
1 ÍNDICE
2 Cifrando la conexión a una base de datos PostgreSQL ......................................................................... 3
2.1 Requisitos ...................................................................................................................................... 3
2.1.1 Virtualización de CentOS....................................................................................................... 3
2.1.2 Instalación del servidor postgresql ....................................................................................... 7
2.1.3 Instalación de Python.......................................................................................................... 11
2.1.4 Instalación de PyGreSQL ..................................................................................................... 11
2.1.5 Instalación de pgAdmin....................................................................................................... 11
2.2 Creación de la base de datos ...................................................................................................... 12
2.3 Conectar con la base de datos localmente ................................................................................. 13
2.3.1 Conectar con la base de datos localmente ......................................................................... 13
2.3.2 Conectarse a la base de datos desde pgAdmin.................................................................. 13
2.3.3 Conexión a la base de datos desde Python......................................................................... 16
2.4 Programa de encriptación de usuario y contraseña ................................................................... 17
2.4.1 Ejecución del programa en el cliente .................................................................................. 17
2.4.2 Código del programa........................................................................................................... 20
2.4.3 Funcionamiento de la aplicación ........................................................................................ 23
3 Conclusiones ....................................................................................................................................... 24
2 CIFRANDO LA CONEXIÓN A UNA BASE DE DATOS POSTGRESQL
2.1 REQUISITOS
En CentOS:
Servidor postgresql
Python
PyGreSQL
En Windows:
pgAdmin III
Hecho esto Podemos iniciar la virtualización de CentOS, podemos insertar el CD en la unidad lectora o
montar una unidad virtual.
Presionamos en Iniciar
Elegimos la opción de instalación, en la siguiente pantalla elegimos SKIP
A continuación seguimos las instrucciones de instalación, todo es en realidad muy sencillo e intuitivo.
2.1.2 Instalación del servidor postgresql
Para poder instalar el servidor postgresql e iniciar la base de datos se ejecutan en la terminal los siguientes
comandos en CentOS:
Instalar
Iniciar daemon
Una vez instalado el servidor, debemos configurar los archivos pg_hba.conf y postgresql.conf.
# su –l postgres
$ vin data/postgresql.conf
El otro valor que se debe modificar es el puerto, por defecto es el 5432, esta linea esta comentada
originalmente, por lo tanto la descomentamos.
Presionamos la tecla ESC para indicar que estamos listos para salir y tecleamos “ :wq “ para salir de la
edición del archivo guardando los cambios. Para que los cambios tengan efectos se debe reiniciar el
servicio postgresql
$ vin data/pg_hba.conf
Para poder aceptar conexiones, un paso más es necesario. Vaya a Sistema> Administracion> Cortafuegos
Se le presentara la ventana “Puerto y Protocolo”, aquí busque los puertos 5432 de tcp y udp y añádalos.
Después de clic en aplicar y reinicie el servicio postgresql desde consola.
2.1.3 Instalación de Python
Este paquete es necesario para poder conectar Python con la base de datos, para instalarlo solo se
ejecuta el comando:
En la siguiente dirección usted puede descargar pgAdmin III en su versión más reciente para Windows:
http://www.pgadmin.org/download/windows.php
2.2 CREACIÓN DE LA BASE DE DATOS
Si el servicio corre de manera correcta, ahora usted puede loguearse como usuario postgres:
# su –l postgres
Una vez logueado con el usuario postgres, usted puede crear nuevos usuarios o nuevas base de datos
Para crear un usuario solo necesita especificar el nombre del usuario y una contraseña:
$ createuser miUsuario –P
Se debe espeficicar el nombre de la nueva base de datos y que usuario sera el administrador de la
misma
2.3 CONECTAR CON LA BASE DE DATOS LOCALMENTE
Para conectarse localmente a la base de datos y desde la consola de postgresql, se usa el comando:
Y de esta manera estará listo para empezar a modificar la base de datos agregando tablas, borrando
tablas o cualquiera que sea la operación a realizar.
Una vez que la dirección ip del host a conectarse se ha dado de alta, en pgAdmin haga clic en nueva
conexión.
En la ventana New Server Registration, llene los campos con los datos de la conexión y presiones OK
Si la conexión es exitosa la imagen anterior es un ejemplo de lo que puede aparecer, en caso de que la
conexión no se alcance a establecer, asegúrese de que:
En la terminal, ejecutar:
# python
Y a continuación
En este punto, ya se pueden realizar consultas o hacer inserciones en las tablas de la base de datos.
2.4 PROGRAMA DE ENCRIPTACIÓN DE USUARIO Y CONTRASEÑA
El objetivo de este programa es conectar un cliente con una base de datos en otro host. El usuario debe
tener conocimiento de:
El archivo conecta.py contiene el código necesario para realizar una conexión a la base de datos.
Si los datos ingresados son correctos se le presentará una pantalla, indicando que se ha conectado a la
base de datos exitosamente y como muestra, aparecerá en pantalla el resultado de una consulta.
Si al ingresar los datos en el cliente hubiera un error, ya sea una contraseña incorrecta, un usuario
invalido o una dirección IP no correspondiente se le mostrará un mensaje, indicando el fracaso de la
conexión.
2.4.2 Código del programa
from pg import DB #Sentencia que importa la libreria DB para poder realizar la conexion.
cont='' #Variable que almacenara el valor de la contraseña de la base de datos, de manera temporal
def cifraUser(userDesc): #Funcion que cifra lo que haya en 'user' y lo guarda en 'userEn'
for c in userDesc:
global userEn
userEn+=chr(ord(c)^83)
return userEn
def cifraPass(pasDes): #Funcion que cifra lo que haya en 'cont' y lo guarda en 'pasEn'
for c in pasDes:
global pasEn
pasEn+=chr(ord(c)^97)
return pasEn
def descifraUser(userEnc): #Funcion que descifra lo que hay en 'userEn' y lo guarda en 'userDesc'
for c in userEnc:
global userDesc
userDesc+=chr(ord(c)^83)
return userDesc
def descifraPass(passEnc): #Funcion que descifra lo que hay en 'PasEn' y lo guarda en 'pasDes'
for c in passEnc:
global pasDes
pasDes+=chr(ord(c)^97)
return pasDes
def captura(): #Funcion que pide al usuario ingresar los datos indicados
global user
global cont
global ip
#Las siguientes lineas de codigo se encierran en un bloque try-except, para cachar las excepciones posibles
try:
print ('')
x=db.query("SELECT *from canciones") #Realiza una consulta en la base de datos para demostrar la conexion exitosa
print x
print ("-------------------------------------")
except:
print ('La conexion con el servidor no pudo establecerse, por favor verifique sus datos')
raw_input()
2.4.3 Funcionamiento de la aplicación
El objetivo del programa es cifrar los datos que el usuario entrega, en este caso esto se logra aplicando un
XOR al valor que se desea cifrar. Se usan 3 funciones principalmente:
DescifraUser() Desencripta el campo del usuario, para permitir la conexión a la base de datos
El usuario ejecuta el programa, el programa entonces pedirá al usuario que ingrese sus datos. Recibidos
los datos, el programa de manera interna aplicará un algoritmo de cifrado para el usuario y la contraseña
ingresados. Posteriormente aplicará el mismo algoritmo y desencriptará los datos, para realizar como
siguiente paso la conexión a la base de datos.
Establecida la conexión, se realiza una consulta internamente y se muestran los datos de una tabla
existente en la base de datos.
3 CONCLUSIONES
Las grandes empresas manejan una enorme cantidad de información que no pueden dejar de cuidar, pues
dependen de ella. Toda grande empresa, es decir, toda empresa debe tener en cuenta lo valiosa que es la
información que maneja dentro y fuera de sus instalaciones. Las infiltraciones en el sistema de una
empresa pueden tener repercusiones terribles, dependiendo de las intenciones que tenga el infiltrado.
Uno de los puntos más atacados son las Bases de Datos de las empresas, lo que se almacena en ellas es
un tesoro y también un peligro si no se le protege como debe ser. Es por ello que una manera de cuidar
toda esta información es la encriptación, existen varios métodos posibles de usarse.
En este trabajo usamos la encriptación de un usuario y la contraseña como punto de partida, puesto que
es muy dado que los infiltrados se hagan pasar por empleados de las empresas para robar información,
por supuesto siguen habiendo más y mejores maneras de lograr la aseguración de los datos de una
empresa, este fue solo un ejemplo.