Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Contraseñas password en Oracle - Encriptación
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Contraseñas password en Oracle - Encriptación

Publicar nuevo tema Responder al tema
Foros de discusión » Oracle Database, motor de base de datos profesional   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Contraseñas password en Oracle - Encriptación Responder citando

¿Cómo encripta Oracle las contraseñas de los usuarios? ¿dónde las guarda? ¿es posible "hackearlas"? soy desarrollador de software y llevo poco tiempo utilizando Oracle como base de datos de mis aplicaciones. Me gustaría saber cómo administrarlo para que sea seguro al 100%. He leído por ahí que no es difícil hackear las contraseñas de los usuarios en Oracle Database ¿es cierto?
MensajePublicado:
Mie Feb 04, 2009 6:04 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Contraseñas password en Oracle - Encriptación Responder citando



Anuncios



varios escribió:
¿Cómo encripta Oracle las contraseñas de los usuarios? ¿dónde las guarda? ¿es posible "hackearlas"? soy desarrollador de software y llevo poco tiempo utilizando Oracle como base de datos de mis aplicaciones. Me gustaría saber cómo administrarlo para que sea seguro al 100%. He leído por ahí que no es difícil hackear las contraseñas de los usuarios en Oracle Database ¿es cierto?


Vayamos por partes:

* Oracle guarda las contraseñas en la tabla interna sys.user$. Verás por muchos foros el típico error diciendo que Oracle guarda las contraseñas en la tabla DBA_USERS. En realidad DBA_USERS es una vista que apunta a la tabla sys.users$.

* Oracle encripta las contraseñas de los usuarios del siguiente modo:
HASH en MD5 modificado del nombre del usuario (en mayúsculas) más la contraseña (en mayúsculas también).

Es decir, para el nombre de usuario "Fernando" y la contraseña "AlonsO", Oracle hará lo siguiente:

1. Upper("Fernando") || Upper("AlonsO")) = FERNANDOALONSO
2. Aplica una función que obtiene el hash md5 pero con una modificación propia de Oracle, por lo que aunque apliquemos el HASH a esa cadena no nos dará lo que obtiene Oracle.

Hay que tener en cuenta que el mecanismo de encriptación de la contraseña por parte de Oracle es unidireccional, esto quiere decir que Oracle almacena el HASH modificado pero nunca podrá obtener del HASH modificado la contraseña que el usuario introdujo. Es decir, no podrá desencriptarse la cadena encriptada.

Evidentemente existen mecanismos que, mediante fuerza bruta, pueden obtener determinadas contraseñas, a base de muchas horas de procesos y mucha capacidad de procesador.

Como abrás observado, en Oracle, da igual si la contraseña del usuario es en minúscula o en mayúscula, para Oracle tanto el nombre de usuario como la contraseña internamente las almacena en mayúsculas, por lo que se limita un poco la seguridad. En el ejemplo anterior da igual que accedas con "fernando" y contraseña "ALONSO" que con "FERNANDO" y contraseña "AlOnSo".

Con lo anterior ya te puedes ir haciendo una idea, Oracle es casi 100% seguro si está correctamente configurado, como cualquier motor de base de datos profesional.

A continuación te indicamos algunos consejos, no son los únicos ni los mejores, tendrás que documentarte más al respecto:

1. Teniendo en cuenta que en la tabla sys.users$ se alojan las contraseñas, si impides el acceso a esta tabla o a su vista DBA_USERS a todos los usuarios conseguirás que nadie pueda ejecutar esta consulta:

Código:

select password
from dba_users
where username='ALONSO'


Si un usuario tiene acceso a esto, podrá saber qué hash modificado tiene un usuario concreto, por lo que mediante software como "orabf" y un poco de paciencia podrían obtener la contraseña.

2. Cambiar la contraseña y desactivar todos aquellos usuarios de Oracle que no vayas a utilizar: SCOTT, HR, etc. Puedes utilizar la siguiente consulta SQL para hacerlo:
Código:

ALTER USER "FERNANDO" 
ACCOUNT LOCK


Donde "FERNANDO" será el nombre del usuario a bloquear.

3. Utilizar SIEMPRE contraseñas "fuertes", es decir, contraseñas largas con números y letras, que no tengan "sentido semántico", es decir que no sean del tipo "perro" ó "mimoto", una contraseña "fuerte" sería: "h3msu81z49e". Teniendo en cuenta que la encriptación es unidireccional, el ataque por fuerza bruta podría tardar semanas en obtener una contraseña como la que acabamos de mostrar, en cambio, para una contraseña como "00000000" podría tardar horas.

4. Cambiar las contraseñas de los usuarios cada cierto tiempo, con esto conseguiremos que si "alguien" ha conseguido ver las contraseñas encriptadas de DBA_USERS (sys.users$), al cambiarlas no le servirá de nada. La consulta SQL para cambiar la contraseña a un usuario:

Código:

alter user fernando identified by 'nueva_contraseña'


O bien, para pasarle la contraseña encriptada con el md5 modificado de Oracle:
Código:

alter user fernando identified by values 'HASH_MODIFICADO'




5. Auditar el acceso a las tablas o vistas "peligrosas" como DBA_USERS o SYS.USERS$. Por ejemplo, mediante un procedimiento almacenado (trigger) que avise de alguna forma si se ha realizado un SELECT sobre esta tabla o vista y ha sido un usuario distinto al que sí lo puede realizar. De esta forma, si esto se produce, tendréis qué usuario lo ha realizado y podréis aplicar un cambio de contraseñas inmediato.

6. Prestar mucha atención a los usuarios con el rol "DBA" que tendrán acceso a todo y podrán modificar todo. Esto sólo se debe usar con los usuarios DBA propios de Oracle: SYS, SYSTEM y que éstos tengan unas contraseñas "fuertes". El usuario con el rol DBA es el equivalente (salvando las distancias) al superusuario "root" en Linux, por lo que hay que proceder con especial cuidado con estos usuarios.

Por supuesto, hay muchos más mecanismos de prevención de hackeo de contraseñas y, por supuesto, un sistema Oracle bien configurado es casi invulnerable.
MensajePublicado:
Mie Feb 04, 2009 6:39 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Oracle Database, motor de base de datos profesional  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A