GNU/Linux >> Linux の 問題 >  >> Panels >> Panels

Ubuntu16.04でMySQLのリモート接続と安全な接続を構成する方法

この記事では、Ubuntu16.04VPSでMySQLのリモート接続と安全な接続を構成する方法を説明します。暗号化されていない接続を使用してリモートMariaDB/MySQLサーバーに接続している場合、ネットワークにアクセスできるすべてのユーザーが、クライアントとサーバー間で送受信されるデータを監視および分析できます。このガイドは他のLinuxVPSシステムでも機能するはずですが、Ubuntu16.04VPS用にテストおよび作成されています。

1。 SSH経由でVPSにログイン

ssh my_sudo_user@my_server

このチュートリアルの手順は、デフォルト構成でMySQL5.7をインストールしていることを前提としています。

SSL接続を有効にする:

2。新しいローカル認証局を作成する

サーバー証明書とクライアント証明書の両方に署名するために使用する自己署名ルート証明書として、ローカル認証局を使用します。新しいローカル認証局ファイルを作成するには、次のコマンドを実行します。

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。サーバー証明書とキーを生成する

サーバー証明書とキーを生成するには、次のコマンドを発行します。

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。クライアントの証明書とキーを生成する

次に、クライアント証明書を生成する必要があります。次のコマンドを実行して、クライアント証明書とキーを生成します。

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

CA署名付きSSL証明書が必要な場合は、ここで信頼できるSSL証明書を購入できます。

5。 MySQLサーバーのSSL接続を有効にする

テキストエディタでMySQL構成ファイルを開きます:

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

次の行のコメントを解除します:

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

ファイルを保存してMySQLサービスを再起動します:

sudo systemctl restart mysql 

SSLが有効になっていることを確認するには、MySQLサーバーにログインします

mysql -uroot -p

次のコマンドを実行します:

mysql> show variables LIKE '%ssl%';

出力は次のようになります。

+---------------+----------------------------+
| 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。 SSL経由のリモート接続を有効にする

デフォルトでは、MySQLはローカルホスト上の接続のみをリッスンします。リモート接続を有効にするには、サーバーでMySQLを再構成して、すべてのインターフェイスでリッスンする必要があります。これを行うには、MySQL構成ファイルを開きます。

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

と変更

bind-address            = 127.0.0.1

bind-address            = 0.0.0.0

変更を有効にするには、次のコマンドを使用してMySQLサーバーを再起動します。

sudo systemctl restart mysql 

MySQLサーバーがすべてのインターフェースでリッスンしていることを確認します:

sudo netstat -anp | grep 3306

出力は次のようになります。

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

MySQLクライアントがMySQLサーバーに接続できるようにするには、データベースユーザーにリモートサーバー上のデータベースへのアクセスを許可する必要があります。

たとえば、dbuserへのアクセスを許可する場合 database_nameへのユーザー データベースを使用してSSLを強制するには、rootとしてMySQLシェルにログインし、次のコマンドを実行します。

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

ここで、192.168.1.10 MySQLクライアントマシンのIPアドレスです。

次に、以前に生成されたSSL証明書を使用するようにMySQLクライアントを構成する必要があります。次のファイルをMySQLサーバーからMySQLクライアントマシンにコピーします。

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

7。 MySQLクライアントの構成

MySQLクライアント構成を開き、次の行を追加します。

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

8。接続をテストする

これで、クライアントマシンからMySQLデータベースサーバーへの接続をテストできます。

mysql -udbuser -pdbuserpassword -h 192.168.1.5

ここで、192.168.1.5 MySQLデータベースサーバーのIPアドレスです。

それでおしまい。これで、Ubuntu16.04VPSでMySQLのリモート接続と安全な接続が正常に構成されました。 MySQLの安全な接続の詳細については、MySQLの公式ドキュメントを参照してください。

もちろん、Ubuntu VPSホスティングサービスのいずれかを使用している場合は、Ubuntu 16.04でMySQLのリモート接続と安全な接続を構成する必要はありません。その場合は、専門のLinux管理者にMySQLのリモート接続と安全な接続を構成するよう依頼するだけです。あなたのためのUbuntu16.04。 24時間年中無休でご利用いただけます。リクエストはすぐに処理されます。

PS 。 Ubuntu 16.04でMySQLのリモート接続と安全な接続を構成する方法に関するこの投稿が気に入った場合は、左側のボタンを使用してソーシャルネットワーク上の友達と共有するか、下に返信を残してください。ありがとう。


Panels
  1. Ubuntu14.04VPSにOPcacheを使用してSuiteCRMをインストールおよび構成する方法

  2. Ubuntu14.04にTinyproxyをインストールして設定する方法

  3. Ubuntu16.04にLibreNMSをインストールして構成する方法

  1. Ubuntu16.04にOpenSSHをインストールして構成する方法

  2. Ubuntu 18.04にWordPressをインストールし、リモートデータベースを使用するように構成する方法

  3. Ubuntu20.04にFail2banをインストールして構成する方法

  1. Ubuntu20.04にMySQLをインストールして使用する方法

  2. Ubuntu20.04にLibreNMSをインストールして構成する方法

  3. Ubuntu18.04にstrongSwanVPNをインストールして構成する方法