Базы данных AlterOffice-cloud — различия между версиями
м (→Настройка клиент MariaDB для использования SSL) |
м (→Настройка сервер MariaDB для использования SSL) |
||
Строка 99: | Строка 99: | ||
ssl-cert=/etc/my.cnf.d/ssl/certs/MariaDB_server.crt<br> | ssl-cert=/etc/my.cnf.d/ssl/certs/MariaDB_server.crt<br> | ||
sl-key=/etc/my.cnf.d/ssl/private/MariaDB_server.key <br> | sl-key=/etc/my.cnf.d/ssl/private/MariaDB_server.key <br> | ||
+ | <br> | ||
+ | bind-address=0.0.0.0 | ||
</blockquote> | </blockquote> | ||
Версия 13:31, 20 сентября 2023
Содержание
- 1 SQLite
- 2 MariaDB
- 2.1 Установка MariaDB
- 2.2 Безопасное соединение с MariaDB
- 2.2.1 Улучшение безопасности установки
- 2.2.2 Сертификаты
- 2.2.3 Создание CA/корневого сертификата
- 2.2.4 Создание сертификата сервера
- 2.2.5 Создание сертификата клиента
- 2.2.6 Как проверить сертификаты?
- 2.2.7 Настройка сервер MariaDB для использования SSL
- 2.2.8 Настройка клиент MariaDB для использования SSL
- 2.2.9 Проверка
- 3 PostgreSQL
- 4 Oracle
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
bind-address=0.0.0.0
Сохраните и закройте файл, нажав три клавиши по очереди ":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 ###
Сохраните и закройте файл.
Проверка
На клиентском сервере удалим возможные сертификаты и ключи
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. Этот продукт здесь не будет рассмотрен.