HSTS (HTTP Strict Transport Security) – это механизм веб-безопасности‚ который помогает защитить веб-сайты от атак типа «man-in-the-middle» (MITM)․ Он заставляет браузеры подключаться к сайту только через HTTPS‚ даже если пользователь перешел по HTTP ссылке․ В этой статье мы рассмотрим‚ как настроить HSTS с помощью Ansible‚ инструмента автоматизации управления конфигурацией․
Что такое HSTS и зачем он нужен?
Когда пользователь впервые посещает сайт‚ поддерживающий HSTS‚ сервер отправляет заголовок Strict-Transport-Security․ Этот заголовок сообщает браузеру‚ что в будущем он должен подключаться к сайту только через HTTPS; Это предотвращает перехват трафика и подмену контента злоумышленниками․ HSTS особенно важен для сайтов‚ которые обрабатывают конфиденциальную информацию‚ такую как логины‚ пароли и данные кредитных карт․
Предварительные требования
- Установленный Ansible
 - Доступ к серверу‚ на котором работает веб-сервер (например‚ Apache или Nginx)
 - Права администратора на сервере
 
Настройка HSTS с помощью Ansible
Существует несколько способов настройки HSTS с помощью Ansible․ Мы рассмотрим примеры для Apache и Nginx․
Настройка HSTS для Apache
Для Apache необходимо отредактировать конфигурационный файл виртуального хоста․ В Ansible это можно сделать с помощью модуля lineinfile․
- name: Add HSTS header to Apache configuration
 hosts: webservers
 become: true
 tasks:
 ー name: Add HSTS header
 lineinfile:
 path: /etc/apache2/sites-available/your_site․conf
 regexp: '^Header always set Strict-Transport-Security'
 line: 'Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"'
 state: present
 ー name: Restart Apache
 service:
 name: apache2
 state: restarted
Разъяснение:
hosts: webservers– указывает‚ на каких серверах будет выполняться задача․become: true– указывает‚ что задача должна выполняться с правами администратора․lineinfile– модуль Ansible для редактирования файлов․path– путь к конфигурационному файлу․regexp– регулярное выражение для поиска строки․line– строка‚ которую нужно добавить или заменить․state: present– указывает‚ что строка должна присутствовать в файле․service– модуль Ansible для управления службами․name: apache2– имя службы Apache․state: restarted– указывает‚ что службу нужно перезапустить․
Настройка HSTS для Nginx
Для Nginx также необходимо отредактировать конфигурационный файл виртуального хоста․ В Ansible это можно сделать с помощью модуля lineinfile․
- name: Add HSTS header to Nginx configuration
 hosts: webservers
 become: true
 tasks:
 ─ name: Add HSTS header
 lineinfile:
 path: /etc/nginx/sites-available/your_site․conf
 regexp: '^add_header Strict-Transport-Security'
 line: 'add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";'
 state: present
 ー name: Restart Nginx
 service:
 name: nginx
 state: restarted
Разъяснение:
Разъяснения аналогичны примеру для Apache‚ за исключением пути к конфигурационному файлу и имени службы․
Параметры заголовка HSTS
max-age– определяет‚ как долго браузер должен запоминать‚ что к сайту нужно подключаться только через HTTPS (в секундах)․ Рекомендуется использовать значение 31536000 (1 год)․includeSubDomains– указывает‚ что HSTS распространяется на все поддомены сайта․preload– указывает‚ что сайт можно добавить в список предварительной загрузки HSTS‚ который встроен в браузеры․ Это обеспечивает защиту даже при первом посещении сайта․
Важные замечания
Перед включением HSTS убедитесь‚ что ваш сайт полностью поддерживает HTTPS․ В противном случае пользователи могут потерять доступ к сайту; Также рекомендуется начать с небольшого значения max-age и постепенно увеличивать его․
Предостережение: Неправильная настройка HSTS может привести к проблемам с доступностью сайта․ Будьте внимательны и тщательно протестируйте конфигурацию перед применением ее в production среде․