GNU/Linux >> Tutoriales Linux >  >> Linux

Habilitar SSL y conexiones remotas para MySQL

Nota :Este artículo asume que ha instalado y configurado MySQL® en su servidor.

Habilitar SSL para MySQL

Antes de instalar su certificado SSL en su base de datos MySQL, haga una copia de seguridad y elimine los archivos de certificado predeterminados. Puede elegir su propio nombre de directorio para este paso. Este ejemplo usa mysql-backup-certs directorio. Para realizar los siguientes pasos, cambie al usuario root.

  1. Cree un nuevo directorio de respaldo:

    mkdir -p ~/mysql-backup-certs/
    
  2. Vaya a /var/lib/mysql y mueva cada certificado predeterminado a su directorio de copia de seguridad recién creado:

    cd /var/lib/mysql
    mv ca.pem ca-key.pem ~/mysql-backup-certs/
    mv server-key.pem server-cert.pem ~/mysql-backup-certs/
    mv client-key.pem client-cert.pem ~/mysql-backup-certs/
    mv private_key.pem public_key.pem ~/mysql-backup-certs/
    
  3. Reinicie MySQL ejecutando uno de los siguientes comandos:

    service mysqld restart
    

    o

    systemctl restart mysqld
    
  4. Use uno de los siguientes comandos para verificar el mysqld estado:

    service mysqld status
    

    o

    systemctl status mysqld
    
  5. Verifique el estado de SSL desde el interior del shell de MySQL. Para hacer esto, inicie sesión en MySQL como usuario root:

    mysql -u root -p
    (Enter MySQL root password)
    
  6. Ejecute la siguiente consulta para comprobar el estado de SSL en MySQL:

    SHOW GLOBAL VARIABLES LIKE '%ssl%';
    STATUS;
    

    Nota :No es necesario que utilice mayúsculas. El ejemplo los usa para diferenciar la sintaxis del comando de lo que está consultando.

    En el comando anterior, desea ver el estado de SSL como deshabilitado y el usuario raíz está conectado sin SSL.

  7. Para habilitar la conexión SSL con nuestro propio certificado editando el my.cnf archivo, ejecute uno de los siguientes comandos:

    vim /etc/my.cnf
    

    o

    nano /etc/my.cnf
    
  8. Encuentra el [mysqld] y agregue los siguientes ajustes de configuración:

    # You will use your own SSL certificates directory for these. The following are examples only.
    ssl-ca=/etc/pki/tls/certs/ca.pem
    ssl-cert=/etc/pki/tls/certs/server-cert.pem
    ssl-key=/etc/pki/tls/private/server-key.pem
    
  9. Guardar y salir del archivo. Luego, reinicie MySQL ejecutando uno de los siguientes comandos:

    service mysqld restart
    

    o

    systemctl restart mysqld
    
  10. Después de que se haya realizado una copia de seguridad de MySQL, vuelva a iniciar sesión en el shell de MySQL:

    mysql -u root -p
    (Enter MySQL root password)
    
  11. Vuelva a ejecutar la consulta SSL:

    SHOW VARIABLES LIKE '%ssl%';
    STATUS;
    
  12. Si el valor de la sección SSL muestra , SSL está habilitado para MySQL. Sin embargo, sigue viendo que el usuario raíz no está conectado mediante SSL. Esto es normal. Si desea cambiar esto, puede obligar a todas las conexiones de usuario de host local a usar SSL. Debes editar my.cnf archivo de nuevo ejecutando uno de los siguientes comandos:

    vim /etc/my.cnf
    

    o

    nano /etc/my.cnf
    
  13. Introduzca la siguiente configuración al final:

    [client]
    ssl-ca=/etc/pki/tls/certs/ca.pem
    ssl-cert=/etc/pki/tls/certs/client-cert.pem
    ssl-key=/etc/pki/tls/private/client-key.pem
    
  14. Reinicie MySQL. Después de que se haya realizado una copia de seguridad de MySQL, vuelva a iniciar sesión en el shell de MySQL:

    mysql -u root -p
    (Enter MySQL root password)
    
  15. Vuelva a ejecutar la siguiente consulta:

    SHOW VARIABLES LIKE '%ssl%';
    STATUS;
    

Si solo desea habilitar las conexiones SSL desde las conexiones de host local, entonces ha terminado. Sin embargo, si también desea habilitar inicios de sesión remotos para MySQL, siga leyendo.

Habilitar conexiones remotas para MySQL

Las siguientes instrucciones permiten conexiones remotas para MySQL. Además, estos usuarios remotos necesitan tener archivos de certificado firmados por su autoridad certificadora (CA) para conectarse.

Este ejemplo denota (usando tres asteriscos:*** ) la configuración para forzar la firma de la CA si desea permitir conexiones remotas sin la CA.

  1. Use su editor de texto de línea de comando preferido para editar /etc/my.cnf archivo de nuevo:

    vim /etc/my.cnf
    

    o

    nano /etc/my.cnf
    
  2. Incluya lo siguiente en la parte inferior de [mysqld] sección:

    bind-address = *
    require_secure_transport = ON 		***
    
  3. Guarde y salga del archivo usando :wq .

  4. Reinicie MySQL. Confirme que MySQL se está ejecutando de nuevo. Debe volver a iniciar sesión en el shell de MySQL.

  5. Después de iniciar sesión, cree el usuario ejecutando uno de los siguientes comandos:

    CREATE USER 'example'@'%' IDENTIFIED BY 'password';
    

    o

    CREATE USER 'example'@'%' IDENTIFIED BY 'password' REQUIRE X509; 	***
    
  6. Después de otorgar a este usuario los permisos para las bases de datos para las que desea que tenga permisos, elimine los privilegios para actualizar los permisos de MySQL desde el shell:

    flush privileges;
    

Es posible que haya notado que el % ubicado después de @ símbolo en el anterior create user comando es lo que realmente denota al usuario como un usuario remoto.

Como beneficio adicional, si tiene un usuario que accede a MySQL solo desde una dirección IP estática, puede ingresar esa dirección IP en lugar del % para permitir que ese usuario acceda a MySQL desde su dirección IP específica. Sin embargo, tenga en cuenta que el usuario puede acceder a la base de datos solo desde esa dirección IP. Si su dirección IP cambia, ya no tienen acceso. Es por eso que la mayoría de los administradores usan la configuración remota general de % en su lugar.

Ahora ha habilitado las conexiones SSL, así como el acceso remoto a su base de datos MySQL.


Linux
  1. Escritorio remoto para Mac y métodos abreviados de teclado

  2. Incluya en la lista blanca una IP en CSF para conexiones MySQL remotas

  3. Script de configuración de OpenVPN para Debian y Ubuntu

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

  5. Cómo crear un pem para su SSL existente

Cómo permitir conexiones remotas a MySQL

Cómo agregar un host remoto de Linux y Windows a Icinga 2 para monitoreo

MySQL:ajuste y optimización del rendimiento

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

Supervise las conexiones y consultas de MySQL con mytop

Cómo permitir conexiones remotas a MySQL