Вопрос или проблема
Я хочу отключить обмен ключами по Диффи-Хеллману с ключами короче 2048 бит, так как у меня есть предупреждение о уязвимости слабого обмена ключами SSL/TLS.
В качестве решения инструмент сам подсказывает мне следующее:
Измените конфигурацию сервера SSL/TLS так, чтобы разрешить только сильные обмены ключами. Обмены ключами, используемые на сервере, должны обеспечивать как минимум 112 бит безопасности, поэтому минимальный размер ключа, чтобы не возникала данная уязвимость, должен быть:
2048 бит для обмена ключами Диффи-Хеллмана (DH) или RSA
224 бита для обмена ключами по эллиптической кривой Диффи-Хеллмана (EDCH).
Согласно тому, что я нашел, я вижу, что изменение следующей строки в файле java.security исправит ошибку
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES,
MD5withRSA,
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL,
включить jdk.disabled.namedCurves
на
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES,
MD5withRSA,
DH keySize < 2048, EC keySize < 224, 3DES_EDE_CBC, anon, NULL,
включить jdk.disabled.namedCurves
Должен ли я внести какие-либо другие изменения, так как я читал на некоторых форумах, что изменение этой строки по-прежнему приводит к появлению уязвимости?
Настройки шифрования/криптографии в Linux специфичны для приложения, и на самом деле нет единой системной настройки, которая позволяет вам регулировать криптонастройки для всех приложений, серверов и служб.
Команда RHEL update-crypto-policies
является наиболее близкой, но с умолчательными политиками, такими как, например, update-crypto-policies --set FUTURE
, она не предоставляет возможности регулирования одной настройки без создания своей собственной, и ваши приложения могут даже не иметь криптополитики.
Ответ или решение
Для решения проблемы отключения обмена ключами Diffie-Hellman (DH) с длиной менее 2048 бит в SSL/TLS, вам необходимо внести изменения в конфигурацию сервера. Это важно для предотвращения уязвимостей, связанных с использованием слабых ключей, что может привести к компрометации передаваемых данных. Ниже представлена пошаговая инструкция по выполнению данной задачи.
Шаг 1: Изменение java.security
Основное изменение, которое необходимо внести, заключается в редактировании файла java.security
.
-
Найдите файл:
- Обычно файл находится по пути:
$JAVA_HOME/jre/lib/security/java.security
или$JAVA_HOME/lib/security/java.security
.
- Обычно файл находится по пути:
-
Откройте файл для редактирования:
- Вы можете использовать текстовый редактор, такой как
vi
илиnano
в терминале:vi $JAVA_HOME/jre/lib/security/java.security
- Вы можете использовать текстовый редактор, такой как
-
Измените строку
jdk.tls.disabledAlgorithms
:- Найдите строку, которая выглядит следующим образом:
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, include jdk.disabled.namedCurves
- Измените
DH keySize < 1024
наDH keySize < 2048
:jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 2048, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, include jdk.disabled.namedCurves
- Найдите строку, которая выглядит следующим образом:
-
Сохраните изменения и закройте редактор.
Шаг 2: Проверка влияния изменений
После изменения файла java.security
, важно убедиться, что изменения вступили в силу:
-
Перезапустите связанные службы:
- После внесения изменений, вам необходимо перезапустить серверные приложения, использующие Java, чтобы они смогли подхватить новые настройки.
-
Проверьте конфигурацию:
- Используйте инструменты, такие как
openssl
или специализированные сканеры уязвимостей, чтобы проверить, действительно ли сервер теперь отклоняет все соединения с ключами DH менее 2048 бит. Например:openssl s_client -connect your-server:443 -cipher 'EXP'
- Используйте инструменты, такие как
Шаг 3: Дополнительные меры
Хотя изменение java.security
является основным шагом, объем изменений может варьироваться в зависимости от вашей конкретной среды и используемых приложений. Вот ещё несколько рекомендаций:
-
Проверьте конфигурацию веб-сервера:
- Если вы используете веб-сервера, такие как Apache или Nginx, убедитесь, что в их конфигурации также отключены слабые ключи. Например, в Nginx вы можете использовать директиву
ssl_dhparam
для указания сильного DH параметра:ssl_dhparam /etc/ssl/certs/dhparam.pem;
- Если вы используете веб-сервера, такие как Apache или Nginx, убедитесь, что в их конфигурации также отключены слабые ключи. Например, в Nginx вы можете использовать директиву
-
Создайте собственные криптографические политики:
- Если ваши приложения поддерживают это, создайте кастомные криптографические политики для обеспечения строгих требований к шифрованию. Это может включать систему команд, как
update-crypto-policies
, только для определенных приложений.
- Если ваши приложения поддерживают это, создайте кастомные криптографические политики для обеспечения строгих требований к шифрованию. Это может включать систему команд, как
Заключение
Выполнение проверок и внесение подобной конфигурации позволит вам значительно повысить безопасность SSL/TLS на вашем сервере. Следуйте этим шагам и обязательно тестируйте изменения, чтобы минимизировать риски и избежать ненужных уязвимостей.
Не забывайте, что безопасность – это динамичный процесс, и регулярные проверки, обновления и настройка систем являются обязательными условиями для защиты данных.