HTTP Strict Transport Security (HSTS) - это политика веб-безопасности, которая заставляет веб-браузеры и другие пользовательские агенты взаимодействовать с веб-сайтами исключительно по протоколу HTTPS. Обеспечивая безопасность соединений, HSTS минимизирует риск атак типа "человек посередине" и перехвата файлов cookie.
Современные браузеры имеют встроенную поддержку HSTS, которая делает сайты более устойчивыми к атакам с понижением протокола и перехвату файлов cookie. Когда сайт загружается по протоколу HTTPS и возвращает заголовок Strict-Transport-Security, браузер запоминает, что в течение определенного времени доступ к этому сайту должен осуществляться только через защищенные соединения.
Реализовать HSTS для вашего сайта, работающего на сервере Apache, можно с помощью простой настройки, изменив заголовок ответа. Благодаря этому улучшению пользователи всегда будут получать доступ к вашему сайту через зашифрованное соединение, даже если они по ошибке наберут http:// вместо https://.
Шаги по включению HSTS в Apache
Убедитесь, что ваш сайт имеет действующий SSL-сертификат и может быть доступен по протоколу HTTPS.
Запустите терминал.
Включите модуль заголовков для Apache.
В дистрибутивах с поддержкой a2enmod можно просто выполнить приведенную выше команду без необходимости вручную включать необходимые модули.
1 2 | sudo a2enmod headers sudo systemctl restart apache2 |
В CentOS и Red Hat модуль включается по умолчанию, поэтому ручное включение модулей не требуется.
Откройте файл конфигурации вашего сайта Apache с помощью удобного текстового редактора.
1 | sudo nano /etc/apache2/sites-available/00-mysite.conf |
Добавьте Strict-Transport-Security в директиву Header в конфигурации виртуального сервера.
1 2 3 4 5 | <VirtualHost *:443> # ..... # .... Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" </VirtualHost> |
Убедитесь, что параметр "max-age", который представляет собой продолжительность в секундах, в течение которой браузер должен помнить политику HSTS, установлен в соответствии с вашими потребностями. Приведенная выше настройка будет хранить политику в течение одного года. Отрегулируйте его по мере необходимости.
Перезагрузите или перезапустите службу Apache, чтобы применить изменения.
1 | sudo systemctl restart apache2 |
1 | sudo systemctl restart httpd |
Проверьте правильность внедрения HSTS, зайдя на свой сайт по HTTPS и проверив заголовки ответов.
1 | curl --head https://[domain_name] |
Пример ответа
1 2 3 4 5 6 7 8 9 | HTTP/2 200 pragma: no-cache ... strict-transport-security: max-age=15552000; preload ... vary: Accept-Encoding x-content-type-options: nosniff x-frame-options: DENY x-xss-protection: 0 |