Postgresql com conexão segura ssl

Muitas vezes pode ser necessário acessar um banco de dados remoto. Antigamente a única opção segura pra fazer isso eram os caríssimos links dedicados, dos quais não havia pontos públicos para interceptar os dados. Como a internet temos um meio barato de trafegar os dados, mas inseguro por ser uma rede publica. Para resolver o problema de segurança e utilizar as redes publicas usamos a criptografia, com ela podemos trafegar dados sigilosos com segurança pela internet. No caso de banco de dados com certeza é tipo de acesso que todo invasor gostaria de ter. Esse artigo vai ensinar como instalar um certificado para utilizar criptografia assimétrica no postgres para aumentar a segurança do trafego de informações de forma que sua aplicação vai poder acessar um servidor de banco de dados na internet de forma segura.

 

1-Criamos uma chave auto assinada no diretorio de dados do postgres:

# su – postgres

#cd /var/lib/pgsql/data

2-Criamos a chave privada, vai ser necessário colocar uma senha.

#openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
……….++++++
…………………..++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying – Enter pass phrase for server.key:
3-Requisição de certificado:

openssl req -new -key server.key -out server.csr

4-Vamos criar uma versão da chave sem senha, pois o postgres não vai inicializar com essa chave:

openssl rsa -in server.key -out server-nopass.key

5- Gerando certificado:

#openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.ca
mude as permissões dos arquivos por segurança:
#chmod 0600 server*

6-Altere as seguintes linhas comentadas no postgresql.conf

# – Connection Settings –

listen_addresses = ‘*’ # what IP address(es) to listen on;

ssl = on # (change requires restart)
ssl_ciphers = ‘HIGH:MEDIUM:+3DES:!aNULL’ # allowed SSL ciphers
# (change requires restart)
ssl_cert_file = ‘server.ca’ # (change requires restart)
ssl_key_file = ‘server-nopass.key’ # (change requires restart)

7-configuramos o pg_hba.conf para liberar a conexão via ssl
#tipo          database  usuario     endereço                tipo-autenticação
host           all           all             189.115.138.64/32                 trust
host           all           all             ::1/128                                    trust
hostssl       all          user           0.0.0.0/0                                md5

8- Criamos o usuario emitir para logar via ssl :
-P para pedir uma senha e o -s para torna-lo super usuario se necessario.
#createuser -P -s user

9-Dica, é aconselhavel mudar a porta padrão do postgres:

de:

port = 5432

port = 5444

 

10- Reiniciei o seu banco:

#/pg_ctl -D data/ restart -m fast

 

Tudo pronto 😉

About The Author
admin Anakin Pendragon