GNU/Linux >> Tutoriales Linux >  >> Panels >> Panels

Cómo configurar conexiones remotas y seguras para MySQL en Ubuntu 16.04

En este artículo, le mostraremos cómo configurar conexiones remotas y seguras para MySQL en Ubuntu 16.04 VPS. Si está utilizando una conexión sin cifrar para conectarse a su servidor MariaDB/MySQL remoto, entonces cualquier persona con acceso a la red podría monitorear y analizar los datos que se envían o reciben entre el cliente y el servidor. Esta guía también debería funcionar en otros sistemas Linux VPS, pero fue probada y escrita para un VPS Ubuntu 16.04.

1. Inicie sesión en su VPS a través de SSH

ssh my_sudo_user@my_server

Los pasos de este tutorial asumen que ha instalado MySQL 5.7 con la configuración predeterminada.

Habilitar conexiones SSL:

2. Crear una nueva autoridad certificadora local

Usaremos la autoridad de certificación local como un certificado raíz autofirmado que usaremos para firmar los certificados del servidor y del cliente. Para crear un nuevo archivo de autoridad certificadora local, ejecute los siguientes comandos:

sudo openssl genrsa -out /etc/mysql/ca-key.pem 2048
sudo chmod 600 /etc/mysql/ca-key.pem
sudo openssl req -new -key /etc/mysql/ca-key.pem -out /etc/mysql/ca-csr.pem -subj /CN=mysql-CA/
sudo openssl x509 -req -in /etc/mysql/ca-csr.pem -out /etc/mysql/cacert.pem -signkey /etc/mysql/ca-key.pem -days 3650
sudo echo 01 > /etc/mysql/cacert.srl

3. Generar certificado y clave del servidor

Para generar un certificado de servidor y una clave, emita los siguientes comandos:

sudo openssl genrsa -out /etc/mysql/server-key.pem 2048
sudo chmod 600 /etc/mysql/server-key.pem
sudo openssl req -new -key /etc/mysql/server-key.pem -out /etc/mysql/server-csr.pem -subj /CN=mysql/
sudo openssl x509 -req -in /etc/mysql/server-csr.pem -out /etc/mysql/server-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365

4. Generar Certificado y Clave de Clientes

A continuación, necesitamos generar el certificado de cliente. Ejecute los siguientes comandos para generar un certificado y una clave de cliente:

sudo openssl genrsa -out /etc/mysql/client-key.pem 2048
sudo chmod 600 /etc/mysql/client-key.pem
sudo openssl req -new -key /etc/mysql/client-key.pem -out /etc/mysql/client-csr.pem -subj /CN=mysql/
sudo openssl x509 -req -in /etc/mysql/client-csr.pem -out /etc/mysql/client-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365

Si desea tener un certificado SSL firmado por una CA, puede comprar un certificado SSL de confianza aquí.

5. Habilitar las conexiones SSL del servidor MySQL

Abra el archivo de configuración de MySQL con su editor de texto:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

y descomente las siguientes líneas:

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

Guarde el archivo y reinicie el servicio MySQL:

sudo systemctl restart mysql 

Para verificar que SSL está habilitado, inicie sesión en el servidor MySQL

mysql -uroot -p

y ejecuta el siguiente comando:

mysql> show variables LIKE '%ssl%';

La salida debe ser similar a la siguiente:

+---------------+----------------------------+
| Variable_name | Value                      |
+---------------+----------------------------+
| have_openssl  | YES                        |
| have_ssl      | YES                        |
| ssl_ca        | /etc/mysql/cacert.pem      |
| ssl_capath    |                            |
| ssl_cert      | /etc/mysql/server-cert.pem |
| ssl_cipher    |                            |
| ssl_crl       |                            |
| ssl_crlpath   |                            |
| ssl_key       | /etc/mysql/server-key.pem  |
+---------------+----------------------------+
9 rows in set (0.15 sec)

6. Habilitar conexiones remotas a través de SSL

De forma predeterminada, MySQL solo escucha conexiones en localhost. Para habilitar las conexiones remotas, debe volver a configurar MySQL en su servidor para escuchar en todas las interfaces, para hacerlo, abra el archivo de configuración de MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

y cambiar

bind-address            = 127.0.0.1

a

bind-address            = 0.0.0.0

Para que los cambios surtan efecto, reinicie el servidor MySQL con el siguiente comando:

sudo systemctl restart mysql 

Verifique que su servidor MySQL escuche en todas las interfaces:

sudo netstat -anp | grep 3306

la salida debe ser similar a la siguiente:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      938/mysqld

Para permitir que su cliente MySQL se conecte al servidor MySQL, debe otorgar al usuario de la base de datos acceso a la base de datos en el servidor remoto.

Por ejemplo, si desea otorgar acceso a dbuser usuario al database_name base de datos y para forzar SSL, inicie sesión en MySQL shell como root y ejecute el siguiente comando:

GRANT ALL ON database_name.* TO [email protected] IDENTIFIED BY 'dbuserpassword' REQUIRE SSL;

donde 192.168.1.10 es la dirección IP de su máquina cliente MySQL.

A continuación, debe configurar su cliente MySQL para usar el certificado SSL generado anteriormente. Copie los siguientes archivos desde su servidor MySQL a su máquina cliente MySQL:

/etc/mysql/cacert.pem
/etc/mysql/client-cert.pem
/etc/mysql/client-key.pem

7. Configurar Cliente MySQL

abra la configuración de su cliente MySQL y agregue las siguientes líneas:

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

8. Prueba tu conexión

Ahora puede probar su conexión desde la máquina cliente al servidor de la base de datos MySQL:

mysql -udbuser -pdbuserpassword -h 192.168.1.5

donde 192.168.1.5 es la dirección IP de su servidor de base de datos MySQL.

Eso es todo. Ha configurado con éxito conexiones remotas y seguras para MySQL en su Ubuntu 16.04 VPS. Para obtener más información sobre las conexiones seguras de MySQL, consulte la documentación oficial de MySQL.

Por supuesto, no tiene que configurar conexiones remotas y seguras para MySQL en Ubuntu 16.04 si usa uno de nuestros servicios de hospedaje VPS de Ubuntu, en cuyo caso simplemente puede pedirle a nuestros administradores expertos de Linux que configuren conexiones remotas y seguras para MySQL en Ubuntu 16.04 para ti. Están disponibles las 24 horas del día, los 7 días de la semana y atenderán su solicitud de inmediato.

PD . Si le gustó esta publicación sobre cómo configurar conexiones remotas y seguras para MySQL en Ubuntu 16.04, compártala con sus amigos en las redes sociales usando los botones a la izquierda o simplemente deje una respuesta a continuación. Gracias.


Panels
  1. Cómo instalar y configurar SuiteCRM con OPcache en un VPS Ubuntu 14.04

  2. Cómo instalar y configurar Tinyproxy en Ubuntu 14.04

  3. Cómo instalar y configurar LibreNMS en Ubuntu 16.04

  4. Cómo instalar y configurar OpenSSH en Ubuntu 16.04

  5. Cómo instalar WordPress en Ubuntu 18.04 y configurarlo para usar una base de datos remota

Cómo instalar y asegurar phpMyAdmin en Ubuntu

Cómo instalar y configurar Zabbix en Ubuntu 18.04

Cómo habilitar SSL y conexiones remotas para MySQL en CentOS 7

Cómo instalar y asegurar phpMyAdmin en Ubuntu 18.04 LTS

Cómo instalar y configurar MySQL en Ubuntu 20.04 LTS

Cómo instalar y configurar MySQL en Ubuntu 18.04