Рассказываем об инструменте для конфигурации SSL, который разработали в Mozilla.
Под катом — о его возможностях и других утилитах для настройки сайтов.
Фото — Lai Man Nung — Unsplash
Зачем нужен генератор
Прежде чем перейти к рассказу о возможностях инструмента, поговорим о его назначении. При работе с HTTPS шифрование применяется в четырех случаях: во время обмена ключами, в SSL-сертификатах, при пересылке сообщений и составлении хеш-суммы (дайджеста).
В каждом из них используются различные наборы алгоритмов, о которых договариваются клиент и сервер. Они выбирают ассиметричный шифр для «рукопожатия», симметричный шифр для кодирования сообщений и алгоритм хеширования для дайджеста.
Например, шифронабор ECDHE-ECDSA-CHACHA20-POLY1305 означает, что обмен ключами происходит по протоколу Диффи — Хеллмана на эллиптических кривых (ECDHE). При этом используются эфемерные ключи (одноразовые) для установки только одного соединения. Центр сертификации подписал сертификат при помощи алгоритма ECDSA (Elliptic Curve Digital Signature Algorithm), а для шифрования сообщений применяется поточный алгоритм ChaCha20. За их целостность отвечает POLY1305, вычисляющий 16-байтный аутентификатор.
Полный список всех доступных комбинаций алгоритмов можно найти на wiki-страничке Mozilla.
Для настройки криптографических методов, используемых сервером, в сети есть специальные инструменты. Такую функциональность имеет SSL Configuration Generator, разработанный в Mozilla.
Что он собой представляет
В Mozilla предлагают три рекомендуемые конфигурации для серверов, использующих TLS:
- Современная — для работы с клиентами, использующими TLS 1.3 без обратной совместимости.
- Промежуточная — рекомендуемая конфигурация для большинства серверов.
- Устаревшая — доступ к сервису осуществляется с помощью старых клиентов или библиотек, таких как IE8, Java 6 или OpenSSL 0.9.8.
Например, в первом случае генератор использует алгоритм шифрования AES128/256, алгоритм хеширования SHA256/384 и режим работы симметричных блочных шифров GCM. Вот пример шифронабора: TLS_AES_256_GCM_SHA384.
Во втором случае число используемых шифров гораздо больше, поскольку многие из них исключили из TLS 1.3 для повышения безопасности. Плюс в шифронаборе TLS 1.3 не описывается тип сертификата и механизм обмена ключами. Поэтому в промежуточной конфигурации имеются протокол Диффи — Хеллмана с эфемерными ключами и RSA.
С учетом этих требований SSL Configuration Generator строит конфигурационный файл (OpenSSL). При построении можно выбрать необходимое серверное программное обеспечение: Apache, HAProxy, MySQL, nginx, PostgreSQL и еще пять других. Вот пример современной конфигурации для Apache:
# generated 2019-07-04, https://ssl-config.mozilla.org/#server=apache&server-version=2.4.39&config=modern
# requires mod_ssl, mod_socache_shmcb, mod_rewrite, and mod_headers
<VirtualHost *:80>
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/signed_cert_and_intermediate_certs
SSLCertificateKeyFile /path/to/private_key
# enable HTTP/2, if available
Protocols h2 http/1.1
# HTTP Strict Transport Security (mod_headers is required) (63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>
# modern configuration, tweak to your needs
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
Генерируемые конфигурации можно использовать в своем проекте, нужно лишь отредактировать пути сертификата и секретного ключа и загрузить настройки. Однако, как говорит один из резидентов Hacker News, важно обратить внимание на версию сервера, чтобы получить правильные результаты. В частности, вывод для nginx 1.0 и nginx 1.4 значительно отличается. Также есть мнение, что в некоторых случаях придется вручную подправить часть сгенерированных шифронаборов, чтобы сохранить обратную совместимость и получить высокую оценку в бенчмарках для сканирования сайтов.
Какие еще утилиты помогут с защитой сайтов
В портфолио Mozilla есть несколько утилит, которые помогут проверить надежность ресурса после конфигурирования SSL.
Первая — это Mozilla Observatory. Изначально компания разрабатывала инструмент для проверки защищенности своих собственных доменов. Теперь он доступен всем вместе с исходным кодом. Observatory сканирует сайты на самые популярные уязвимости, среди них: потенциально опасные cookies, XSS-уязвимости и редиректы. После сканирования системы выдает набор рекомендаций для повышения безопасности интернет-ресурса.
Фото — sebastiaan stam — Unsplash
Еще одна полезный инструмент — Firefox Monitor. Она отслеживает последние утечки данных и посылает уведомления, если информация с какого-либо сайта попала в руки хакеров. Таким образом, администраторы получают возможность оперативно принять меры, минимизировать ущерб и сделать так, чтобы история не повторилась в будущем.
Наши публикации из блогов и социальных сетей:
Как защитить виртуальный сервер в интернете
Зачем нужен мониторинг?
Получение OV и EV сертификата — что нужно знать?Mobile-first индексация с первого июля — как проверить свой сайт?
F.A.Q. по частному облаку от 1cloudКак оценить производительность СХД на Linux: бенчмаркинг с помощью открытых инструментов
Есть мнение: технология DANE для браузеров провалилась
Автор: 1cloud