¿Quiere autenticar el inicio de sesión de Oracle utilizando una contraseña encriptada ... cómo?

-1

Nos estamos conectando a Oracle utilizando scripts de shell korn, que utilizan sqlplus para conectarse a Oracle. La base de datos de Oracle está en el mismo cuadro de Solaris. Actualmente, estamos almacenando el ID de usuario y la contraseña de Oracle (texto sin formato) en un archivo en la carpeta .ssh del usuario que se conecta, con 400 bits de permiso.

Los DBA se oponen a esta forma de trabajar, citando el hecho de que estamos usando una contraseña de texto sin formato para la autenticación. Cuando ofrecimos que codificaríamos la contraseña con base64, a ellos todavía no les gustó la idea, citando que todavía descifraríamos la contraseña en el script de shell y transmitiríamos la contraseña a través de la red.

Ahora, quiero entender esto-

  1. He estado leyendo que Oracle cifra / hash la cadena de contraseña, antes de transmitirla. Sin embargo, no puedo encontrar la referencia ahora mismo, sin embargo, todavía quiero confirmar mi comprensión. ¿Es realmente así? Estamos en 11g r2, ¿eso haría una diferencia?

  2. ¿Podría iniciar sesión en sqlplus sin descifrar el hash de la contraseña? p.ej. Los administradores de bases de datos establecen una contraseña y me pasan el hash. Lo puse en un archivo y lo suministre a sqlplus como parámetro. ¿Hay alguna manera por la cual este tipo de autenticación funciona? Sé que algunas herramientas lo permiten, si usted codifica con su herramienta, pueden descifrar el valor y usarlo para la autenticación. Hace Oracle ??

pregunta Gyan 23.07.2013 - 12:06
fuente

2 respuestas

2

BASE64 es tan malo como el texto plano y no ofrece ninguna seguridad. Sus DBA también están equivocados al afirmar que el hash de la contraseña antes de que se envíe resolverá el problema, ya que puede realizar un ataque tipo "pass-the-hash" (ni siquiera estoy seguro de que Oracle admita algo así). Ambos enfoques permitirían a las personas en la red acceder a la base de datos (no importa si pasa un hash o una contraseña, puede capturar y reutilizar).

Veo dos problemas:

  1. Estás almacenando la contraseña en tu script. Debería almacenar la contraseña en un administrador de contraseñas y hacer su solicitud de script para la contraseña en cada ejecución. Si es un proceso automatizado, entonces necesita almacenarlo en texto plano en su script. Lamentablemente no hay otra forma de almacenarlo. (La gente argumenta que puede cifrarlo y descifrarlo en su código o usar algunos esquemas de codificación como BASE64, pero al final sería trivial recuperar y desenfocar su contraseña si obtiene acceso al script)
  2. El segundo problema importante es que está enviando todo a través de una conexión simple. Debe configurar SSL / TLS para su máquina para que antes de enviar todo a través de la red, una conexión de extremo a extremo segura ( Consulte la documentación de Oracle ). Esto evitará que los intrusos vean su conexión y verán si se está enviando una contraseña a través de la red.
respondido por el Lucas Kauffman 23.07.2013 - 12:18
fuente
2

Busque en la sección del Almacén de contraseña externa segura aquí .

Básicamente, configura una cartera de Oracle del lado del cliente, guarda usuario, contraseña y alias TNS.

Luego su script se conectará a la base de datos como:

sqlplus /@tns_alias @my_script.sql

Espero que ayude, Ed

    
respondido por el user28634 23.07.2013 - 19:36
fuente

Lea otras preguntas en las etiquetas