הקדמה
במדריך זה תלמד כיצד לאתר ולתקן הודעת אזהרה של HAProxy הגדרת tune.ssl.default-dh-param ל־1024 כברירת מחדל
באמצעות השיטות שתוארו במדריך איך לאתר תקלות נפוצות ב־HAProxy בתחילת סדרת המדריכים הזו. לאחר שתאשר שהשרת שלך יוצר את ההודעה באמצעות ההגדרות הנכונות, תלמד כיצד לתקן אותה על ידי הגדרת האפשרות ssl-dh-param-file
של HAProxy כך שתשתמש בקובץ dhparams.pem
מותאם אישית.
יתכן שתתקל בהודעת אזהרה של HAProxy הגדרת tune.ssl.default-dh-param ל־1024 כברירת מחדל
כאשר השרת שלך הוגדר עם אישור SSL/TLS והפרמטר tune.ssl.default-dh-param
לא מוגדר בקובץ התצורה haproxy.cfg
של HAProxy. כאשר הפרמטר לא מוגדר, HAProxy יעבור באופן ברירת מחדל לערך של 1024 ביטים עבור חלק הסכמת המפתח Diffie-Hellman במשא ומתן של TLS, שנחשב לא בטוח.
השרת שלך ה- HAProxy עשוי להפעיל אזהרה זו מבלי שתדע על כך. ניתן להגדיר תעודת SSL/TLS וה- HAProxy תרוץ, אך השרת עשוי להזהיר אותך על הבעיה ברקע. אם אינך בטוח האם השרת שלך של HAProxy משתמש בפרמטר Diffie-Hellman של 1024 ביט, ניתן להשתמש בכלי כמו בדיקת השרתים של SSL Labs כדי לבדוק עבורך. אם תקבל דוח שכולל שורה השרת הזה תומך בפרמטרי תקשורת מחלקת דיפי-הלמן (DH) חלשים
, אז השרת שלך של HAProxy מושפע.
אם כבר קבעת שהשרת שלך של HAProxy מייצר אזהרה על הגדרת tune.ssl.default-dh-param
ותרצה לדלג על פעולות תיקון, ניתן למצוא איך לתקן את הבעיה בקטע "פתרון אזהרת secure tune.ssl.default-dh-param
" בסוף המדריך הזה.
בדיקת אזהרת tune.ssl.default-dh-param
באמצעות systemctl
בביצוע צעדי הפתרון מהמדריך "כיצד לאתר שגיאות נפוצות ב- HAProxy" בתחילת הסדרה הזו, הצעד הראשון בעת פתרון הודעת אזהרה הגדרת tune.ssl.default-dh-param ל-1024 כברירת מחדל
הוא לבדוק את מצב ה- HAProxy באמצעות systemctl
.
הפלט מ systemctl status
עשוי לכלול את כל המידע האבחנתי שאתה צריך כדי לפתור את השגיאה. אף עם זאת, חשוב לבדוק את המצב הנוכחי של שירות ה- haproxy
כדי לוודא שהוא פועל ושכל השירותים שמשתמשים בו עדיין מסוגלים לפעול בזמן שאתה מפתר את האזהרה.
השתמש בפקודת systemctl
הזו כדי לבדוק את המצב של HAProxy בכל הפצות הלינוקס:
הדגל -l
יוודא ש- systemctl
יפליט את כל תוכן השורה, במקום להחליף בנקודותיים (…
) עבור שורות ארוכות. הדגל --no-pager
יפליט את כל היומן למסך שלך בלי להפעיל כלי כמו less
שרק מציג מסך של תוכן בכל פעם.
מכיוון שאתה מפתר את הודעת האזהרה Setting tune.ssl.default-dh-param to 1024 by default
, עליך לקבל פלט שדומה לזה:
Output● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2020-10-06 14:31:39 UTC; 2min 31s ago
Process: 71406 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (code=exited, status=0/SUCCESS)
Main PID: 71407 (haproxy)
. . .
Oct 06 14:31:39 bb9fb4c53743 systemd[1]: Starting HAProxy Load Balancer...
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : parsing [/etc/haproxy/haproxy.cfg:69] : 'bind *:5000' :
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: unable to load default 1024 bits DH parameter for certificate '/etc/haproxy/fullchain.pem'.
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: , SSL library will use an automatically generated DH parameter.
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy main started.
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy static started.
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy app started.
Oct 06 14:31:39 bb9fb4c53743 systemd[1]: Started HAProxy Load Balancer.
יש שני חלקים מסומנים חשובים לציין בפלט הזה. הראשון הוא השורה המסומנת בצבע הירוק, שמציינת כי HAProxy זמין ופועל. אם השרת שלך מציג שורה כמו Active: failed
, אז עליך לפתור את הבעיה ב- HAProxy באמצעות השיטות שתוארו במדריך כיצד לאבחן שגיאות נפוצות ב-HAProxy בתחילת סדרת המדריכים הזו.
השורות המודגשות השניות הן מיומן systemd
ומכילות אזהרת tune.ssl.default-dh-param
. תוכן זה מספק את כל המידע על האזהרה, כיצד היא מופעלת, השלבים שבוצעו על ידי HAProxy, וכיצד לפתור אותה.
אם פלט ה־systemctl
שלך כולל שורות עם אזהרת tune.ssl.default-dh-param
, אז עבור לחלק האחרון של המדריך כדי ללמוד כיצד להגדיר את HAProxy עם ערך מאובטח יותר.
אם הפלט של systemctl
שלך לא מספק מידע ספציפי אודות האזהרה, אך אתה יודע שהשרת שלך משתמש בפרמטרים חלשים של Diffie-Hellman, החלק הבא של המדריך ידריך אותך דרך השימוש בלוגי journalctl
כדי לאתר את הודעת האזהרה.
בדיקה אם קיימת אזהרת tune.ssl.default-dh-param
באמצעות journalctl
אם פלט ה־systemctl
שלך אינו כולל אזהרת tune.ssl.default-dh-param
, אך אתה יודע שהשרת שלך מושפע, עליך להמשיך ולהשתמש בפקודת journalctl
כדי לבדוק לוגים של systemd
עבור HAProxy.
הריץ את הפקודה הבאה על כל התפצלויות של Linux כדי לבדוק את לוגי הכרטיס של systemd עבור שירות haproxy:
החלק | grep tune.ssl.default-dh-param
של הפקודה משתמש בצינור (|
) כדי לשלוח את הפלט מ-journalctl לפקודת grep כקלט. בשימוש בצינור, רק שורות התואמות מהיומן יוצגו על המסך שלך.
אם היומן כולל אזהרת tune.ssl.default-dh-param, אז תקבל פלט דומה לזה:
OutputOct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.
מאחר שהפלט כולל את האזהרה, תוכל לדלג לסעיף הגדרת ערך מאובטח ל-tune.ssl.default-dh-param בסוף המדריך כדי ללמוד כיצד להגדיר את HAProxy עם ערך מאובטח יותר.
אם לא תקבל פלט לאחר הרצת הפקודה journaltcl, הסעיף הבא ידגיש איך ניתן לבדוק אם יש אזהרת tune.ssl.default-dh-param באמצעות כלי בדיקת התצורה המובנה של HAProxy.
בדיקת אזהרת tune.ssl.default-dh-param באמצעות haproxy -c או קבצי יומן
HAProxy כולל פקודה שיכולה לבדוק ולאשר קבצי התצורה שלו. ניתן להשתמש בפקודה כדי לבדוק שגיאות תחביר או הגדרות לא תקינות מבלי לאתחל את HAProxy ולסכן בזמן רציני לשירותים שלך. בנוסף, אם השרת שלך של HAProxy מוגדר להפוך את הפלט לקובץ או ללוגים של המערכת, ניתן לבדוק את קבצי הלוג כדי לבדוק אם יש אזהרת tune.ssl.default-dh-param
.
כדי לבדוק אם קיימת אזהרת tune.ssl.default-dh-param
באמצעות ה-HAProxy עצמו, יש להריץ את הפקודה הבאה בכל הפצת Linux. אם קובץ התצורה שלך של HAProxy נמצא במיקום שונה מהנתון בנתיב המודגש /etc/haproxy/haproxy.cfg
, יש לוודא להחליף בנתיב הנכון לקובץ שלך:
אם השרת שלך מוגדר עם SSL/TLS ואין tune.ssl.default-dh-param
מוגדר, אז תקבל פלט אזהרה דומה לזה:
Output[WARNING] 279/150829 (71512) : parsing [/etc/haproxy/haproxy.cfg:69] : 'bind *:5000' :
unable to load default 1024 bits DH parameter for certificate '/etc/haproxy/fullchain.pem'.
, SSL library will use an automatically generated DH parameter.
[WARNING] 279/150829 (71512) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.
Configuration file is valid
השורה המודגשת מכילה את אזהרת tune.ssl.default-dh-param
.
כדי לבדוק את ההודעת אזהרה באמצעות לוגים של HAProxy, ניתן לחפש שורות התואמות למחרוזת tune.ssl.default-dh-param
באמצעות פקודת grep
. יש להריץ את הפקודה הבאה כדי לבדוק את האזהרות:
שים לב שאם הגדרת את HAproxy עם מיקום לוגים שונה, יש לוודא להחליף את הנתיב שלך במקום הנתון בנתיב המודגש /var/log/haproxy.log
.
אם השרת שלך מייצר את האזהרה, תקבל פלט כמו בדוגמה הבאה:
OutputOct 6 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.
הערה: קבצי היומן שלך עשויים לא לכלול את הודעת האזהרה, אך הפקודה haproxy -c
עדיין תייצר את האזהרה. אם זהו המקרה, אז סביר ששירות ה-HAproxy שלך פועל מזמן מספיק שהקובץ היומן נסובב, ולכן הוא אינו כולל את האזהרה.
בדיקת הודעה באמצעות השיטה haproxy -c
היא הדרך הכי אמינה לקביעת האם השרת שלך מושפע, ולכן ניתן להתעלם בבטחה מרשומות קבצי היומן החסרות.
עכשיו שקבעת אם השרת שלך מייצר אזהרת tune.ssl.default-dh-param
, תוכל להמשיך לשלב הבא במדריך זה, המסביר שתי שיטות שבאפשרותך להשתמש בהן כדי לפתור את הבעיה.
פתרון לאזהרת tune.ssl.default-dh-param
ניתן לפתור את אזהרת tune.ssl.default-dh-param
ב-HAProxy עם מספר הגדרות שונות. אפשרות אחת היא להגדיר את ערך tune.ssl.default-dh-param
למשהו גדול מ-1024 באופן ברור ב־/etc/haproxy/haproxy.cfg
על פי הודעת האזהרה. אך, תיעוד ה-HAProxy ממליץ על ציון פרמטרים מותאמים אישית של דיפי-הלמן מאחר והתקפת זיפר היא יותר מאובטחת, לכן נשתמש בשיטה זו במקום.
ראשית תפיק קובץ dhparams.pem
באמצעות כלי ה-openssl
. לאחר שהקובץ נוצר, עליך להוסיף אותו לקטע התצורה הגלובלי של HAProxy כך שכל בלוקי frontend
יירשו את ההגדרה.
כדי לייצר פרמטרי DH מותאמים אישית, הפעל את הפקודה הבאה:
תקבל פלט כמו בדוגמה הבאה:
OutputGenerating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
..............
לאחר שהפקודה מסתיימת, הגדר את HAProxy כך שתשתמש בקובץ פרמטרי DH מותאם אישית. פתח את /etc/haproxy/haproxy.cfg
ב-vi
או בעורך הטקסט המועדף עליך.
sudo vi /etc/haproxy/haproxy.cfg
מצא את הקטע בקובץ הדומה לדוגמה הבאה:
Output. . .
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
# utilize system-wide crypto-policies
#ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
כעת הוסף שורה לאחר השורה ssl-default-server-ciphers PROFILE=SYSTEM
כזו:
ssl-dh-param-file /etc/haproxy/dhparams.pem
הקטע כולו צריך להיראות דומה לדוגמה הבאה, כולל השורה החדשה המודגשת ssl-dh-param-file
שהוספת:
/etc/haproxy/haproxy.cfg. . .
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
# utilize system-wide crypto-policies
#ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
ssl-dh-param-file /etc/haproxy/dhparams.pem
כאשר סיימת לערוך את הקובץ, שמור וסגור אותו על ידי לחיצה על ESC
, הקלדה של :wq
, ולחיצה על ENTER
.
בדוק את התצורה באמצעות הפקודה haproxy -c
כדי לוודא שהוספת את ההגדרה הנכונה וש-HAProxy יכול לגשת לקובץ dhparams.pem
המותאם אישית:
תקבל פלט שמצהיר כי התצורה תקפה כמו בדוגמה הבאה:
OutputConfiguration file is valid
אם התצורה שלך תקפה, הפעל את HAProxy מחדש כך שהוא ישתמש בקובץ הפרמטרים החדש של Diffie-Hellman:
עכשיו הגדרת את HAProxy עם סט של פרמטרים מותאמים אישית של Diffie-Hellman בגודל של 2048 ביט שכל הפרונטים יוכלו להשתמש בהם. כמו כן, ביטלת את האזהרות של tune.ssl.default-dh-param
.
מסקנה
במדריך זה, למדת כיצד לאתר בעיות ב-HAProxy כגון הודעת אזהרה של Setting tune.ssl.default-dh-param to 1024 by default
. חקרת ארבעה שיטות שונות לבדיקת התצורה של ה-HAProxy כדי למצוא את ההודעה. ראשית, השתמשת בפקודות systemctl
ו-journalctl
כדי לבדוק את מצב שרת ה-HAProxy ולנסות למצוא את ההודעה ביומני המערכת. לאחר מכן בדקת את קובץ התצורה של HAProxy באמצעות הפקודה המובנית haproxy -c
. לבסוף בדקת ערכי יומן באמצעות הפקודה grep
על קובץ הלוג של HAProxy.
לאחר שאישרת שהשרת שלך מייצר את ההודעה של Setting tune.ssl.default-dh-param to 1024 by default
, יצרת קובץ פרמטרים מותאם אישית של Diffie-Hellman והגדרת את HAProxy להשתמש בו על ידי הגדרת ההוראה להגדרת ssl-dh-param-file
.
עכשיו שיש לך את התצורה הזו במקום, שרת ה-HAProxy שלך ישתמש באופן ברירת מחדל בפרמטרים של Diffie-Hellman המאובטחים יותר, והודעת האזהרה של tune.ssl.default-dh-param
לא תופיע יותר ביומני הלוג שלך.