مقدمة
في هذا البرنامج التعليمي ستتعلم كيفية تشخيص وإصلاح رسالة تحذير HAProxy Setting tune.ssl.default-dh-param to 1024 by default
باستخدام الطرق الموصوفة في برنامج التعليمي كيفية تشخيص أخطاء HAProxy الشائعة في بداية هذه السلسلة. بمجرد التأكد من أن خادمك يولد رسالة التحذير، ستتعلم كيفية إصلاحها عن طريق ضبط خيار التكوين ssl-dh-param-file
لـ HAProxy لاستخدام ملف dhparams.pem
مخصص.
قد تواجه رسالة تحذير HAProxy Setting tune.ssl.default-dh-param to 1024 by default
عندما يكون خادم HAProxy مكونًا بشهادة SSL/TLS ولم يتم تعيين المعلمة tune.ssl.default-dh-param
في ملف التكوين haproxy.cfg
الخاص بـ HAProxy. عندما لا يتم تعيين المعلمة، سيستخدم HAProxy القيمة الافتراضية التي تبلغ 1024 بت لجزء اتفاق المفتاح ديفي-هيلمان في عملية المصافحة TLS، والتي تعتبر غير آمنة.
يمكن أن يؤدي خادم HAProxy الخاص بك إلى تشغيل هذا التحذير دون علمك. يمكنك تكوين شهادة SSL/TLS وستعمل HAProxy، ولكن قد يُحذرك الخادم من المشكلة في الخلفية. إذا لم تكن متأكدًا مما إذا كان خادم HAProxy الخاص بك يستخدم افتراضيًا معلم Diffie-Hellman بقيمة 1024 بت، فيمكنك استخدام أداة مثل اختبار الخادمات من SSL Labs للتحقق من ذلك. إذا تلقيت تقريرًا يحتوي على سطر “يدعم هذا الخادم معلم Diffie-Hellman (DH) ضعيف البارامترات لتبادل المفاتيح”، فإن خادم HAProxy الخاص بك متأثر.
إذا قمت بتحديد مسبقًا أن خادم HAProxy الخاص بك يُطلق تحذيرًا بشأن إعداد tune.ssl.default-dh-param وترغب في تخطي عملية استكشاف الأخطاء وإصلاحها، فإن القسم الخاص بحل تحذير “تأمين 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 على أي توزيعة Linux:
العلم -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.
هناك قسمان مهمان مظللان يجب ملاحظتهما في هذا الإخراج. الأول هو السطر active (running)
، الذي يشير إلى أن HAProxy متاح ويعمل. إذا أظهر الخادم الخاص بك سطرًا مثل Active: failed
، فستحتاج إلى حل مشكلة HAProxy باستخدام الطرق الموصوفة في كيفية حل أخطاء HAProxy الشائعة في بداية هذه السلسلة.
السطور المميزة الثانية تأتي من سجل systemd
وتحتوي على تحذير tune.ssl.default-dh-param
. تقدم هذه السطور كل المعلومات حول التحذير، وكيفية تفعيله، والخطوات التي تقوم بها HAProxy، وكيفية حله.
إذا كان إخراج systemctl
يتضمن سطورًا تحتوي على تحذير tune.ssl.default-dh-param
، فانتقل إلى القسم حل تحذير 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.
تشغيل الأمر التالي على أي توزيعة لينكس لفحص سجلات سجل 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 ومحاولة العثور على الرسالة في سجلات systemd
. ثم فحصت ملف تكوين 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
في سجلاتك بعد الآن.