La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

GreatBD Seguridad mysql

Presentaciones similares


Presentación del tema: "GreatBD Seguridad mysql"— Transcripción de la presentación:

1 GreatBD Seguridad mysql
Grupo Rosarino de Evaluación y Análisis de Tecnologías de Bases de Datos Seguridad mysql

2 Seguridad mysql Disertantes: Aguirre, Juan María Cavallin, Flavio
Gerometta, Favio Andrés Meca, Adrian

3 SEGURIDAD "Un experto es aquel que sabe cada vez más sobre menos cosas, hasta que sabe absolutamente todo sobre nada…es la persona que evita los errores pequeños mientras sigue su avance inexorable hacia la gran falacia" Definición de Webwer - Corolario de Weinberger (Leyes de Murphy) Como la tecnología está siempre en constante cambio, resulta imposible el abarcar con profundidad todas las innovaciones que surgen en el dia a dia. Se entiende entonces como esta situacion, sumada a la falta de énfasis en el análisis de la seguridad de los sistemas de informacion deviene en complicaciones e incidentes. La mayoría de las violaciones de seguridad surgen a partir de errores que han pasado desapercibidos o que incluso están relacionados con otros errores que, sumados, se transforman en graves incidentes de seguridad. Estas violaciones de las cuales se habla no pueden ser controladas mediante ningún sistema de defensa ni firewall sino que se tratan de errores humanos, que tambien pueden llamarse “desatenciones”. A continuación, mis compañeros y yo explicaremos con brevedad algunos aspectos a tener en cuenta sobre seguridad informática.

4 AGENDA GENERAL Introducción a Seguridad SQL Injection
Clasificaciones y ejemplos Casos prácticos en C# y MySQL Recomendaciones Seguridad de Accesos Sistema de privilegios Backups en MySQL Métodos y ejemplos Google Hacking Robots y Honeypots

5 Introducción Intrusos e intrusiones: Verdaderos Hackers.
Tipos de Ataques: Sin Autenticación. Con Autenticación. HACKERS El término “Hacker” viene de la palabra inglesa cleverness y hace referencia a la aplicación de todo el potencial de ingenio de una persona para llevar a cabo una tarea de elevada dificultad y de cualquier índole (no sólo de informática). La creencia popular confunde a los hackers principiantes u avanzados con aquellos expertos que conocen los límites de la ley tanto como sus propios límites. Es decir, un hacker profesional es aquél que salta del hobbie y la curiosidad al trabajo. Los servicios de hackers profesionales son utlizados por empresas para verificar que tan seguro resulta algún sistema de otra empresa cliente y así incrementar su seguridad. Existen varios tipos de ataques pero son fácilmente encasillables en dos grandes grupos: SIN AUT Se trata de técnicas para violar la seguridad sin utilizar credenciales válidas, es decir sin que el atacante goce de libre acceso. Entre ellos se destacan técnicas sigilosas para adivinar passwords mediante complejos algoritmos o la fuerza bruta como las explotaciones para desbordar la memoria del buffer. CON AUT En este grupo se encuentran los ataques de usuarios que de alguna manera consiguieron acceder al sistema autenticándose y que, desde adentro, lanzan ataques sacando provecho a las funcionalidades del sistema. Se puede entender sin complicaciones el por qué de la necesidad de contar con los conocimientos necesarios para identificar y evitar la explotación de vulnerabilidades. La autenticación emplea un mecanismo de detección utilizando expresiones regulares por lo que existen formas de evadir esta validación. Muchas modificaciones a una misma firma podrían pasar desapercibidas por el control de validación, evadiendo esta defensa de manera muy simple.

6 Seguridad SQL Injection

7 SQL INJECTION Una inyección letal…
¿Qué es la Inyección de SQL? ¿Qué aplicación es vulnerable a este tipo de ataque? Un ejemplo de este ataque es denominado SQL Injection, que concatena strings elaborados para cambiar el resultado de una consulta a la Base de Datos y provocar situaciones inesperadas con los procesos lícitos de una aplicación determinada. Inyección SQL es una vulnerabilidad informática en el nivel de la validación de las entradas a la base de datos de una aplicación. El origen es el filtrado incorrecto de las variables utilizadas en las partes del programa con código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programación o de script que esté incrustado dentro de otro. Una inyección SQL sucede cuando se inserta o "inyecta" un código SQL "invasor" dentro de otro código SQL para alterar su funcionamiento normal, y hacer que se ejecute maliciosamente el código "invasor" en la base de datos. La inyección SQL es un problema de seguridad informática que debe ser tomado en cuenta por el programador para prevenirlo. Un programa hecho con descuido, displicencia, o con ignorancia sobre el problema, podrá ser vulnerable y la seguridad del sistema puede quedar ciertamente comprometida. Esto puede suceder tanto en programas corriendo en computadores de escritorio, como en páginas Web, ya que éstas pueden funcionar mediante programas ejecutándose en el servidor que las aloja. La vulnerabilidad puede ocurrir cuando un programa "arma" descuidadamente una sentencia SQL, con parámetros dados por el usuario, para luego hacer una consulta a una base de datos. Dentro de los parámetros dados por el usuario podría venir el código SQL inyectado. Al ejecutarse esa consulta por la base de datos, el código SQL inyectado también se ejecutará y podría hacer un sinnúmero de cosas, como insertar registros, modificar o eliminar datos, autorizar accesos e, incluso, ejecutar código malicioso en el computador. Se publicó en el año 1998 el primer documento que hablaba de la posibilidad de inyectar código SQL en consultas titulado “NT Web Technology Vulnerabilities” Cualquier aplicación que permita una entrada de datos que sirva de parámetro para una consulta SQL es vulnerable a éste ataque.

8 Ejemplo Objetivo de una consulta a modo de ejemplo:
Consultar todos los datos de algún usuario llamado GREATBD.

9 Recordando SQL… Utilizando las comillas simples (‘’)se delimitan las variables dentro de una consulta SQL. Código de la consulta anterior en SQL: “SELECT * FROM usuarios WHERE nombre_usuario=‘GREATBD’”

10 Recordando SQL… Error de interpretación del Sistema Gestor de la Base de Datos: Al utilizar el valor D’Angelo en el campo nombre_usuario: nombre_usuario=D’Angelo Forma de la consulta SQL: “SELECT * FROM usuarios WHERE nombre_usuario=‘D’Angelo’” Así es como se logra vulnerar la seguridad de un sistema mediante Sql Injection, se podrían obtener los nombres de las tablas de usuario y sus identificaciones y, a través de éstos últimos, cualquier otro juego de datos con mayor relevancia para un atacante. Con dicha información es posible realizar cualquier tipo de consulta sobre la base de datos, limitados sólo por la imaginación, tanto del atacante como de quién se encarga de la seguridad del sistema. MICHIGAN 2004 caucus,irlandeses, formularios de registros

11 Recordando SQL… La sintaxis de los delimitadores de comentario del Gestor de Bases de Datos MySQL: Comenta hasta el final de la línea : # comentario -- comentario Comentario en línea (in-line), comenta entre delimitadores: /*comentario */ Comentario en múltiples líneas: /* Comentario Este tipo de acceso difiere del visto anteriormente en que utiliza delimitadores de comentario para, de cierta forma, eludir la autenticación.

12 Comandos admitidos Dentro de una inyección SQL puede insertarse o “inyectarse” código malicioso utilizando diferentes variantes de sentencias SQL CRUD. Create - INSERT – almacenaje de datos. Read - SELECT – recuperación de datos. Update - UPDATE – modificación de datos. Delete - DELETE – eliminación de datos. Todos los comandos disponibles en el lenguaje SQL pueden ser utilizados para las inyecciones: DDL - DML - DCL - TCL DDL data definition langua create,alter,drop,indexes DML data manipulation lng CRUD DCL data control language revoke,grant TCL transaction ctrl lnguage transcciones como commit,rollback

13 Clasificaciones de Inyecciones SQL
De comentario. Apiladas. De booleanización. Basadas en Errores. UNION utilizadas para extraer registros de otras tablas.

14 INYECCIÓN SQL DE COMENTARIO
Son utilizadas para comentar parte de una consulta de manera que se ignore el resto de la misma y que no sea interpretada por el SGBD. SELECT * FROM usuarios WHERE nombre_usuario=‘admin’--’ AND passw_usuario=‘cualquier cosa’

15 INYECCIÓN SQL DE COMENTARIO
Consulta SQL: SELECT * FROM usuarios WHERE nombre_usuario=‘admin’--’ AND passw_usuario=‘’

16 INYECCIÓN SQL APILADA Se pueden concatenar varias consultas a la Base de Datos en una sola inyección SQL al hacer uso del separador de instrucciones “;”. SELECT * FROM usuarios; DROP TABLE usuarios DROP tabledañino GRANT y UPDATEacceso ilegitimo a la app sin dejar rastro

17 INYECCIÓN SQL DE BOOLEANIZACIÓN
Es uno de los tipos de inyecciones más aplicados y se basa en introducir código para que el SGBD retorne TRUE o FALSE al evaluar cierta parte de la consulta. Para ser eficaz el propósito de esta técnica, se hace uso de las cláusulas AND y OR.

18 Inyección SQL de booleanización
SELECT * FROM usuarios WHERE nombre_usuario=‘GREATBD’ AND passw_usuario=‘???’ ‘OR ‘a’=‘b SELECT * FROM usuarios WHERE nombre_usuario=‘GREATBD ‘ OR ‘a’=‘b’ AND passw_usuario=‘’ Las Reglas que se rigen en el lenguaje SQL establecen que la cláusula AND tiene precedencia sobre la OR, o sea que primero ejecuta la parte de la consulta del AND y despues la del OR. Como el OR necesita que sólo uno de los operandos sea cierto…sea TRUE y existe un usuario de nombre GREATBD, el password no es necesario en este caso y , sabiendo el nombre de usuario se puede lograr acceder a los datos del mismo utilizando booleanización.

19 Inyección SQL de booleanización
SELECT * FROM usuarios WHERE nombre_usuario=‘GREATBD ‘ OR ‘a’=‘b’ AND passw_usuario=‘’ SELECT * FROM usuarios WHERE nombre_usuario=‘GREATBD’ OR FALSE

20 Inyección SQL basada en errores
Es aplicada para generar un error en el sistema y obtener información de utilidad para el atacante. Algunas inyecciones comunes: ‘ HAVING 1=1 -- ‘ GROUP BY tabla.ColError HAVING 1=1 -- ORDER BY 1-- ORDER BY N-- Having  informa la tabla del error y la columna, utilizando los datos obtenidos se puede rehacer la inyeccion hasta obtener los nombres de todas las columnas de la tabla Order by order by hasta N informa el numero de columnas en la tabla.

21 Sentencias no parametrizadas
Utilizan concatenación entre la cadena de consulta SQL con variables que asumen un cierto valor. “SELECT nombreCampo1,nombreCampo2 FROM tablaX WHERE nombreCampo1=“+Valor1; Es típico de quien programe este tipo de consultas las construya dinámicamente utilizando sentencias SQL con concatenación de variables, al estilo:  Donde Valor1 está dado por una entrada de datos de algún usuario. Este es un grave error, ya que son éstas las puertas de entrada a un dañino SQL Injection. Nota: Se sobreentiende que no resulta óptima la construcción de sentencias Sql dinámicas solamente cuando existe de algún tipo de interacción por parte del usuario.

22 Sentencias parametrizadas
Ejemplo en c#: SqlConnection greatConn=new SqlConnection(Connection String); greatConn.Open(); SqlCommand greatCmd=new SqlCommand(“SELECT * FROM usuarios WHERE nombre_usuario SqlDataReader greatReader=greatCmd.ExecuteReader();

23 Mitos y Verdades Solo afecta a aplicaciones web.
Los grandes motores no son vulnerables. Se debe a una programación mediocre. Puede solucionarse totalmente con sólo utilizar consultas parametrizadas. MITO MITO VERDAD VERDAD

24 Mitos y Verdades Es muy fácil para un intruso explotar la vulnerabilidad de SQL Injection. Sólo puede realizarse un SQL Injection en el login. Se produce al concatenar texto ingresado por el usuario con una consulta SQL VERDAD MITO VERDAD

25 Tipos de SQL Injection y Causas
SQL Injection de Comentario Blind SQL Injection. Es posible realizarlo porque no se controla la respuesta del motor de BD y sólo se evalua que exista respuesta. DCL y DDL SQL Injection (GRANT, DROP, CREATE, etc.) Puede ser un Blind SQL Injection o no (DCL). Es posible al ejecutar la aplicación con permisos de administrador. DML SQL Injection (SELECT, UPDATE, DELETE, INSERT, etc.) No es un Blind SQL Injection, se requiere conocimientos del modelo de datos.

26 Recomendaciones Finales
No concatenar texto ingresado por el usuario con consultas SQL. Usar parámetros y drivers de conexión oficiales. Asignar mínimos permisos necesarios para ejecutar la aplicación Cuidar los Connection Strings No mostrar directamente errores del motor de Base de Datos

27 Sistema de Privilegios de Usuarios
Seguridad Sistema de Privilegios de Usuarios 01/04/2017

28 Agenda Introducción ¿Cómo funciona el Sistema de Privilegios?
Operaciones no Permitidas Métodos para otorgar Privilegios Niveles de Privilegios ¿Cuándo entran en vigencia los privilegios? Recomendaciones Conclusión 01/04/2017

29 Introducción Funcionamiento del Sistema de Privilegios y su importancia para la seguridad de acuerdo al rol de cada usuario dentro de la empresa. 01/04/2017

30 ¿Cómo funciona el Sistema de Privilegios?
Control de Acceso: Etapa 1: Comprobación de la Conexión Etapa 2: Comprobación de Solicitudes 01/04/2017

31 Comprobación de la Conexión
Identidad del Usuario: Equipo Nombre User: Host User Password 01/04/2017

32 Comprobación de la Conexión
Procedimiento de Selección de un Usuario Host User % Root Lucas localhost Host User localhost Root % lucas root 01/04/2017

33 Comprobación de Solicitudes
Tablas grant: user db Host tables_priv columns_priv Proceso de Verificación de Peticiones (proceso descendente) 01/04/2017

34 Operaciones no Permitidas
Denegar explícitamente el acceso Otorgar privilegios de superusuario a una única BD. 01/04/2017

35 Métodos para otorgar Privilegios
Manipulando las tablas de permisos mysql Comando GRANT 01/04/2017

36 Niveles de Privilegios
Global (user) Ej. GRANT/ REVOKE ALL ON *.* Base de Datos (db, host) Ej. GRANT / REVOKE ALL ON db_name.* Tabla (tables_priv) Ej. GRANT / REVOKE ALL ON db_name.table_name Columna (columns_priv) Rutina (procs_priv) 01/04/2017

37 ¿Cuándo entran en vigencia los privilegios?
Nuevas Conexiones: GRANT Manipulación de tablas grant -> FLUSH PRIVILEGES Conexión Existente: Siguiente petición (privilegios tabla y columna) Siguiente Use (privilegio de BD) Siguiente Conexión (privilegios globales) 01/04/2017

38 Recomendaciones Dónde Guardar la contraseña
Cada usuario de la aplicación sea un usuario de la BD. (comprobación de login) Privilegio de acceso a la tabla user. Privilegio FILE. Privilegio GRANT. Privilegio PROCESS. Privilegio SUPER Política de Privilegios 01/04/2017

39 Recomendaciones Acceso a la BD mysql.
Proteger el directorio de instalación de MySQL de otros usuarios. Contraseña a root y cambiar su nombre. Ocultar a MySQL de Internet (Ej. separación en capas). Usuarios creados en la base test. Cambiar puerto por defecto (3306). 01/04/2017

40 Recomendaciones Comprobación de la Seguridad: MySQL Network Scanner
MySQL Brute Force Password Hash Cracker PasswordPro 01/04/2017

41 Conclusión Otorgar privilegios de acuerdo a las necesidades.
Relación costo-beneficio según el nivel de seguridad pretendido. 01/04/2017

42 Seguridad Backups en MySQL

43 INTRODUCCION Duplicar información almacenada en base de datos (arquitectura o registros), para luego recuperarlos en caso de imprevistos. Realizar una copia de seguridad significa duplicar parte o la totalidad de la información contenida en la base de datos, ya sea la arquitectura de la misma o sus registros, en una unidad de almacenamiento perecedera, para así poder recuperar estos datos de la manera más rápida y confiable posible. La creación de copias de seguridad es una de las tareas mas importantes asociada a una base de datos y una de las que mas se descuida.

44 Agenda Comandos BACKUP y RESTORE.
Volcados de seguridad copiando archivos. MYSQLDUMP. Volcados de seguridad utilizando SELECT INTO.

45 Comando BACKUP Una de las formas mas sencillas para realizar volcado de tablas. Solo en tablas MyISAM. En algunos casos se debe utilizar el comando LOCK TABLES para que no ocurran inconsistencias. Realiza copia de archivos .frm (definición) , .myd (datos) y .myi (índices). Sintaxis: Antes de ejecutarse, guarda todos los cambios que pudiera haber en memoria de la tabla, de forma que quede de una manera consistente. Asimismo, durante la ejecución del comando, bloquea la tabla sobre la que se está haciendo la copia de seguridad para que los datos sean consistentes en la tabla. Hay que tener en cuenta que este comando va bloqueando una a una las tablas, según va haciendo la copia de seguridad. Esto podría provocar inconsistencia de datos a nivel de base de datos, si es necesario hacer un backup de todas las tablas en un instante. Esta instrucción realiza una copia de los archivos .frm (definición) y .myd (datos), pero no del archivo .myi (índice). Puede volver a generar el índice una vez restaurada la base de datos. BACKUP TABLE nombre-de-tabla TO '/ backup-path';

46 Comando BACKUP Ejemplo:
mysql> BACKUP TABLE ventas TO 'c:\\ backup’ ; I Table I OP I Msg -type I Msg -text I I base.ventas I backup I status I OK I 1 row in set (0.55 sec) En la ruta en la cual especificamos donde se debe alojar el backup de la tabla, se debe agregar una barra invertida (\) de más, ya que esta, es el carácter de escape que utiliza MySQL para poder utilizar otros caracteres especiales como las comillas simples y las comillas dobles.

47 Comando RESTORE Sintaxis: Ejemplo:
RESTORE TABLE nombre-de-tabla FROM '/ backup-path'; mysql> RESTORE TABLE ventas FROM 'c:\\backup’ ; I Table I OP I Msg-type I Msg-text I I base.ventas I restore I status I OK I 1 row in set (0.66 sec) Para complementar la sentencia BACKUP TABLE, Mysql dispone de la sentencia RESTORE TABLE, que permite restaurar una tabla a partir de una copia de seguridad que se ha realizado con el comando BACKUP TABLE. Como el comando de backup, no copia los ficheros de índices, el comando para recuperar los datos, vuelve a reindexar todos los campos que contienen índices, creando los ficheros correspondientes.

48 Comando RESTORE Errores:
Mensaje de error 1 : “Table exists, will not overwrite on restore” Mensaje de error 2 :“Failed copying .frm file” Error 1: En el caso de intentar restaurar una tabla (por ejemplo: “socio”), la cual continua funcionando correctamente y cuya copia de seguridad hemos realizado anteriormente, se mostrara este error. Se soluciona eliminando la tabla, ejecutando el comando DROP TABLE y realizando nuevamente la restauración de la misma. Error 2: Mal especificada la ruta en la cual se encuentra la tabla que se desea restaurar.

49 Volcados copiando archivos
Tablas MyISAM. Existen dos situaciones: El servidor no se encuentra en ejecución. El servidor se encuentra en ejecución. Las tablas MyISAM se almacenan como archivos .frm para la definición, .myd para los datos y .myi para los índices) dentro de un directorio denominado con el nombre de la base de datos. Por lo tanto, una forma sencilla de realizar volcados de datos consiste en copiar estos archivos. Si el servidor no se encuentra en ejecución Al no encontrarse el servidor en ejecución, los archivos (*.myd , *.frm y *.myi) pueden ser copiados directamente. Si el servidor se encuentra en ejecución: A diferencia del comando BACKUP, la copia directa de los archivos no bloquea automáticamente las tablas, por lo que se debe hacerlo manualmente para obtener un resultado coherente. Luego de bloquear las tablas (aplicando BLOCK TABLES) , se debe vaciarlas (FLUSH TABLES) para asegurarse de que todos los índices no escritos se escriben en el disco. FLUSH TABLES : cierra todas las tablas abiertas y fuerza a todas las tablas en uso a que se cierren. Esto también vuelca la caché de consultas.

50 MySQLDump Tablas MyISAM e InnoDB. Crea ficheros con sentencias SQL.
Se ejecuta desde la línea de comandos del Sistema Operativo. Sintaxis: Los dos métodos anteriores copian archivos directamente y solo funcionan con tablas MyISAM. (Las tablas InnoDB no se almacenan como archivos, por lo que no pueden hacer uso de los métodos anteriores.) Este comando permite hacer la copia de seguridad de una o múltiples bases de datos, incluyendo tablas InnoDB. Además permite que estas copias de seguridad se puedan restaurar en distintos tipos de gestores de bases de datos, sin la necesidad de que se trate de un gestor de MySQL. Esto lo consigue creando unos ficheros, que contienen todas las sentencias SQL necesarias para poder restaurar la tabla, que incluyen desde la sentencia de creación de la tabla, hasta una sentencia INSERT por cada uno de los registros que forman parte de la misma. C:\MySQL\bin>mysqldump nombre_base nombre_tabla > c:\ruta\archivobackup.sql

51 MySQLDump Sintaxis para la recuperación: Ejemplo:
Backup de la tabla “socio”, en la base de datos “base1” Restauramos esta tabla: C:\MySQL\bin>mysqldump nombre_base < c:\ruta\archivobackup.sql C:\MySQL\bin>mysqldump base1 socio > c:\backup\socio.sql Opciones mysqldump: -A, --all-databases Copia todas las bases de datos. Es lo mismo que utilizar “–databases” seleccionando todas. -f, --force Continúa aunque se produzca un error de SQL durante la copia. -pyour_pass, --password[=your_pass] Contraseña utilizada cuando se conecta con el servidor. Si no se especifica, `=your_pass', mysqldump preguntará la contraseña. -u nombre_usuario, --user=nombre_usuario El nombre de usuario que se utilizará cuando se conecte con el servidor, el valor predeterminado es el del usuario actual. C:\MySQL\bin> mysql base1 < c:\backup\socio.sql

52 Instrucción SELECT INTO
Similar a MySQLDump. Se puede utilizar cualquier consulta para crear estos tipos de archivos. Guarda solo registro de las tablas. Sintaxis: Otra forma de realizar una copia de seguridad consiste en utilizar SELECT INTO. Esta instrucción resulta similar a mysqldump en que crea un archivo que se utiliza para volver a crear la tabla de volcado. Utilizando este comando se pueden utilizar tabuladores para separar los campos y nuevas líneas para separar los registros. Estos valores pueden ser modificados agregando opciones al final de la instrucción. [FIELDS TERMINATED BY ' a ' ] Se concatena cada dato del registro con el carácter ‘a’. [FIELDS [OPTIONALLY] ENCLOSED BY ' b ' ] Cada atributo de la tabla queda encerrado por el carácter ‘b’. Si además, agregamos la instrucción OPTIONALLY, solo serian encerrados los campos que posean datos de tipo char, dejando sin encerrar los de tipo numérico. [LINES TERMINATED BY ' c ' ] Cada vez que se ejecuta el retorno de carro se muestra el carácter ’c’. SELECT INTO OUTFILE “ruta-y-nombre-de-archivo” [FIELDS [TERMINATED BY ' a ' ] [ [OPTIONALLY] ENCLOSED BY ' b ' ] ] [LINES TERMINATED BY ' c’ ];

53 Instrucción SELECT INTO
Ejemplo: Resultado: mysql> SELECT * FROM socio INTO OUTFILE ‘c:\\backup\\socio2.dat’ FIELDS TERMINATED BY ' | ’ OPTIONALLY ENCLOSED BY ‘””’ LINES TERMINATED BY ‘\n’; Query OK, 8 rows affected (0.00 sec) 1 | “Juan” | “Costas” 2 | “Jorge” | “Salcedo” 3 | “Miguel” | “Rodríguez”

54 Instrucción LOAD DATA Ingresa datos de un archivo externo a una tabla.
La forma más rápida de agregar datos. Sintaxis: LOAD DATA [LOW-PRIORITY | CONCURRENT] [LOCAL] INFILE ‘ nombre-de–archivo ' [REPLACE | IGNORE] INTO TABLE nombre-tabla [FIELDS [TERMINATED BY ' \t ' ] [ [OPTIONALLY] ENCLOSED BY ' ' ] ] [LINES TERMINATED BY ' \n' ] También puede utilizar esta instrucción para agregar datos creados de otra forma, quizás una aplicación o una hoja de cálculo. Se trata de la forma más rápida de agregar datos, en especial grandes cantidades de ellos. [ IGNORE ] Ignora todas las filas que dupliquen una fila existente en un índice exclusivo o clave primaria. Por lo tanto, resulta útil cuando sabemos que lo registros no se han modificado y no queremos eliminar y restaurar todos los registros de nuevo. [ REPLACE ] Reestablece los valores de los registros existentes en el disco. Es muy útil cuando se ha cambiado un atributo por error. [ LOCAL ] Permite cargar los contenidos de un archivo que existe en el equipo cliente de MySQL al servidor de la base de datos. [ LOW PRIORITY ] Obliga al proceso de agregación de datos a esperar hasta que no quede ningún cliente leyendo la tabla. [ CONCURRENT ] Permite que otros subprocesos lean la tabla mientras se agregan los datos, pero, a su vez, ralentiza el proceso de LOAD DATA.

55 Instrucción LOAD DATA Ejemplo: mysql> LOAD DATA INFILE
‘c:\\backup\\socio2.dat’ INTO TABLE socio; FIELDS TERMINATED BY ' | ’ OPTIONALLY ENCLOSED BY ‘””’ LINES TERMINATED BY ‘\n’; Query OK, 8 rows affected (0.00 sec) Records: 8 Deleted: 0 Skipped: 0 Warnings: 0 Un error común, al utilizar la instrucción LOAD DATA, consiste en no utilizar los mismos terminadores y caracteres de cierre. Estos deben ser exactamente iguales a los utilizados en el archivo de datos (o especificados en la instrucción SELECT INTO). De lo contrario todo parecerá funcionar, pero la tabla se generará sin datos o llena de valores NULL.

56 Recomendaciones Bases de Datos que incluyan tablas InnoDB (MySQLDump).
Bases de Datos con tablas exclusivamente MyISAM (Comandos BACKUP y RESTORE). En el caso de poseer muchos registros y estructuras de tablas poco complejas (Comandos SELEC INTO y LOAD DATA).

57 Seguridad Google Hacking

58 GOOGLE HACKING Aprendiendo a temer…
¿Cómo funciona Google? ¿Qué es el Google Hacking? Búsquedas. ¿Cómo se relaciona con SQL Injection? Introduciendo mecanismos de defensa: Robots. Honeypots.

59 Comenzando con las búsquedas en el Google…

60 Conociendo las búsquedas más realizadas en la Web
Ficheros que contienen claves Páginas con formularios de acceso Datos de alguna persona Servidores PhpMyAdmin con escasa seguridad Posibles páginas ASP sensibles a las técnicas de inyección SQL.

61 Ficheros que contienen claves y datos de usuarios(cont…)
Búsqueda a ingresar : ext:pwd inurl:(service | authors | administrators | users) "# FrontPage-“ Los resultados encontrados: Secciones de páginas indefensas que brindan información que debiera ser protegida.

62 Ficheros que contienen claves y datos de usuarios(cont…)

63 Ficheros que contienen claves y datos de usuarios(cont…)

64 Encontrando Páginas Web con formularios de acceso
You have requested access to a restricted area of our website. Please authenticate yourself to continue

65 Otras búsquedas Datos de alguna persona.
"telefono* * *" "dirección*" " " intitle:"curriculum vitae" Servidores PhpMyAdmin. “phpMyAdmin” “running on” inurl:”main.php” Páginas ASP sensibles a las técnicas de inyección SQL. allinurl: "page_alb.asp?Id="

66 Robots y Honeypots Constituyen un paso más en la construcción de la seguridad en la Web. Robots ¿Qué es un Robot en la Web? Exclusión básica de Robots. Honeypots ¿Qué son y cómo funcionan? Tipos de Honeypots.

67 ¿Qué son los Robots? Programas con algoritmos que permiten leer una página web, recuperar y guardar cierto o todo su contenido en una base de datos y enlazar páginas Web. Google funciona haciendo uso de robots, programas con algoritmos que permiten leer una página web, recuperar y guardar cierto o todo su contenido en una base de datos y enlazar páginas web. Un robot automáticamente transforma la estructura del hipertexto de la web, recuperando un documento y todos aquellos documentos que están referenciados a ellos. Existe una similitud entre los exploradores (browsers) y los robots, pero estos últimos no son operados por humanos. Los robots también suelen ser llamados Web Wanderers, Web Crawlers, or Spiders. Estos nombres suelen dar una impresión equivocada sobre su funcionamiento ya que el software no se mueves implemente entre sitios como un virus sino que visita sitios generando peticiones de documentos a cada uno de ellos.

68 Exclusión de Robots Creando el ROBOTS.TXT: User Agent: * Disallow: /
User Agent: Big Brother Disallow: /usuarios Disallow:/ usuarios/ Mediante el archivo robots.txt se puede gestionar el comportamiento de los robots utilizando instrucciones en el texto ya que los administradores de un sitio web pueden desear que parte de su contenido no sea indexado o que determinadas páginas no sean indexadas. El archivo debe ser único por sitio web, debe localizarse en el directorio raíz y puede personalizarse para que se aplique solo a los robots de determinados browsers (buscadores) o para excluir solo determinados directorios o páginas. A continuación un ejemplo para excluir todas las búsquedas a todos los robots: Notas: El signo # señala que la línea que le sigue es un comentario, por lo cual no será tomada en cuenta durante la lectura. Tener en cuenta al escribir el archivo robots.txt que las urls son sensibles a mayúsculas y minúsculas. Si el valor de User-agent es *, las directivas serán aplicadas a cualquier robot que no tenga directivas específicas. Un valor vacío para el Disallow establece total libertad para el o los browsers. El archivo debe tener una estructura que agrupe a las directivas con el robot a la cual son aplicadas, donde cada grupo de directivas comienzas con el campo User-agent y dentro de cada uno de estos grupos no deben haber líneas en blanco. En la directiva Disallow no se admiten comodines como el *.

69 Honeypot Como miel para las abejas…
Software o conjunto de computadoras que funciona a modo de trampa para hackers. Tipos de honeypot: De Producción. De Investigación. Un honeypot es un software o conjunto de computadoras q trabaja como trampa y que se utiliza para identificar, evitar y, en cierta medida, neutralizar los intentos de secuestrar los sistemas de información y redes. Se trata generalmente de un solo ordenador o un sitio de la red que disimula a sí misma como un ordenador normal o de la red o una IP no utilizada, o un archivo o un registro o incluso sistemas operativos. Es generalmente utilizado como sistema de vigilancia, así como un mecanismo de alerta temprana ya que distraen a los atacantes de las máquinas más importantes del sistema, advierten al administrador del sistema de un ataque y examinan en profundidad al atacante, durante y después del ataque. Honeypot de producción: Son utilizados en las empresas para desviar la atención de máquinas mucho más importantes. Están dentro de la propia red de la empresa. Suelen ser muy vulnerables y aparentan contener información secreta, actuando frente a los atacantes como la miel para las abejas. Honeypot de investigación: Desde el momento de su concepción, son utilizados para que sean “hackeados”, mientras registran intentos de intrusión, IPs de atacantes, comandos, aplicaciones instaladas, capturas de teclado, entre otras.

70 Recomendaciones Investigar en profundidad el funcionamiento del motor de Google. Averiguar cuáles son las búsquedas más utilizadas en la Web para evitar los ataques de intrusos dañinos. Comprender la importancia de gestionar un fichero Robots.txt correctamente configurado.  Investigar el funcionamiento del motor de Google. Averiguar cuáles son las búsquedas más utilizadas en la Web para evitar los ataques de principiantes dañinos. Si se dispone de alguna página web, comprender la importancia de gestionar un fichero de robots.txt correctamente configurado. Tener en cuenta que cualquier objeto (cámaras web, impresoras, etc.) que sea accesible desde algún documento Web puede también ser accedido mediante alguna indexación no prevista en las bases de datos de Google. Aplicar "posicionamiento inverso" a todo aquello que contenga datos sensibles que quieran mantenerse ocultos (si es que Google nos tiene en sus bases de datos, que no nos muestre al mundo en los puestos de los primeros resultados a las búsquedas sino en los últimos). Utilizar Google Hacking sobre lo sistemas de uno mismo. Si es el caso de una empresa cuyos datos se necesita proteger, el camino óptimo hacia la seguridad es emplear una política de exclusión de robots y un honeypot especializado.

71 Más recomendaciones Utilizar Google Hacking sobre los sistemas de uno mismo. En el caso de una empresa cuyos datos se necesitan proteger a toda costa emplear una política de exclusión de robots y un honeypot especializado.

72 GreatBD greatbdcontacto@gmail.com
Grupo Rosarino de Evaluación y Análisis de Tecnologías de Bases de Datos


Descargar ppt "GreatBD Seguridad mysql"

Presentaciones similares


Anuncios Google