Dit gedeelte biedt verschillende voorbeelden van coderingsconfiguraties voor: CentOS 8.2 en MySQL 8.0.21 en kan worden gebruikt als een snelstartgids voor: versleuteling van de verbinding met de database.
Als MySQL-host is ingesteld op localhost, encryptie-opties niet: verkrijgbaar. In dit geval een verbinding tussen Zabbix frontend en de database gebruikt een socketbestand (op Unix) of gedeeld geheugen (op Windows) en kan niet worden versleuteld.
Lijst met codering combinaties is niet beperkt tot degene die op deze pagina worden vermeld. Er zijn een veel meer combinaties beschikbaar.
Installeer MySQL-database vanaf de officiële repository.
Zie MySQL documentatie voor details over het gebruik van MySQL-repo.
MySQL-server is klaar om beveiligde verbindingen te accepteren met behulp van een zelfondertekend certificaat.
Om te zien welke gebruikers een versleutelde verbinding gebruiken, voer je het volgende uit: query (Prestatieschema moet AAN staan):
mysql> SELECT sbt.variable_value AS tls_version, t2.variable_value AS-codering, processlist_user AS-gebruiker, 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;
Moderne versies van de database zijn kant-en-klaar voor 'vereist' encryptiemodus. EEN server-side certificaat wordt gemaakt na de eerste installatie en lancering.
Maak gebruikers en rollen aan voor de hoofdcomponenten:
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'@'%';
Merk op dat het X.509-protocol niet wordt gebruikt om de identiteit te controleren, maar de gebruiker is geconfigureerd om alleen versleutelde verbindingen te gebruiken. Zie MySQL documentatie voor meer details over het configureren van gebruikers.
Uitvoeren om de verbinding te controleren (socketverbinding kan niet worden gebruikt om de beveiliging te testen aansluitingen):
Controleer de huidige status en beschikbare coderingssuites:
mysql> status
--------------
mysql Ver 8.0.21 voor Linux op x86_64 (MySQL Community Server - GPL)
Verbindings-ID: 62
Huidige databank:
Huidige gebruiker: [email protected]
SSL: het gebruikte cijfer is TLS_AES_256_GCM_SHA384
mysql> TOON SESSIESTATUS ZOALS 'Ssl_cipher_list'\G;
************************** 1e rij ********************* ******
Variabele_naam: 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-DSG-CMAES128 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-RSA-AES256-RSA 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-SHA256:HAAES2: AES128-SHA
1 rij in set (0,00 sec)
FOUT:
Geen zoekopdracht opgegeven
Om alleen-transportversleuteling in te schakelen voor verbindingen tussen Zabbix frontend en de database:
Om alleen-transportversleuteling in te schakelen voor verbindingen tussen server en de database, configureer /etc/zabbix/zabbix_server.conf:
...
DBHost=10.211.55.9
DBName=zabbix
DBUserr=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...
Kopieer de vereiste MySQL CA naar de Zabbix frontend-server, wijs de juiste toe permissies om de webserver dit bestand te laten lezen.
Controleer of CA-modus niet werkt op SLES 12 en RHEL 7 vanwege: oudere MySQL-bibliotheken.
Versleuteling inschakelen met certificaatverificatie voor verbindingen tussen Zabbix frontend en de database:
Als alternatief kan dit worden ingesteld in /etc/zabbix/web/zabbix.conf.php:
...
$DB['ENCRYPTIE'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
...
Los problemen met de gebruiker op met behulp van de opdrachtregeltool om te controleren of de verbinding is mogelijk voor gewenste gebruiker:
Versleuteling inschakelen met certificaatverificatie voor verbindingen tussen Zabbix-server en de database, configure /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-serverconfiguratieoptie instellen (/etc/my.cnf.d/server-tls.cnf) om:
[mysqld]
...
# in deze voorbeelden bevinden de sleutels zich in de MySQL CE datadir directory
ssl_ca=ca.pem
ssl_cert=server-cert.pem
ssl_key=server-sleutel.pem
required_secure_transport=ON
tls_version=TLSv1.3
...
Sleutels voor de MySQL CE-server en -client (Zabbix-frontend) moeten zijn: handmatig gemaakt volgens de MySQl CE-documentatie: Creating SSL en RSA-certificaten en sleutels met behulp van MySQL of SSL-certificaten en sleutels maken met openssl
MySQL-servercertificaat moet de . bevatten Common Name-veld ingesteld op de FQDN-naam, aangezien de Zabbix-frontend de . zal gebruiken DNS-naam om te communiceren met de database of IP-adres van de database gastheer.
MySQL-gebruiker maken:
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;
Controleer of het mogelijk is om met die gebruiker in te loggen:
$ 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
Versleuteling inschakelen met volledige verificatie voor verbindingen tussen: Zabbix frontend en de database:
Merk op dat Database hostverificatie is aangevinkt en uitgegrijsd - dit stap kan niet worden overgeslagen voor MySQL.
::: let op cijferlijst moet leeg zijn, zodat frontend en server over de vereiste kunnen onderhandelen van de ondersteund door beide uiteinden. :::
Als alternatief kan dit worden ingesteld in /etc/zabbix/web/zabbix.conf.php:
...
// Gebruikt voor TLS-verbinding met strikt gedefinieerde coderingslijst.
$DB['ENCRYPTIE'] = waar;
$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'] = waar;
$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';
...
// of
...
// Gebruikt voor TLS-verbinding zonder coderingslijst gedefinieerd - geselecteerd door MySQL-server
$DB['ENCRYPTIE'] = waar;
$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'] = waar;
$DB['CIPHER_LIST'] = '';
...
Versleuteling inschakelen met volledige verificatie voor verbindingen tussen: Zabbix-server en de database, configureren /etc/zabbix/zabbix_server.conf: