Aquesta secció ofereix diversos exemples de configuració de xifrat per a CentOS 8.2 i MySQL 8.0.21 i es pot emprar com a guia d'inici ràpid per xifrar la connexió de la base de dades.
Si l'equip MySQL és configurat a localhost, les opcions de xifrat no seran pas disponibles. En aquest cas, una connexió entre la interfície Zabbix i la base de dades empra un fitxer socket (a Unix) o memòria compartida (a Windows) i no es pot pas xifrar.
La llista de combinacions de xifrat no es limita a les que es llisten en aquesta pàgina. Hi ha moltes més combinacions disponibles.
instal·leu la base de dades MySQL des del repositori oficial.
Veieu la documentació MySQL per tindre més detalls sobre com emprar el repositori de MySQL.
El servidor MySQL pot acceptar connexions segures emprant un certificat auto-signat.
Per veure quins usuaris empren una connexió xifrada, executeu la següent comanda (l'esquema de rendiment ha d'ésser actiu):
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_thread AS sbt
JOIN performance_schema.threads AS t ON t.thread_id = sbt.thread_id
JOIN performance_schema.status_by_thread AS t2 ON t2.thread_id = t.thread_id
WHERE sbt.variable_name = 'Ssl_version' and t2.variable_name = 'Ssl_cipher'
ORDER BY tls_version;
Les versions modernes de la base de dades són llestes per mode de xifrat "obligatoris". El certificat de la banda del servidor es crearà després de la configuració i el llançament inicials.
Creeu usuaris i rols per als components principals:
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'@'%';
Tingueu en compte que el protocol X.509 no s'empra per comprovar la identitat, sinó que l'usuari és configurat per emprar només connexions xifrades. Veieu la documentació MySQL per obtindre més detalls sobre la configuració dels usuaris.
Executeu per comprovar la connexió (la connexió del sòcol no es pot emprar pas per provar les connexions segures):
Testeu l'estat actual i les cadenes de xifrat disponibles:
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'\G;
*************************** 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)
ERROR:
No query specified
Per activar el xifrat de transport només per les connexions entre la interfície Zabbix i la base de dades:
Per activar el xifrat de transport només per les connexions entre el servidor i la base de dades, configureu /etc/zabbix/zabbix_server.conf :
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...
Copieu la CA de MySQL necessària al servidor frontal de Zabbix, assigneu permisos per permetre que el servidor web llegeixi aquest fitxer.
El mode Verificar CA no funciona a SLES 12 i RHEL 7 a causa de les antigues biblioteques de MySQL.
Per habilitar l'encriptació amb la verificació del certificat per a les connexions entre el frontend de Zabbix i la base de dades:
Alternativament, ho podeu configurar a /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'] = '';
...
Resoleu problemes d'usuari mitjançant l'eina de línia d'ordres per comprovar si la connexió és possible per a l'usuari requerit:
Per activar el xifrat amb verificació de certificat per les connexions entre el servidor Zabbix i la base de dades, configureu /etc/zabbix/zabbix_server.conf :
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_ca
DBTLSCAFile=/etc/mysql/ca.perm
...
Establiu l'opció de configuració del servidor MySQL CE (/etc/my.cnf.d/server-tls.cnf) a:
[mysqld]
...
# en aquest exemple, les claus són a la carpeta datadir de MySQL CE
ssl_ca=ca.pem
ssl_cert=server-cert.pem
ssl_key=server-key.pem
require_secure_transport=ON
tls_version=TLSv1.3
...
Les claus per al servidor i el client MySQL CE (interfície Zabbix) s'han de crear manualment segons la documentació de MySQL CE: Creació de certificats i claus SSL i RSA amb MySQL o Creació de certificats i claus SSL amb openssl
::: nota important El certificat del servidor MySQL ha de contindre el camp de Nom Comú definit com a nom FQDN perquè la interfície Zabbix emprarà el nom DNS per comunicar-se amb la base de dades o l'adreça IP de l'equip de la base de dades. :::
Crear un usuari 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 X509
PASSWORD HISTORY 5;
Verificar si és possible establir la connexió amb aquest usuari:
$ 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
Per habilitar el xifrat amb una verificació completa de les connexions entre el Frontend de Zabbix i la base de dades:
Tingueu en compte que la Verificació de l'equip de la base de dades és marcada i en gris, aquesta passa no es pot pas saltar per a MySQL.
El llistat de xifrat hauria d'ésser buit, de manera que la interfície i el servidor puguin negociar el xifrat suportat per ambdós extrems.
Altrament, això es pot configurar a /etc/zabbix/web/zabbix.conf.php:
...
// S'empra per a la connexió TLS amb una llista de xifratge estrictament definida.
$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'] = true;
$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';
...
// o
...
// Emprat per connexions TLS sense llista de xifratge definida - escollit per MySQL server
$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'] = true;
$DB['CIPHER_LIST'] = '';
...
Per activar el xifrat amb verificació completa de les connexions entre el servidor Zabbix i la base de dades, configureu /etc/zabbix/zabbix_server.conf: