Asegure MariaDB con soporte SSL en Ubuntu 16.04

MariaDB es una base de datos gratuita de código abierto, y es el reemplazo directo más utilizado para MySQL. Está hecho por los desarrolladores de MySQL y está destinado a permanecer libre bajo la GNU GPL. Es muy rápido, escalable y viene con un rico conjunto de características que lo hacen muy versátil para una amplia variedad de casos de uso.

Este tutorial lo guiará a través de cómo instalar y configurar MariaDB con soporte SSL en Ubuntu 16.04.

Requisitos

  • Una nueva instancia de Ubuntu 16.04 Vultr.
  • Un usuario no root con privilegios de sudo.
  • Se configura una dirección IP estática 192.168.0.190 en la instancia del servidor.
  • Se configura una dirección IP estática 192.168.0.191 en la máquina del cliente.

Paso 1: instalar MariaDB

Por defecto, la última versión de MariaDB no está disponible en el repositorio de Ubuntu 16.04; por lo tanto, deberá agregar el repositorio MariaDB a su sistema.

Primero, descargue la clave con el siguiente comando:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

A continuación, agregue el repositorio MariaDB al /etc/apt/sources.listarchivo:

sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list

Actualice el índice apt con el siguiente comando:

sudo apt-get update -y

Una vez que apt index ha sido actualizado, instale el servidor MariaDB con el siguiente comando:

sudo apt-get install mariadb-server -y

Inicie el servidor MariaDB y permita que se inicie en el momento del arranque:

sudo systemctl start mysql
sudo systemctl enable mysql

A continuación, deberá ejecutar un mysql_secure_installationscript para asegurar la instalación de MariaDB. Este script le permite establecer la contraseña de root, eliminar usuarios anónimos, no permitir el inicio de sesión root remoto y eliminar la base de datos de prueba:

sudo mysql_secure_installation

Paso 2: cree un certificado SSL y una clave privada para el servidor

Primero, cree un directorio para almacenar todos los archivos de claves y certificados.

sudo mkdir /etc/mysql-ssl

A continuación, cambie el directorio /etc/mysql-ssly cree el certificado de CA y la clave privada con el siguiente comando:

sudo cd /etc/mysql-ssl
sudo openssl genrsa 2048 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem

Responda todas las preguntas como se muestra a continuación:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]:GUJ
Locality Name (eg, city) []:JND
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ENJ
Organizational Unit Name (eg, section) []:SYSTEM
Common Name (e.g. server FQDN or YOUR name) []:HITESH
Email Address []:[email protected]

A continuación, cree una clave privada para el servidor con el siguiente comando:

sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem

Responda todas las preguntas como lo hizo en el comando anterior.

A continuación, exporte la clave privada del servidor a una clave de tipo RSA con el siguiente comando:

sudo sudo openssl rsa -in server-key.pem -out server-key.pem

Finalmente, genere un certificado de servidor utilizando el certificado de CA de la siguiente manera:

sudo openssl x509 -req -in server-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

Ahora puede ver todos los certificados y claves con el siguiente comando:

ls

Debería ver el siguiente resultado:

ca-cert.pem  ca-key.pem  server-cert.pem  server-key.pem  server-req.pem

Una vez que haya terminado, puede continuar con el siguiente paso.

Paso 3: Configurar el servidor MariaDB para usar SSL

Debe tener todos los certificados y una clave privada; y ahora necesitará configurar MariaDB para usar la clave y los certificados. Puede hacer esto editando el /etc/mysql/mariadb.conf.d/50-server.cnfarchivo:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Agregue las siguientes líneas debajo de la [mysqld]sección:

ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/server-cert.pem
ssl-key=/etc/mysql-ssl/server-key.pem

##Change this value to connect the MariaDB server from another host.
bind-address = *

Guarde el archivo, luego reinicie el servicio MariaDB para aplicar estos cambios:

sudo systemctl restart mysql

Ahora, puede verificar si la configuración SSL funciona o no con la siguiente consulta:

mysql -u root -p
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';

Si la configuración fue exitosa, debería ver el siguiente resultado:

+---------------+--------------------------------+
| Variable_name | Value                          |
+---------------+--------------------------------+
| have_openssl  | YES                            |
| have_ssl      | YES                            |
| ssl_ca        | /etc/mysql-ssl/ca-cert.pem     |
| ssl_capath    |                                |
| ssl_cert      | /etc/mysql-ssl/server-cert.pem |
| ssl_cipher    |                                |
| ssl_crl       |                                |
| ssl_crlpath   |                                |
| ssl_key       | /etc/mysql-ssl/server-key.pem  |
+---------------+--------------------------------+

Debería notar que los valores have_ssly have_opensslestán habilitados en la salida anterior.

Paso 4: crear un usuario con privilegios SSL

Cree un usuario remoto que tenga privilegios para acceder al servidor MariaDB a través de SSL. Haga esto ejecutando el siguiente comando:

Primero, inicie sesión en el shell de MySQL:

mysql -u root -p

A continuación, cree un usuario remotey otorgue privilegios para acceder al servidor a través de SSL.

MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'remote'@'192.168.0.191' IDENTIFIED BY 'password' REQUIRE SSL;

Luego, vacíe los privilegios con el siguiente comando:

MariaDB [(none)]>FLUSH PRIVILEGES;

Finalmente, salga del shell MySQL con el siguiente comando:

MariaDB [(none)]>exit;

Nota: 192.168.0.191 es la dirección IP de la máquina del usuario remoto (Cliente).

Su servidor ahora está listo para permitir conexiones a usuarios remotos.

Paso 5: Crear el certificado del cliente

La configuración del lado del servidor está completa. A continuación, deberá crear una nueva clave y certificado para el cliente.

En la máquina del servidor, cree la clave del cliente con el siguiente comando:

sudo cd /etc/mysql-ssl
sudo sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem

A continuación, procese la clave RSA del cliente con el siguiente comando:

sudo openssl rsa -in client-key.pem -out client-key.pem

Finalmente, firme el certificado del cliente con el siguiente comando:

sudo openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

Paso 6: Configure el cliente MariaDB para usar SSL

Todos los certificados y la clave están listos para el cliente. A continuación, deberá copiar todos los certificados de cliente en cualquier máquina cliente donde desee ejecutar el cliente MariaDB.

Deberá instalar el cliente MariaDB en la máquina cliente.

Primero, en la máquina cliente, descargue la clave para MariaDB con el siguiente comando:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Luego, agregue el repositorio MariaDB al /etc/apt/sources.listarchivo:

sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list

A continuación, actualice el índice de apt con el siguiente comando:

sudo apt-get update -y

Una vez que se actualiza el índice apt, instale el cliente MariaDB en la máquina cliente con el siguiente comando:

sudo apt-get install mariadb-client -y

Ahora cree un directorio para almacenar todos los certificados:

sudo mkdir /etc/mysql-ssl

A continuación, copie todos los certificados de cliente de la máquina del servidor a la máquina del cliente con el siguiente comando:

sudo scp [email protected]:/etc/mysql-ssl/client-* /etc/mysql-ssl/

Luego, deberá configurar el cliente MariaDB para usar SSL. Puede hacer esto creando un /etc/mysql/mariadb.conf.d/50-mysql-clients.cnfarchivo:

sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

Agregue las siguientes líneas:

[client]
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/client-cert.pem
ssl-key=/etc/mysql-ssl/client-key.pem

Guarde el archivo cuando haya terminado.

Paso 7: Verifique las conexiones remotas

Ahora que todo está configurado, es hora de verificar si puede conectarse con éxito al servidor MariaDB o no.

En la máquina cliente, ejecute el siguiente comando para conectarse al servidor MariaDB:

mysql -u remote -h 192.168.0.190 -p mysql

Se le pedirá que ingrese la remotecontraseña de usuario. Después de proporcionar la contraseña, iniciará sesión en el servidor remoto MariaDB.

Verifique el estado de la conexión con el siguiente comando:

MariaDB [mysql]> status

Debería ver el siguiente resultado:

--------------
mysql  Ver 15.1 Distrib 10.2.7-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:      62
Current database:   mysql
Current user:       [email protected]
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server:         MariaDB
Server version:     10.0.31-MariaDB-0ubuntu0.16.04.2 Ubuntu 16.04
Protocol version:   10
Connection:     192.168.0.190 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         1 hours 31 min 31 sec

Deberías ver SSL: Cipher in use is DHE-RSA-AES256-SHAen la salida anterior. Eso significa que su conexión ahora es segura con SSL.

Conclusión

¡Felicidades! Ha configurado correctamente un servidor MariaDB con soporte SSL. Ahora puede otorgar acceso a otros clientes para acceder al servidor MariaDB a través de SSL.



Leave a Comment

Cómo instalar Apache Cassandra 3.11.x en Ubuntu 16.04 LTS

Cómo instalar Apache Cassandra 3.11.x en Ubuntu 16.04 LTS

¿Usando un sistema diferente? Apache Cassandra es un sistema de gestión de base de datos NoSQL gratuito y de código abierto que está diseñado para proporcionar escalabilidad, alta

Asegurando MongoDB

Asegurando MongoDB

MongoDB no es seguro por defecto. Si está instalando MongoDB y lo está iniciando sin configurarlo para la autenticación, lo pasará mal

Cómo instalar y configurar OrientDB Community Edition en CentOS 7

Cómo instalar y configurar OrientDB Community Edition en CentOS 7

OrientDB es un DBMS NoSQL de código abierto multi-modelo de última generación. Con soporte para múltiples modelos de datos, OrientDB puede proporcionar más funcionalidad y flexibilidad en

Cómo instalar y usar ArangoDB en Ubuntu 16.04

Cómo instalar y usar ArangoDB en Ubuntu 16.04

¿Usando un sistema diferente? Introducción ArangoDB es una base de datos NoSQL de código abierto con un modelo de datos flexible para documentos, gráficos y valores clave. Está

Implemente un conjunto de réplicas con alta disponibilidad en MongoDB 3.4 usando Keyfile para control de acceso en Ubuntu 16.04

Implemente un conjunto de réplicas con alta disponibilidad en MongoDB 3.4 usando Keyfile para control de acceso en Ubuntu 16.04

Desde su concepción en 2009, MongoDB ha liderado la industria NoSQL. Uno de los conceptos centrales de MongoDB es el conjunto de réplicas, por lo que antes de trabajar con i

Cómo configurar WordPress con Redis

Cómo configurar WordPress con Redis

Redis es un almacén de estructura de datos. Es popular entre los sitios de WordPress porque ofrece grandes aumentos de rendimiento debido a su enfoque optimizado en el almacenamiento en caché.

How to Install MariaDB 10.3 or MySQL 8.0 on Arch Linux

How to Install MariaDB 10.3 or MySQL 8.0 on Arch Linux

Prerequisites A Vultr server running up to date Arch Linux (see this article.) Sudo access: Commands required to be ran as root are prefixed by #, and one

Copia de seguridad de bases de datos MySQL

Copia de seguridad de bases de datos MySQL

MySQL es el software más popular del mundo utilizado para bases de datos. Es muy importante asegurarse de tener copias de seguridad de su base de datos. Esta práctica permite

Copia de seguridad de múltiples bases de datos MySQL o MariaDB automáticamente

Copia de seguridad de múltiples bases de datos MySQL o MariaDB automáticamente

Introducción En este artículo, veamos cómo hacer una copia de seguridad de múltiples bases de datos MySQL o MariaDB que se encuentran en la misma máquina usando un script de bash personalizado

Instale versiones más recientes de MongoDB en Debian 7

Instale versiones más recientes de MongoDB en Debian 7

MongoDB es una base de datos NoSQL rápida y potente. Sin embargo, los repositorios de Debian se actualizan lentamente y a menudo contienen versiones muy antiguas de paquetes. Esta tutoria

Cómo instalar Apache Cassandra 3.11.x en CentOS 7

Cómo instalar Apache Cassandra 3.11.x en CentOS 7

¿Usando un sistema diferente? Apache Cassandra es un sistema de gestión de base de datos NoSQL gratuito y de código abierto que está diseñado para proporcionar escalabilidad, alta

How to Install MyCLI on Linux (CentOS, Debian, Fedora, and Ubuntu)

How to Install MyCLI on Linux (CentOS, Debian, Fedora, and Ubuntu)

Introduction MyCLI is a command line client for MySQL and MariaDB that allows you to auto-complete and helps with the syntax of your SQL commands. MyCL

Configurar Barnyard 2 con Snort

Configurar Barnyard 2 con Snort

Barnyard2 es una forma de almacenar y procesar las salidas binarias de Snort en una base de datos MySQL. Antes de comenzar Tenga en cuenta que si no tiene snor

Instale RockMongo en CentOS 7

Instale RockMongo en CentOS 7

RockMongo es una herramienta de administración de MongoDB basada en la web que es similar a la herramienta de administración de MySQL: phpMyAdmin. Este tutorial cubrirá el proceso de instalación

Configurar MariaDB en OpenBSD 6

Configurar MariaDB en OpenBSD 6

En este artículo, le mostraré cómo instalar MariaDB en OpenBSD 6 y configurarlo para que sea accesible a un servidor web chrooteado (Apache o Nginx). También lo harás

Cómo instalar y configurar ArangoDB en CentOS 7

Cómo instalar y configurar ArangoDB en CentOS 7

¿Usando un sistema diferente? Introducción ArangoDB es una base de datos NoSQL de código abierto con un modelo de datos flexible para documentos, gráficos y valores clave. Está

How to Install MongoDB 4.0 on Arch Linux

How to Install MongoDB 4.0 on Arch Linux

Prerequisites A Vultr server running up to date Arch Linux (see this article) Sudo access: Commands required to be ran as root are prefixed by #, and one

Cómo instalar Redis en Ubuntu 15.10

Cómo instalar Redis en Ubuntu 15.10

Redis es una solución de almacenamiento de datos de valor clave, a menudo denominada base de datos NoSQL. Puede alcanzar velocidades de lectura / escritura muy altas porque es un bu en memoria

Cómo instalar Laravel GitScrum en CentOS 7

Cómo instalar Laravel GitScrum en CentOS 7

Laravel GitScrum o GitScrum es una herramienta de productividad de código abierto diseñada para ayudar a los equipos de desarrollo a implementar la metodología Scrum de una manera similar.

Comience con SQL Server 2017 (MS-SQL) en CentOS 7 con Docker

Comience con SQL Server 2017 (MS-SQL) en CentOS 7 con Docker

Requisitos previos Docker engine 1.8+. Mínimo de 4 GB de espacio en disco. Mínimo de 4 GB de RAM. Paso 1. Instalar Docker Para instalar SQL-Server, Docker mus

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

A medida que la ciencia evoluciona a un ritmo rápido, asumiendo muchos de nuestros esfuerzos, también aumentan los riesgos de someternos a una singularidad inexplicable. Lea, lo que la singularidad podría significar para nosotros.

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

El impacto de la inteligencia artificial en la atención médica 2021

El impacto de la inteligencia artificial en la atención médica 2021

La IA en la salud ha dado grandes pasos desde las últimas décadas. Por tanto, el futuro de la IA en el sector sanitario sigue creciendo día a día.