Ubuntu 16.04でSSLサポートを使用してMariaDBを保護する

MariaDBは無料のオープンソースデータベースであり、MySQLに代わって最も広く使用されているドロップイン代替品です。これはMySQLの開発者によって作成され、GNU GPLの下で無料のままでいることを目的としています。非常に高速でスケーラブルであり、豊富な機能セットを備えているため、さまざまなユースケースに対応できます。

このチュートリアルでは、Ubuntu 16.04にSSLをサポートするMariaDBをインストールして構成する方法について説明します。

必要条件

  • 新しいUbuntu 16.04 Vultrインスタンス。
  • sudo特権を持つ非rootユーザー。
  • 静的IPアドレス192.168.0.190がサーバーインスタンスに構成されています。
  • 静的IPアドレス192.168.0.191がクライアントマシンで設定されています。

ステップ1:MariaDBをインストールする

デフォルトでは、MariaDBの最新バージョンはUbuntu 16.04リポジトリでは利用できません。したがって、MariaDBリポジトリをシステムに追加する必要があります。

まず、次のコマンドでキーをダウ��ロードします。

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

次に、MariaDBリポジトリを/etc/apt/sources.listファイルに追加します。

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

次のコマンドでaptインデックスを更新します。

sudo apt-get update -y

aptインデックスが更新されたら、次のコマンドを使用してMariaDBサーバーをインストールします。

sudo apt-get install mariadb-server -y

MariaDBサーバーを起動し、起動時に起動できるようにします。

sudo systemctl start mysql
sudo systemctl enable mysql

次に、mysql_secure_installationスクリプトを実行してMariaDBのインストールを保護する必要があります。このスクリプトを使用すると、ルートパスワードの設定、匿名ユーザーの削除、リモートルートログインの禁止、およびテストデータベースの削除を行うことができます。

sudo mysql_secure_installation

ステップ2:サーバーのSSL証明書と秘密鍵を作成する

最初に、すべてのキーと証明書ファイルを格納するディレクトリを作成します。

sudo mkdir /etc/mysql-ssl

次に、/etc/mysql-ssl次のコマンドでディレクトリを変更し、CA証明書と秘密鍵を作成します。

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

以下に示すように、すべての質問に答えてください。

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 []:example@example.com

次に、次のコマンドでサーバーの秘密鍵を作成します。

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

前のコマンドと同じように、すべての質問に答えてください。

次に、次のコマンドを使用して、サーバーの秘密鍵をRSAタイプの鍵にエクスポートします。

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

最後に、CA証明書を使用して次のようにサーバー証明書を生成します。

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

次のコマンドを使用して、すべての証明書とキーを表示できます。

ls

次の出力が表示されます。

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

完了したら、次のステップに進むことができます。

ステップ3:SSLを使用するようにMariaDBサーバーを設定する

すべての証明書と秘密鍵が必要です。次に、キーと証明書を使用するようにMariaDBを設定する必要があります。これを行うには、/etc/mysql/mariadb.conf.d/50-server.cnfファイルを編集します。

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

[mysqld]セクションの下に次の行を追加します。

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 = *

ファイルを保存してから、MariaDBサービスを再起動してこれらの変更を適用します。

sudo systemctl restart mysql

これで、SSL構成が機能しているかどうかを次のクエリで確認できます。

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

構成が成功した場合は、次の出力が表示されます。

+---------------+--------------------------------+
| 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  |
+---------------+--------------------------------+

上記の出力ではhave_sslhave_openssl値が有効になっていることに注意してください。

ステップ4:SSL特権を持つユーザーを作成する

SSL経由でMariaDBサーバーにアクセスする権限を持つリモートユーザーを作成します。これを行うには、次のコマンドを実行します。

最初に、MySQLシェルにログインします。

mysql -u root -p

次に、ユーザーremoteを作成し、SSL経由でサーバーにアクセスするための特権を付与します。

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

次に、次のコマンドで特権をフラッシュします。

MariaDB [(none)]>FLUSH PRIVILEGES;

最後に、次のコマンドでMySQLシェルを終了します。

MariaDB [(none)]>exit;

注: 192.168.0.191は、リモートユーザー(クライアント)マシンのIPアドレスです。

これで、サーバーはリモートユーザーへの接続を許可する準備ができました。

ステップ5:クライアント証明書を作成する

サーバー側の設定が完了しました。次に、クライアントの新しいキーと証明書を作成する必要があります。

サーバーマシンで、次のコマンドを使用してクライアントキーを作成します。

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

次に、次のコマンドでクライアントRSAキーを処理します。

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

最後に、次のコマンドでクライアント証明書に署名します。

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

手順6:SSLを使用するようにMariaDBクライアントを構成する

すべての証明書とキーがクライアントで使用できるようになります。次に、すべてのクライアント証明書を、MariaDBクライアントを実行するクライアントマシンにコピーする必要があります。

MariaDBクライアントをクライアントマシンにインストールする必要があります。

まず、クライアントマシンで、次のコマンドを使用してMariaDBのキーをダウンロードします。

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

次に、MariaDBリポジトリを/etc/apt/sources.listファイルに追加します。

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

次に、次のコマンドでaptインデックスを更新します。

sudo apt-get update -y

aptインデックスが更新されたら、次のコマンドを使用して、MariaDBクライアントをクライアントマシンにインストールします。

sudo apt-get install mariadb-client -y

次に、すべての証明書を格納するディレクトリを作成します。

sudo mkdir /etc/mysql-ssl

次に、次のコマンドを使用して、サーバーマシンからクライアントマシンにすべてのクライアント証明書をコピーします。

sudo scp root@192.168.0.190:/etc/mysql-ssl/client-* /etc/mysql-ssl/

次に、SSLを使用するようにMariaDBクライアントを設定する必要があります。これを行うには、/etc/mysql/mariadb.conf.d/50-mysql-clients.cnfファイルを作成し ます。

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

次の行を追加します。

[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

完了したらファイルを保存します。

手順7:リモート接続を確認する

すべてが設定されたので、MariaDBサーバーに正常に接続できるかどうかを確認します。

クライアントマシンで、次のコマンドを実行してMariaDBサーバーに接続します。

mysql -u remote -h 192.168.0.190 -p mysql

remoteユーザーパスワードの入力を求められます。パスワードを入力すると、リモートのMariaDBサーバーにログインします。

次のコマンドで接続のステータスを確認します。

MariaDB [mysql]> status

次の出力が表示されます。

--------------
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:       remote@192.168.0.191
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

SSL: Cipher in use is DHE-RSA-AES256-SHA上記の出力が表示されるはずです。つまり、接続はSSLで保護されています。

結論

おめでとう!SSLサポートを使用してMariaDBサーバーを正常に構成しました。SSL経由でMariaDBサーバーにアクセスするために、他のクライアントにアクセス権を付与できます。



Leave a Comment

MongoDBの保護

MongoDBの保護

MongoDBはデフォルトでは安全ではありません。MongoDBをインストールし、認証用に構成せずにMongoDBを起動する場合は、時間がかかります

CentOS 7にLaravel GitScrumをインストールする方法

CentOS 7にLaravel GitScrumをインストールする方法

Laravel GitScrum(GitScrum)は、開発チームがスクラム手法を同様の方法で実装できるように設計されたオープンソースの生産性ツールです。

Arch LinuxにPostgreSQL 11.1をインストールする方法

Arch LinuxにPostgreSQL 11.1をインストールする方法

前提条件最新のArch Linuxを実行しているVultrサーバー(この記事を参照してください。)Sudoアクセス。rootとして実行する必要のあるコマンドには、先頭に#が付いています。

OpenBSD 6でMariaDBを設定する

OpenBSD 6でMariaDBを設定する

この記事では、MariaDBをOpenBSD 6にインストールし、chrootされたWebサーバー(ApacheまたはNginx)からアクセスできるように構成する方法を紹介します。あなたはアルになります

Ubuntu 16.04にArangoDBをインストールして使用する方法

Ubuntu 16.04にArangoDBをインストールして使用する方法

別のシステムを使用していますか?はじめにArangoDBは、ドキュメント、グラフ、Key-Valueの柔軟なデータモデルを備えたオープンソースのNoSQLデータベースです。です

MySQLデータベースのバックアップ

MySQLデータベースのバックアップ

MySQLは、データベースに使用されている世界で最も人気のあるソフトウェアです。データベースのバックアップがあることを確認することは非常に重要です。この練習により

複数のMySQLまたはMariaDBデータベースを自動的にバックアップ

複数のMySQLまたはMariaDBデータベースを自動的にバックアップ

はじめにこの記事では、カスタムbashスクリプトを使用して、同じマシン上にある複数のMySQLまたはMariaDBデータベースをバックアップする方法を順を追って説明します。

CentOS 7にApache Cassandra 3.11.xをインストールする方法

CentOS 7にApache Cassandra 3.11.xをインストールする方法

別のシステムを使用していますか?Apache Cassandraは無料でオープンソースのNoSQLデータベース管理システムであり、スケーラビリティと高度な機能を提供するように設計されています

CentOS 7にArangoDBをインストールして構成する方法

CentOS 7にArangoDBをインストールして構成する方法

別のシステムを使用していますか?はじめにArangoDBは、ドキュメント、グラフ、Key-Valueの柔軟なデータモデルを備えたオープンソースのNoSQLデータベースです。です

Debian 7に新しいバージョンのMongoDBをインストールする

Debian 7に新しいバージョンのMongoDBをインストールする

MongoDBは高速で強力なNoSQLデータベースです。ただし、Debianリポジトリは更新が遅く、非常に古いバージョンのパッケージが含まれていることがよくあります。このtutoria

Arch LinuxにMariaDB 10.3またはMySQL 8.0をインストールする方法

Arch LinuxにMariaDB 10.3またはMySQL 8.0をインストールする方法

前提条件最新のArch Linuxを実行しているVultrサーバー(この記事を参照してください。)Sudoアクセス:rootとして実行する必要のあるコマンドには、先頭に#が付いています。

Arch LinuxにMongoDB 4.0をインストールする方法

Arch LinuxにMongoDB 4.0をインストールする方法

前提条件最新のArch Linuxを実行しているVultrサーバー(この記事を参照)Sudoアクセス:rootとして実行する必要のあるコマンドには、先頭に#が付いています。

CentOS 7にphpRedisAdminをインストールする方法

CentOS 7にphpRedisAdminをインストールする方法

phpRedisAdminは、直感的なグラフィックユーザーインターフェイスでRedisデータベースを管理するWebアプリケーションです。このチュートリアルでは、インストール方法を説明します

Debian 9にApache Cassandra 3.11.xをインストールする方法

Debian 9にApache Cassandra 3.11.xをインストールする方法

別のシステムを使用していますか?Apache Cassandraは無料でオープンソースのNoSQLデータベース管理システムであり、スケーラビリティと高度な機能を提供するように設計されています

Ubuntu 15.10にRedisをインストールする方法

Ubuntu 15.10にRedisをインストールする方法

RedisはKey-Valueデータストレージソリューションであり、NoSQLデータベースと呼ばれることもあります。インメモリbuであるため、非常に高い読み取り/書き込み速度を実現できます。

Linux(CentOS、Debian、Fedora、Ubuntu)にMyCLIをインストールする方法

Linux(CentOS、Debian、Fedora、Ubuntu)にMyCLIをインストールする方法

はじめにMyCLIは、MySQLおよびMariaDBのコマンドラインクライアントであり、オートコンプリートを可能にし、SQLコマンドの構文を支援します。MyCL

Ubuntu 16.04でMySQL / MariaDBデータベースをバックアップ、復元、転送する方法

Ubuntu 16.04でMySQL / MariaDBデータベースをバックアップ、復元、転送する方法

バックアップは、データベースを扱う上で重要な部分です。企業サイトを運営している場合でも、WordPressをホストしている場合でも、バックアップすることが重要です。

RedisでWordPressを設定する方法

RedisでWordPressを設定する方法

Redisはデータ構造ストアです。キャッシング時の最適化されたアプローチにより、パフォーマンスが大幅に向上するため、WordPressサイトで人気があります。

Dockerを使用してCentOS 7でSQL Server 2017(MS-SQL)を開始する

Dockerを使用してCentOS 7でSQL Server 2017(MS-SQL)を開始する

前提条件Dockerエンジン1.8以降。最低4GBのディスク容量。4GB以上のRAM。ステップ1. DockerをインストールするSQL-Serverをインストールするには、Docker mus

Snortを使用してBarnyard 2をセットアップする

Snortを使用してBarnyard 2をセットアップする

Barnyard2は、Snortからのバイナリ出力をMySQLデータベースに保存および処理する方法です。始める前にいびきがない場合は注意してください

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。