Введение
В этом учебном пособии вы узнаете, как устранить и исправить предупреждение 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 параметр Диффи-Хеллмана по умолчанию на 1024 бита, вы можете использовать инструмент, такой как Тест сервера SSL Labs, чтобы проверить это за вас. Если вы получили отчет с строкой This server supports weak Diffie-Hellman (DH) key exchange parameters
, то ваш сервер HAProxy подвержен уязвимости.
Если вы уже определили, что ваш сервер HAProxy генерирует предупреждение о параметре tune.ssl.default-dh-param
, и вы хотели бы пропустить устранение неполадок, раздел Решение предупреждения Secure tune.ssl.default-dh-param
в конце этого руководства объясняет, как исправить проблему.
Проверка предупреждения о tune.ssl.default-dh-param
с использованием systemctl
Следуя шагам по устранению неполадок из руководства Как устранить общие ошибки HAProxy в начале этой серии, первым шагом при устранении сообщения о предупреждении Setting tune.ssl.default-dh-param to 1024 by default
является проверка статуса 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
не содержит конкретной информации о предупреждении, но вы знаете, что ваш сервер использует слабые параметры Диффи-Хеллмана, следующий раздел этого руководства поможет вам использовать журналы 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, чтобы он использовал новый файл параметров Диффи-Хеллмана:
Теперь вы настроили HAProxy с набором пользовательских параметров Диффи-Хеллмана размером 2048 бит, которые смогут использовать все frontend. Вы также подавили предупреждения tune.ssl.default-dh-param
.
Заключение
В этом руководстве вы узнали, как устранить проблему с предупреждением HAProxy Установка tune.ssl.default-dh-param по умолчанию на 1024
. Вы изучили четыре различных метода для анализа конфигурации HAProxy для поиска сообщения. Сначала вы использовали systemctl
и journalctl
, чтобы изучить состояние сервера HAProxy и попытаться найти сообщение в журналах systemd
. Затем вы изучили файл конфигурации HAProxy, используя встроенную проверку конфигурации haproxy -c
. Наконец, вы проверили записи журнала, используя команду grep
в файле журнала HAProxy.
После того как вы подтвердили, что ваш сервер генерирует предупреждение Setting tune.ssl.default-dh-param to 1024 by default
, вы создали пользовательский файл параметров Диффи-Хеллмана и настроили HAProxy на его использование, установив директиву конфигурации ssl-dh-param-file
.
Теперь, когда у вас есть такая конфигурация, ваш сервер HAProxy будет по умолчанию использовать более безопасные параметры Диффи-Хеллмана, и предупреждающее сообщение tune.ssl.default-dh-param
больше не будет появляться в ваших журналах.