Отличается ли процесс генерации ключей сервера SSL/TLS на виртуальных машинах?

Bitsight сообщает, что для трех серверов нашей компании наше простое число Диффи-Хеллмана очень часто используется и небезопасно. Мы несколько раз следовали инструкциям здесь: https://weakdh.org/sysadmin.html , и это сработало с другими нашими серверами. Однако эти 3 не обновляются, что бы мы ни делали. Мы заметили одну вещь: все эти три сервера являются виртуальными машинами. Каждый из них находится на Ubunutu 18.04.6 LTS. Есть ли что-то, что мы не проверили или упустили, что препятствует обновлению этого значения?

1 ответ

Это не имеет ничего общего с виртуальными машинами и голым железом или чем-то еще.

Это результат того, что ваши системы полагаются на предварительно скомпилированные ключи DH на самих веб-серверах - Apache, NGINX и т. д. имеют свои собственные ключи DH, которые легко доступны в предварительно скомпилированном виде.

Способ решения этой проблемы — создать свои собственные параметры DH, а затем предоставить их для вашей конфигурации и указать веб-серверам использовать эти параметры DH.

Чтобы сгенерировать dhparams:

sudo openssl dhparam 2048 > /etc/ssl/dhparam.pem

После этого вам просто нужно настроить свои веб-серверы для их использования.

Для Apache 2.4.x добавьте это в конфигурацию своих сайтов, где вы настраиваете сертификаты SSL:

SSLOpenSSLConfCmd DHParameters "/etc/ssl/dhparam.pem"

Для NGINX добавьте это в свою конфигурацию, где настроены ваши SSL-сертификаты:

ssl_dhparam /etc/ssl/dhparam.pem


Обратите внимание, что вам необходимо сгенерировать это в каждой системе независимо, чтобы отключить предупреждения.

Рекомендация отраслевого стандарта DHParam — 2048 бит.


Альтернативно, настройте шифры SSL так, чтобы НЕ использовать конфигурацию DH напрямую.

Лично я заимствую строки шифрования из генератора конфигурации SSL Mozilla и использую этот набор строк шифрования из шифров среднего уровня, но удаляю чистые шифры DH (так что dhparams не является проблемой в этом случае).

Строка шифрования, которую я использую, такова:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305из промежуточных конфигураций. Mozilla рекомендует это для общего использования серверов и в тех случаях, когда вам не нужна устаревшая поддержка старых систем. ( Подробнее см. https://wiki.mozilla.org/Security/Server_Side_TLS )

Затем мы указываем это в конфигурациях для шифров SSL.

Для любой системы Apache недавнего выпуска (даже версии 18.04 или более поздней) мы указываем это, где вы настраиваете свои сертификаты/настройки SSL для рекомендуемых настроек (за исключением шифров DHE, но включая шифры ECDHE, которые представляют собой шифры с эллиптической кривой):

      SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305

Для NGINX это строки конфигурации, которые нужно добавить в соответствии со стандартными рекомендациями:

      ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;

Это не позволит вашей системе (системам) полностью использовать шифры DHE (но не шифры ECDHE, на которые не влияет WeakDH), минуяdhparamпроблема целиком.

Другие вопросы по тегам