Entrada

PostgreSQL 🐘 : Cambiar métodos de autenticación en Debian y derivados

_Localizar el Archivo de Configuración

Por lo general, el archivo de configuración 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
Esta entrada está licenciada bajo CC BY 4.0 por el autor.