Configurar Postgresql para conectar com senha criptografada

Publicado por Buckminster em 03/04/2023

[ Hits: 2.764 ]

 


Configurar Postgresql para conectar com senha criptografada



Para autenticar exigindo senha, devemos antes, colocar como trust, alterar os usuários adicionando senha e somente então voltamos ao pg_hba.conf para pedir senha e reiniciar o PostgreSQL.

Depois de instalado, para configurar senha no PostgreSQL siga os passos abaixo.

1. Garanta que o usuário postgres seja o dono dele mesmo e altere o arquivo postgresql.conf

Digite o comando:

# chown -R postgres:postgres /etc/postgresql/15/main/

Altere o 15 e/ou o caminho para a tua versão.

Verifique se o Postgres está iniciado e funcionando, se não estiver inicie o Postgres:

# systemctl status postgresql.service # Debian e derivados
# systemctl start postgresql.service

No Debian e derivados o arquivo postgresql.conf está em /etc/postgresql/15/main/postgresql.conf, mas pode procurar na tua distribuição com o comando:

# find / | grep postgresql.conf

E depois use o teu editor de texto preferido:

# vim /etc/postgresql/15/main/postgresql.conf

Procure a linha listen_addresses (está na linha ~60), caso estiver comentada descomente-a e deixe ela assim:

listen_addresses = 'localhost, 127.0.0.1, IP_DO_SEU_SERVIDOR'

Esta linha é o começo da configuração para evitar aquele famigerado erro "o servidor está aceitando conexões TCP/IP?":

Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running on host "localhost" (fe80::1) and accepting TCP/IP connections on port 5432?

2. Altere o arquivo pg_hba.conf

No Debian e derivados está em /etc/postgresql/15/main/pg_hba.conf:

# vim /etc/postgresql/15/main/pg_hba.conf

Coloque tudo como trust.

# Database administrative login by Unix domain socket
local   all             postgres                                trust #peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust #peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust #scram-sha-256
host    all             all             12.345.678.900/32       trust
# IPv6 local connections:
host    all             all             ::1/128                 trust #scram-sha-256

# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust #peer
host    replication     all             127.0.0.1/32            trust #scram-sha-256
host    replication     all             ::1/128                 trust #scram-sha-256

A linha:

host    all             all             12.345.678.900/32       trust

você acrescenta na posição colocando o IP do teu servidor e coloque /32 no final independentemente se for /20, /24, etc, assim amarramos somente o IP e não a rede toda.

Salve e saia do arquivo.

Reinicie o Elefante:

# systemctl restart postgresql.service

* Debian e derivados com o famigerado systemd.

3. Altere ou crie o usuário postgres com senha

Entrando no usuário postgres que deve ter sido criado automaticamente no sistema durante a instalação do Elefante:

# sudo -i -u postgres

* mesmo estando como root use o sudo.

Caso precisar coloque o usuário postgres no arquivo /etc/sudoers abaixo do root:

# vim /etc/sudoers

root    ALL=(ALL:ALL) ALL
postgres ALL=(ALL:ALL) ALL

Salve e saia do arquivo.

Entrando no utilitário psql:

psql postgres=# ALTER USER postgres WITH PASSWORD 'sua_senha';

Dê enter e deverá aparece ALTER ROLE indicando que você é o cara e fez tudo certo até aqui.

Para sair digite \q.

E saia do usuário postgres:

exit

4. Configurando o pg_hba.conf

Edite o arquivo:

# vim /etc/postgresql/15/main/pg_hba.conf

Veja o exemplo de um servidor em produção, da parte final que nos interessa:

# Database administrative login by Unix domain socket
local   all             postgres                                md5 #peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5 #peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             12.345.678.900/32       md5
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     md5 #peer
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

Salve e saia do arquivo.

Reinicie o Elefante:

# systemctl restart postgresql.service

* Debian e derivados com o famigerado systemd.

E está terminado. Agora você não precisa mais deixar o Postgresql vulnerável colocando tudo como trust para poder conectar.

Teste com o PgAdmin4 ou teste de outra forma a conexão com o banco digitando a senha que configurou com o comando ALTER USER.

Ao criar ou alterar a senha no psql o Postgres criptografa automaticamente a senha.

Deixamos scram-sha-256 onde estava originalmente como indica a documentação do Postgres e colocamos md5 onde estava peer para dar mais segurança.

Referências


Outras dicas deste autor

Kubernetes, amplo material completo da CNCF com ferramentas e suas instalações, incluindo suporte à OpenAPI

GRUB com senha criptografada no Debian Squeeze

Como resolver os erros 'a start job is running for wait for network to be configured' e 'a start job is running for raise network interfaces'

PostgreSQL 9.1 64 bits - Instalação no Debian Squeeze

Instalar PHP8 no Debian 9 e 10

Leitura recomendada

Alterando senha inicial do PostgreSQL [Ubuntu]

Autovacuum do PostgreSQL

Exportando dados do PostgreSQL para HTML

PGadmin3 1.6.3 no Kurumin

Select com extração de dia, mês ou ano no PostgreSQL

  

Comentários
[1] Comentário enviado por maurixnovatrento em 14/05/2023 - 23:02h


dica útil.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts