5 Сигурна веза са базом података

Преглед

Ова секција пружа Zabbix кораке за подешавање и примере конфигурације за сигурне TLS везе између:

Database Zabbix components
MySQL Zabbix кориснички интерфејс, Zabbix сервер, Zabbix прокси
PostgreSQL Zabbix кориснички интерфејс, Zabbix сервер, Zabbix прокси

Да бисте подесили шифровану везу унутар DBMS-а, погледајте званичну документацију произвођача за детаље:

  • MySQL: изворни и репликативни сервери базе података.
  • MySQL: групна репликација итд. сервери базе података.
  • PostgreSQL опције шифровања.

Сви примери су засновани на GA издањима MySQL CE (8.0) and PgSQL (13) доступних преко званичних репозиторија који користе CentOS 8.

Захтеви

За подешавање шифровања потребно је следеће:

  • Оперативни систем подржан од стране програмера са OpenSSL >=1.1.X или алтернатива.

Препоручује се избегавање OS у статусу на крају животног века, посебно у случају нових инсталација

  • Мотор базе података (RDBMS) инсталиран и одржаван од стране званичног репозиторијума који обезбеђује програмер. Оперативни системи се често испоручују са застарелим  верзијама софтвера базе података које не подржавају енкрипцију, на пример, системи засновани на RHEL 7 и PostgreSQL 9.2, као и MariaDB 5.5 без подршке за енкрипцију.
Терминологија

Постављање ове опције намеће коришћење TLS конекције са базом података из Zabbix server/proxy и корисничким интерфејсом за базу података:

  • required - успостављање конекције коришћењем TLS-а као начин транспорта без провере идентитета;
  • verify_ca - успостављање конекције коришћењем TLS-а и провера сертификата;
  • verify_full - успостављање конекције коришћењем TLS-а, провера сертификата и провера да ли је идентитет базе података (CN) наведен у DBHost одговара њеном сертификату;

Zabbix конфигурација

Кориснички интерфејс за базу података

Сигурна веза са базом података може се конфигурисати током инсталације корисничког интерфејса:

  • Означите Енкрипцију TLS базе података поље за потврду у Конфигурацији DB конекције корак за омогућавање транспортног шифровања.
  • Означите поље за потврду Верификуј сертификат базе података које се појављује када је поље TLS енкрипција означено да би се омогућило шифровање са сертификатима.

За MySQL, опционо поље TLS шифровање базе података је онемогућено, ако је Домаћин базе података постављен на localhost, јер веза која користи socket датотеку (на Unix-у) или дељену меморију (на Windows-у) не може бити шифрована.
За PostgreSQL, опционо поље * TLS енкрипција* је онемогућено, ако вредност поља Домаћин базе података почиње косом цртом или је поље празно.

Следећи параметри постају доступни у TLS шифровању у режиму сертификата (ако су означена оба поља за потврду):

Parameter Description
Датотека TLS CA базе података Наведите комплетну путању до важећег TLS сертификата (CA) датотеке.
Датотека TLS кључа базе података Наведите комплетну путању до важеће TLS датотеке кључа.
Датотека TLS сертификата базе података Наведите комплетну путању до важеће датотеке TLS сертификата.
Верификација домаћина базе података Означите ово поље за потврду да бисте активирали верификацију домаћина.
Онемогућено за MYSQL, јер PHP MySQL библиотека не дозвољава прескакање корака валидације сертификата сервера.
Листа TLS шифара базе података Наведите прилагођену листу важећих шифара. Формат листе шифара мора бити у складу са OpenSSL стандардом.
Доступно само за MySQL.

TLS параметри морају да указују на важеће датотеке. Ако они указују на непостојеће или неважеће датотеке, то ће довести до грешке при ауторизацији.
Ако се у датотеке сертификата може писати, кориснички интерфејс генерише упозорење у Системским информацијама са извештајем да "Датотеке ТЛС датотеке сертификата морају бити само за читање." (приказује се само ако је PHP корисник власник сертификата).

Сертификати заштићени лозинкама нису подржани.

Примери употребе

Zabbix кориснички интерфејс користи GUI интерфејс за дефинисање могућих опција: required, verify_ca, verify_full. Потребне опције наводе се током инсталације у кораку чаробњака за инсталацију Конфигуришите DB везе. Ове опције се мапирају у конфигурациони фајл (zabbix.conf.php) на следећи начин:

GUI settings Configuration file Description Result
...
// Користи се за TLS конекцију.
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
...
Проверите * TLS шифровање базе података
Оставите
Верификацију сертификата базе података* неозначеним
Омогућите 'required' режим.
...
$DB['ENCRYPTION'] = true;\\ $DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
...
1. Проверите * TLS шифровање базе података* и Верификујте сертификат базе података
2. Наведите путању до TLS CA датотеке базе података
Омогућите режим 'verify_ca'.
...
// Користи се за TLS конекцију са строго дефинисаном листом шифровања.
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '<key_file_path>';
$DB['CERT_FILE'] = '<key_file_path>';
$DB['CA_FILE'] = '<key_file_path>';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = '<cipher_list>';
...

Or:

...
// Користи се за TLS везу без дефинисане листе шифри - изабран од стране MySQL сервера
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '<key_file_path>';
$DB['CERT_FILE'] = '<key_file_path>';
$DB['CA_FILE'] = '<key_file_path>';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = '';
...
1. Проверите * TLS шифровање базе података* и Верификујте сертификат базе података
2. Наведите путању до Датотеке TLS кључа базе података
3. Наведите путању до ТTLS CA датотеке базе података
4. Наведите путању до датотеке TLS сертификата базе података
5. Наведите TLS шифровану листу (опционо)
Омогући режим 'verify_full' за MySQL.
...
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '<key_file_path>';
$DB['CERT_FILE'] = '<key_file_path>';
$DB['CA_FILE'] = '<key_file_path>';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = ' ';
...
1. Проверите * TLS шифровање базе података* и Верификујте сертификат базе података
2. Наведите путању до Датотеке TLS кључа базе података
3. Наведите путању до TLS CA датотеке базе података
4. Наведите путању до Датотеке TLS сертификата базе података
5. Проверите Верификацију домаћина базе података
Омогућите режим 'verify_full' за PostgreSQL.

Погледајте такође: Примери конфигурације шифровања за MySQL, Шифровање промера конфигурације за PostgreSQL.

Zabbix сервер/прокси конфигурација

Сигурне конекције са базом података могу се конфигурисати са одговарајућим параметрима у Zabbix серверу и/или прокси конфигурационој датотеци.

Configuration Result
None Веза са базом података без шифровања.
1. Подесите DBTLSConnect=required Сервер/прокси успоставља TLS везу са базом података. Нешифрована веза није дозвољена.
1. Поставите DBTLSConnect=verify_ca
2. Подесити DBTLSCAFile - одредите датотеку са TLS сертификатом овлашћења
Сервер/прокси успоставља TLS везу са базом података након верификације сертификата базе података.
1. Подесите DBTLSConnect=verify_full
2. Подесите DBTLSCAFile - наведите TLS датотеку ауторитета сертификата
Сервер/прокси успоставља TLS везу са базом података након провере сертификата базе података и идентитета домаћина базе
1. Подесите DBTLSCAFile - наведите TLS датотеку ауторитета сертификата
2. Подесите DBTLSCertFile - наведите датотеку сертификата јавног кључа клијента
3. Подесите DBTLSKeyFile - наведите датотеку приватног кључа клијента
Сервер/прокси обезбеђује клијентски сертификат док се повезује са базом података.
1. Подесите DBTLSCipher - листу шифровања које клијент дозвољава за везе које користе TLS протоколе до 1.2

или DBTLSCipher13 - листу шифара које клијент дозвољава за везе користећи TLS 1.3 протокол
(MySQL) TLS веза се врши помоћу шифре са наведене листе.
(PostgreSQL) Подешавање ове опције сматра се грешком.