Ez a szakasz több titkosítási konfigurációs példát mutat be a következőhöz CentOS 8.2 és MySQL 8.0.21, és rövid útmutatóként használható az adatbázishoz való kapcsolat titkosítása.
Ha A MySQL gazdagép localhost-ra van állítva, a titkosítási beállítások nem lesznek elérhető. Ebben az esetben kapcsolat a Zabbix frontend és a adatbázis socket fájlt (Unix rendszeren) vagy megosztott memóriát (Windows rendszeren) használ, és nem titkosítható.
A titkosítások listája kombinációk nem korlátozódnak az ezen az oldalon felsoroltakra. Vannak a sokkal több kombináció elérhető.
Telepítse a MySQL adatbázist a official tárhely.
Lásd: MySQL dokumentáció a MySQL repo használatának részleteiért.
A MySQL szerver készen áll a biztonságos kapcsolatok elfogadására önaláírt eszköz használatával bizonyítvány.
Ha látni szeretné, hogy mely felhasználók használnak titkosított kapcsolatot, futtassa a következőt lekérdezés (a teljesítménysémát be kell kapcsolni):
mysql> SELECT sbt.variable_value AS tls_version, t2.variable_value AS titkosítás, processlist_user AS user, processlist_host AS gazdagép
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_verzió' és t2.variable_name = 'Ssl_cipher'
ORDER BY tls_version;
Modern versions of the database are ready out-of-the-box for 'required' encryption mode. A server-side certificate will be created after initial setup and launch.
Create users and roles for the main components:
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'@'%';
Note, that the X.509 protocol is not used to check identity, but the user is configured to use only encrypted connections. See MySQL documentation for more details about configuring users.
Run to check connection (socket connection cannot be used to test secure connections):
Check current status and available cipher suites:
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
Csak szállítási titkosítás engedélyezése a Zabbix közötti kapcsolatokhoz frontend és az adatbázis:
Csak szállítási titkosítás engedélyezése a szerver és a kiszolgáló közötti kapcsolatokhoz az adatbázisban állítsa be az /etc/zabbix/zabbix_server.conf fájlt:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=kötelező
...
Másolja a szükséges MySQL CA-t a Zabbix előtér-kiszolgálóra, és rendelje hozzá a megfelelőt engedélyeket, hogy a webszerver elolvashassa ezt a fájlt.
Ellenőrizze, hogy a CA mód nem működik SLES 12 és RHEL 7 esetén régebbi MySQL-könyvtárak.
A titkosítás engedélyezése a kapcsolatok tanúsítvány-ellenőrzésével A Zabbix frontend és az adatbázis között:
Alternatív megoldásként ez beállítható az /etc/zabbix/web/zabbix.conf.php fájlban:
...
$DB['TITKOSÍTÁS'] = igaz;
$DB['KEY_FILE'] = ';
$DB['CERT_FILE'] = ';
$DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem';
$DB['VERIFY_HOST'] = hamis;
$DB['CIPHER_LIST'] = ';
...
A felhasználó hibaelhárítása parancssori eszközzel ellenőrizze, hogy a kapcsolat megvan-e lehetséges a kívánt felhasználó számára:
A titkosítás engedélyezése a kapcsolatok tanúsítvány-ellenőrzésével a Zabbix szerver és az adatbázis között, konfigurálja /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
...
Állítsa be a MySQL CE szerver konfigurációs beállítását (/etc/my.cnf.d/server-tls.cnf) ide:
[mysqld]
...
# ebben a példában a kulcsok a MySQL CE datadir könyvtárában találhatók
ssl_ca=ca.pem
ssl_cert=server-cert.pem
ssl_key=server-key.pem
request_secure_transport=BE
tls_version=TLSv1.3
...
A MySQL CE szerver és a kliens (Zabbix frontend) kulcsai legyenek kézzel készített a MySQl CE dokumentáció szerint: SSL létrehozása és RSA tanúsítványok és kulcsok használatával MySQL vagy SSL-tanúsítványok és kulcsok létrehozása a használatával openssl
A MySQL szerver tanúsítványának tartalmaznia kell a A Közös név mező az FQDN névre van állítva, mivel a Zabbix frontend a következőt fogja használni DNS név az adatbázissal való kommunikációhoz vagy az adatbázis IP-címe házigazda.
MySQL felhasználó létrehozása:
mysql> FELHASZNÁLÓ LÉTREHOZÁSA
'zbx_srv'@'%' A mysql_native_password AZONOSÍTÁSA '<strong_password>',
'zbx_web'@'%' A mysql_native_password AZONOSÍTÁSA '<strong_password>'
SZÜKSÉGES X509
JELSZÓTÖRTÉNET 5;
Ellenőrizze, hogy be lehet-e jelentkezni ezzel a felhasználóval:
$ 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
közötti kapcsolatok titkosításának engedélyezése teljes ellenőrzéssel Zabbix frontend és az adatbázis:
Vegye figyelembe, hogy az Adatbázis gazdagép ellenőrzése be van jelölve és ki van szürkítve – ez lépés nem hagyható ki a MySQL esetében.
Rejtjellista üresnek kell lennie, hogy a frontend és a szerver egyeztetni tudja a szükségeset a mindkét végén megtámasztottból.
Alternatív megoldásként ez beállítható az /etc/zabbix/web/zabbix.conf.php fájlban:
...
// TLS-kapcsolathoz használják szigorúan meghatározott titkosítási listával.
$DB['TITKOSÍTÁS'] = igaz;
$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'] = igaz;
$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';
...
// vagy
...
// TLS-kapcsolathoz használatos titkosítási lista definiálása nélkül – a MySQL szerver által kiválasztott
$DB['TITKOSÍTÁS'] = igaz;
$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'] = igaz;
$DB['CIPHER_LIST'] = ';
...
közötti kapcsolatok titkosításának engedélyezése teljes ellenőrzéssel Zabbix szerver és adatbázis, konfigurálás /etc/zabbix/zabbix_server.conf: