PostgreSQL ofrece cifrado en varios niveles y brinda flexibilidad para proteger los datos contra la divulgación debido al robo del servidor de la base de datos, administradores sin escrúpulos y redes inseguras. El cifrado también puede ser necesario para proteger datos confidenciales, como registros médicos o transacciones financieras.

Cifrado de contraseña

Las contraseñas de los usuarios de la base de datos se almacenan como valores hash (determinados por la configuración password_encryption), por lo que el administrador no puede determinar la contraseña real asignada al usuario. Si se usa el cifrado SCRAM o MD5 para la autenticación del cliente, la contraseña sin cifrar nunca está presente en el servidor, ni siquiera temporalmente, porque el cliente la cifra antes de enviarla a través de la red. Se prefiere SCRAM porque es un estándar de Internet y es más seguro que el protocolo de autenticación MD5 específico de PostgreSQL.

Cifrado para columnas específicas

El módulo pgcrypto permite que ciertos campos se almacenen encriptados. Esto es útil si solo algunos de los datos son confidenciales. El cliente proporciona el descifrado. key y los datos se descifran en el servidor y luego se envían al cliente.

Los datos descifrados y el descifrado key están presentes en el servidor por un breve tiempo mientras se descifra y se comunica entre el cliente y el servidor. Esto presenta un breve momento donde los datos y keys puede ser interceptado por alguien con acceso completo al servidor de la base de datos, como el administrador del sistema.

Cifrado de partición de datos

El cifrado de almacenamiento se puede realizar a nivel de sistema de archivos o a nivel de bloque. Las opciones de cifrado del sistema de archivos de Linux incluyen eCryptfs y EncFS, mientras que FreeBSD usa PEFS. Las opciones de cifrado a nivel de bloque o de disco completo incluyen dm-crypt + LUKS en Linux y módulos GEOM geli y gbde en FreeBSD. Muchos otros sistemas operativos admiten esta funcionalidad, incluido Windows.

Este mecanismo evita que se lean datos no cifrados de las unidades si se roban las unidades o la computadora completa. Esto no protege contra ataques mientras el sistema de archivos está montado, porque cuando está montado, el sistema operativo proporciona una vista sin cifrar de los datos. Sin embargo, para montar el sistema de archivos, necesita alguna forma de encriptación key para ser pasado al sistema operativo, y a veces el key se almacena en algún lugar del host que monta el disco.

Cifrado de datos a través de una red

Las conexiones SSL cifran todos los datos enviados a través de la red: la contraseña, las consultas y los datos devueltos. los pg_hba.conf El archivo permite a los administradores especificar qué hosts pueden usar conexiones no cifradas (host) y que requieren conexiones encriptadas SSL (hostssl). Además, los clientes pueden especificar que se conecten a los servidores solo a través de SSL.

Las conexiones cifradas con GSSAPI cifran todos los datos enviados a través de la red, incluidas las consultas y los datos devueltos. (No se envía ninguna contraseña a través de la red). pg_hba.conf El archivo permite a los administradores especificar qué hosts pueden usar conexiones no cifradas (host) y que requieren conexiones cifradas con GSSAPI (hostgssenc). Además, los clientes pueden especificar que se conecten a servidores solo en conexiones cifradas con GSSAPI (gssencmode=require).

Stunnel o SSH también se pueden usar para cifrar transmisiones.

Autenticación de host SSL

Es posible que tanto el cliente como el servidor se proporcionen certificados SSL entre sí. Se necesita una configuración adicional en cada lado, pero esto proporciona una verificación de identidad más sólida que el mero uso de contraseñas. Evita que una computadora pretenda ser el servidor el tiempo suficiente para leer la contraseña enviada por el cliente. También ayuda a prevenir hombre en el medio ataques donde una computadora entre el cliente y el servidor pretende ser el servidor y lee y pasa todos los datos entre el cliente y el servidor.

Cifrado del lado del cliente

Si no se puede confiar en el administrador del sistema de la máquina del servidor, es necesario que el cliente cifre los datos; de esta forma, los datos sin cifrar nunca aparecen en el servidor de la base de datos. Los datos se cifran en el cliente antes de enviarlos al servidor, y los resultados de la base de datos deben descifrarse en el cliente antes de utilizarse.

Anterior Arriba Próximo
18.7. Prevención de la suplantación de identidad del servidor Casa 18.9. Conexiones TCP/IP seguras con SSL