This is a translation of the original English documentation page. Help us make it better.

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 конфигурација

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

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

  • Означите поље за потврду Database TLS encryption у кораку Конфигурација DBconnection да бисте омогућили шифровање транспорта.
  • Означите поље за потврду Verify database certificate које се појављује када је означено поље TLS encryption да бисте омогућили шифровање помоћу сертификата.

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

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

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

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

Случајеви употребе

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

GUI settings Configuration file Description
...
// Користи се за TLS везу.
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
...
Провери TLS базе података енкрипција
Оставите Провери сертификат базе података неозначено
...
$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 датотеке базе података
...
// Користи се за TLS везу са строго дефинисаном листом шифара.
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '<путања_кључа_датотеке>';
$DB['CERT_FILE'] = '<путања_кључа_датотеке>';
$DB['CA_FILE'] = '<путања_кључа_датотеке>';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = '<листа_шифри>';
...

Или:

...
// Користи се за TLS везу без дефинисане листе шифара - бира је MySQL сервер
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '<путања_датотеке_кључа>';
$DB['CERT_FILE'] = '<путања_датотеке_кључа>';
$DB['CA_FILE'] = '<путања_датотеке_кључа>';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = '';
...
1. Проверите TLS шифровање базе података и Проверите сертификат базе података
2. Наведите путању до TLS датотеке кључа базе података
3. Наведите путању до Database TLS CA датотеке
4. Наведите путању до Database TLS датотеке сертификата
5. Наведите листу TLS шифара базе података (опционо)
...
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '<путања_кључ_датотеке>';
$DB['CERT_FILE'] = '<путања_кључ_датотеке>';
$DB['CA_FILE'] = '<путања_кључ_датотеке>';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = ' ' ';
...
1. Означите Database TLS enkription и Verify database certificate
2. Наведите путању до Database TLS key file
3. Наведите путању до Database TLS CA file
4. Наведите путању до Database TLS file certificate
5. Означите Database host verification

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

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

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

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

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