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