Configurar seguridad y acceso en PostgreSQL

Gilberto Castillo
2 min readOct 8, 2018

--

Sobre este tema se ha escrito mucho en Internet y otros soportes; pero por increíble que nos parezca aun se encuentra muchos servidores en producción con información sensible sin protección. Motivo por el cual me anime a hacer esta minuta

Las conexiones seguras permite, mediante una clave, cifrar el tráfico entre los clientes y el servidor, dificultando que alguien pueda interceptarlo y obtener los datos que viajan por red.

Requerimiento:

(a) Instalar openssl
(b) Crear Clave privada (postgresql.key)
© Eliminar la contraseña de la clave (postgresql.key)
(d) Crear Certificado de servidor (postgresql.crt) [En este caso es autofirmado]

Paso para la creación del certificado de servidor

$ sudo su -postgres# cd /etc/postgresql/9.5/main

P1: Cracion del archivo clave privada

 # openssl genrsa -des3 -out postgresql.key 1024

P2: Eliminación la contraseña para que no la solicite en cada nueva conexión

 # openssl rsa -in postgresql.key -out postgresql.key

P3: Creacion del certificado

 # openssl req -x509 -new -key postgresql.key -days 3650 -out postgresql.crt -subj ‘/C=LA/ST=La Habana/L=Cuba/O=PostgreSQL.cu/CN=postgreSQL.cu/emailAddress=mail@postgresql.org(Donde:)
-> x509 produce un certificado auto firmado en lugar de una solicitud de certificado.
-> days día de duración del certificado
-> subj es un atajo para evitar teclar la info.

P4: Otorgar permisos sobre el archivo .key

# chmod 400 /etc/postgresql/9.5/main/postgresql.key

P5: Configuración del postgresql.conf:


listen_addresses = ‘*’
ssl = true
ssl_cert_file = ‘/etc/postgresql/9.5/main/postgresql.crt’
ssl_key_file = ‘/etc/postgresql/9.5/main/postgresql.key’

P6: Reiniciar el servicio

 $ sudo /etc/init.d/postgresql restart

P7: Test

$ psql -h 127.0.0.1 -U postgres -d postgrespsql (9.5.14)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type “help” for help.
postgres=# SELECT version();

((Ahora podemos definir los clientes con los cuales nos comunicamos de manera cifrada o si usamos un certificado de una entidad acreditada))

— Configuración del pg_hba.conf:


hostssl all test 10.0.0.X/32 md5
hostssl all postgres 0.0.0.0/0 trust clientcert=1

--

--