Как удалить/отключить наборы шифров CBC в Apache сервере?

Вопрос или проблема

Я попробовал настройки ниже, чтобы удалить CBC шифры в Apache сервере,

SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder on
SSLCompression off

после ряда повторных тестов, CBC шифры все еще включены в моем Apache. Я не уверен, какие шифры мне следует удалить/добавить.

Это распространенная проблема в библиотеке TLS, которую использует ваша установка Apache, OpenSSL, которая не обозначает шифры их полными IANA именами, а часто использует упрощенные, которые зачастую упускают используемый режим шифрования. Это плохая идея, и, насколько я знаю, они больше не делают так с недавно добавленными шифрами.

Ваша конфигурация все еще запрашивает некоторые CBC шифры, например, ECDHE-ECDSA-AES256-SHA384, который на самом деле является TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384. Любой AES шифр, не указывающий режим шифрования, скорее всего, использует CBC в OpenSSL (а значит, и в Apache).

Вы можете искать их по одному, проверяя https://ciphersuite.info/cs/?sort=asc&security=all&singlepage=true&tls=tls12&software=openssl или воспользовавшись опцией, которую я рекомендую, использовать Генератор конфигураций SSL от Mozilla, чтобы быстро получить проверенную конфигурацию (https://ssl-config.mozilla.org/). Чтобы избежать включения генератором CBC шифров, выберите “Intermediate” как настройку, так как “Old” включает некоторые CBC шифры для подключения очень старых клиентов.

Я понимаю, что этот вопрос был задан 2 года назад (сейчас 2025). Но у меня была та же проблема, мне нужно было отключить все слабые CBC шифры, и я нигде не мог найти приемлемый ответ. Надеюсь, этот ответ поможет всем, кто ищет решение.

После анализа и тестирования с помощью OpenSSL команды openssl ciphers -stdname <list>, чтобы удостовериться, что я не включаю CBC шифры без испорченных хороших шифров, финальная цепочка с некоторыми дополнительными рекомендованными командами Apache SLL выглядит так:

SSLCipherSuite HIGH:-AES:-CAMELLIA:AESGCM:!kRSA
SSLHonorCipherOrder on
SSLProtocol +TLSv1.3 +TLSv1.2
SSLSessionTickets        off
SSLStrictSNIVHostCheck   on

Объяснение.

Список должен начинаться с общего списка. Если он не указан, я обнаружил, что используется ALL. Поэтому я начал с HIGH. Ранее я добавлял MEDIUM в цепочку, чтобы разрешить работу старых браузеров, но теперь это небезопасные SSLv3 шифры, поэтому я больше не добавляю этот список.

Теперь сложная часть. CBC не может быть удален индивидуально (раньше это был ‘скрытый’ допустимый псевдоним, но больше нет), поэтому я решил удалить все алгоритмы кодирования шифров, которые могли бы иметь CBC. Это AES и CAMELLIA, поэтому они удалены, но также удален GCM. Теперь мне нужно добавить обратно хорошие GCM. К сожалению, CAMELLIA не имеет кодировок GCM, поэтому добавляются только AESCGM. Наконец, все шифры, использующие RSA обмен ключами, удалены навсегда.

Я проверил сайт, где я внедрил это, используя SSL LABS. Теперь все слабые шифры исчезли. Однако следует помнить, что теперь некоторые старые браузеры/ОС не будут работать (например, Win Phone 8.1, iOS 8.4, OSX 10.10). Это баланс между безопасностью и поддержкой пользователей с устаревшими устройствами. Лично я выбираю безопасность.

.

Ответ или решение

Удаление или отключение CBC (Cipher Block Chaining) шифров из конфигурации Apache сервера – важная задача, направленная на повышение безопасности вашего сервера. Этот процесс может быть вызван необходимостью отказа от устаревших или слабых шифров, которые могут стать уязвимостью для атак. В этом ответе мы разберем теорию, применим её на практике, и рассмотрим, как вы можете внедрить лучшие решения для безопасности вашего сервера.

Теория

CBC (Cipher Block Chaining) – это режим шифрования, который исторически использовался в различных протоколах для увеличения безопасности передачи данных. Однако со временем были обнаружены уязвимости, такие как BEAST (Browser Exploit Against SSL/TLS) атака, которые сделали использование CBC менее безопасным, особенно с появлением более надежных альтернатив, таких как GCM (Galois/Counter Mode).

Основная задача – минимизация рисков, которые могут возникнуть в результате эксплуатации уязвимостей, связанных с CBC. Для этого предлагается отказаться от использования CBC-шифров в пользу более современных и защищённых вариантов.

Пример

Ваши предыдущие настройки попытались отключить CBC, но не все объявления были корректными:

SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder on
SSLCompression off

Проблема заключается в том, что некоторые из этих шифров на самом деле используют CBC, несмотря на их наименование. Например, ECDHE-ECDSA-AES256-SHA384 является CBC-шифром, хотя это не очевидно из-за отсутствия прямого указания на режим шифрования. Это демонстрирует важность понимания каждой записи в конфигурации.

Применение

Для эффективного удаления CBC-шифров в Apache используйте следующие рекомендации:

  1. Используйте команду OpenSSL для проверки шифров. Выполните openssl ciphers -stdname <список>, чтобы удостовериться, что CBC отсутствуют в предложенных шифрах. Это позволяет избежать нежелательных шифров в вашей конфигурации.

  2. Проверьте конфигурацию с использованием надежных инструментов. Хорошим примером является генератор конфигурации SSL от Mozilla (https://ssl-config.mozilla.org/). Этот инструмент может предложить протестированные конфигурации, которые исключают устаревшие шифры.

  3. Примеры конфигурации:

SSLCipherSuite HIGH:!aNULL:!MD5:!3DES:!CBC:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305
SSLHonorCipherOrder on
SSLProtocol +TLSv1.2 +TLSv1.3
SSLSessionTickets off
SSLStrictSNIVHostCheck on

В этой конфигурации:

  • Используйте HIGH для указания высоко-уровневых шифров.
  • Исключите все шифры с CBC, RSA (как ключевой обмен) и другие устаревшие механизмы (3DES).
  • Включение TLSv1.2 и TLSv1.3 обеспечивает совместимость с современными клиентами.
  1. Проводите регулярные тесты и обновления. Используйте сервисы, такие как SSL Labs, чтобы проверить пригодность вашей конфигурации и убедиться, что она не поддерживает устаревшие шифры. Имейте в виду, что современная конфигурация может не поддерживать устаревшие устройства и браузеры, но это необходимая жертва для повышения безопасности.

Таким образом, отключение CBC-шифров в сервере Apache – это важный шаг для обеспечения безопасности передаваемых данных. Применяя данную теорию на практике и соблюдая приведенные рекомендации, вы значительно повысите защиту вашего сервера от возможных атак.

Оцените материал
Добавить комментарий

Капча загружается...