Hsts: как настроить с помощью docker

Автор: SKGROUPS Проверено редакцией Время чтения: 4 мин SEO продвижение

HSTS (HTTP Strict Transport Security) – это механизм веб-безопасности, который помогает защитить веб-сайты от атак типа «man-in-the-middle» (MITM). Он заставляет браузеры подключаться к сайту только через HTTPS, даже если пользователь ввел HTTP в адресной строке или перешел по HTTP-ссылке. В этой статье мы рассмотрим, как настроить HSTS с использованием Docker.

Что такое HSTS и зачем он нужен?

Когда пользователь впервые посещает сайт, поддерживающий HSTS, сервер отправляет заголовок Strict-Transport-Security. Этот заголовок сообщает браузеру, что в будущем к этому сайту следует подключаться только через HTTPS. Это предотвращает понижение соединения до HTTP, которое может быть использовано злоумышленниками для перехвата данных.

  • Защита от MITM-атак: HSTS предотвращает перехват трафика, даже если злоумышленник контролирует DNS или использует поддельный SSL/TLS-сертификат.
  • Улучшение производительности: Браузеру не нужно выполнять перенаправление с HTTP на HTTPS, что немного ускоряет загрузку страницы.
  • Повышение безопасности пользователей: HSTS обеспечивает дополнительный уровень защиты для пользователей, особенно при использовании общедоступных Wi-Fi сетей.

Настройка HSTS с помощью Docker

Для демонстрации мы будем использовать Nginx в Docker-контейнере. Этот пример можно адаптировать для других веб-серверов, таких как Apache.

Шаг 1: Создание Dockerfile

Создайте файл с именем Dockerfile со следующим содержимым:


FROM nginx:latest

COPY nginx.conf /etc/nginx/conf.d/default.conf

EXPOSE 80
EXPOSE 443

Этот Dockerfile использует официальный образ Nginx и копирует нашу конфигурацию Nginx в контейнер.

Шаг 2: Создание конфигурационного файла Nginx (nginx.conf)

Создайте файл с именем nginx.conf со следующим содержимым. Важно: Замените yourdomain.com на ваш реальный домен.


server {
 listen 80;
 server_name yourdomain.com;
 return 301 https://$host$request_uri;
}

server {
 listen 443 ssl;
 server_name yourdomain.com;

 ssl_certificate /etc/nginx/ssl/yourdomain.com.crt;
 ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;

 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
 location / { index index.html index.htm;
 }
}

Разберем конфигурацию:

  • Первый блок server перенаправляет все HTTP-запросы на HTTPS.
  • Второй блок server обрабатывает HTTPS-запросы.
  • ssl_certificate и ssl_certificate_key указывают на пути к вашим SSL/TLS сертификатам. Внимание: Вам нужно сгенерировать или получить SSL/TLS сертификаты для вашего домена.
  • add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; – это ключевая строка, которая добавляет заголовок HSTS.
    • max-age=31536000: Указывает, что браузер должен запомнить эту политику на 31536000 секунд (1 год).
    • includeSubDomains: Применяет политику HSTS ко всем поддоменам.
    • preload: Позволяет добавить ваш домен в список предварительной загрузки HSTS, который встроен в большинство современных браузеров. Внимание: Для этого требуется пройти проверку на сайте hstspreload.org.

Шаг 3: Сборка и запуск Docker-контейнера

В терминале перейдите в каталог с Dockerfile и nginx.conf и выполните следующие команды:

  1. docker build -t my-nginx . – Собирает Docker-образ.
  2. docker run -d -p 80:80 -p 443:443 my-nginx – Запускает Docker-контейнер.

Важно: Убедитесь, что порты 80 и 443 открыты на вашем сервере и перенаправлены на Docker-контейнер.

Шаг 4: Проверка HSTS

После запуска контейнера вы можете проверить, правильно ли настроен HSTS, используя онлайн-инструменты, такие как SecurityHeaders.com. Введите адрес вашего сайта и убедитесь, что заголовок Strict-Transport-Security присутствует и имеет правильные значения.

Рекомендации

  • Начните с небольшого значения max-age: Начните с небольшого значения max-age (например, 300 секунд) и постепенно увеличивайте его, чтобы убедиться, что все работает правильно.
  • Включите includeSubDomains: Если у вас есть поддомены, обязательно включите includeSubDomains, чтобы защитить их тоже.
  • Рассмотрите возможность предварительной загрузки HSTS: Предварительная загрузка HSTS обеспечивает максимальную защиту, но требует тщательной подготовки и проверки.

Настройка HSTS с помощью Docker – это простой и эффективный способ повысить безопасность вашего веб-сайта. Следуя этим шагам, вы можете защитить своих пользователей от MITM-атак и улучшить общую безопасность вашего приложения.

Количество символов: 3234