Configurar Postgresql para conectar com senha criptografada

Publicado por Buckminster em 03/04/2023

[ Hits: 2.780 ]

 


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

Configurar teclado no Linux com Modmap

Wireless no Debian Squeeze com WPA2

Nunca execute esses comandos

Instalar Conky no Slackware 15

Desligar Windows remotamente pelo Linux

Leitura recomendada

Novo site sobre PostgreSQL

Acessando dois databases no mesmo SELECT (PostgreSQL)

Ativando acesso remoto ao PostgreSQL 8 no Fedora

Função SQL replace: corrigindo inserções equivocadas

Autenticação Squid em 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