Encriptación y seguridad en Oracle
1. Objetivos
El objetivo de este documento es mostrar como se configuran los servidores y los clientes de base de datos oracle para que entre ellos exista una comunicación de datos cifrada y que las consultas no puedan ser captadas por un sniffer.
2. Conceptos básicos de encriptación e integridad de datos
La seguridad es uno de los aspectos más importantes del sistema de información del cliente. Tanto en el nivel básico, que proporciona Oracle, como en el módulo Advanced Security en versiones Enterprise nos garantiza un nivel alto de seguridad.
Vamos a configurar Oracle Advanced Security para asegurarnos que se mantiene la integridad y cifrado de los datos.
El propósito de una criptografía segura es convertir texto plano en un texto ininteligible basado en una clave.
Los algoritmos de encriptación de datos que Oracle soporta son los siguientes:
- Algoritmos DES
- Triple DES
- RSA (el más rápido actualmente)
Tenemos que tener en cuenta la negociación de seguridad entre el cliente y el servidor, las políticas existentes son las siguientes:
- Rejected (rechazado): Este valor se selecciona cuando se elije no tener seguridad aunque el servidor la considere deseable (required).
- Accepted (Aceptado): Este valor se selecciona cuando acepto siempre la conexión sea lo que sea la parte contraria. (Es la política por defecto).
- Requested (Requerido): Esta opción se selecciona cuando la encriptación es deseable.
- Required (Requerido): Esta opción se selecciona siempre que quieras que toda conexión sea siempre de forma segura.
Hay que configurar tanto cliente como servidor
Para aclarar estas políticas veamos el siguiente cuadro:
3. Configuración de Oracle Advanced Security:
Oracle Advanced Security es un componente de Net8, para configurarlo tenemos que abrir el asistente de NET8.
En Linux el comando para poder abrir el menú es netassit, en Windows es la herramienta con la que configuramos NET8 ( NET Manager ).
Todos los cambios que hace esta herramienta en Oracle Advanced Security los hace sobre el archivo sqlnet.ora, por lo tanto para configurarlo no haría falta sacar siempre el asistente, también escribiendo en este archivo la configuración sería suficiente. (Al final de la configuración gráfica se pondrá un ejemplo del sqlnet.ora con una configuración para ver como se puede configurar sin asistente).
- Seleccionamos Local
- Seleccionamos Perfil (profile)
- Seleccionamos en el menú Oracle Advanced Security
- Nos situamos en la pestaña Integridad y uno de los métodos disponibles
- Nos situamos en la pestaña Cifrado
Configuramos lo que corresponda en cada pestaña teniendo en cuenta los siguientes valores:
- Cifrado: SERVER: para configurar el servidor. CLIENT: en caso de querer configurar el cliente.
- Tipo de cifrado: Aquí tenemos que elegir una de las políticas nombradas antes en el cuadrito (por defecto está la política de aceptar, incluso si no se configura nada ).
- Cifrado Inicial: Esta etiqueta se refiera al establecimiento de una semilla que tomará el algoritmo, los valores están entre 10 caracteres y 70 caracteres. Métodos disponibles: Son los métodos de cifrado existentes, si se eligen varios, se tomará el primero.
Todas estas configuraciones quedan reflejadas en el SQLNET.ora
4. Ejemplo de sqlnet.ora:
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER= (MD5)
NAMES.PREFERRED_SERVERS =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = onames2.orasite.com)(PORT = 1640))
)
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT= (MD5)
SQLNET.AUTHENTICATION_SERVICES= (NTS)
SQLNET.ENCRYPTION_TYPES_SERVER= (RC4_128)
SQLNET.ENCRYPTION_TYPES_CLIENT= (RC4_128)
SQLNET.ENCRYPTION_SERVER = requested
NAMES.DIRECTORY_PATH= (ONAMES, TNSNAMES)
SQLNET.CRYPTO_SEED = qwertyuiopasdfghjklzxcvbnm