Безопасный MariaDB с поддержкой SSL в Ubuntu 16.04

MariaDB является бесплатной базой данных с открытым исходным кодом и является наиболее широко используемой заменой MySQL. Он сделан разработчиками MySQL и предназначен для бесплатного использования под GNU GPL. Это очень быстрый, масштабируемый и поставляется с богатым набором функций, которые делают его очень универсальным для широкого спектра вариантов использования.

Из этого туториала Вы узнаете, как установить и настроить MariaDB с поддержкой SSL в Ubuntu 16.04.

Требования

  • Свежий экземпляр Ubuntu 16.04 Vultr.
  • Пользователь без полномочий root с правами sudo.
  • На экземпляре сервера настроен статический 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. Этот скрипт позволяет установить пароль пользователя root, удалить анонимных пользователей, запретить удаленный вход в систему root и удалить тестовую базу данных:

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 []:[email protected]

Затем создайте закрытый ключ для сервера с помощью следующей команды:

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: Настройте сервер MariaDB для использования SSL

Вы должны иметь все сертификаты и закрытый ключ; и теперь вам нужно будет настроить 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_sslи have_opensslзначения включены в выводе выше.

Шаг 4. Создание пользователя с привилегиями SSL

Создайте удаленного пользователя, который имеет право доступа к серверу MariaDB через SSL. Сделайте это, выполнив следующую команду:

Сначала войдите в оболочку 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: Настройте клиент MariaDB для использования SSL

Все сертификаты и ключ готовы для клиента. Затем вам нужно будет скопировать все клиентские сертификаты на любой клиентский компьютер, на котором вы хотите запустить клиент 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 [email protected]:/etc/mysql-ssl/client-* /etc/mysql-ssl/

Затем вам нужно будет настроить клиент MariaDB для использования SSL. Вы можете сделать это, создав /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:       [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

Вы должны увидеть SSL: Cipher in use is DHE-RSA-AES256-SHAв выводе выше. Это означает, что ваше соединение теперь защищено с помощью SSL.

Вывод

Поздравляем! Вы успешно настроили сервер MariaDB с поддержкой SSL. Теперь вы можете предоставить доступ другим клиентам для доступа к серверу MariaDB через SSL.



Leave a Comment

Как установить и настроить OrientDB Community Edition для CentOS 7

Как установить и настроить OrientDB Community Edition для CentOS 7

OrientDB - это мультимодельная СУБД NoSQL с открытым исходным кодом нового поколения. Благодаря поддержке нескольких моделей данных OrientDB может обеспечить большую функциональность и гибкость в

Как установить Apache Cassandra 3.11.x на Debian 9

Как установить Apache Cassandra 3.11.x на Debian 9

Используете другую систему? Apache Cassandra - бесплатная система управления базами данных NoSQL с открытым исходным кодом, разработанная для обеспечения масштабируемости, высокой

Как сделать резервную копию и восстановить базы данных PostgreSQL в Ubuntu 16.04

Как сделать резервную копию и восстановить базы данных PostgreSQL в Ubuntu 16.04

Введение PostgreSQL - это бесплатная система управления базами данных с открытым исходным кодом, которая может использоваться для хранения информации, связанной с веб-сайтами. Также известно

Обеспечение безопасности MongoDB

Обеспечение безопасности MongoDB

MongoDB не является безопасным по умолчанию. Если вы устанавливаете MongoDB и запускаете его без настройки для аутентификации, у вас будут плохие времена

Настройте MariaDB на OpenBSD 6

Настройте MariaDB на OpenBSD 6

В этой статье я покажу вам, как установить MariaDB на OpenBSD 6 и настроить его так, чтобы он был доступен для веб-сервера с поддержкой chroot (Apache или Nginx). Вы будете также

Резервное копирование баз данных MySQL

Резервное копирование баз данных MySQL

MySQL - самое популярное программное обеспечение в мире, используемое для баз данных. Убедиться, что у вас есть резервные копии вашей базы данных, очень важно. Эта практика позволяет

Как установить PostgreSQL 11.1 на Arch Linux

Как установить PostgreSQL 11.1 на Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Доступ в Sudo. Команды, необходимые для запуска с правами root, начинаются с префикса #, и один

Как установить и настроить ArangoDB в CentOS 7

Как установить и настроить ArangoDB в CentOS 7

Используете другую систему? Введение ArangoDB - это база данных NoSQL с открытым исходным кодом с гибкой моделью данных для документов, графиков и значений ключей. это

Настройка Barnyard 2 со Snort

Настройка Barnyard 2 со Snort

Barnyard2 - это способ хранения и обработки двоичных выходов Snort в базе данных MySQL. Прежде чем начать Пожалуйста, обратите внимание, что если у вас нет снор

Установите более новые версии MongoDB на Debian 7

Установите более новые версии MongoDB на Debian 7

MongoDB - это быстрая и мощная база данных NoSQL. Однако репозитории Debian обновляются медленно и часто содержат очень старые версии пакетов. Это учебник

Как установить Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Как установить Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Используете другую систему? Apache Cassandra - бесплатная система управления базами данных NoSQL с открытым исходным кодом, разработанная для обеспечения масштабируемости, высокой

Как установить MongoDB 4.0 на Arch Linux

Как установить MongoDB 4.0 на Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью) Доступ к Sudo: Команды, необходимые для запуска с правами root, начинаются с префикса #, а один

Как установить MariaDB 10.3 или MySQL 8.0 в Arch Linux

Как установить MariaDB 10.3 или MySQL 8.0 в Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Доступ в Sudo: Команды, необходимые для запуска с правами root, начинаются с префикса #, а один

Как установить MyCLI в Linux (CentOS, Debian, Fedora и Ubuntu)

Как установить MyCLI в Linux (CentOS, Debian, Fedora и Ubuntu)

Введение MyCLI - это клиент командной строки для MySQL и MariaDB, который позволяет выполнять автозаполнение и помогает с синтаксисом ваших команд SQL. MyCL

Установите InfluxDB на Debian Jessie с помощью Telegraf

Установите InfluxDB на Debian Jessie с помощью Telegraf

Введение InfluxDB - это база данных на основе временных рядов, написанная на Go. InfluxDB имеет много практических применений, одним из которых является хранение данных мониторинга на серверах. я

Как установить Laravel GitScrum на CentOS 7

Как установить Laravel GitScrum на CentOS 7

Laravel GitScrum, или GitScrum, - это инструмент повышения производительности с открытым исходным кодом, разработанный, чтобы помочь командам разработчиков реализовать методологию Scrum аналогично

Как установить phpRedisAdmin на CentOS 7

Как установить phpRedisAdmin на CentOS 7

phpRedisAdmin - это веб-приложение, которое управляет базами данных Redis с интуитивно понятным графическим интерфейсом пользователя. Этот урок объяснит, как установить

Как установить Redis на Ubuntu 15.10

Как установить Redis на Ubuntu 15.10

Redis - это решение для хранения данных со значением ключа, которое часто называют базой данных NoSQL. Он может достигать очень высоких скоростей чтения / записи, потому что это бу

Установите RockMongo на CentOS 7

Установите RockMongo на CentOS 7

RockMongo - это веб-инструмент управления MongoDB, похожий на инструмент управления MySQL: phpMyAdmin. Этот учебник будет охватывать процесс установки

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше