Seguridad en Bases de Datos

16
UNIVERSIDAD NACIONAL SANTIAGO ANTUNEZ DE MAYOLO FACULTAD : CIENCIAS ESCUELA PROFESIONAL : INGENIERÍA DE SISTEMAS E INFORMÁTICA TEMA : SEGURIDAD EN LAS BASES DE DATOS ASIGNATURA : ADMINISTRACIÓN DE BASE DE DATOS. DOCENTE : ING. MIGUEL ANGEL SILVA ZAPATA ALUMNOS : CASTILLEJO PEÑA Horacio. CORREA PEÑARANDA Jaime. VARGAS TAMARA Mariela.

Transcript of Seguridad en Bases de Datos

INGENIERA DE SISTEMAS E INFORMTICA ADMINISTRACION DE BASE DE DATOS

UNIVERSIDAD NACIONALSANTIAGO ANTUNEZ DE MAYOLO

FACULTAD:CIENCIAS

ESCUELA PROFESIONAL : INGENIERA DE SISTEMAS E INFORMTICA

TEMA: SEGURIDAD EN LAS BASES DE DATOS

ASIGNATURA: ADMINISTRACIN DE BASE DE DATOS.

DOCENTE:ING. MIGUEL ANGEL SILVA ZAPATA

ALUMNOS: CASTILLEJO PEA Horacio.

CORREA PEARANDA Jaime. VARGAS TAMARA Mariela. QUISPE BARRETO Jos.

SEMESTRE : 2014

Huaraz, 25 de agosto del 2014

SEGURIDAD EN LAS BASES DE DATOS

La informacin es uno de los activos ms importantes de las entidades, y de modo especial en algunos sectores de actividad. Es indudable que cada da las entidades dependen de mayor medida de la informacin y de la tecnologa, y que los sistemas de informacin estn ms soportadas por la tecnologa, frente a la realidad de hace pocas dcadas. Por otra parte, hace unos aos la proteccin era ms fcil, con arquitecturas centralizadas y terminales no inteligentes, pero hoy en da los entornos son realmente complejos, con diversidad de plataformas y proliferacin de redes, no slo internos sino tambin externos, incluso con enlaces internacionales.Entre las plataformas fsicas (hardware) pueden estar: ordenadores grandes y medios ordenadores departamentales y personales, solos o formando parte de red, e incluso ordenadores porttiles. Esta diversidad acerca la informacin a los usuarios, si bien hace mucho ms difcil proteger los datos, especialmente porque los equipos tienen filosofas y sistemas operativos diferentes, incluso a veces siendo del mismo fabricante. Al hablar de seguridad hemos preferido centrarnos en la informacin misma, aunque a menudo se hable de seguridad informtica, de seguridad de los sistemas de informacin o de seguridad de las tecnologas de la informacin.La gran mayora de los datos sensibles del mundo estn almacenados en sistemas gestores de bases de datos comerciales tales como Oracle, Microsoft SQL Server entre otros, y atacar una bases de datos es uno de los objetivos favoritos para los criminales.Esto puede explicar por qu los ataques externos, tales como inyeccin de SQL, subieron 345% en 2009, Esta tendencia es prueba adicional de que los agresores tienen xito en hospedar pginas Web maliciosas, y de que las vulnerabilidades y explotacin en relacin a los navegadores Web estn conformando un beneficio importante para ellosPara empeorar las cosas, segn un estudio publicado en febrero de 2009 The Independent Oracle Users Group (IOUG), casi la mitad de todos los usuarios de Oracle tienen al menos dos parches sin aplicar en sus manejadores de bases de datos.El objetivo fundamental es proteger la Base de Datos contra accesos no autorizados.

MEDIDAS DE SEGURIDADFsicas: Controlar el acceso al equipo. Tarjetas de acceso, etc.Personal: Acceso slo del personal autorizado. Evitar sobornos, etc.SO: Seguridad a nivel de SOSGBD: Uso herramientas de seguridad que proporcione el SGBD. Perfiles de usuario, vistas, restricciones de uso de vistas, etc.Un SGBD cuenta con un subsistema de seguridad y autorizacin que se encarga de garantizar la seguridad de porciones de la BD contra el acceso no autorizado.

TIPOS DE SEGURIDAD:

Discrecional: Se usa para otorgar y revocar privilegios a los usuarios a nivel de archivos, registros o campos en un modo determinado (consulta o modificacin).El ABD asigna el propietario de un esquema, quien puede otorgar o revocar privilegios a otros usuarios en la forma de consulta (select), modificacin o referencias. A travs del uso de la instruccin grant option se pueden propagar los privilegios en forma horizontal o vertical.Ejemplo: grant select on Empleado to cdigoUsuariorevoke select on Empleado from cdigoUsuario

Obligatoria: sirve para imponer seguridad de varios niveles tanto para los usuarios como para los datos.El problema de la seguridad consiste en lograr que los recursos de un sistema sean, bajo toda circunstancia, utilizados para los fines previstos. Para eso se utilizan mecanismos de proteccin.Los sistemas operativos proveen algunos mecanismos de proteccin para poder implementar polticas de seguridad. Las polticas definen qu hay que hacer (qu datos y recursos deben protegerse de quin; es un problema de administracin), y los mecanismos determinan cmo hay que hacerlo. Esta separacin es importante en trminos de flexibilidad, puesto que las polticas pueden variar en el tiempo y de una organizacin a otra. Los mismos mecanismos, si son flexibles, pueden usarse para implementar distintas polticas.

Un aspecto importante de la seguridad es el de impedir la prdida de informacin, la cual puede producirse por diversas causas: fenmenos naturales, guerras, errores de hardware o de software, o errores humanos. La solucin es una sola: mantener la informacin respaldada, de preferencia en un lugar lejano.

REQUISITOS PARA LA SEGURIDAD DE LAS BD

La base de datos debe ser protegida contra el fuego, el robo y otras formas de destruccin. Los datos deben ser reconstruibles, ya que siempre pueden ocurrir accidentes. Los datos deben poder ser sometidos a procesos de auditoria. El sistema debe disearse a prueba de intromisiones, no deben poder pasar por alto los controles. Ningn sistema puede evitar las intromisiones malintencionadas, pero es posible hacer que resulte muy difcil eludir los controles. El sistema debe tener capacidad para verificar que sus acciones han sido autorizadas. Las acciones de los usuarios deben ser supervisadas, de modo tal que pueda descubrirse cualquier accin indebida o errnea.

CARACTERSTICAS PRINCIPALESEl objetivo es proteger la Base de Datos contra accesos no autorizados.

LAS 3 PRINCIPALES CARCTERSTICAS DE LA SEGURIDAD EN UNA BASE DE DATOS SON: La Confidencialidad de la informacin La Integridad de la informacin La Disponibilidad de la informacinLos datos contenidos en una Base de Datos pueden ser individuales o de una Organizacin. Sean de un tipo o de otro, a no ser que su propietario lo autorice, no deben ser desvelados. Si esta revelacin es autorizada por dicho propietario la confidencialidad se mantiene. Es decir, asegurar la confidencialidad significa prevenir/ detectar/ impedir la revelacin impropia de la informacin.

PRINCIPIOS BSICOS DE SEGURIDAD DE BASES DE DATOSEn esta seccin veremos siete recomendaciones sobre seguridad en bases de datos, instaladas en servidores propios de la organizacin.

1.- Identifique su sensibilidadNo se puede asegurar lo que no se conoce.Confeccione un buen catlogo de tablas o datos sensibles de sus instancias de base de datos. Adems, automatice el proceso de identificacin, ya que estos datos y su correspondiente ubicacin pueden estar en constante cambio debido a nuevas aplicaciones o cambios producto de fusiones y adquisiciones.Desarrolle o adquiera herramientas de identificacin, asegurando stas contra el malware, colocado en su base de datos el resultado de los ataques de inyeccin SQL; pues aparte de exponer informacin confidencial debido a vulnerabilidades, como la inyeccin SQL, tambin facilita a los atacantes incorporar otros ataques en el interior de la base de datos.

2.- Evaluacin de la vulnerabilidad y la configuracinEvale su configuracin de bases de datos, para asegurarse que no tiene huecos de seguridad.Esto incluye la verificacin de la forma en que se instal la base de datos y su sistema operativo (por ejemplo, la comprobacin privilegios de grupos de archivo -lectura, escritura y ejecucin- de base de datos y bitcoras de transacciones).Asimismo con archivos con parmetros de configuracin y programas ejecutables.Adems, es necesario verificar que no se est ejecutando la base de datos con versiones que incluyen vulnerabilidades conocidas; as como impedir consultas SQL desde las aplicaciones o capa de usuarios. Para ello se pueden considerar (como administrador):

Limitar el acceso a los procedimientos a ciertos usuarios.Delimitar el acceso a los datos para ciertos usuarios, procedimientos y/o datos.Declinar la coincidencia de horarios entre usuarios que coincidan.

3.- EndurecimientoComo resultado de una evaluacin de la vulnerabilidad a menudo se dan una serie de recomendaciones especficas. Este es el primer paso en el endurecimiento de la base de datos. Otros elementos de endurecimiento implican la eliminacin de todas las funciones y opciones que se no utilicen. Aplique una poltica estricta sobre que se puede y que no se puede hacer, pero asegrese de desactivar lo que no necesita.4.- AuditeUna vez que haya creado una configuracin y controles de endurecimiento, realice auto evaluaciones y seguimiento a las recomendaciones de auditora para asegurar que no se desve de su objetivo (la seguridad).Automatice el control de la configuracin de tal forma que se registre cualquier cambio en la misma. Implemente alertas sobre cambios en la configuracin. Cada vez que un cambio se realice, este podra afectar a la seguridad de la base de datos.

5.- MonitoreoMonitoreo en tiempo real de la actividad de base de datos es clave para limitar su exposicin, aplique o adquiera agentes inteligentes de monitoreo, deteccin de intrusiones y uso indebido.Por ejemplo, alertas sobre patrones inusuales de acceso, que podran indicar la presencia de un ataque de inyeccin SQL, cambios no autorizados a los datos, cambios en privilegios de las cuentas, y los cambios de configuracin que se ejecutan a mediante de comandos de SQL. Recuerde que el monitoreo usuarios privilegiados, es requisito para la gobernabilidad de datos y cumplimiento de regulaciones como SOX y regulaciones de privacidad. Tambin, ayuda a detectar intrusiones, ya que muchos de los ataques ms comunes se hacen con privilegios de usuario de alto nivel.El monitoreo dinmico es tambin un elemento esencial de la evaluacin de vulnerabilidad, le permite ir ms all de evaluaciones estticas o forenses. Un ejemplo clsico lo vemos cuando mltiples usuarios comparten credenciales con privilegios o un nmero excesivo de inicios de sesin de base de datos.

6.- Pistas de AuditoraAplique pistas de auditora y genere trazabilidad de las actividades que afectan la integridad de los datos, o la visualizacin los datos sensibles.Recuerde que es un requisito de auditora, y tambin es importante para las investigaciones forenses.La mayora de las organizaciones en la actualidad emplean alguna forma de manual de auditora de transacciones o aplicaciones nativas de los sistemas gestores de bases de datos. Sin embargo, estas aplicaciones son a menudo desactivadas, debido a:Su complejidadAltos costos operativosProblemas de rendimientoLa falta de segregacin de funciones La necesidad mayor capacidad de almacenamiento.Afortunadamente, se han desarrollado soluciones con un mnimo de impacto en el rendimiento y poco costo operativo, basado en tecnologas de agente inteligentes.

7.- Autenticacin, control de acceso, y Gestin de derechosNo todos los datos y no todos los usuarios son creados iguales. Usted debe autenticar a los usuarios, garantizar la rendicin de cuentas por usuario, y administrar los privilegios para de limitar el acceso a los datos.Implemente y revise peridicamente los informes sobre de derechos de usuarios, como parte de un proceso de formal de auditora.Utilice el cifrado para hacer ilegibles los datos confidenciales, complique el trabajo a los atacantes, esto incluye el cifrado de los datos en trnsito, de modo que un atacante no puede escuchar en la capa de red y tener acceso a los datos cuando se enva al cliente de base de datos.

INYECCION SQL

Inyeccin SQLes un mtodo de infiltracin de cdigo intruso que se vale de unavulnerabilidad informticapresente en una aplicacin en el nivel de validacin de las entradas para realizar consultas a unabase de datos.El origen de la vulnerabilidad radica en el incorrecto chequeo y/o filtrado de las variables utilizadas en un programa que contiene, o bien genera, cdigoSQL. Es, de hecho, un error de una clase ms general de vulnerabilidades que puede ocurrir en cualquierlenguaje de programacinoscriptque est embebido dentro de otro.Se conoce como Inyeccin SQL, indistintamente, al tipo de vulnerabilidad, al mtodo de infiltracin, al hecho de incrustar cdigo SQL intruso y a la porcin de cdigo incrustado.Se dice que existe o se produjo unainyeccin SQLcuando, de alguna manera, se inserta o "inyecta" cdigo SQL invasor dentro del cdigo SQL programado, a fin de alterar el funcionamiento normal del programa y lograr as que se ejecute la porcin de cdigo "invasor" incrustado, en labase de datos.Este tipo de intrusin normalmente es de carcter malicioso, daino o espa, por tanto es un problema deseguridad informtica, y debe ser tomado en cuenta por el programadorde la aplicacin para poder prevenirlo. Unprogramaelaborado con descuido, displicencia o con ignorancia del problema, podr resultar ser vulnerable, y la seguridad del sistema (base de datos) podr quedar eventualmente comprometida.La intrusin ocurre durante la ejecucin del programa vulnerable, ya sea, encomputadoresde escritorio o bien en sitiosWeb, en ste ltimo caso obviamente ejecutndose en elservidorque los aloja.La vulnerabilidad se puede producir automticamente cuando unprograma"arma descuidadamente" unasentencia SQLentiempo de ejecucin, o bien durante la fase de desarrollo, cuando el programador explicita la sentencia SQL a ejecutar en forma desprotegida. En cualquier caso, siempre que el programador necesite y haga uso de parmetros a ingresar por parte del usuario, a efectos de consultar una base de datos; ya que, justamente, dentro de los parmetros es donde se puede incorporar el cdigo SQL intruso.

Al ejecutarse la consulta en labase de datos, el cdigoSQLinyectado tambin se ejecutar y podra hacer un sinnmero de cosas, como insertar registros, modificar o eliminar datos, autorizar accesos e, incluso, ejecutar otro tipo de cdigo malicioso en el computador.

Por ejemplo, asumiendo que el siguiente cdigo reside en unaaplicacin weby que existe un parmetro "nombreUsuario" que contiene el nombre de usuario a consultar, una inyeccin SQL se podra provocar de la siguiente forma:

consulta := "SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "';"

Si el operador escribe un nombre, por ejemplo "Alicia", nada anormal suceder, la aplicacin generara una sentencia SQL similar a la siguiente, que es perfectamente correcta, en donde se seleccionaran todos los registros con el nombre "Alicia" en la base de datos:

SELECT * FROM usuarios WHERE nombre = 'Alicia';

Pero si un operador malintencionado escribe como nombre de usuario a consultar:

"Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%"

(sin las comillas externas), se generara la siguiente consulta SQL, (el color verde es lo que pretende el programador, el azul es el dato, y el rojo, el cdigo SQL inyectado):

SELECT * FROM usuarios WHERE nombre = 'Alicia';DROP TABLE usuarios;SELECT * FROM datos WHERE nombre LIKE '%';En la base de datos se ejecutara la consulta en el orden dado, se seleccionaran todos los registros con el nombre 'Alicia', se borrara la tabla 'usuarios' y finalmente se seleccionara toda la tabla "datos", que no debera estar disponible para los usuarios web comunes.

En resumen, cualquier dato de la base de datos puede quedar disponible para ser ledo o modificado por un usuario malintencionado.Ntese por qu se llama "Inyeccin" SQL. Si se observa el cdigo malicioso, de color rojo, se notar que est insertado en el medio del cdigo bueno, el verde. As, el cdigo rojo ha sido "inyectado" dentro del verde.La inyeccin SQL es fcil de evitar, por parte del programador, en la mayora de loslenguajes de programacinque permiten desarrollar aplicaciones web. En la siguiente seccin se trata brevemente ese tema.EN PHPPara MySQL, la funcin a usar es mysql_real_escape_string:Ejemplo:$query_result= mysql_query("SELECT * FROM usuariosWHERE nombre= \"" . mysql_real_escape_string($nombre_usuario) . "\"");

EN JAVAEn Java, tenemos que usar la clase PreparedStatementEn vez de:Connectioncon = (acquireConnection) Statementstmt= con.createStatement(); ResultSetrset= stmt.executeQuery("SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario+ "';");Habra que poner:Connectioncon = (acquireConnection) PreparedStatement pstmt= con.prepareStatement("SELECT * FROM usuarios WHERE nombre = ?"); pstmt.setString(1, nombreUsuario); ResultSetrset= pstmt.executeQuery();

BIBLIOGRAFIA

Seguridad y Confidencialidad en la Bases de Datos Fabian Portantierhttp://gplsi.dlsi.ua.es/bbdd/bd1/lib/exe/fetch.php?media=bd1:0910:trabajos:seguridadbd.pdfhttp://html.rincondelvago.com/seguridad-en-bases-de-datos.htmlhttp://es.slideshare.net/megacyberman/seguridad-en-bases-de-datoshttp://www.monografias.com/trabajos26/seguridad-base-datos/seguridad-base-datos3.shtmlhttps://www.owasp.org/index.php/Inyecci%C3%B3n_SQLhttp://es.kioskea.net/contents/26-ataques-de-inyeccion-sql

Pgina 3FC ISI 2014 II