Блог и новости

Как получить A+ по безопасности SSL/TLS с Nginx Ingress

Блог Проверки Безопасность
Kubernetes + ingress + SSL с оценкой A+
Безопасность SSL/TLS-сертификатов — это не просто галочка в списке, а фундаментальная часть защиты вашего веб-сервиса. Наши сканеры Pingera помогают выявить слабые места, но для достижения оценки A+ требуется глубокая настройка. Сегодня мы рассмотрим, как добиться этого с помощью Nginx Ingress и почему высокий балл — это не всегда универсальное решение.

Оценка безопасности SSL/TLS в Pingera

В Pingera мы предоставляем мощный инструмент для мониторинга ваших SSL/TLS-сертификатов. Наш сканер анализирует вашу конфигурацию по множеству критериев — от используемых протоколов и наборов шифров до длины ключа. В результате вы получаете оценку от F до A+. Этот рейтинг не просто показывает, насколько ваш сайт защищен, но и помогает быстро выявить потенциальные уязвимости, которые могут поставить под угрозу конфиденциальные данные пользователей.

Что такое Nginx Ingress?

Прежде чем углубляться в детали, давайте разберемся, что такое Nginx Ingress и почему он так важен в экосистеме Kubernetes.
Nginx Ingress — это контроллер Ingress для Kubernetes, который использует Nginx в качестве прокси и балансировщика нагрузки. В мире Kubernetes Ingress-контроллер — это мост между внешним миром и вашими сервисами внутри кластера. Он берет на себя управление входящим трафиком, направляя его к нужным сервисам в зависимости от правил, определенных в Ingress-ресурсах.
ingress контроллер в Kubernetes кластере
Почему именно Nginx? Nginx — один из самых популярных и высокопроизводительных веб-серверов и прокси-серверов. Его репутация как надежного и эффективного инструмента делает его идеальным выбором для Ingress-контроллера. Он обеспечивает:
  • Балансировку нагрузки: Равномерно распределяет запросы между несколькими экземплярами вашего приложения.
  • SSL/TLS-терминацию: Заканчивает TLS-соединение на уровне Ingress-контроллера, избавляя ваши бэкэнд-сервисы от необходимости заниматься шифрованием.
  • Маршрутизацию: Направляет трафик на основе URL-путей, доменов или заголовков.
  • Безопасность: Предоставляет множество опций для защиты, включая настройки, о которых мы сегодня поговорим.
С Nginx Ingress вы получаете централизованную точку входа для всего трафика, что значительно упрощает управление и повышает безопасность вашего кластера.

Настройка Nginx Ingress для A+

Чтобы добиться A+ оценки, нам нужно тщательно настроить Nginx Ingress. Мы будем использовать Helm-чарт, изменяя файл values.yaml для Ingress-NGINX. Основные параметры, влияющие на рейтинг, находятся в разделе config.
Вот пример values.yaml с минимальным набором настроек, которые гарантированно дадут вам A+:
config:
  # Используем только современные и безопасные протоколы.
  ssl-protocols: "TLSv1.2 TLSv1.3"
  # Набор шифров для TLSv1.3
  ssl-ciphers: "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
  # Набор шифров для TLSv1.2, с упором на Forward Secrecy.
  ssl-prefer-server-ciphers: "true"
  ssl-ciphers-v2: "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256"
  # Включение сессионных тикетов для быстрого возобновления сессий.
  ssl-session-tickets: "true"
  ssl-session-ticket-key: "BASE64_строка_ключ"
  # Дополнительные настройки для производительности и безопасности
  ssl-early-data: "true"
  ssl-session-timeout: "1h"
  ssl-dh-param: "/* путь к вашему dhparam-файлу */"
Разберем, что делают эти параметры:

  • ssl-protocols: "TLSv1.2 TLSv1.3": Это самый важный параметр. Мы отключаем устаревшие и небезопасные протоколы, такие как TLS 1.0 и 1.1, которые могут иметь известные уязвимости. Использование только TLS 1.2 и 1.3 — обязательное условие для получения высокого балла.
  • ssl-ciphers и ssl-ciphers-v2: Здесь мы задаем список криптографических шифров. Для TLS 1.3 список фиксированный, а для TLS 1.2 мы выбираем только сильные шифры, которые обеспечивают Perfect Forward Secrecy (PFS), например, на основе ECDHE. Это предотвращает расшифровку данных, если ключ сервера будет скомпрометирован в будущем.
  • ssl-prefer-server-ciphers: "true": Этот параметр заставляет сервер выбирать шифр из своего списка, а не принимать выбор клиента. Это гарантирует, что даже если у клиента есть небезопасные шифры, будет использоваться самый надежный из доступных на сервере.
  • ssl-session-tickets: "true": Включение сессионных тикетов позволяет клиентам быстрее возобновлять TLS-сессии, что сокращает время на установление соединения и улучшает производительность.
  • ssl-dh-param: Указание собственного файла dhparam для алгоритма Диффи-Хеллмана увеличивает безопасность, так как стандартные параметры могут быть скомпрометированы.

После того как вы настроили values.yaml, развернуть Nginx Ingress с новой конфигурацией очень просто. Используйте команду helm upgrade:
helm upgrade --install my-ingress-controller ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--create-namespace -f values.yaml
Эта команда обновит ваш Ingress-контроллер с новыми настройками, которые будут применены ко всем Ingress-ресурсам, использующим этот контроллер.
A+ оценка SSL сертификата в платформе Pingera

Заключение

Достижение A+ в оценке SSL/TLS-безопасности — это отличный способ укрепить защиту вашего веб-приложения. Nginx Ingress предоставляет гибкие инструменты для такой тонкой настройки. Однако всегда помните о балансе между максимальной безопасностью и доступностью для пользователей. Мы писали о соблюдении баланса в блоге.
Готовы оценить безопасность вашего сайта? Pingera предоставляет мощные инструменты для мониторинга SSL/TLS-сертификатов, помогая вам выявлять проблемы до того, как они станут критическими.