Configuración de PostgreSQL PH_HBA

Configuración de PostgreSQL PH_HBA

Configuración basada en host, comúnmente conocida como PH_HBA.conf, es un archivo especial utilizado para la autenticación del cliente PostgreSQL. Puede pensarlo como un archivo de configuración para administrar las políticas de acceso al clúster de la base de datos PostgreSQL.

Antes de sumergirnos en cómo trabajar con el archivo de configuración de PostgreSQL, instalar PostgreSQL. Si ya lo tiene instalado, no dude en omitir la sección.

Instalación de PostgreSQL

Para seguir con esta guía, debe asegurarse de tener instalado PostgreSQL. Ilustraré cómo instalarlo en un sistema Debian.

En el sistema Arch - https: // Linuxhint.com/install-postgresql-10-arch-linux/

En centos/rehl - https: // Linuxhint.com/install_postgresql_centos8/

Comience actualizando su sistema con el comando:

actualización de instalación de sudo apt-get
actualización de sudo apt-get

Una vez actualizado, cree una configuración de repositorio de archivos.

sudo sh -c 'echo "deb http: // apt.postgresql.org/pub/repos/apt $ (lsb_release -cs) -pgdg main ">/etc/apt/fuentes.lista.d/pgdg.lista'

A continuación, importe la clave de firma y actualice su sistema como:

wget --quiet -o -https: // www.postgresql.org/Media/Keys/ACCC4CF8.ASC | sudo apt-key add-&& sudo apt-get actualización

Finalmente, instale el servidor y el cliente PostgreSQL con el comando:

sudo apt-get instalación postgresql-13 postgreSQL-client-13

Puede especificar otras versiones PostgreSQL como PostgreSQL 9, 10, 11, 12, 14, etc.

Ahora puede inicializar el clúster PostgreSQL con el comando:

PG_CTLCLUST 13 Start principal

Comprender el archivo PH_HBA

De forma predeterminada, el archivo de configuración PH_HBA se encuentra en el directorio de clúster raíz.

En nuestro ejemplo, está en:

/etc/postgresql/13/main/ph_hba.confusión

El PG_HBA sigue un formato de configuración simple. Incluye un conjunto de reglas de configuración, una regla por línea.

El archivo de configuración no es sensible a los espacios en blanco, y todos los archivos precedidos por un # se tratan como comentarios e ignorados.

Las reglas PG_HBA no pueden abarcar por múltiples líneas, ya que cada línea se interpreta como una regla separada.

El archivo de configuración contiene 5 registros en el siguiente formato respectivamente:

  • Escriba la base de datos Método de dirección de usuario [Opciones]
  • Tipo - Representa el tipo de host.
  • Base de datos - Especifica la base de datos para la cual está configurada la regla.
  • Usuario - El nombre de usuario asociado con la base de datos establecida que coincide con la regla de establecimiento.
  • DIRECCIÓN - La dirección del cliente. Puede ser una sola IP o una subred completa. PostgreSQL admite direcciones IPv4 e IPv6.
  • Método - Especifica el método de autenticación para la regla establecida.
  • Opciones de autenticación - Opciones para agregar funcionalidad al método de autenticación especificado.
  • Opción - Opciones de método de autenticación en forma de nombre = valor.

PostgreSQL acepta varios métodos de autenticación. Éstas incluyen:

  • Confianza - Se utiliza para establecer el método de autenticación para aceptar conexiones incondicionalmente. Si se establece en confianza, cualquiera puede conectarse al servidor de la base de datos como cualquier usuario y cualquier base de datos sin necesidad de una contraseña.
  • Rechazar - Este método es similar al método de confianza, pero rechaza las conexiones incondicionalmente.
  • Contraseña - Si el método está configurado en la contraseña, el cliente de conexión debe proporcionar una contraseña sin cifrar.
  • Par - El método de autenticación de pares funciona en conexiones locales utilizando el nombre de usuario del sistema operativo de conexión y la verificación de una base de datos coincidente para el nombre de usuario. Un ejemplo sería el comando PSQL sin el indicador -u.
  • Certificado - Este método de autenticación utiliza los certificados SSL del cliente de conexión.
  • Ldap - Auth usando un servidor LDAP.

Lo anterior es una lista de algunos de los métodos de autenticación compatibles. Puede consultar otros métodos en la documentación oficial.

Configuraciones de ejemplo

La configuración PG_HBA es un archivo de texto sin procesar que puede editar con cualquier editor de texto compatible.

Las siguientes son algunas configuraciones que puede hacer para solucionar problemas o fines de seguridad.

Permita que cualquier usuario se conecte a cualquier base de datos (local).

Tipo de base de datos Método de dirección de usuario
Local todos los 127.0.0.0.1 confianza

Permitir que cualquier usuario de IP específico se conecte a una base de datos específica si la contraseña es correcta.

Tipo de base de datos Método de dirección de usuario
anfitrión db_name todos 192.168.0.112 SCRAM-SHA-256

Rechazar todas las conexiones de una subred IP específica

Tipo de base de datos Método de máscara IP-Address de la base de datos
anfitrión todos 192.168.1.110 255.255.0.0 rechazos

Permitir o rechazar un segmento de red IP específico

Tipo de base de datos Método de dirección de usuario
anfitrión todos 192.168.0.1/24 Rechazo

Especificar direcciones en el protocolo IPv4.

Permita que cualquier usuario se conecte a cualquier base de datos en IPv6

Tipo de base de datos Método de dirección de usuario
Organizar todo :: 1 confianza

Para cubrir tanto IPv6 como IPv4, puede especificar el nombre de host en su lugar.

Tipo de base de datos Método de dirección de usuario
anfitrión todo .rechazo local

Guardar y aplicar la configuración

Antes de guardar la configuración, asegúrese de que esté en el formato correcto. Para recargar y aplicar los cambios, puede usar la utilidad PG_CTL.

El comando es:

PG_CTL RELOAD -S -D/ETC/POSTGRESQL/13

El -d especifica el directorio que contiene el archivo de configuración. Si no se especifica ninguno, se usa el valor predeterminado.

En resumen

El PG_HBA.El archivo de configuración de Conf ayuda a especificar la autenticación del cliente en el servidor PostgreSQL. Hacer cambios puede permitirle asegurar su sistema y solo permitir usuarios y hosts específicos.