Ова секција пружа неколико примера конфигурације шифровања за CentOS 8.2 и MySQL 8.0.21 и може се користити као водич за брзи почетак за шифровање везе са базом података.
Ако је MySQL домаћин постављен на localhost, опције шифровања неће бити доступне. У овом случају веза између Zabbix корисничког интерфејса и база података користи socket датотеку (на Unix-у) или заједничку меморију (на Windows-у) и не може да се шифрује.
Листа шифровања комбинације није ограничена на оне наведене на овој страници. Постоји доступно много више комбинација.
Инсталирајте MySQL базу података из званичног репозиторијума.
Погледајте MySQL документацију за детаље о коришћењу MySQL репозиторијума.
MySQL сервер је спреман да прихвати безбедне везе користећи самопотписани сертификат.
Да бисте видели који корисници користе шифровану везу, покрените следећи упит (Performance Schema треба да буде укључена):
mysql> SELECT sbt.variable_value AS tls_version, t2.variable_value AS cipher, processlist_user AS user, processlist_host AS host FROM performance_schema.status_by_threadAS sbt JOIN performance_schema.threads AS t ON t.thread_id = sbt.thread_id JOIN performance_schema.status_by_thread AS t2 УКЉУЧЕНО t2.thread_id = t.thread_id WHERE sbt.variable_name = 'Ssl_version' и t2.variable_name = 'Ssl_cipher' ORDER BY tls_version;
Модерне верзије базе података су спремне одмах по подешавању за required
режим шифровања. Сертификат на страни сервера ће бити креиран након почетног подешавања и покретања.
Креирајте кориснике и улоге за главне компоненте:
mysql> CREATE USER 'zbx_srv'@'%' IDENTIFIED WITH mysql_native_password BY '<strong_password>', 'zbx_web'@'%' IDENTIFIED WITH mysql_native_password BY '<strong_password>' REQUIRE SSL PASSWORD HISTORY 5;
mysql> CREATE ROLE 'zbx_srv_role', 'zbx_web_role';
mysql> GRANT SELECT, UPDATE, DELETE, INSERT, CREATE, DROP, ALTER, INDEX, REFERENCES ON zabbix.* TO 'zbx_srv_role'; mysql> GRANT SELECT, UPDATE, DELETE, INSERT ON zabbix.* TO 'zbx_web_role';
mysql> GRANT 'zbx_srv_role' TO 'zbx_srv'@'%'; mysql> GRANT 'zbx_web_role' TO 'zbx_web'@'%';
mysql> SET DEFAULT ROLE 'zbx_srv_role' TO 'zbx_srv'@'%'; mysql> SET DEFAULT ROLE 'zbx_web_role' TO 'zbx_web'@'%';
Имајте на уму да се X.509 протокол не користи за проверу идентитета, већ је корисник конфигурисан да користи само шифроване везе. Погледајте MySQL документацију за више детаља о конфигурисању корисника.
Покрени да провериш везу (сокет веза се не може користити за тестирање безбедних веза):
mysql -u zbx_srv -p -h 10.211.55.9 --ssl-mode=REQUIRED
Проверите тренутни статус и доступне пакете шифровања:
mysql> status |
---|
mysql Ver 8.0.21 for Linux on x86_64 (MySQL Community Server - GPL) |
Connection id: 62 Current database: Current user: [email protected] SSL: Cipher in use is TLS_AES_256_GCM_SHA384
mysql> SHOW SESSION STATUS LIKE 'Ssl_cipher_list' *************************** 1. row *************************** Variable_name: Ssl_cipher_list Value: TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES128-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES256-SHA:CAMELLIA256-SHA:CAMELLIA128-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA 1 row in set (0.00 sec)
ГРЕШКА: Није наведен упит
Да бисте омогућили шифровање само за транспорт за везе између Zabbix корисничког интерфејса и база података:
Да бисте омогућили шифровање само за транспорт за везе између сервера и базе података, конфигуришите /etc/zabbix/zabbix_server.conf:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...
Копирајте потребан MySQL CA на Zabbix фронтенд сервер, доделите одговарајуће дозволе да бисте омогућили веб серверу да чита ову датотеку.
Овај режим не ради на RHEL 7 због MySQL библиотека алата.
Да бисте омогућили шифровање са верификацијом сертификата за везе између Zabbix корисничког интерфејса и базе података:
Алтернативно, ово се може подесити у /etc/zabbix/web/zabbix.conf.php:
...
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
...
Решите проблеме корисника помоћу алата командне линије да бисте проверили да ли је веза успостављена за потребе корисника:
Да бисте омогућили шифровање са верификацијом сертификата за везе између Zabbix сервера и базе података, конфигуришите /etc/zabbix/zabbix_server.conf:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_ca
DBTLSCAFile=/etc/ssl/mysql/ca.pem
...
Подесите опцију конфигурације MySQL CE сервера (/etc/my.cnf.d/server-tls.cnf) на:
[mysqld] ... # у овом примеру кључеви се налазе у директоријумима MySQL CE datadir ssl_ca=ca.pem ssl_cert=server-cert.pem ssl_key=server-key.pem
require_secure_transport=ON tls_version=TLSv1.3 ...
Кључеви за MySQL CE сервер и клијент (Zabbix кориснички интерфејс) треба да се креирају ручно према документацији за MySQL CE: Креирање SSL и RSA сертификата и кључева помоћу MySQL-а или Креирање SSL сертификата и кључева коришћењемopenssl
Сертификат MySQL сервера треба да садржи поље Заједничко име подешено на FQDN име јер ће Zabbix фронтенд користити DNS име за комуникацију са базом података или IP адресу хоста базе података.
Креирај MySQL корисника:
mysql> CREATE USER 'zbx_srv'@'%' IDENTIFIED WITH mysql_native_password BY '<strong_password>', 'zbx_web'@'%' IDENTIFIED WITH mysql_native_password BY '<strong_password>' REQUIRE X5 09 PASSWORD HISTORY 5;
Проверите да ли је могуће пријавити се са тим корисником:
mysql -u zbx_web -p -h 10.211.55.9 --ssl-mode=VERIFY_IDENTITY --ssl-ca=/var/lib/mysql/ca.pem --ssl-cert=/var/lib/mysql/client-cert.pem --ssl-key=/var/lib/mysql/client-key.pem
Да бисте омогућили шифровање са потпуном верификацијом за везе између Zabbix корисничког интерфејса и базе података:
Имајте на уму да је Database host verification означено и сиво - овај корак се не може прескочити за MySQL.
Ако је поље Database TLS листа шифара остављено празно, биће омогућене уобичајене шифре које дозвољавају и кориснички интерфејс (клијент) и сервер. Алтернативно, шифре се могу експлицитно подесити, у складу са захтевима за конфигурацију шифре.
Алтернативно, ово се може подесити у /etc/zabbix/web/zabbix.conf.php:
... // Користи се за TLS везу са строго дефинисаном листом шифара. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '/etc/ssl/mysql/client-key.pem'; $DB['CERT_FILE'] = '/etc/ssl/mysql/client-cert.pem'; $DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem'; $DB['VERIFY_HOST'] = тачно; $DB['CIPHER_LIST'] = 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-GC'; ... // или ... // Користи се за TLS везу без дефинисане листе шифара - изабрано од стране MySQL сервера $DB['ENCRYPTION'] = тачно; $DB['KEY_FILE'] = '/etc/ssl/mysql/client-key.pem'; $DB['CERT_FILE'] = '/etc/ssl/mysql/client-cert.pem'; $DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem'; $DB['VERIFY_HOST'] = тачно;$DB['CIPHER_LIST'] = ''; ...
Да бисте омогућили шифровање са потпуном верификацијом за везе између Zabbix сервера и базе података, конфигуришите /etc/zabbix/zabbix_server.conf: