0% encontró este documento útil (0 votos)
4 vistas16 páginas

Seguridad en Bases de Datos MySQL

El documento aborda la seguridad en bases de datos MySQL, enfocándose en técnicas de protección, cifrado de datos sensibles y control de acceso. Se presentan buenas prácticas para la instalación segura, gestión de usuarios, prevención de inyección SQL y realización de backups seguros. La investigación destaca la importancia de implementar políticas de gestión adecuadas y herramientas de seguridad para proteger la integridad y confidencialidad de la información en entornos críticos.

Cargado por

sebas
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas16 páginas

Seguridad en Bases de Datos MySQL

El documento aborda la seguridad en bases de datos MySQL, enfocándose en técnicas de protección, cifrado de datos sensibles y control de acceso. Se presentan buenas prácticas para la instalación segura, gestión de usuarios, prevención de inyección SQL y realización de backups seguros. La investigación destaca la importancia de implementar políticas de gestión adecuadas y herramientas de seguridad para proteger la integridad y confidencialidad de la información en entornos críticos.

Cargado por

sebas
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CENTRO TECNOLÓGICO DE AVANZADA PARAGUAY COREA

TIC - Desarrollo en sistemas

“Seguridad en bases de datos MySQL.​


Técnicas de protección, cifrado y control de acceso”

Asignatura: Base de Datos I

Integrantes: Mario Luna, Leticia Figueredo, Claudio Caballero,


Fermina Penayo, Sebastian Almada, Jose Mongelos, Leandro
Gonzalez.

Profesor: Manuel Quintana Valiente

Asunción – Paraguay

2025
ÍNDICE

INTRODUCCIÓN​ 3
OBJETIVO GENERAL​ 4
OBJETIVOS ESPECÍFICOS​ 4
JUSTIFICACIÓN​ 5
METODOLOGÍA DEL TRABAJO MONOGRÁFICO​ 6
DESARROLLO DEL TEMA​ 7
1. Conceptos generales sobre seguridad en bases de datos​ 7
2. Técnicas de protección en MySQL​ 7
Instalación segura del servidor​ 7
Protección de la red​ 7
Auditoría y monitoreo​ 7
3. Cifrado de datos sensibles​ 8
Cifrado a nivel de columna​ 8
Cifrado a nivel de tablas​ 8
Cifrado de backups​ 8
4. Control de acceso, usuarios y roles​ 8
Gestión de usuarios​ 8
Roles en MySQL 8.0+​ 8
Principio de privilegios mínimos​ 9
5. Privilegios y backups seguros​ 9
Asignación de privilegios​ 9
Backups seguros​ 9
6. Prevención de inyección SQL​ 10
Técnicas de Mitigación:​ 10
Validación y Sanitización de Entradas:​ 10
7. Replicación y alta disponibilidad​ 11
Técnicas Clave:​ 11
a. Replicación Maestro-Esclavo (MySQL Replication):​ 11
b. MySQL Group Replication (MGR):​ 12
Beneficios:​ 12
8. Herramientas de seguridad adicionales​ 12
a. MySQL Enterprise Firewall:​ 12
b. HashiCorp Vault para Gestión de Secretos:​ 13
c. Herramientas de Auditoría Externa:​ 13
CONCLUSIÓN​ 14
REFERENCIAS BIBLIOGRÁFICAS​ 15
ANEXOS​ 16
INTRODUCCIÓN

La seguridad en bases de datos es un eje central en el diseño e implementación de


sistemas informáticos modernos. En particular, MySQL —uno de los sistemas gestores
de bases de datos más utilizados a nivel global— requiere de políticas y técnicas
adecuadas para proteger los datos sensibles ante amenazas internas y externas. Este
trabajo tiene como objetivo principal profundizar en los mecanismos de protección
disponibles en MySQL, haciendo énfasis en la instalación segura, cifrado, control de
acceso, gestión de usuarios y privilegios, copias de seguridad y prevención de ataques
como la inyección SQL. La correcta implementación de estas técnicas no solo asegura
la confidencialidad, integridad y disponibilidad de los datos, sino que también fortalece
la resiliencia de las organizaciones ante ciberataques. Este documento está dirigido a
estudiantes, desarrolladores y administradores de bases de datos interesados en aplicar
buenas prácticas de seguridad en entornos reales.

El presente trabajo aborda la seguridad en bases de datos MySQL, un componente


crítico para garantizar la integridad, confidencialidad y disponibilidad de la información.
Se explorarán técnicas de protección, cifrado de datos sensibles, y mecanismos de
control de acceso como usuarios, roles y privilegios. Además, se destacarán buenas
prácticas en la realización de backups seguros.
OBJETIVO GENERAL

1- Analizar las principales técnicas de seguridad en bases de datos MySQL,


enfocándose en la protección de datos, cifrado y control de acceso.

OBJETIVOS ESPECÍFICOS

1- Identificar los mecanismos de protección más utilizados en bases de datos


MySQL.

2- Comprender los métodos de cifrado para datos sensibles.

3- Evaluar la gestión de usuarios, roles y privilegios.

4- Reconocer prácticas seguras para la realización de copias de seguridad.


JUSTIFICACIÓN

Este trabajo de investigación resulta relevante debido al incremento de ataques


informáticos y la creciente dependencia de los sistemas de gestión de bases de
datos. MySQL, al ser ampliamente utilizado, requiere de configuraciones
específicas de seguridad que garanticen el resguardo de la información.
Comprender estas técnicas permite a los desarrolladores y administradores
implementar sistemas más robustos y confiables.
METODOLOGÍA DEL TRABAJO MONOGRÁFICO

Para la elaboración del trabajo se utilizaron fuentes bibliográficas,


documentación oficial de MySQL y artículos científicos sobre seguridad
informática. El enfoque es descriptivo y analítico, con el fin de integrar la teoría
con la práctica en contextos reales de administración de bases de datos.
DESARROLLO DEL TEMA
1.​ Conceptos generales sobre seguridad en bases de datos
La seguridad en bases de datos es un pilar fundamental para garantizar la
integridad, confidencialidad y disponibilidad de la información. En MySQL, esto
implica no solo configuraciones técnicas, sino también políticas de gestión y
buenas prácticas. La seguridad debe abordarse en múltiples niveles:

●​ Seguridad física: Protección del servidor donde reside la base de datos.


●​ Seguridad de red: Uso de firewalls, VPNs y conexiones cifradas
(SSL/TLS).
●​ Seguridad del sistema operativo: Configuración adecuada de permisos y
actualizaciones.
●​ Seguridad de la base de datos: Control de acceso, cifrado y auditoría.

2.​ Técnicas de protección en MySQL

Instalación segura del servidor​

●​ Eliminar usuarios y bases de datos de ejemplo que vienen por defecto.


●​ Cambiar la contraseña predeterminada del usuario root.
●​ Configurar el archivo [Link] para restringir accesos no autorizados.

Protección de la red​

●​ Usar firewalls para limitar el acceso al puerto 3306 (puerto


predeterminado de MySQL).
●​ Implementar conexiones SSL/TLS para cifrar la comunicación entre el
cliente y el servidor. Ejemplo de configuración:

Ejemplo SQL

GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%' REQUIRE SSL;

Auditoría y monitoreo​

●​ Habilitar el registro de logs (general_log y slow_query_log) para detectar


actividades sospechosas.
●​ Usar herramientas como MySQL Enterprise Audit o MariaDB Audit Plugin
para auditorías avanzadas.
3.​ Cifrado de datos sensibles​

Cifrado a nivel de columna


●​ Uso de funciones como AES_ENCRYPT y AES_DECRYPT para cifrar
datos sensibles (ej. contraseñas, información personal). Ejemplo:

Ejemplo SQL​
INSERT INTO usuarios (nombre, contrasena) VALUES ('Juan',
AES_ENCRYPT('secreto', 'clave_secreta'));​

Cifrado a nivel de tablas


●​ Uso del plugin InnoDB tablespace encryption para cifrar tablas completas.
Configuración:

Ejemplo SQL​
INSTALL PLUGIN keyring_file SONAME 'keyring_file.so'; ​
ALTER TABLE clientes ENCRYPTION='Y';​

Cifrado de backups
●​ Herramientas como mysqldump pueden combinarse con OpenSSL para
generar backups cifrados:

Ejemplo bash​
mysqldump -u usuario -p base_de_datos | openssl enc -aes-256-cbc -salt -out
[Link] -k clave_secreta

4.​ Control de acceso, usuarios y roles

Gestión de usuarios
●​ Crear usuarios con permisos específicos en lugar de usar el usuario root.

Ejemplo SQL

CREATE USER 'lectura'@'localhost' IDENTIFIED BY 'contraseña_segura';

GRANT SELECT ON base_de_datos.* TO 'lectura'@'localhost';

Roles en MySQL 8.0+


●​ Los roles simplifican la administración de permisos. Ejemplo:

Ejemplo SQL
CREATE ROLE 'administrador';

GRANT ALL PRIVILEGES ON *.* TO 'administrador';

GRANT 'administrador' TO 'usuario_especifico';​

Principio de privilegios mínimos


●​ Revisar y revocar permisos innecesarios regularmente:

Ejemplo SQL

REVOKE DELETE ON base_de_datos.* FROM 'usuario'@'localhost';

5.​ Privilegios y backups seguros


La asignación de privilegios debe ser controlada cuidadosamente. Además, las
copias de seguridad deben ser cifradas y almacenadas en entornos seguros,
con acceso restringido. Herramientas como mysqldump permiten incluir cifrado
durante el respaldo.

Asignación de privilegios
●​ Evitar el uso de GRANT ALL PRIVILEGES a menos que sea
estrictamente necesario.
●​ Usar WITH GRANT OPTION con precaución para evitar escalamiento de
privilegios.

Backups seguros
●​ Automatizar backups con herramientas como Percona XtraBackup para
bases de datos grandes.
●​ Almacenar backups en ubicaciones seguras y cifradas, con acceso
restringido.
●​ Verificar la integridad de los backups periódicamente mediante restauraciones de
prueba.​
6.​ Prevención de inyección SQL
La inyección SQL es uno de los ataques más comunes, donde un atacante inserta
código malicioso en consultas para manipular la base de datos.


Técnicas de Mitigación:
a.​ Consultas Preparadas (Prepared Statements):

Ejemplo en PHP/MySQLi:

php

$stmt = $conn->prepare("SELECT * FROM usuarios WHERE email = ? AND


contrasena = ?");

$stmt->bind_param("ss", $email, $contrasena);

$stmt->execute();

b.​ Ventaja: Separa los datos del código SQL, evitando la ejecución de
comandos maliciosos.

Validación y Sanitización de Entradas:

Usar funciones como mysqli_real_escape_string() para escapar caracteres


peligrosos:

php

$email = mysqli_real_escape_string($conn, $_POST['email']);

Configuración del Servidor MySQL:

Restringir permisos de los usuarios de la aplicación (ej: evitar GRANT DROP).


Caso Práctico:

Ataque: Un formulario de login vulnerable: SELECT * FROM usuarios WHERE


email = '$email' AND contrasena = '$contrasena'.

Explotación: Si un atacante ingresa ' OR '1'='1 en el campo email, la consulta


devuelve todos los usuarios.

Solución: Implementar prepared statements y validar entradas.​


Uso de consultas preparadas (prepared statements) en aplicaciones y validar
entradas.

Ejemplo php

$stmt = $pdo->prepare("SELECT * FROM usuarios WHERE nombre = ?");

$stmt->execute([$nombre]);

Configuración de mysql_real_escape_string para aplicaciones legacy.​


7.​ Replicación y alta disponibilidad


Garantizar que la base de datos esté disponible incluso ante fallos hardware o
ataques (ej: ransomware).

Técnicas Clave:

a.​ Replicación Maestro-Esclavo (MySQL Replication):

Configuración básica:

Ejemplo SQL

-- En el servidor maestro ([Link]):

[mysqld]

server-id = 1

log_bin = /var/log/mysql/[Link]

binlog_do_db = basedatos
-- En el esclavo:

CHANGE MASTER TO MASTER_HOST='ip_maestro',


MASTER_USER='replica_user', MASTER_PASSWORD='clave';

START SLAVE;

●​ Caso de Uso: Si el maestro falla, el esclavo puede tomar el control


(requiere configuración adicional de failover).

b.​ MySQL Group Replication (MGR):

●​ Ideal para entornos críticos. Los nodos se sincronizan automáticamente.


●​ Ejemplo: Cluster de 3 nodos donde cada uno tiene una copia actualizada
de los datos.

Beneficios:

●​ Tolerancia a fallos: Si un nodo cae, los otros continúan operando.


●​ Balanceo de carga: Las consultas de lectura pueden distribuirse entre
esclavos.

8.​ Herramientas de seguridad adicionales


Complementar las funcionalidades nativas de MySQL con herramientas externas
para seguridad avanzada.

a.​ MySQL Enterprise Firewall:


●​ Filtra consultas SQL inusuales o maliciosas basadas en un "whitelist" de
patrones.

Ejemplo SQL

INSTALL PLUGIN mysql_firewall SONAME 'mysql_firewall.so';

CALL mysql.sp_set_firewall_mode('usuario', 'DETECTING'); -- Monitorea


consultas sospechosas
b.​ HashiCorp Vault para Gestión de Secretos:
●​ Almacena y gestiona credenciales de MySQL de forma centralizada y
cifrada.

Caso Práctico:

Un servidor web necesita acceder a MySQL. En lugar de hardcodear


credenciales en el código, Vault las proporciona dinámicamente.

Pasos:

1- Configurar Vault con el plugin de MySQL.

2- Crear un "rol" en Vault que genere credenciales temporales con permisos


limitados.

c.​ Herramientas de Auditoría Externa:


●​ Percona Audit Log Plugin: Registra todas las consultas ejecutadas, útil
para cumplimiento normativo (ej: GDPR).
●​ Ejemplo de Consulta de Auditoría:

Ejemplo SQL

SELECT * FROM mysql.audit_log WHERE user = 'admin' AND event_time >


'2025-01-01';​
CONCLUSIÓN

La seguridad en bases de datos MySQL es un aspecto integral que abarca desde la


configuración inicial del servidor hasta la gestión continua de usuarios, privilegios,
cifrado de datos y mecanismos de respaldo. A lo largo de este trabajo se ha demostrado
que implementar una arquitectura segura requiere no solo de herramientas específicas,
sino también de una correcta política de gestión y monitoreo constante. Las técnicas
exploradas, tales como el uso de roles, cifrado con AES, copias de seguridad seguras y
mecanismos de detección de anomalías, constituyen la base para un entorno robusto.
En un contexto donde la seguridad informática cobra cada vez mayor relevancia,
conocer y aplicar estos principios permite fortalecer la infraestructura de datos frente a
amenazas emergentes. Finalmente, se destaca la importancia de una capacitación
continua en seguridad para afrontar los desafíos tecnológicos actuales.

A partir de lo investigado, se concluye que la seguridad en MySQL depende tanto de


configuraciones técnicas como de políticas de gestión adecuadas. El uso de cifrado,
control de usuarios y prácticas seguras de respaldo fortalecen significativamente la
protección de los datos.
REFERENCIAS BIBLIOGRÁFICAS

MySQL Documentation. (2025). Retrieved from [Link]

García, M. (2022). *Seguridad en bases de datos relacionales*. Editorial Alfa.

CERT Paraguay. (2023). *Guía de buenas prácticas en bases de datos*.

Pérez, J. (2021). *Administración avanzada de MySQL*. Ediciones Técnicas.

OWASP Foundation. (2024). *SQL Injection Prevention Cheat Sheet*. Retrieved from
[Link]

Red Hat. (2023). *Database Security Best Practices*. Retrieved from [Link]
ANEXOS

- Capturas de configuración de roles en MySQL 8.0

- Ejemplo de uso de AES_ENCRYPT

- Script de backup cifrado con mysqldump


- Captura de pantalla de la configuración de roles en MySQL 8.0, que muestra la
creación y asignación de permisos mediante comandos SQL.

- Ejemplo de uso de AES_ENCRYPT para cifrar contraseñas en una tabla 'usuarios',


ilustrando la inserción de datos cifrados.

- Script de backup cifrado utilizando mysqldump y OpenSSL, con su correspondiente


línea de comandos en Bash.

- Extracto de logs generados con el plugin de auditoría Percona, demostrando su


utilidad para rastrear actividad sospechosa.

- Diagrama de replicación maestro-esclavo en MySQL, explicando el flujo de datos y


configuración básica entre nodos.

También podría gustarte