actividad no. 1.13: configuración acceso seguro al servidor de base de datos mysql
TRANSCRIPT
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
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:
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:
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:
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:
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:
[email protected]> viii. A challenge password: <ENTER> ix. An optional compay name: <ENTER>
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.
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:
[email protected]> 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
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 [email protected]:/etc/mysql/newcerts
Con esto logramos tansferir el archivo ca-‐cert.pem al equipo cliente.
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
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.