Zabbix תומך בתקשורת מוצפנת בין רכיבי Zabbix באמצעות פרוטוקול Transport Layer Security (TLS) v.1.2 ו-1.3 (בהתאם ל- ספריית קריפטו). הצפנה מבוססת תעודות ומפתחות משותפת מראש נתמך.
ניתן להגדיר הצפנה עבור חיבורים:
ההצפנה היא אופציונלית וניתנת להגדרה עבור רכיבים בודדים:
תוכניות דמון Zabbix משתמשות ביציאת האזנה אחת עבור מוצפן ו חיבורים נכנסים לא מוצפנים. הוספת הצפנה אינה מחייבת פתיחת יציאות חדשות בחומות אש.
כדי לתמוך בהצפנה Zabbix חייב להיות הידור ולקשר עם אחד מה ספריות קריפטו נתמכות:
tls_*()
. לא ניתן יהיה להשתמש ברכיבי Zabbix המותרים עם LibreSSL PSK, ניתן להשתמש רק בתעודות.הספרייה נבחרת על ידי ציון האפשרות המתאימה ל סקריפט "הגדר":
--with-gnutls[=DIR]
--with-openssl[=DIR]
(משמש גם עבור LibreSSL)לדוגמה, כדי להגדיר את המקורות עבור שרת וסוכן עם OpenSSL אתה יכול להשתמש במשהו כמו:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openssl
רכיבי Zabbix שונים עשויים להיות מורכבים עם קריפטו שונה ספריות (למשל שרת עם OpenSSL, סוכן עם GnuTLS).
::: שימו לב חשוב אם אתה מתכנן להשתמש במפתחות משותפים מראש (PSK), שקול להשתמש בספריות GnuTLS או OpenSSL 1.1.0 (או חדשות יותר) ב רכיבי Zabbix באמצעות PSKs. ספריות GnuTLS ו-OpenSSL 1.1.0 תמיכה ב-PSK ciphersuites עם Perfect Forward סודיות. גם גרסאות ישנות יותר של ספריית OpenSSL (1.0.1, 1.0.2c) תומכות PSKs, אבל PSK ciphersuites זמינות לא מספקות Perfect Forward סוֹדִיוּת. :::
חיבורים ב- Zabbix יכולים להשתמש ב:
ישנם שני פרמטרים חשובים המשמשים לציון הצפנה ביניהם רכיבי Zabbix:
TLSConnect
משמש בקבצי התצורה עבור Zabbix proxy (ב מצב פעיל, מציין רק חיבורים לשרת) וסוכן Zabbix (עבור צ'קים פעילים). בחזית Zabbix המקבילה של TLSConnect היא חיבורים למארח בשדה תצורה ← מארחים ← <כמה מארח> → הכרטיסייה הצפנה והשדה חיבורים ל-proxy ב ניהול ← פרוקסי ← <proxy כלשהו> ← הכרטיסייה הצפנה. אם ה סוג ההצפנה שהוגדר לחיבור נכשל, אין הצפנה אחרת סוגים ינוסו.
TLSAccept
משמש בקובצי התצורה עבור Zabbix proxy (ב מצב פסיבי, מציין רק חיבורים מהשרת) וסוכן Zabbix (עבור צ'קים פסיביים). בחזית Zabbix המקבילה של TLSAccept היא חיבורים מארח בשדה תצורה ← מארחים ← <כמה מארח> → הכרטיסייה הצפנה והשדה חיבורים מ-proxy ב ניהול ← פרוקסי ← <proxy כלשהו> ← הכרטיסייה הצפנה.
בדרך כלל אתה מגדיר רק סוג אחד של הצפנה עבור נכנסות הצפנות. אבל אולי תרצה לשנות את סוג ההצפנה, למשל. מ לא מוצפן למבוסס אישורים עם מינימום זמן השבתה והחזרה לאחור אפשרות. כדי להשיג זאת:
באופן דומה זה עובד על שרת ו-proxy. אם ב-Zabix frontend in תצורת המארח חיבורים מהמארח מוגדרת ל"אישור" אז רק חיבורים מוצפנים מבוססי תעודה יתקבלו מה- סוכן (צ'קים פעילים) ו-zabbix_sender (פריטי לוכד).
סביר להניח שתגדיר חיבורים נכנסים ויוצאים לשימוש אותו סוג הצפנה או ללא הצפנה כלל. אבל טכנית זה כן אפשר להגדיר אותו בצורה אסימטרית, למשל. מבוסס תעודה הצפנה עבור נכנסות ומבוססת PSK עבור חיבורים יוצאים.
תצורת ההצפנה עבור כל מארח מוצגת ב- Zabbix חזית, ב-תצורה → מארחים בעמודה הצפנת סוכן. לדוגמה:
|דוגמה|חיבורים למארח|חיבורים מותרים מהמארח|חיבורים שנדחו מהמארח| |-------|------------------------|------------------------|- ------------------| ||לא מוצפן|לא מוצפן|מוצפן, תעודה ו-PSK מוצפן| ||מוצפן, מבוסס תעודה|מוצפן, מבוסס תעודה|מוצפן לא מוצפן ומבוסס PSK| ||מוצפן, מבוסס PSK|מוצפן, מבוסס PSK|מוצפן לא מוצפן ומבוסס תעודות| ||מוצפן, מבוסס PSK|מוצפן לא מוצפן ומבוסס PSK|מוצפן מבוסס אישור| ||מוצפן, מבוסס תעודה|לא מוצפן, PSK או מבוסס תעודה מוצפן|-|
::: שימו לב חשוב חיבורים אינם מוצפנים כברירת מחדל. הצפנה יש להגדיר עבור כל מארח ופרוקסי בנפרד. :::
ראה zabbix_get ו zabbix_sender דפי manpage לשימוש בהם עם הצפנה.
חבילות צויפרים כברירת מחדל מוגדרות באופן פנימי במהלך ההפעלה של Zabbix ולפני Zabbix 4.0.19, 4.4.7, אינם ניתנים להגדרה על ידי המשתמש.
מאז Zabbix 4.0.19, 4.4.7 גם חבילות צופן בהגדרת משתמש הן נתמך עבור GnuTLS ו-OpenSSL. משתמשים יכולים configure ciphersuites לפי מדיניות האבטחה שלהם. השימוש בתכונה זו הוא אופציונלי (מובנה חבילות צופן ברירת מחדל עדיין עובדות).
עבור ספריות קריפטו הידור עם הגדרות ברירת המחדל Zabbix מובנית כללים בדרך כלל מביאים לחבילות הצפנים הבאות (בסדר מ בעדיפות גבוהה עד נמוכה יותר):
ספרייה | חבילות צופן תעודות | חבילות צופן PSK |
---|---|---|
GnuTLS 3.1.18 | TLS_ECDHE_RSA_AES_128_GCM_SHA256 TLS_ECDHE_RSA_AES_128_CBC_SHA256 TLS_ECDHE_RSA\2_A _CBC_SHA1 TLS_RSA_AES_128_GCM_SHA256 TLS_RSA_AES_128_CBC_SHA256 TLS_RSA_AES_128_CBC_SHAECDLS_SHA1 |
_PSK_AES_128_CBC_SHA256 TLS_ECDHE_PSK_AES_128_CBC_SHA1 TLS_PSK_AES_128_GCM_SHA256_TLS_PSK_1_8 _CBC_SHA256 TLS_PSK_AES_128_CBC_SHA1 |
OpenSSL 1.0.2c | ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256-AES SHA256 AES128-SHA |
PSK-AES128-CBC-SHA |
OpenSSL 1.1.0 | ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA2528-AES1 CCM8 AES128-CCM AES128-SHA256 AES128-SHA |
ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128 -GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA |
OpenSSL 1.1.1d | TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-18-RSA SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA25> AES128-SHA |
TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES-128-C PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA |
ניתן לעקוף את קריטריוני הבחירה המובנים של חבילת צופן חבילות צופן בהגדרת משתמש.
::: שימו לב חשוב ciphersuites בהגדרת משתמש היא תכונה מיועדת למשתמשים מתקדמים שמבינים חבילות צופן TLS, האבטחה שלהן ו השלכות של טעויות, ומי שנוח עם TLS פתרון תקלות. :::
ניתן לעקוף את קריטריוני הבחירה המובנים של ciphersuite באמצעות הפרמטרים הבאים:
עקוף היקף | פרמטר | ערך | תיאור |
---|---|---|---|
בחירת חבילת צופן לאישורים | TLSCipherCert13 | Valid OpenSSL 1.1.1 מחרוזות צופן עבור פרוטוקול TLS 1.3 (הערכים שלהם מועברים אל הפונקציה OpenSSL SSL_CTX_set_ciphersuites()). | קריטריונים לבחירת צופן מבוססי תעודות עבור TLS 1.3 רק OpenSSL 1.1.1 ומעלה. |
TLSCipherCert | Valid OpenSSL מחרוזות צופן עבור TLS 1.2 או GnuTLS [מחרוזות עדיפות] חוקיות (https://gnutls .org/manual/html_node/Priority-Strings.html). הערכים שלהם מועברים לפונקציות SSL_CTX_set_cipher_list() או gnutls_priority_init() בהתאמה. | קריטריונים לבחירת חבילת צופן מבוססת תעודות עבור TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) | |
בחירת צופן עבור PSK | TLSCipherPSK13 | OpenSSL תקף 1.1.1 מחרוזות צופן עבור פרוטוקול TLS 1.3 (הערכים שלהם מועברים אל הפונקציה OpenSSL SSL_CTX_set_ciphersuites()). | קריטריונים לבחירת צופן מבוססי PSK עבור TLS 1.3 רק OpenSSL 1.1.1 ומעלה. |
TLSCipherPSK | OpenSSL חוקי מחרוזות צופן עבור TLS 1.2 או GnuTLS [מחרוזות עדיפות] חוקיות (https://gnutls .org/manual/html_node/Priority-Strings.html). הערכים שלהם מועברים לפונקציות SSL_CTX_set_cipher_list() או gnutls_priority_init() בהתאמה. | קריטריוני בחירה מבוססי-PSK עבור TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) | |
רשימת חבילת צופן משולבת עבור אישור ו-PSK | TLSCipherAll13 | Valid OpenSSL 1.1.1 מחרוזות צופן עבור פרוטוקול TLS 1.3 (הערכים שלהם מועברים לפונקציית OpenSSL SSL_CTX_set_ciphersuites()). | קריטריונים לבחירת חבילת צופן עבור TLS 1.3 רק OpenSSL 1.1.1 ומעלה. |
TLSCipherAll | OpenSSL חוקית מחרוזות צופן עבור TLS 1.2 או GnuTLS [מחרוזות עדיפות] חוקיות (https://gnutls .org/manual/html_node/Priority-Strings.html). הערכים שלהם מועברים לפונקציות SSL_CTX_set_cipher_list() או gnutls_priority_init() בהתאמה. | קריטריוני בחירת צופן סוויטה עבור TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) |
כדי לעקוף את בחירת חבילת הצופן ב zabbix_get ו zabbix_sender כלי עזר - השתמש ב- פרמטרים של שורת הפקודה:
--tls-cipher13
--tls-cipher
הפרמטרים החדשים הם אופציונליים. אם לא צוין פרמטר, ה- נעשה שימוש בערך ברירת מחדל פנימי. אם מוגדר פרמטר זה לא יכול להיות ריק.
אם ההגדרה של ערך TLSCipher* בספריית ההצפנה נכשלת אז השרת, ה-proxy או הסוכן לא יתחילו ונרשמת שגיאה.
חשוב להבין מתי כל פרמטר ישים.
המקרה הפשוט ביותר הוא חיבורים יוצאים:
--tls-cipher13
ו---tls-cipher
(ההצפנה מצוינת באופן חד משמעי באמצעות --tls-connect
פָּרָמֶטֶר)זה קצת יותר מסובך עם חיבורים נכנסים כי חוקים הם ספציפי לרכיבים ותצורה.
עבור Zabbix סוכן:
הגדרת חיבור סוכן | תצורת צופן |
---|---|
TLSConnect=cert | TLSCipherCert, TLSCipherCert13 |
TLSConnect=psk | TLSCipherPSK, TLSCipherPSK13 |
TLSAccept=cert | TLSCipherCert, TLSCipherCert13 |
TLSAccept=psk | TLSCipherPSK, TLSCipherPSK13 |
TLSAccept=cert,psk | TLSCipherAll, TLSCipherAll13 |
עבור Zabbix שרת ופרוקסי:
הגדרת חיבור | תצורת צופן |
---|---|
חיבורים יוצאים באמצעות PSK | TLSCipherPSK, TLSCipherPSK13 |
חיבורים נכנסים באמצעות אישורים | TLSCipherAll, TLSCipherAll13 |
חיבורים נכנסים באמצעות PSK אם לשרת אין אישור | TLSCipherPSK, TLSCipherPSK13 |
חיבורים נכנסים באמצעות PSK אם לשרת יש אישור | TLSCipherAll, TLSCipherAll13 |
ניתן לראות דפוס מסוים בשתי הטבלאות שלמעלה:
הטבלאות הבאות מציגות את ערכי ברירת המחדל המובנים של TLSCipher*
. הֵם יכולה להיות נקודת התחלה טובה לערכים המותאמים אישית שלך.
פרמטר | GnuTLS 3.6.12 |
---|---|
TLSCipherCert | אין:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP -NULL:+SIGN-ALL:+CTYPE-X.509 |
TLSCipherPSK | אין:+VERS-TLS1.2:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP -NULL:+סימן-הכל |
TLSCipherAll | ללא:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1 :+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509 |
פרמטר | OpenSSL 1.1.1d 1 |
---|---|
TLSCipherCert13 | |
TLSCipherCert | EECDH+aRSA+AES128:RSA+aRSA+AES128 |
TLSCipherPSK13 | TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 |
TLSCipherPSK | kECDHEPSK+AES128:kPSK+AES128 |
TLSCipherAll13 | |
TLSCipherAll | EECDH+aRSA+AES128:RSA+aRSA+AES128:kECDHEPSK+AES128:kPSK+AES128 |
1 ערכי ברירת המחדל שונים עבור גרסאות OpenSSL ישנות יותר (1.0.1, 1.0.2, 1.1.0), עבור LibreSSL ואם OpenSSL הידור ללא PSK תמיכה.
** דוגמאות של חבילות צופן בהגדרת משתמש **
ראה להלן את הדוגמאות הבאות של חבילות צופן בהגדרת משתמש:
זה קצת יותר מסובך עם חיבורים נכנסים כי חוקים הם ספציפי לרכיבים ותצורה.
עבור Zabbix סוכן:
הגדרת חיבור סוכן | תצורת צופן |
---|---|
TLSConnect=cert | TLSCipherCert, TLSCipherCert13 |
TLSConnect=psk | TLSCipherPSK, TLSCipherPSK13 |
TLSAccept=cert | TLSCipherCert, TLSCipherCert13 |
TLSAccept=psk | TLSCipherPSK, TLSCipherPSK13 |
TLSAccept=cert,psk | TLSCipherAll, TLSCipherAll13 |
עבור Zabbix שרת ופרוקסי:
הגדרת חיבור | תצורת צופן |
---|---|
חיבורים יוצאים באמצעות PSK | TLSCipherPSK, TLSCipherPSK13 |
חיבורים נכנסים באמצעות אישורים | TLSCipherAll, TLSCipherAll13 |
חיבורים נכנסים באמצעות PSK אם לשרת אין אישור | TLSCipherPSK, TLSCipherPSK13 |
חיבורים נכנסים באמצעות PSK אם לשרת יש אישור | TLSCipherAll, TLSCipherAll13 |
ניתן לראות דפוס מסוים בשתי הטבלאות שלמעלה:
הטבלאות הבאות מציגות את ערכי ברירת המחדל המובנים של TLSCipher*
. הֵם יכולה להיות נקודת התחלה טובה לערכים המותאמים אישית שלך.
פרמטר | GnuTLS 3.6.12 |
---|---|
TLSCipherCert | אין:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP -NULL:+SIGN-ALL:+CTYPE-X.509 |
TLSCipherPSK | אין:+VERS-TLS1.2:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP -NULL:+סימן-הכל |
TLSCipherAll | ללא:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1 :+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509 |
פרמטר | OpenSSL 1.1.1d 1 |
---|---|
TLSCipherCert13 | |
TLSCipherCert | EECDH+aRSA+AES128:RSA+aRSA+AES128 |
TLSCipherPSK13 | TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 |
TLSCipherPSK | kECDHEPSK+AES128:kPSK+AES128 |
TLSCipherAll13 | |
TLSCipherAll | EECDH+aRSA+AES128:RSA+aRSA+AES128:kECDHEPSK+AES128:kPSK+AES128 |
1 ערכי ברירת המחדל שונים עבור גרסאות OpenSSL ישנות יותר (1.0.1, 1.0.2, 1.1.0), עבור LibreSSL ואם OpenSSL הידור ללא PSK תמיכה.
** דוגמאות של חבילות צופן בהגדרת משתמש **
ראה להלן את הדוגמאות הבאות של חבילות צופן בהגדרת משתמש:
Zabbix משתמש ב-AES128 כברירת המחדל המובנית עבור נתונים. בוא נניח שאתה משתמשים באישורים ורוצים לעבור ל-AES256, ב-OpenSSL 1.1.1.
ניתן להשיג זאת על ידי הוספת הפרמטרים המתאימים zabbix_server.conf
:
TLSCAFile=/home/zabbix/ca.crt
TLSCertFile=/home/zabbix/server.crt
TLSKeyFile=/home/zabbix/server.key
TLScipherCert13=TLS_AES_256_GCM_SHA384
TLScipherCert=EECDH+aRSA+AES256:-SHA1:-SHA384
TLScipherPSK13=TLS_CHACHA20_POLY1305_SHA256
TLScipherPSK=kECDHEPSK+AES256:-SHA1
TLScipherAll13=TLS_AES_256_GCM_SHA384
TLScipherAll=EECDH+aRSA+AES256:-SHA1:-SHA384
::: שימו לב חשוב אמנם רק חבילות צופן הקשורות לתעודה ישמש, פרמטרים של TLSCipherPSK*
מוגדרים גם כדי להימנע ערכי ברירת המחדל שלהם הכוללים צפנים פחות מאובטחים עבור רחב יותר יכולת פעולה הדדית. לא ניתן להשבית לחלוטין את PSK ciphersuites שרת/פרוקסי. :::
וב-zabbix_agentd.conf
: