Недавно была опубликована новая уязвимость в Diffie-Hellman, неофициально называемая «затор», для которой эта страница были собраны предложения о том, как противостоять уязвимости:
У нас есть три рекомендации по правильному развертыванию Diffie-Hellman для TLS:
- Отключите экспорт комплектов шифров. Несмотря на то, что современные браузеры больше не поддерживают экспортные комплекты, атаки FREAK и Logjam позволяют злоумышленнику-посреднику обмануть браузеры, заставив их использовать шифрование экспортного уровня, после чего TLS-соединение может быть расшифровано. Экспортные шифры - это пережиток политики эпохи 1990-х годов, которая препятствовала экспорту надежных криптографических протоколов из США. Никакие современные клиенты не полагаются на экспортные пакеты, и их отключение не имеет большого значения.
- Разверните (эфемерный) алгоритм Диффи-Хеллмана с эллиптической кривой (ECDHE). Обмен ключами Диффи-Хеллмана с эллиптической кривой (ECDH) позволяет избежать всех известных возможных криптоаналитических атак, и современные веб-браузеры теперь предпочитают ECDHE исходному конечному полю Диффи-Хеллмана. Алгоритмы дискретного журнала, которые мы использовали для атаки на стандартные группы Диффи-Хеллмана, не получают такого сильного преимущества от предварительных вычислений, и отдельные серверы не нуждаются в создании уникальных эллиптических кривых.
- Создайте сильную и уникальную группу Diffie Hellman. Несколько фиксированных групп используются миллионами серверов, что делает их оптимальной целью для предварительного вычисления и потенциального подслушивания. Администраторы должны создавать уникальные 2048-битные или более сильные группы Диффи-Хеллмана, используя «безопасные» простые числа для каждого веб-сайта или сервера.
Какие практические шаги мне следует предпринять для защиты моего сервера в соответствии с приведенными выше рекомендациями?
Из статья, которую вы связали, есть три рекомендуемых шага для защиты от этой уязвимости. В принципе, эти шаги применимы к любому программному обеспечению, которое вы можете использовать с SSL / TLS, но здесь мы рассмотрим конкретные шаги по их применению к Apache (httpd), поскольку это рассматриваемое программное обеспечение.
- Отключить экспорт комплектов шифров
Рассмотрение изменений конфигурации, которые мы внесем в п. 2. ниже (!EXPORT
ближе к концу SSLCipherSuite
строка, как мы отключим экспорт комплектов шифров)
- Развертывание (эфемерного) эллиптической кривой Диффи-Хеллмана (ECDHE)
Для этого вам нужно отредактировать несколько настроек в ваших файлах конфигурации Apache, а именно: SSLProtocol
, SSLCipherSuite
, SSLHonorCipherOrder
иметь "лучшие практики" настройки. Достаточно чего-то вроде следующего:
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
Примечание: относительно чего SSLCipherSuite
настройки для использования, это всегда меняется, и рекомендуется обратиться к таким ресурсам, как вот этот чтобы проверить наличие последней рекомендованной конфигурации.
3. Создайте сильную и уникальную группу Диффи Хеллмана.
Для этого вы можете запустить
openssl dhparam -out dhparams.pem 2048
.
Обратите внимание, что это приведет к значительной нагрузке на сервер, пока генерируются параметры - вы всегда можете обойти эту потенциальную проблему, сгенерировав параметры на другом компьютере и используя scp
или аналогичным образом, чтобы передать их на рассматриваемый сервер для использования.
Чтобы использовать эти вновь созданные dhparams
в Apache из Документация Apache:
Чтобы сгенерировать пользовательские параметры DH, используйте команду openssl dhparam. В качестве альтернативы вы можете добавить следующее стандартные 1024-битные параметры DH из RFC 2409, раздел 6.2 в соответствующий файл SSLCertificateFile:
(курсив мой)
за которым следует стандартный 1024-битный параметр DH. Из этого мы можем сделать вывод, что настраиваемые параметры DH могут быть просто добавлены к соответствующему SSLCertificateFile
обсуждаемый.
Для этого запустите что-то похожее на следующее:
cat /path/to/custom/dhparam >> /path/to/sslcertfile
В качестве альтернативы, согласно Подраздел Apache статьи, которую вы изначально связали, вы также можете указать созданный вами пользовательский файл dhparams, если вы предпочитаете не изменять сам файл сертификата, таким образом:
SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"
в зависимости от того, какие конфигурации Apache относятся к вашей конкретной реализации SSL / TLS - обычно в conf.d/ssl.conf
или conf.d/vhosts.conf
но это будет отличаться в зависимости от того, как вы настроили Apache.
Стоит отметить, что согласно эта ссылка,
До Apache 2.4.7 параметр DH всегда был равен 1024 битам и не настраивался пользователем. Это было исправлено в mod_ssl 2.4.7, который Red Hat обратно портировал в свой дистрибутив RHEL 6 Apache 2.2 с httpd-2.2.15-32.el6.
В Debian Wheezy обновите apache2 до 2.2.22-13 + deb7u4 или новее и openssl до 1.0.1e-2 + deb7u17. Вышеупомянутый SSLCipherSuite не работает идеально, вместо этого используйте следующее в соответствии с этот блог:
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES128-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-CAMELLIA128-SHA:!DHE-RSA-CAMELLIA256-SHA
Вы должны проверить, является ли ваша версия Apache более поздней, чем эти номера версий, в зависимости от вашего дистрибутива, а если нет - обновите ее, если это вообще возможно.
После того, как вы выполнили вышеуказанные шаги для обновления своей конфигурации и перезапустили службу Apache для применения изменений, вы должны убедиться, что конфигурация соответствует желанию, запустив тесты на SSLLabs и дальше статья связанных с этой конкретной уязвимостью.
На основе патча Winni Neessen я опубликовал исправление для Apache / 2.2.22 (Debian Wheezy, возможно, также можно использовать в Ubuntu): https://flo.sh/debian-wheezy-apache2-logjam-fix/ - Спасибо. за ваш отзыв.
Вместо того чтобы идти по сложному маршруту, описанному выше, рассмотрите переход на nginx в качестве основного программного обеспечения веб-сервера (а не только кеширования или прокси). Очевидно, что с точки зрения безопасности он больше соответствует текущим стандартам, чем старые механизмы apache. Используя репозиторий nginx, он дает вам более современный и стабильный движок веб-сервера, чем apache.
Я полностью переключился. Сэкономил мне много времени на решение проблем, связанных с TLS, и - для наших конфигураций - он также освободил много оперативной памяти за один раз. Фактически, я нашел использование nginx удивительно простым и понятным по сравнению с мириадами сложностей конфигурации httpd / apache, к которым я привык. Может быть, дело вкуса, я достаточно свободно владел httpd / apache rewrite / config / maintenance до того, как обратился, и это было проще, чем я ожидал. Соответствующая свежая информация о конфигурации nginx доступна в Интернете, а его база пользователей огромна, очень активна и удобна для поддержки. https://news.netcraft.com/wp-content/uploads/2018/11/wpid-wss-top-1m-share.png