אזהרת SSL/TLS של HAproxy: הגדרת tune.ssl.default-dh-param ל-1024 כברירת מחדל

הקדמה

במדריך זה תלמד כיצד לאתר ולתקן הודעת אזהרה של 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 בכל הפצות הלינוקס:

  1. sudo systemctl status haproxy.service -l --no-pager

הדגל -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:

  1. sudo journalctl -u haproxy.service -l --no-pager | grep tune.ssl.default-dh-param

החלק | grep tune.ssl.default-dh-param של הפקודה משתמש בצינור (|) כדי לשלוח את הפלט מ-journalctl לפקודת grep כקלט. בשימוש בצינור, רק שורות התואמות מהיומן יוצגו על המסך שלך.

אם היומן כולל אזהרת tune.ssl.default-dh-param, אז תקבל פלט דומה לזה:

Output
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.

מאחר שהפלט כולל את האזהרה, תוכל לדלג לסעיף הגדרת ערך מאובטח ל-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, יש לוודא להחליף בנתיב הנכון לקובץ שלך:

  1. sudo haproxy -c -f /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. יש להריץ את הפקודה הבאה כדי לבדוק את האזהרות:

  1. sudo grep tune.ssl.default-dh-param /var/log/haproxy.log

שים לב שאם הגדרת את HAproxy עם מיקום לוגים שונה, יש לוודא להחליף את הנתיב שלך במקום הנתון בנתיב המודגש /var/log/haproxy.log.

אם השרת שלך מייצר את האזהרה, תקבל פלט כמו בדוגמה הבאה:

Output
Oct 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 מותאמים אישית, הפעל את הפקודה הבאה:

  1. sudo openssl dhparam -out /etc/haproxy/dhparams.pem 2048

תקבל פלט כמו בדוגמה הבאה:

Output
Generating 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 המותאם אישית:

  1. sudo haproxy -c -f /etc/haproxy/haproxy.cfg

תקבל פלט שמצהיר כי התצורה תקפה כמו בדוגמה הבאה:

Output
Configuration file is valid

אם התצורה שלך תקפה, הפעל את HAProxy מחדש כך שהוא ישתמש בקובץ הפרמטרים החדש של Diffie-Hellman:

  1. sudo systemctl restart haproxy.service

עכשיו הגדרת את 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 לא תופיע יותר ביומני הלוג שלך.

Source:
https://www.digitalocean.com/community/tutorials/haproxy-ssl-tls-warning-setting-tune-ssl-default-dh-param-to-1024-by-default