1. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Ing. Manuel Jesús Sánchez Chero, MSc
manuelsanchezchero@yahoo.es
Blog: http://manuelsanchezchero.blogspot.com
Se permite la copia y distribución, total o parcial de este documento siempre que se incluya esta nota completa - MSCH
2. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Introducción
Estructura de MySQL
Seguridad en MySQL
Copia de Seguridad
Mantenimiento de Base de Datos
Duplicación
Conclusiones
3. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Al tratar el tema de la seguridad en MySQL, es
importante considerar la necesidad de proteger
totalmente la máquina completa contra todos `
los tipos de ataques posibles:
Intercepción pasiva de paquetes
Reproducción de Comandos
Denegación de Servicios
4. `
MYSQL – SEGURIDAD Y REPLICACIÓN
1995 MySQL AB desarrolla MySQL como software libre bajo licencia GNU, pero,
mediante licencia dual, también proporcionan MySQL bajo la licencia tradicional
de software propietario para los casos en los que su uso sea incompatible con la
licencia GPL.
Características
También tiene la opción de protección mediante contraseña, la cual es flexible y segura. ¡Y ahora bajo licencia GPL!
5. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Base de Datos del Sistema MYSQL 3.23
Mysql
root
6. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Tablas de la base de Datos MYSQL MYSQL 3.23
columns_priv : Privilegio de Columnas
Mysql db : Privilegio de Base de Datos
func : Funciones Definidas por usuarios
host : Previlegios Host y databases
tables_priv : Previlegio de tablas
user : Usuarios y Previlegios globlales
7. `
MYSQL – SEGURIDAD Y REPLICACIÓN
MYSQL 5.1.9
Procedimientos almacenados.
Triggers.
Cursores.
Vistas actualizables.
Soporte a VARCHAR.
INFORMATION_SCHEMA.
Subconsultas.
Full Unicode.
8. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Tablas de la base de Datos MYSQL MYSQL 5.1.9
Mysql
9. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Estructura de tabla
(Datos)
.myd
(claves)
.myi
(Estructura)
` .frm
10. `
MYSQL – SEGURIDAD Y REPLICACIÓN
El sistema de Permisos
El Sistema de permisos lo guarda en la base de datos mysql.
`
11. `
MYSQL – SEGURIDAD Y REPLICACIÓN
El sistema de Permisos
`
12. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Algunas Recomendaciones
No dé nunca a nadie (excepto a la cuenta root de MySQL `
acceso a la tabla User en la base de datos mysql)
Esto es crítico. La clave cifrada es la verdadera clave en MySQL.
13. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Algunas Recomendaciones
Estudie el sistema de privilegios de acceso a MySQL.
Las sentencias GRANT y REVOKE, se utiliza para `
Dar acceso a MySQL.
No otorgue más privilegios de los necesarios
`
14. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Algunas Recomendaciones
No elija claves que puedan aparecer en el diccionario
Existen programas especiales para romperlas `
Invierta en un FIREWALL, le protegerá al menos
un 50 % de todas las vulnerabilidad de cualquier software
Ponga MySQL tras del FIREWALL
`
15. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Algunas Recomendaciones
Intente escanear sus puertos desde Internet
MySQL, utiliza el puerto 3306 por defecto `
Probar si el puerto MySQL, esta abierto
cliente@root # nmap localhost
Shell > telnet server_host 3306
`
16. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Seguridad en la Base de Datos
Conectarse a MySQL desde el shell, si es
capaz de conectarse sin clave
`
Tendrá problemas, por que cualquier usuario
Shell > mysql –u root -p
podrá conectarse
Shell >mysql
`
17. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Asignar password al root
Luego de instalar MySQL, se necesita
Inicializar las tablas de permisos
Ejecutar el Servidor
Asegurarse que funcione correctamente
Servidor@root # mysql_install_db
Servidor@root # mysql –u root -p
`
`
18. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Asignar password al root
Con mysqladmin
`
Servidor@root # mysqladmin –u root -p
Con set password
Servidor@root # mysql
mysql>set password for ‘’@’localhost’=password(‘newpwd’);
`
19. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Asignar password al root
Con la sentencia UPDATE
`
Servidor@root # mysql
mysql>UPDATE mysql.user SET password =password(‘newpwd’)
WHERE User=‘’;
mysql> flush privileges;
ROOT
20. `
MYSQL – SEGURIDAD Y REPLICACIÓN
La sentencia GRANT
Utilice la sentencia SHOW GRANTS y
comprueba quien tiene acceso a qué recursos.
`
Servidor@root # mysql
mysql>show grants;
ROOT
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD
'*E74858DB86EBA20BC33D0AECAE8A8108C56B17FA' WITH GRANT OPTION
21. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Carácteres de Escape
Apis de Programación
API MySQL de C: Utilice la función
`
mysql_real_escape_string().
PHP: Utilice la función
mysql_escape_string(). - PHP 4.0.3,
addslashes(). En PHP 5
puede utilizar la extensión mysqli, que soporta los protocolo de
autentificación y clave de acceso mejorados de MySQL, así como las
sentencias preparadas con placeholders.
DBI de Perl: Utilice el método quote() o utilice placeholders.
JDBC de Java: Utilice un objeto PreparedStatement y placeholders.
22. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Sentencia LOAD DATA
Desactivar todos los comando LOAD DATA LOCAL, desde el Servidor
mysqld –local-infile=0
Para el cliente LOAD DATA LOCAL
--local-infile=1 habilitarse
--local-infile=0 Deshabilitarse `
23. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Encriptación
No almacene ninguna clave sin cifrar en su base de datos
Si alguien tuviera acceso a su computador, el intruso obtendrá la lista
completa de claves utilizadas
Utilice MD5(), SHA1(), o cualquier otra función hashing de un sentido
`
24. `
MYSQL – SEGURIDAD Y REPLICACIÓN
MySQLDump
Programa de respaldo de base de datos
Trasfiere los datos a otros servidores
El respaldo contiene sentencias SQL
`
Servidor@root # mysqldump empresa >empresa.sql
empresa.sql
25. `
MYSQL – SEGURIDAD Y REPLICACIÓN
MySQLcheck
Analiza, repara y optimiza el contenido de las tablas
Es similar a myisamchk, pero trabaja diferente
La diferencia radica en que mysqlcheck no es necesario
detener el servidor para realizar mantenimiento, mientras en
el otro si
`
Shell> mysqlcheck empresa –u root -p
Enter password: *****
empresa.actividad OK
empresa.area OK
empresa.cargo OK
empresa.departamento OK
empresa.persona OK
empresa.proyecto OK
empresa.ubigeo OK
26. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Qué es duplicación
MySQL, dispone de duplicación, que permite reflejar automáticamente una
o varias bases de datos de un servidor
La duplicación funciona de la siguiente forma:
El servidor esclavo se inicia con una copia exacta de l0s datos del servidor principal.
Principal Esclavo
La duplicación resulta útil para:
Copias de seguridad, en función de errores de disco , no de errores humanos
Acelerar el rendimiento
27. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Duplicación - Jerárquica
Normalmente la duplicación se lleva acabo de forma Jerárquica
Principal Esclavo
Esclavo Principal Esclavo
Su código cliente debe cerciorarse que no tenga conflictos
En caso de haber la aplicación puede fallar, debido a las irregularidades por
la estructura circular
28. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Duplicación - Circular
Principal/Esclavo
Principal/Esclavo Principal/Esclavo
No es necesario la conexión sea continua
Si se rompe el enlace
Esclavo vuelve a conectarse e inicia la
actualización desde el punto en que se
interrumpió
Principal/Esclavo Principal/Esclavo
29. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Resumen
La duplicación es una función muy útil
Permite conservar una copia exacta de datos
Las base de datos principales escriben en el registro binario
Una serie de servidores esclavos se conectan al principal, lee el registro
binario de actualización y duplican estas instrucciones en sus servidores
La duplicación es de gran utilidad para copias de seguridad y rendimiento
La relación entre el registro binario y el archivo master.info del esclavo es
fundamental para conservar la duplicación
Si se eliminan los registros binarios antes de que los esclavos los utilice, la
duplicación fallará.
Principal/Esclavo Principal/Esclavo
30. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Conclusiones
Deshabilitar el acceso remoto
Cambiar el password de root por defecto
Eliminar cuentas anónimas y passsword en blancos
Eliminar la base de datos test
Correr MySQL como usuario sin privilegios
Conceder permisos mínimos a los usuarios
`
`
31. `
PORTADA
MYSQL – SEGURIDAD Y REPLICACIÓN
Gracias ...!!!!
Ing. Manuel Jesús Sánchez Chero, MSc
manuelsanchezchero@yahoo.es
Blog: http://manuelsanchezchero.blogspot.com
Se permite la copia y distribución, total o parcial de este documento siempre que se incluya esta nota completa - MSCH
32. `
DBMS - Libres
MYSQL – SEGURIDAD Y REPLICACIÓN
Clientes
`
`
`
Servidores
33. `
Autenticación de acceso
MYSQL – SEGURIDAD Y REPLICACIÓN
ACCESO
` Servidor Linux
Cuenta de usuario
`
34. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Es una aplicación destinada a la administración de bases de
datos MySQL desde la web.
Podemos realizar prácticamente todas las tareas de
administración
El acceso a una base de datos o múltiples servidores MySQL ya no será una barrera a superar para ningún usuario.
35. `
MYSQL – SEGURIDAD Y REPLICACIÓN
DBManager Professional
http://www.dbtools.com.br/EN/index.php
CARACTERISTICAS
Administración de grupos y usuarios.
Mantenimiento a bases de datos.
Editor de consultas con sintaxis de colores.
Asistente para exportación de datos a bases.
Windows 95/ 98/ ME, Windows NT 4 / 2000, XP
Según sus creadores, ésta es la aplicación más poderosa para MySQL y que tiene muchas
características bastante buenas.
36. `
MYSQL – SEGURIDAD Y REPLICACIÓN
http://dbdesigner.sourceforge.net/
Permite crear una base de datos en un ambiente bastante
intuitivo y fácil de usar.
Se pueden ver de una manera muy rápida los campos de una
tabla.
DbDesigner es fácilmente extensible para trabajar con algunos
otros servidores de base de datos.
DbDesigner puede exportar el esquema de la base de datos a un
archivo .sql
Por default se proporcionan dos plugins, uno para PostgreSQL y otro para MySQL.
37. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Integra las tareas de gestión de bases de datos MySQL con las
de mantenimiento a través de un entorno de trabajo más visual
e intuitivo.
Las operaciones en línea de comando se llevan a cabo en un
entorno gráfico que ameniza las tareas de configuración de
servidores, administración de usuario y monitorización de
bases de datos MySQL, junto a las tareas de comprobación del
buen estado de la replicación, tareas de backup y restauración
38. `
MYSQL – SEGURIDAD Y REPLICACIÓN
MySQL Query Browser
Herramienta gráfica proporcionada por
MySQL AB para crear, ejecutar, y optimizar
consultas en un ambiente gráfico.
Esta diseñado para ayudarle a consultar y
analizar datos almacenados en su base de
datos MySQL.
Trabajar con versiones superiores a MySQL
4.0.
Componentes: Editor de sentencias SQL,
Visor de resultados, Navegador de objetos y
Visor de información.
Para MySQL Query Browser, existe un foro(Inglés) dedicado disponible en http://forums.mysql.com/list.php?108.
39. `
MYSQL – SEGURIDAD Y REPLICACIÓN
SQLiteManager está basado en web y es multilingüe. Esta herramienta
nos permite gestionar múltiples bases de datos SQLite de forma muy
intuitiva, desde la creación, acceso y gestión hasta el uploads de bases de
datos.
Dispone de muchas opciones de gestión, como la creación, modificación
y/o eliminación de tablas y manipulación de índices. Posibilita la
importación de datos desde un fichero de texto forateado, así como la
conversión de peticiones MySQL, la visualización a partir de peticiones
SELECT, la gestión de Trigger y funciones de usuarios.
permite exportar la estructura y los datos.
40. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Eficiente gestor de bases de datos MySQL escrito en PHP,
capaz de administrar una o varias bases de datos.
Ideal para realizar operaciones básicas,
permite la recuperación de las propiedades de una tabla,
exportar e importar la estructura y/o el contenido de una base
de datos.
41. `
MYSQL – SEGURIDAD Y REPLICACIÓN
Es una interfaz gráfica KDE para bases de datos DBase,
Firebird, MS Access, MySQL, Paradox, PostgreSQL, SQLite,
y ODBC. Junto a las tablas, visas y peticiones, soporta
también formularios y peticiones escriptables vía Python.