0% encontró este documento útil (0 votos)
60 vistas

Centos Postgresql Python

Este documento describe cómo cifrar la conexión entre una base de datos PostgreSQL y Python. Explica cómo instalar PostgreSQL, Python y PyGreSQL en CentOS y pgAdmin en Windows. También cubre la creación de usuarios y bases de datos en PostgreSQL, y cómo conectarse a la base de datos desde la línea de comandos de PostgreSQL, pgAdmin y Python. Finalmente, presenta un programa Python que permite la conexión cifrada a la base de datos mediante la encriptación de las credenciales del usuario.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
60 vistas

Centos Postgresql Python

Este documento describe cómo cifrar la conexión entre una base de datos PostgreSQL y Python. Explica cómo instalar PostgreSQL, Python y PyGreSQL en CentOS y pgAdmin en Windows. También cubre la creación de usuarios y bases de datos en PostgreSQL, y cómo conectarse a la base de datos desde la línea de comandos de PostgreSQL, pgAdmin y Python. Finalmente, presenta un programa Python que permite la conexión cifrada a la base de datos mediante la encriptación de las credenciales del usuario.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 25

CONEXIÓN Y

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

Para la realización de este proyecto, se necesitó instalar CentOS y posteriormente:

En CentOS:

Servidor postgresql

Python

PyGreSQL

En Windows:

pgAdmin III

2.1.1 Virtualización de CentOS

En VirtualBox clicamos en la pestaña “nueva”, y a continuación empezamos a crear nuestra maquina


virtual.
Asignamos la memoria RAM para la máquina virtual.

Hacemos clic en crear (disco duro virtual)

Elegimos VirtualBox Disc Image.


Elegimos reservado dinámicamente.

Finalmente elegimos la capacidad de almacenamiento que asignaremos a nuestra máquina virtual.

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

# yum install postgresql postgresql-server

Inicializar la Base de datos

# service postgresql initdb

Iniciar daemon

# service postgresql start

Arrancar el daemon por defecto en los niveles de inicio 2,3, y 5.

# chkconfig --levels 235 postgresql on

2.1.2.1 Edicion de los archivos pg_hba.conf y postgresql.conf

Una vez instalado el servidor, debemos configurar los archivos pg_hba.conf y postgresql.conf.

Para modificar el archivo postgresql.conf nos logueamos como usuario postgres

# su –l postgres

Con el comando vin accedemos al archivo postgresql.conf

$ vin data/postgresql.conf

En el archivo buscamos el encabezado “Connections and Authentication”


Originalmente el atributo listen_addresses esta comentado, se debe descomentar y asignarle como valor
el simbolo asterisco (*), esto para que el servidor sea capaz de escuchar cualquier diección ip, se pueden
especificar tambien por separado las direcciones deseadas.

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

# service postgresql restart

Ahora abrimos el archivo pg_hba.conf

$ vin data/pg_hba.conf

Se nos mostrará en pantalla lo siguiente:


Aquí lo que se hace es especificar cuales hosts vamos a permitir se conecten al servidor en la red local. Y
se modifica el campo METHOD como md5 para cada una de las direcciones de la tabla. Para que los
cambios tengan efectos se debe reiniciar el servicio postgresql

# service postgresql restart


2.1.2.2 Configuración del cortafuegos

Para poder aceptar conexiones, un paso más es necesario. Vaya a Sistema> Administracion> Cortafuegos

De clic en la pestaña otros puertos, y presione el botón Añadir.

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

Para instalar Python solo es necesario ejecutar el siguiente comando en consola:

# yum install Python

2.1.4 Instalación de PyGreSQL

Este paquete es necesario para poder conectar Python con la base de datos, para instalarlo solo se
ejecuta el comando:

# yum install PyGreSQL

2.1.5 Instalación de pgAdmin

pgAdmin es una plataforma de administración y desarrollo para PostGreSQL

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

Despues de instalar postgresql, puede revisar el estado del servicio con:

# service postgres status

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

La terminal le pedirá establecer la contraseña correspondiente, se le preguntará si el usuario va a ser un


super usuario y si se le permite la creación de nuevos roles.

Para crear una base de datos se usa el siguiente comando:

$ createdb miBD –owner= dueñoDB

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

2.3.1 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:

$ psql –U miUsuario –d miDB

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.

2.3.2 Conectarse a la base de datos desde pgAdmin

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:

- Su dirección este registrada en el archivo pg_hba.conf del servidor


- La configuración del cortafuegos en el servidor sea la adecuada
- Los datos ingresados sean los correctos
2.3.3 Conexión a la base de datos desde Python

La primera prueba que se realizó desde Python, se hizo desde consola.

En la terminal, ejecutar:

# python

La sentencia siguiente, sólo funcionará si realizó la instalación del PyGreSQL.

>>> from pg import DB

Y a continuación

>>> db = DB(‘nombre_bd’, ’ip_servidor’, puertoDeConexion, ‘ ’, ‘ ’, ‘usuario’, ‘contraseña’ )

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 nombre de la base de datos


- La contraseña del usuario
- El dueño de la base de datos o usuario
- La dirección IP donde se encuentra alojada la base de datos

2.4.1 Ejecución del programa en el cliente

El archivo conecta.py contiene el código necesario para realizar una conexión a la base de datos.

En el cliente, ejecutar el archivo conecta.py


Se abrirá una terminal y se le pedirá identificarse, a continuación deberá especificar la dirección IP del
servidor y la base de datos a la cual quiere conectarse.

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

#!/usr/bin/python # Indica la ubicacion del ejecutable de python en la maquina cliente

print ("Para conectarse al servidor debe identificarse...")

from pg import DB #Sentencia que importa la libreria DB para poder realizar la conexion.

userDesc='' #Variable que almacenara el nombre del usuario desencriptado

pasDes='' #Variable que almacenara el valor de la contraseña desencriptada

user='' #Variable que almacenara el nombre del usuario, de manera temporal

cont='' #Variable que almacenara el valor de la contraseña de la base de datos, de manera temporal

userEn='' #Variable que almacenara el nombre de usuario, pero encriptado

pasEn='' #Variable que almacenara la contraseña encriptada

ip='' #Variable que almacenara la direccion IP del servidor

nombreDB='' #Variable que almacenara el nombre de la base de datos

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

user= raw_input('Teclee su usuario: ')

cont= raw_input('Teclee su password: ')

ip= raw_input('Teclee la direccion ip del servidor: ')

nombreDB= raw_input('Teclee el nombre de la base de datos a acceder: ')

captura() #Invocacion a la funcion captura() para obtener los datos iniciales

cifraUser(user) #Invocacion a la funcion cifraUser() para cifrar el valor de 'user'

cifraPass(cont) #Invocacion a la funcion cifraPas() para cifrar el valor de 'cont'

#Las siguientes lineas de codigo se encierran en un bloque try-except, para cachar las excepciones posibles

try:

db=DB( nombreBD,ip,5432,'','',descifraUser(userEn),descifraPass(pasEn)) #Se realiza la conexion, con los parametros indicados

print ('Conexion con el servidor exitosa!')

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:

captura() Permite capturar los datos del usuario, desde teclado

cifraUser() Cifra el user que el usuario ha de ingresar

cifraPass() Cifra la contraseña que el usuario ingresa

DescifraUser() Desencripta el campo del usuario, para permitir la conexión a la base de datos

DescifraPass() Desencripta el campo de la contraseña

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

La seguridad de nuestra información es un aspecto muy importante a cuidar, el nivel de seguridad va


creciendo de acuerdo a la importancia de los datos que se trata de asegurar.

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.

También podría gustarte