Universidad Nacional Autónoma de México
Facultad de Contaduría y Administración
Diplomado Diseño y Administración de Base de Datos
Módulo 6. Seguridad de Bases de Datos
Actividad No. 1.13: Configuración acceso seguro al servidor de base de datos MySQL
1. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
1
Actividad
No.
1.13:
Configuración
acceso
seguro
al
servidor
de
base
de
datos
MySQL
Antecedentes
MySQL
es
el
sistema
manejador
de
bases
de
datos
relacionales,
multihilos,
multiusuario
y
robusto
más
popular
hoy
en
día,
desarrollado
y
proporcionado
por
MySQL
AB.
Para
su
ejecución
MySQL
necesita
de
un
sistema
operativo.
CentOS
(Community
ENTerprise
Operating
System)
es
una
bifurcación
a
nivel
binario
de
la
distribución
Linux
Red
Hat
Enterprise
Linux
(RHEL),
compilado
por
voluntarios
a
partir
del
código
fuente
liberado
por
Red
Hat.
Es
un
sistema
operativo
de
código
abierto,
basado
en
la
distribución
Red
Hat
Enterprise
Linux,
operándose
de
manera
similar,
y
cuyo
objetivo
es
ofrecer
al
usuario
un
software
de
"clase
empresarial"
gratuito.
Se
define
como
robusto,
estable
y
fácil
de
instalar
y
utilizar.
Desde
la
versión
5,
cada
lanzamiento
recibe
soporte
durante
diez
años,
por
lo
que
la
actual
versión
7
recibirá
actualizaciones
de
seguridad
hasta
el
30
de
junio
de
2024.1
Dado
que
la
información
más
importante
de
una
organización
se
encuentra
almacenada
en
un
servidor
de
base
de
datos,
es
imperativo
acceder
a
el
de
forma
segura.
Objetivo
Configurar
el
acceso
seguro
al
servidor
de
base
de
datos
MySQL
a
través
de
la
implementación
de
los
siguientes
mecanismos
de
seguridad:
• Conexión
segura
al
servidor
de
base
de
datos
MySQL
utilizando
certificados
SSL.
• Protección
mediante
filtrado
de
paquetes
del
sistema
operativo
CentOS
donde
se
ejecuta
el
manejador
de
base
de
datos
MySQL.
• Implementación
de
autenticación
con
dos
factores
al
servicio
ssh
del
sistema
operativo
CentOS.
1
https://es.wikipedia.org/wiki/CentOS
2. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
2
Requerimientos
Para
la
ejecución
de
esta
actividad,
serán
necesarios
tres
equipos
de
cómputo
con
los
siguientes
roles:
• Equipo
No.
1:
Servidor
de
base
de
datos
(CentOS).
Configurar
este
equipo
de
acuerdo
a
la
Actividad
No.
1.4-‐
Instalación
y
Configuración
de
MySQL
en
CentOS
6
y
crear
una
la
base
de
datos
world
como
lo
indica
la
Actividad
No.
1.6-‐
Creación
de
bases
de
datos
en
MySQL.
• Equipo
No.
2:
Computadora
cliente
que
tiene
privilegios
de
conexión
al
servidor
de
base
de
datos.
(CentOS).
• Equipo
No.
3:
Computadora
atacante
que
NO
tiene
privilegios
de
conexión
al
servidor
de
base
de
datos
(Kali
Linux)
configurado
como
lo
indica
la
Actividad
No.
1.2:
Introducción
a
Kali
Linux.
La
siguiente
figura
muestra
la
topología
de
red
a
utilizar
en
esta
actividad:
3. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
3
Instrucciones
Conexión
segura
al
servidor
de
base
de
datos
MySQL
utilizando
certificados
SSL.
En
el
servidor
de
base
de
datos
ejecutar
realiza
las
siguientes
actividades:
1. Inicia
sesión
en
el
manejador
de
base
de
datos
MySQL
usando
el
siguiente
comando:
mysql
–u
root
–p
2. Validar
el
soporte
SSL
en
el
servidor
de
base
de
datos
MySQL
con
el
siguiente
comando:
SHOW
VARIABLES
LIKE
‘%ssl%';
3. Sólo
si
el
valor
es
DISABLED,
ejecutar
los
siguientes
pasos:
4. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
4
a. Abre
una
nueva
terminal
usando
la
combinación
de
teclas
CONTROL
+
SHIFT
+
t
b. Edita
el
archvo
/etc/my.cnf
con
el
comando:
vi
/etc/my.cnf
c. Agrega
la
palabra
ssl
debajo
de
pid-‐file
en
la
sección
GENERAL.
d. Sal
del
editor
vi
usando
la
secuencia
ESC
:x
e. Reinicia
el
servidor
de
base
de
datos
con
el
comando:
service
mysqld
restart
f.
Regresa
a
la
terminal
donde
esta
la
sesión
al
manejador
de
base
de
datos
usando
la
combinación
de
teclas
ALT
+
1
y
ejecuta
el
siguiente
comando:
SHOW
VARIABLES
LIKE
'%ssl%';
Ahora
ya
debe
estar
habilitado
en
soporte
para
SSL.
4. Crea
los
certificados
SSL
para
la
CA,
necesarios
para
la
conexión
segura
entre
el
cliente
y
el
servidor
de
MySQL
con
los
siguientes
pasos:
5. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
5
a. Regresa
a
la
terminal
del
sistema
operativo
con
la
combinación
de
teclas
ALT
+
2.
b. Crea
el
directorio
/etc/mysql/newcerts
e
ingresa
al
directorio:
mkdir
-‐p
/etc/mysql/newcerts
&&
cd
/etc/mysql/newcerts
c. Crea
los
certificados
de
la
CA
con
el
comando:
openssl
genrsa
2048
>
ca-‐key.pem
d. Crea
una
solicitud
de
certificado
con
el
comando:
openssl
req
-‐new
-‐x509
-‐nodes
-‐days
1000
-‐key
ca-‐key.pem
>
ca-‐cert.pem
e. Introduce
los
siguientes
valores
para
la
creación
del
certificado
de
seguridad:
i. Country
Name:
MX
ii. State
or
Province
Name:
Distrito
Federal
iii. Locality
Name:
Mexico
iv. Organización
Name:
UNAM
v. Organizational
Unit
Name:
FCA
vi. Common
Name:
servidor
vii. Email
Address:
<tu
correo
electrónico
ej:
paco.medina@comunidad.unam.mx>
6. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
6
5. Crea
los
certificados
SSL
para
el
servidor,
necesarios
para
la
conexión
segura
de
MySQL
con
los
siguientes
pasos:
a. Crea
un
certificado
para
el
servidor
con
el
comando:
openssl
req
-‐newkey
rsa:2048
-‐days
1000
-‐nodes
-‐keyout
server-‐key.pem
>
server-‐req.pem
Utiliza
los
mismos
valores
del
paso
5
punto
e.
Cuando
se
pregunta
por
la
contraseña
solo
dar
ENTER.
i. Country
Name:
MX
ii. State
or
Province
Name:
Distrito
Federal
iii. Locality
Name:
Mexico
iv. Organización
Name:
UNAM
v. Organizational
Unit
Name:
FCA
vi. Common
Name:
servidor
vii. Email
Address:
<tu
correo
electrónico
ej:
paco.medina@comunidad.unam.mx>
viii. A
challenge
password:
<ENTER>
ix. An
optional
compay
name:
<ENTER>
7. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
7
b. Ejecutar
el
comando:
openssl
x509
-‐req
-‐in
server-‐req.pem
-‐days
1000
-‐CA
ca-‐
cert.pem
-‐CAkey
ca-‐key.pem
-‐set_serial
01
>
server-‐
cert.pem
6. Crear
los
certificados
para
el
cliente
con
los
siguientes
pasos:
a. Solicitud
de
certificado
para
el
cliente:
openssl
req
-‐newkey
rsa:2048
-‐days
1000
-‐nodes
-‐keyout
client-‐key.pem
>
client-‐req.pem
Utiliza
los
siguientes
valores.
Cuando
se
pregunta
por
la
contraseña
solo
dar
ENTER.
8. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
8
i. Country
Name:
MX
ii. State
or
Province
Name:
Distrito
Federal
iii. Locality
Name:
Mexico
iv. Organización
Name:
UNAM
v. Organizational
Unit
Name:
FCA
vi. Common
Name:
cliente
vii. Email
Address:
<tu
correo
electrónico
ej:
paco.medina@comunidad.unam.mx>
viii. A
challenge
password:
<ENTER>
ix. An
optional
compay
name:
<ENTER>
b. Crea
el
certificado
X509
para
el
cliente
con
el
comando:
openssl
x509
-‐req
-‐in
client-‐req.pem
-‐days
1000
-‐CA
ca-‐
cert.pem
-‐CAkey
ca-‐key.pem
-‐set_serial
01
>
client-‐
cert.pem
9. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
9
c. Muestra
el
contenido
del
directorio
con
el
comando:
ls
–l
Valida
que
el
contenido
de
tu
directorio
tenga
los
mismos
archivos
que
la
imagen.
7. Transferir
los
archivos
ca-‐cert.pem,
client-‐cert.pem,
y
client-‐
key.pem
al
equipo
cliente
siguiendo
los
siguientes
pasos:
a. En
el
equipo
cliente
crear
el
directorio
/etc/mysql/newcerts
con
el
comando:
mkdir
-‐p
/etc/mysql/newcerts
b. En
el
equipo
cliente,
inciar
el
servicio
de
sshd
con
el
comando:
service
sshd
start
c. En
el
servidor
de
base
de
datos
ejecutar
el
siguiente
comando:
scp
/etc/mysql/newcerts/ca-‐cert.pem
root@192.168.1.y:/etc/mysql/newcerts
Con
esto
logramos
tansferir
el
archivo
ca-‐cert.pem
al
equipo
cliente.
10. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
10
d. Repetir
el
paso
anterior
para
los
archivos
client-‐cert.pem
y
client-‐key.pem.
8. En
el
servidor
de
base
de
datos,
editar
el
archivo
/etc/my.cnf
y
agregar
los
siguientes
valores,
la
sección
GENERAL
dentro
del
bloque
[mysqld]:
ssl-‐ca=/etc/mysql/newcerts/ca-‐cert.pem
ssl-‐cert=/etc/mysql/newcerts/server-‐cert.pem
ssl-‐key=/etc/mysql/newcerts/server-‐key.pem
9. Reinicia
el
servicio
de
mysqld.
10. Permite
al
usuario
root
conectarse
desde
cualquier
equipo
de
la
red
con
el
siguiente
comando:
GRANT
ALL
PRIVILEGES
ON
*.*
TO
root@'%'
IDENTIFIED
BY
'p4ssw0rd'
WITH
GRANT
OPTION;
11. En
el
equipo
cliente
configura
el
uso
de
certificados
editando
el
archivo
/etc/my.cnf
agregando
las
siguientes
líneas
en
la
sección
[mysql]:
ssl-‐cert
=
/etc/mysql/newcerts/client-‐cert.pem
ssl-‐key
=
/etc/mysql/newcerts/client-‐key.pem
11. Universidad
Nacional
Autónoma
de
México
Facultad
de
Contaduría
y
Administración
Diplomado
Diseño
y
Administración
de
Base
de
Datos
Módulo
6.
Seguridad
de
Bases
de
Datos
Elaboró:
Francisco
Medina
López
11
12. Desde
el
equipo
cliente
inicia
una
conexión
al
servidor
de
base
de
datos
con
el
comando:
mysql
-‐sss
-‐h
10.211.55.12
-‐u
root
-‐p
13. Valida
el
uso
de
SSL
con
el
comando
s
dentro
del
manejador
de
base
de
datos.