Базы данных AlterOffice-cloud — различия между версиями

Материал из Wiki AlterOS
Перейти к: навигация, поиск
м (Настройка сервер MariaDB для использования SSL)
(Настройка сервер MariaDB для использования SSL)
Строка 103: Строка 103:
 
Сохраните и закройте файл, нажав три клавиши по очереди ":wq". Вы можете перезапустить mariadb следующим образом:
 
Сохраните и закройте файл, нажав три клавиши по очереди ":wq". Вы можете перезапустить mariadb следующим образом:
 
     sudo -i systemctl restart mariadb
 
     sudo -i systemctl restart mariadb
 +
            systemctl status mariadb  --no-pager --full
  
 
==== Настройка клиент MariaDB для использования SSL ====
 
==== Настройка клиент MariaDB для использования SSL ====

Версия 10:58, 20 сентября 2023

SQLite

SQLite в основном поддерживается для тестовых установок и не рекомендуется для производственных серверов.

MariaDB

MariaDB/MySQL — канонический выбор для AlterOffice-cloud

Установка MariaDB

Установка в общем виде:

   sudo yum install mariadb-server mariadb

Установка инсталлятором для AlterOffice-cloud:

   sudo yum install  MariaDB-server MariaDB-client

Безопасное соединение с MariaDB

Для настроек необходимо, чтобы администрир баз данных был sudoers, т. е. в группе wheel. Чтобы добавить пользователя в группу:

   usermod -aG wheel username

Чтобы удалить пользователя из группы, используйте команду gpasswd с опцией -d следующим образом:

   gpasswd -d wheel username

Улучшение безопасности установки

   mysql_secure_installation

Эта программа позволяет вам повысить безопасность вашей установки MariaDB следующими способами:

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

Сертификаты

Создайте каталог для сертификатов:

   sudo -i mkdir -p /etc/my.cnf.d/ssl/{private,certs}
   cd /etc/my.cnf.d/ssl

При создании сертификатов необходимо корректно заполнить поля, в часности поле CN/Common Name/Общее имя:

  • имя корневого сертификата: MariaDB_CA
  • имя сервера сертификата: MariaDB_server
  • имя клиента сертификата: MariaDB_client

Создание CA/корневого сертификата

   # MariaDB_CA
   sudo -i /usr/bin/openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout /etc/my.cnf.d/ssl/private/MariaDB_CA.key -out /etc/my.cnf.d/ssl/certs/MariaDB_CA.crt

Создание сертификата сервера

Для создания ключа сервера, выполните:

   # MariaDB_server
   sudo -i /usr/bin/openssl  req -newkey rsa:4096 -days 365 -nodes -keyout /etc/my.cnf.d/ssl/private/MariaDB_server.key -out /etc/my.cnf.d/ssl/private/MariaDB_server_req.key

Затем обработайте ключ RSA сервера, для этого введите:

   sudo -i /usr/bin/openssl rsa -in /etc/my.cnf.d/ssl/private/MariaDB_server.key -out /etc/my.cnf.d/ssl/private/MariaDB_server.key
   # Вывод: writing RSA key

Наконец, подпишите сертификат сервера, для этого запустите:

   sudo -i /usr/bin/openssl x509 -req -in /etc/my.cnf.d/ssl/private/MariaDB_server_req.key -days 365 -CA /etc/my.cnf.d/ssl/certs/MariaDB_CA.crt -CAkey /etc/my.cnf.d/ssl/private/MariaDB_CA.key -set_serial 01 -out /etc/my.cnf.d/ssl/certs/MariaDB_server.crt

Теперь у вас должны появиться дополнительные файлы:

  • /etc/my.cnf.d/ssl/certs/MariaDB_server.crt – MariaDB файл сертификата сервера.
  • /etc/my.cnf.d/ssl/private/MariaDB_server.key – MariaDB файл ключа сервера.

Вы должны использовать не менее двух файлов на сервере MariaDB и любых других узлах, которые вы собираетесь использовать для трафика кластера/репликации. Эти два файла будут защищать связь на стороне сервера.

Создание сертификата клиента

Клиент mysql, и приложение PHP/Python/Perl/Ruby будет использовать сертификат клиента для защиты соединения клиента. Вы должны установить следующие файлы на всех ваших клиентах, включая веб-сервер. Чтобы создать клиентский ключ, запустите:

   # MariaDB_client
   sudo -i /usr/bin/openssl req -newkey rsa:4096 -days 365 -nodes -keyout /etc/my.cnf.d/ssl/private/MariaDB_client.key -out /etc/my.cnf.d/ssl/private/MariaDB_client_req.key

Затем обработайте ключ клиента RSA, для этого введите

   sudo -i /usr/bin/openssl rsa -in /etc/my.cnf.d/ssl/private/MariaDB_client.key -out /etc/my.cnf.d/ssl/private/MariaDB_client.key
   # Вывод: writing RSA key

Наконец, подпишите сертификат клиента, для этого запустите:

   sudo -i /usr/bin/openssl x509 -req -in /etc/my.cnf.d/ssl/private/MariaDB_client_req.key -days 365 -CA /etc/my.cnf.d/ssl/certs/MariaDB_CA.crt -CAkey /etc/my.cnf.d/ssl/private/MariaDB_CA.key -set_serial 01 -out /etc/my.cnf.d/ssl/certs/MariaDB_client.crt

Как проверить сертификаты?

Введите следующую команду для проверки сертификатов, чтобы убедиться, что все было сделано правильно:

   /usr/bin/openssl verify -CAfile /etc/my.cnf.d/ssl/certs/MariaDB_CA.crt /etc/my.cnf.d/ssl/certs/MariaDB_server.crt /etc/my.cnf.d/ssl/certs/MariaDB_client.crt
   # Примеры возможных выводов данных, когда нет ошибок:
   # /etc/my.cnf.d/ssl/certs/MariaDB_server.crt: OK
   # /etc/my.cnf.d/ssl/certs/MariaDB_client.crt: OK

Настройка сервер MariaDB для использования SSL

Отредактируйте файл vi /etc/my.cnf.d/server.cnf следующим образом:

   sudo -i vi /etc/my.cnf.d/server.cnf

Нажмите клавишу "i" и вставьте в секцию [mysqld] следующие настройки:

### MySQL Server ###
## Защита базы данных с помощью SSL и сертификатов ##
## Нет контроля над используемым уровнем протокола. ##
## mariadb будет использовать TLSv1.0 или более позднюю версию. ##
ssl
ssl-ca=/etc/my.cnf.d/ssl/certs/MariaDB_CA.crt
ssl-cert=/etc/my.cnf.d/ssl/certs/MariaDB_server.crt
sl-key=/etc/my.cnf.d/ssl/private/MariaDB_server.key

Сохраните и закройте файл, нажав три клавиши по очереди ":wq". Вы можете перезапустить mariadb следующим образом:

   sudo -i systemctl restart mariadb
           systemctl status mariadb  --no-pager --full

Настройка клиент MariaDB для использования SSL

Для использования SSL отредактируйте /etc/my.cnf.d/mysql-clients.cnf:

   sudo -i vi /etc/my.cnf.d/mysql-clients.cnf

Добавьте в раздел [mysql]:

## MySQL Client Configuration ##
ssl-ca=/etc/my.cnf.d/ssl/certs/MariaDB_CA.crt
ssl-cert=/etc/my.cnf.d/ssl/certs/MariaDB_client.crt
ssl-key=/etc/my.cnf.d/ssl/private/MariaDB_client.key
### This option is disabled by default ###
### ssl-verify-server-cert ###

bind-address=0.0.0.0

Сохраните и закройте файл.

Проверка

На клиентском сервере удалим возможные сертификаты и ключи

   sudo -i rm -rf /etc/my.cnf.d/ssl/{private,certs}
   sudo -i mkdir /etc/my.cnf.d/ssl/{private,certs}

и получим действующие сертификаты и ключ

   sudo -i rsync -arv user@MariaDB_server:/etc/my.cnf.d/ssl/private/MariaDB_client.key /etc/my.cnf.d/ssl/private/MariaDB_client.key
   sudo -i rsync -arv user@MariaDB_server:/etc/my.cnf.d/ssl/certs/MariaDB_client.crt /etc/my.cnf.d/ssl/certs/MariaDB_client.crt
   sudo -i rsync -arv user@MariaDB_server:/etc/my.cnf.d/ssl/certs/MariaDB_CA.crt /etc/my.cnf.d/ssl/certs/MariaDB_CA.crt

PostgreSQL

PostgreSQL обеспечивает более высокую производительность и в целом имеет меньше особенностей по сравнению с MariaDB/MySQL.

Oracle

В списке поддерживаемых баз данных также есть база данных Oracle. Этот продукт здесь не будет рассмотрен.