Entrada

PostgreSQL 馃悩 : Cambiar m茅todos de autenticaci贸n en Debian y derivados

Localizar el archivo de configuraci贸n pg_hba.conf:

Por lo general, el archivo pg_hba.conf se encuentra en el directorio de datos de PostgreSQL. La ubicaci贸n m谩s com煤n es: /etc/postgresql/<version>/main/pg_hba.conf.

Tambi茅n podemos conectarnos a Postgres y ejecutar el comando SHOW hba_file para obtener la ruta del archivo de configuraci贸n:

$ sudo -u postgres psql
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.
postgres=# SHOW hba_file;
              hba_file
-------------------------------------
 /etc/postgresql/15/main/pg_hba.conf
(1 row)

M茅todos de Autenticaci贸n Comunes

Antes de editar alg煤n archivo, veamos que m茅todos de autenticaci贸n tenemos disponibles en Postgres:

  • trust: permite la conexi贸n sin requerir contrase帽a. Todos los usuarios pueden conectarse sin autenticaci贸n. No es un m茅todo recomendado, al menos si se trata de entornos de desarrollo o para redes segura que no requieren autenticaci贸n. Ejemplo:
1
host    all             all             127.0.0.1/32            trust
  • password: requiere que los usuarios proporcionen una contrase帽a en texto plano. No se recomienda al ser menos seguro, ya que la contrase帽a se env铆a sin encriptar. Ejemplo:
1
host    all             all             127.0.0.1/32            password
  • md5: requiere una contrase帽a encriptada. Este es uno de los m茅todos m谩s comunes ya que proporciona una combinaci贸n de seguridad y facilidad de uso. Ejemplo:
1
host    all             all             127.0.0.1/32            md5
  • scram-sha-256: es un m茅todo de autenticaci贸n m谩s moderno y seguro que md5 que utiliza el algoritmo de hashing SCRAM. Proporciona una serie de mejoras en t茅rminos de seguridad y es ampliamente recomendado para entornos que requieren una mayor protecci贸n de contrase帽as. Ejemplo:
1
host    all             all             127.0.0.1/32            scram-sha-256
  • peer: es el m茅todo de autenticaci贸n basada en el sistema operativo. EL nombre de usuario de Postgre debe coincidir con el nombre del usuario del sistema (煤til en entornos controlados donde se conf铆a en la autenticaci贸n del sistema). Ejemplo:
1
host    all             all             127.0.0.1/32            peer

Formato del Archivo

Cada l铆nea del archivo pg_hba.conf tiene el siguiente formato:

1
# Tipo de conexi贸n  | Base de datos  | Usuario  | Direcci贸n  | M茅todo de autenticaci贸n

Secciones Comunes

En el archivo pg_hba.conf vamos a encontrar las siguientes secciones para modificar:

Local Connections

Se aplican a conexiones a trav茅s de Unix sockets. Ejemplo:

1
local    all             all             127.0.0.1/32            scram-sha-256
  • Base de datos: all significa que se aplica a todas las bases de datos.
  • Usuario: all significa que se aplica a todos los usuarios.
  • M茅todo de autenticaci贸n: En este ejemplo, se utiliza scram-sha-256, que es un m茅todo seguro.

Database Administrative Login by Unix

Permite el acceso administrativo al usuario postgres a trav茅s de sockets Unix. Ejemplo:

1
local   all             postgres                                peer

IPv4 Local Connections

Se aplica a conexiones desde direcciones IPv4. Ejemplo:

1
host    all             all             127.0.0.1/32            md5
  • Base de datos: all significa que se aplica a todas las bases de datos.
  • Usuario: all significa que se aplica a todos los usuarios.
  • Direcci贸n: 127.0.0.1/32 permite conexiones desde el localhost.
  • M茅todo de autenticaci贸n: En este ejemplo, se utiliza md5, que requiere una contrase帽a encriptada.

Cambiar el M茅todo de Autenticaci贸n para el Super Usuario Postgres

Antes de cambiar el m茅todo de autenticaci贸n para el superusuario postgres, necesitamos establecer una contrase帽a primero.

1. Acceder a PostgreSQL sin contrase帽a

Dado que el m茅todo actual es peer, podemos conectarnos a PostgreSQL sin necesidad de una contrase帽a desde el terminal:

1
sudo -u postgres psql

2. Establecer una contrase帽a para el usuario postgres

Una vez dentro del prompt de psql, establecemos una contrase帽a con el siguiente comando:

1
ALTER USER postgres WITH PASSWORD 'nueva_password';

Luego salimos del prompt de psql escribiendo \q.

3. Cambiar el m茅todo en el archivo pg_hba.conf

Abrimos el archivo pg_hba.conf con el editor de preferencia:

1
sudo nano /etc/postgresql/15/main/pg_hba.conf

Aqu铆, modificamos las l铆neas que especifican el m茅todo de autenticaci贸n. Por ejemplo, cambiar de peer en la secci贸n de usuario administrativo con algunos de los valores que mencionamos:

ejemplo de pg_hba.conf ejemplo de pg_hba.conf

Luego guardamos los cambios, y reiniciamos el servicio:

1
sudo service postgresql restart

4. Probar la conexi贸n con el superusuario

Ahora ya podemos conectarnos utilizando la contrase帽a establecida:

1
psql -U postgres -d postgres -W

Mi lema es

Esta entrada est谩 licenciada bajo CC BY 4.0 por el autor.