Gestión de seguridad y usuarios de la base de datos gaussdb [Conexión TCP / IP segura mediante SSL] [04]

1. Utilice SSL para una conexión TCP / IP segura

GaussDB admite la comunicación entre el cliente y el servidor, y entre el host y la máquina en espera a través de encriptación SSL, que proporciona una garantía de seguridad para la transmisión de datos sensibles en Internet.

Información general
GaussDB admite el estándar de protocolo SSL 3.0. El protocolo SSL 3.0 es un estándar de protocolo más seguro. Agrega firmas digitales y certificados digitales para lograr una autenticación bidireccional entre el cliente y el servidor, lo que garantiza una transmisión de datos más segura para ambas partes. .

  • Si es solo para probar, puede usar Openssl para generar un certificado.
  • Los parámetros relacionados con SSL no solo controlan la comunicación SSL entre el cliente y el host, sino que también controlan la comunicación SSL entre el host y la máquina en espera.

Active el modo de autenticación SSL.

gs_guc set -c ssl=on

Configure los parámetros de autenticación de acceso del cliente (para máquinas duales, solo es necesario configurarlo en el host).

cd /opt/gaussdb/data
vi pg_hba.conf

Por ejemplo, agregar información similar a la siguiente indica que los clientes en el segmento de red 10.0.0.2/24 pueden conectarse al servicio GaussDB a través de la autenticación SSL:

hostssl  all   all 10.0.0.2/24      sha256

Para obtener métodos de configuración detallados y descripciones de parámetros, consulte Configuración de la autenticación de acceso de cliente.
https://blog.csdn.net/qq_42226855/article/details/109563367

Configure los parámetros del certificado digital relacionados con la autenticación SSL. Para conocer los requisitos específicos, consulte la Tabla 1.

Se configura como un parámetro del lado del servidor. Para obtener descripciones específicas de los parámetros, consulte la Tabla 2.

gaussdba@gauss21:/opt/gaussdb/data> gs_guc set -c "ssl_cert_file='server.crt'"
gs_guc set: ssl_cert_file='server.crt'
gaussdba@gauss21:/opt/gaussdb/data> gs_guc set -c "ssl_key_file='server.key'"
gs_guc set: ssl_key_file='server.key'
gaussdba@gauss21:/opt/gaussdb/data> gs_guc set -c "ssl_ca_file='cacert.pem'"
gs_guc set: ssl_ca_file='cacert.pem'
gaussdba@gauss21:/opt/gaussdb/data> gs_guc set -c "ssl_crl_file=' '"
gs_guc set: ssl_crl_file=' '

Configure los parámetros del cliente.

export PGSSLCERT="/opt/gaussdb/data/client.crt"
export PGSSLKEY="/opt/gaussdb/data/client.key"
export PGSSLMODE="prefer"
export PGSSLROOTCERT=" "
export PGSSLCRL=" "

Tabla 1 Métodos de autenticación

método de verificación sentido Configure los parámetros del lado del servidor (para máquinas duales, debe configurarse en el host y en espera) Configurar las variables de entorno del cliente
Autenticación bidireccional (recomendado) El cliente verifica la validez del certificado del servidor
y el servidor también verifica
la validez del certificado del cliente.Sólo cuando la autenticación es exitosa
se puede establecer la conexión .
Copie el certificado del servidor, la clave privada del servidor, el certificado obsoleto y el certificado raíz en $ GAUSSDATA y configure los siguientes parámetros:

ssl_cert_file
ssl_key_file
ssl_ca_file
ssl_crl_file
ssl_ciphers Para conocer
los valores de los parámetros ssl_ciphers , consulte la Tabla 2 y la Tabla 4.
Configure las siguientes variables de entorno:

PGSSLCERT
PGSSLKEY
PGSSLROOTCERT
PGSSLCRL
PGSSLMODE
Valores de la variable de entorno, consulte la Tabla 3.
Autenticación del servidor El cliente solo verifica la validez del certificado del servidor
y el servidor no verifica la
validez del certificado del cliente . El servidor carga la información del certificado y la envía
al cliente, que utiliza el certificado raíz para verificar
la validez del certificado del lado del servidor.
Copie el certificado del lado del servidor y el archivo de clave privada en $ GAUSSDATA y establezca los siguientes parámetros:

ssl_cert_file
ssl_key_file
ssl_ciphers
Valores de parámetro, consulte la Tabla 2 y la Tabla 4.
Establezca las siguientes variables de entorno:

PGSSLROOTCERT
PGSSLCRL
PGSSLMODE
Valores de la variable de entorno, consulte la Tabla 3.
Autenticación de cliente El servidor solo verifica la validez del certificado del cliente y el cliente no verifica la validez del certificado del servidor. En la fase de reconocimiento, el cliente cargará la información del certificado y la enviará al servidor, que utiliza el certificado raíz para verificar la validez del certificado del cliente.
Copie el certificado raíz y la lista de revocación de certificados en el lado del servidor en $ GAUSSDATA y establezca los siguientes parámetros:

ssl_ca_file
ssl_crl_file
Los
valores de los parámetros ssl_ciphers , consulte la Tabla 2 y la Tabla 4.
Establezca las siguientes variables de entorno:

PGSSLROOTCERT
PGSSLCRL
PGSSLMODE
Valores de la variable de entorno, consulte la Tabla 3.

Permiso para modificar la clave del servidor. Suponga que el nombre es server.key y está en el directorio / opt / gaussdb / data.

El permiso debe ser 600, el propietario es gaussdba y el grupo es dbgrp. Si los permisos no cumplen con los requisitos, no se puede iniciar GaussDB. Utilice el siguiente comando para modificar los permisos:

cd /opt/gaussdb/data
chown gaussdba:dbgrp server.key
chmod og-rwx server.key

En la máquina en espera y la máquina en espera en cascada, la siguiente configuración también es necesaria para permitir la comunicación normal entre las máquinas activas y en espera, entre la máquina en espera y la máquina en espera en cascada (en este momento, la máquina en espera es equivalente al cliente de el host y la máquina en espera en cascada (es equivalente al cliente de la máquina en espera).

  • Configure las variables de entorno PGSSLCERT, PGSSLKEY, PGSSLROOTCERT y PGSSLCRL. Para conocer los valores de las variables de entorno, consulte la Tabla 3.
  • Configure el parámetro ssl_ciphers (se recomienda mantener el valor predeterminado ALL). Para los algoritmos de cifrado admitidos por GaussDB, consulte la Tabla 4.

Reinicie GaussDB para que la configuración surta efecto.

gs_ctl restart

Tabla 2 Parámetros del servidor

parámetro descripción Rangos
ssl Indica si habilitar la función SSL on: activa la función SSL.
off: desactiva la función SSL.
Valor predeterminado: desactivado
ssl_cert_file Especifique el archivo de certificado del servidor, que contiene la clave pública del servidor. El certificado del servidor se utiliza para mostrar la legitimidad de la identidad del servidor, y la clave pública se enviará al par para cifrar los datos. Consulte el nombre real del certificado. Se debe utilizar una ruta relativa, que es relativa al directorio de datos.

Valor predeterminado: server.crt
ssl_key_file Especifique el archivo de clave privada del servidor para la firma digital y el descifrado de datos cifrados de clave pública. Consulte el nombre real de la clave privada del servidor. Se debe utilizar una ruta relativa, que es relativa al directorio de datos.

Valor predeterminado: server.key
ssl_ca_file El certificado raíz del servidor CA. Este parámetro se puede configurar opcionalmente, y solo es necesario verificar la validez del certificado de cliente. Consulte el nombre real del certificado raíz del servidor CA.

Valor predeterminado: vacío, lo que significa que no se verifica la identidad del cliente.
ssl_crl_file Lista de revocación de certificados: si el certificado de cliente está en esta lista, el certificado de cliente actual se considera un certificado no válido. Consulte el nombre real de la lista de revocación de certificados.

Valor predeterminado: vacío, lo que significa que no hay una lista de revocación.
ssl_ciphers El algoritmo de cifrado utilizado para la comunicación SSL. Para conocer los algoritmos de cifrado admitidos por GaussDB, consulte la Tabla 4.

Valor predeterminado: TODOS, lo que significa que el par puede utilizar todos los algoritmos de cifrado admitidos por GaussDB.

Tabla 3 Parámetros del cliente

Variable ambiental descripción Rangos
PGSSLCERT Especifique el archivo de certificado del cliente, que contiene la clave pública del cliente. El certificado de cliente se utiliza para mostrar la legitimidad de la identidad del cliente y la clave pública se enviará al par para cifrar los datos. Se debe incluir la ruta absoluta del archivo, como:
export PGSSLCERT = "/ home / gaussdb / data / client.crt" Valor predeterminado: vacío
PGSSLKEY Especifique el archivo de clave privada del cliente para la firma digital y el descifrado de datos cifrados de clave pública. Se debe incluir la ruta absoluta del archivo, como:
export PGSSLKEY = "/ home / gaussdb / data / client.key" Valor predeterminado: vacío
PGSSLMODE Establezca si desea negociar una conexión SSL con el servidor y especifique la prioridad de la conexión SSL. Valor y significado:

deshabilitar
solo intenta una conexión que no sea SSL.

Permita
probar primero una conexión que no sea SSL, si la conexión falla, intente una conexión SSL nuevamente.

prefiera
probar una conexión SSL primero, si la conexión falla, se intentará una conexión que no sea SSL. Solo

requiere
probar una conexión SSL. Si hay un archivo CA, verifíquelo configurándolo en verify-ca.

verify_ca
solo intenta una conexión SSL y verifica si el certificado del servidor es emitido por una autoridad certificadora confiable.

verify_full
solo intenta una conexión SSL y verifica si el certificado del servidor es emitido por una autoridad certificadora confiable, y verifica si el nombre de host del servidor es consistente con el certificado.

Valor predeterminado: preferir
PGSSLROOTCERT Especifique el archivo de certificado raíz para emitir un certificado para el cliente. El certificado raíz se utiliza para verificar la validez del certificado del servidor. Se debe incluir la ruta absoluta del archivo, como:
export PGSSLROOTCERT = "/ home / gaussdb / data / root.crt" Valor predeterminado: vacío
PGSSLCRL Especifique un archivo de lista de revocación de certificados para verificar si el certificado del servidor está en la lista de certificados obsoletos. Si lo está, el certificado del servidor se considerará un certificado no válido. Se debe incluir la ruta absoluta del archivo, como:
export PGSSLCRL = "/ home / gaussdb / data / root.crl" Valor predeterminado: vacío

Especifique el algoritmo de cifrado utilizado por el servidor de la base de datos modificando ssl_ciphers en postgresql.conf. Actualmente, los algoritmos de cifrado admitidos por GaussDB SSL se muestran en la Tabla 4.

Tabla 4 Algoritmo de cifrado

Fuerza de cifrado Velocidad de cifrado Descripción del algoritmo de cifrado
más fuerte Más rápido AES256-SHA
más fuerte Más rápido DES-CBC3-SHA
más fuerte Más rápido AES128-SHA
más fuerte Más rápido RC4-SHA
más fuerte Más rápido RC4-MD5
más fuerte más lento Y-RSA-AES256-SHA
más fuerte más lento Y-DSS-AES256-SHA
más fuerte más lento EDH-RSA-DES-CBC3-SHA
más fuerte más lento EDH-DSS-DES-CBC3-SHA
más fuerte más lento Y-RSA-AES128-SHA
más fuerte más lento DHE-DSS-AES128-SHA
medio Más rápido DES-CBC-SHA
medio más lento EDH-RSA-DES-CBC-SHA
medio más lento EDH-DSS-DES-CBC-SHA

2. Utilice el túnel SSH para una conexión TCP / IP segura

Para garantizar la comunicación segura entre el servidor GaussDB y el cliente, se puede construir un túnel SSH seguro entre el servidor y el cliente. SSH es actualmente un protocolo más confiable diseñado para brindar seguridad para sesiones de inicio de sesión remotas y otros servicios de red.

Información general
Desde la perspectiva del cliente SSH, SSH proporciona dos niveles de verificación de seguridad:

  • Autenticación de seguridad basada en contraseña: utilice la cuenta y la contraseña para iniciar sesión en el host remoto. Todos los datos transmitidos se cifrarán, pero no hay garantía de que el servidor al que se está conectando sea el servidor al que necesita conectarse. Puede haber otros servidores que se hacen pasar por el servidor real, que es atacado por un método de "hombre en el medio".
  • Verificación de seguridad basada en claves: los usuarios deben crear un par de claves para ellos mismos y poner la clave pública en el servidor al que se debe acceder. El segundo nivel no solo cifra todos los datos transmitidos, sino que también evita los ataques de "intermediario". Sin embargo, todo el proceso de inicio de sesión puede tardar 10 segundos.
  • El servicio SSH y GaussDB se ejecutan en el mismo servidor.

Establezca un túnel SSH desde el host local al servidor GaussDB.

ssh -L 63333:localhost:5432 username@hostIP 

Descripción:

  • El primer número (63333) del parámetro -L es el número de puerto del canal local, que se puede seleccionar libremente.
  • El segundo número (5432) es el puerto remoto del canal, que es el número de puerto utilizado por el servidor.
  • localhost es la dirección IP de la máquina local, username es el nombre de usuario en el servidor GaussDB que se va a conectar y hostIP es la dirección IP del host GaussDB que se va a conectar.

Referencias relacionadas

Descripción del parámetro de la base de datos gaussdb [postgresql.conf, pg_hba.conf, pg_ident.conf] [01]
https://blog.csdn.net/qq_42226855/article/details/108646659

Descripción del parámetro de la base de datos gaussdb [conexión, grupo de conexiones, seguridad y autenticación] [02]
https://blog.csdn.net/qq_42226855/article/details/108748031

Gestión de seguridad y usuarios de la base de datos gaussdb [Proceso de generación de certificado SSL con openssl] [05]
https://blog.csdn.net/qq_42226855/article/details/109578424

Supongo que te gusta

Origin blog.csdn.net/qq_42226855/article/details/109565179
Recomendado
Clasificación