Как реализовать безопасность заголовков HTTP для предотвращения уязвимостей?

Знаете ли вы, что большинство уязвимостей можно устранить, добавив необходимые заголовки в заголовок ответа??


Безопасность так же важна, как контент и SEO вашего сайта, и тысячи сайтов взламываются из-за неправильной конфигурации или отсутствия защиты. Если вы являетесь владельцем сайта или инженером по безопасности и хотите защитить свой сайт от Clickjacking, внедрение кода, MIME-типы, XSS, и т.д. атаки, тогда это руководство поможет вам.

В этой статье я расскажу о различных HTTP-заголовках для реализации на нескольких веб-серверах. & CDN провайдеры для лучшей защиты сайта.

Ноты:

  • Рекомендуется сделать резервную копию файла конфигурации перед внесением изменений
  • Некоторые заголовки могут поддерживаться не во всех браузерах, поэтому проверить совместимость до реализации.
  • Mod_headers должен быть включен в Apache для реализации этих заголовков. Убедитесь, что следующая строка без комментариев в файле httpd.conf.

LoadModule headers_module modules / mod_headers.so

  • После внедрения вы можете использовать безопасный онлайн-инструмент для проверки заголовков..

Используя WordPress ?: Вы можете попробовать использовать Плагин HTTP Headers, который заботится об этих заголовках и многое другое.

X-XSS-Protection

Заголовок X-XSS-Protection может предотвратить некоторый уровень XSS (межсайтовый скриптинг), и это совместимо с IE 8+, Chrome, Opera, Safari & Android.

Google, Facebook, Github используют этот заголовок, и большинство консультантов по тестированию на проникновение попросят вас реализовать это.

Существует четыре возможных способа настройки этого заголовка..

Значение параметраСмысл
0XSS фильтр отключен
1XSS фильтр включил и продезинфицировал страницу при обнаружении атаки
1; Режим = БлокXSS фильтр включил и предотвратил рендеринг страницы при обнаружении атаки
1, отчет = HTTP: //example.com/report_URIXSS фильтр включен и сообщил о нарушении при обнаружении атаки

Давайте осуществим 1; Режим = Блок в следующих веб-серверах.

HTTP-сервер Apache

Добавьте следующую запись в httpd.conf вашего веб-сервера Apache

Набор заголовков X-XSS-Protection "1; Режим = Блок"

Перезапустите апач для проверки

Nginx

Добавьте следующее в nginx.conf под блоком http

add_header X-XSS-Protection "1; Режим = Блок";

Перезапуск Nginx необходим, чтобы это отразилось на заголовке ответа вашей веб-страницы..

MaxCDN

Если вы используете MaxCDN, тогда добавление заголовка легко и быстро.

Перейти к Edge Rules >> нажмите «Новое правило» и выберите «Добавить заголовок X-XSS-Protection» из выпадающего списка..

edgerules

Microsoft IIS

  • Открыть IIS Manager
  • Выберите сайт, для которого вы хотите включить заголовок
  • Перейдите к «Заголовки ответа HTTP».
  • Нажмите «Добавить» под действиями
  • Введите имя, значение и нажмите Ok

МИС-х-XSS-защиты

  • Перезапустите IIS, чтобы увидеть результаты

HTTP Строгая Транспортная Безопасность

Заголовок HSTS (HTTP Strict Transport Security), обеспечивающий отправку всех сообщений из браузера через HTTPS (HTTP Secure). Это предотвращает щелчок HTTPS через запросы и перенаправляет HTTP-запросы к HTTPS..

Перед внедрением этого заголовка вы должны убедиться, что все страницы вашего сайта доступны через HTTPS, иначе они будут заблокированы.

Заголовок HSTS поддерживается во всех основных версиях браузера, таких как IE, Firefox, Opera, Safari и Chrome. Есть три параметра конфигурации.

Значение параметраСмысл
максимальный возрастПродолжительность (в секундах), чтобы сообщить браузеру, что запросы доступны только через HTTPS.
IncludeSubdomainsКонфигурация действительна и для субдомена.
предварительная нагрузкаИспользуйте, если вы хотите, чтобы ваш домен был включен в Список предварительной загрузки HSTS

Итак, давайте рассмотрим пример настройки HSTS на один год, включая предварительную загрузку для домена и субдомена..

HTTP-сервер Apache

Вы можете реализовать HSTS в Apache, добавив следующую запись в файл httpd.conf

Набор заголовков Strict-Transport-Security "макс возраста = 31536000; IncludeSubdomains; предварительная нагрузка"

Перезапустите apache, чтобы увидеть результаты

Nginx

Чтобы настроить HSTS в Nginx, добавьте следующую запись в nginx.conf под директивой server (SSL)

add_header Strict-Transport-Security ‘max-age = 31536000; IncludeSubdomains; преднагрузки ‘;

Как обычно, вам нужно будет перезагрузить Nginx, чтобы проверить

Cloudflare

Если вы используете Cloudflare, то вы можете включить HSTS всего за несколько кликов.

  • Войти в Cloudflare и выберите сайт
  • Перейдите на вкладку «Крипто» и нажмите «Включить HSTS».

CloudFlare-HSTS-конфигурации

Выберите настройки, которые вам нужны, и изменения будут применены на лету.

Microsoft IIS

Запустите диспетчер IIS и добавьте заголовок, перейдя в «Заголовки ответа HTTP» для соответствующего сайта..

МИС-HSTS

Перезагрузите сайт

X-Frame-Options

Используйте заголовок X-Frame-Options, чтобы предотвратить ClickJacking уязвимость на вашем сайте. Реализуя этот заголовок, вы даете указание браузеру не встраивать вашу веб-страницу в фрейм / фрейм. Это имеет некоторые ограничения в поддержке браузера, поэтому вы должны проверить перед его внедрением.

Вы можете настроить следующие три параметра.

Значение параметраСмысл
SAMEORIGINФрейм / фрейм контента разрешен только из одного источника сайта.
ОТРИЦАТЬЗапретите любому домену встраивать ваш контент, используя frame / iframe.
ALLOW-ОТРазрешить кадрирование контента только по определенному URI.

Давайте посмотрим, как реализовать «ОТРИЦАТЬ», Поэтому ни один домен не встраивает веб-страницу.

апаш

Добавьте следующую строку в httpd.conf и перезапустите веб-сервер, чтобы проверить результаты.

Заголовок всегда добавляет X-Frame-Options DENY

Nginx

Добавьте следующее в nginx.conf под директивой / блоком сервера.

add_header X-Frame-Options «DENY»;

Перезапустите, чтобы проверить результаты

F5 LTM

Создайте iRule со следующим и связанным с соответствующим виртуальным сервером.

когда HTTP_RESPONSE {

HTTP :: заголовок вставки "X-FRAME-OPTIONS" "ОТРИЦАТЬ"

}

Вам не нужно ничего перезагружать, изменения отражаются в эфире.

WordPress

Вы можете также реализовать этот заголовок через WordPress. Добавьте следующее в файл wp-config.php

заголовок (‘X-Frame-Options: DENY);

Если вам неудобно редактировать файл, то вы можете использовать плагин, как описано здесь или упоминалось выше.

Microsoft IIS

Добавьте заголовок, перейдя в «HTTP Response Headers» для соответствующего сайта.

МИС-х-каркасные варианты

Перезапустите сайт, чтобы увидеть результаты.

X-Content-Type-Options

Предотвращать MIME вводит угрозу безопасности, добавляя этот заголовок в ответ HTTP вашей веб-страницы. Наличие этого заголовка дает браузеру указание рассматривать типы файлов как определенные и запрещать прослушивание содержимого. Есть только один параметр, который вы должны добавить «nosniff».

Давайте посмотрим, как рекламировать этот заголовок.

апаш

Вы можете сделать это, добавив следующую строку в файл httpd.conf

Набор заголовков X-Content-Type-Options nosniff

Не забудьте перезапустить веб-сервер Apache, чтобы активировать конфигурацию.

Nginx

Добавьте следующую строку в файл nginx.conf под блоком сервера.

add_header X-Content-Type-Options nosniff;

Как обычно, вы должны перезагрузить Nginx, чтобы проверить результаты.

Microsoft IIS

Откройте IIS и перейдите к заголовкам ответа HTTP

Нажмите на Добавить и введите Имя и Значение

МИС-мим-типы

Нажмите OK и перезапустите IIS, чтобы проверить результаты..

Закрепление открытого ключа HTTP

Минимизировать человека в середине (MITM) атакует риск, закрепив сертификат. Это возможно с HPKP Заголовок (закрепление открытого ключа HTTP).

Вы можете закрепить открытый ключ корневого сертификата или немедленный сертификат. На момент написания статьи HPKP в настоящее время работает в Firefox и Chrome и поддерживает алгоритм хеширования SHA-256..

Существует четыре возможных конфигурации параметров.

Значение параметраСмысл
отчет-URI =»URL»Сообщите по указанному URL, если проверка булавки не удалась. Это необязательно.
пин-sha256 =»sha256key»Укажите контакты здесь
макс возраста =Браузер запоминает время в секундах, в течение которого сайт доступен только с помощью одного из закрепленных ключей..
IncludeSubdomainsЭто относится и к поддомену.

Давайте посмотрим пример заголовка HPKP от facebook.com

открытые ключи штырьки-отчет только: макс возраст = 500; пин-sha256 ="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18 ="; пин-sha256 ="г / mIkG3eEpVdm + и / ко / cwxzOMo1bk4TyHIlByibiA5E ="; пин-sha256 ="q4PO2G2cbkZhZ82 + JgmRUyGMoAeozA + BSXVXQWB8XWQ ="; Отчет-URI = HTTP: //reports.fb.com/hpkp/

Если это то, что вам нужно реализовать на своем веб-сайте, тогда перейдите на руководство по внедрению, написанное Скоттом Хелме.

Политика безопасности контента

Предотвратить XSS, clickjacking, внедрение кода атак с использованием заголовка Content Security Policy (CSP) в HTTP-ответе вашей веб-страницы. СНТ поручить браузеру загрузить разрешенный контент для загрузки на веб-сайт.

Все браузеры не поддерживают CSP, так что вы должны проверить, прежде чем внедрять его. Есть три способа достижения заголовков CSP.

  1. Политика безопасности контента – Уровень 2 / 1.0
  2. X-Content-Security-Policy – устарела
  3. X-Webkit-CSP – устарел

Если вы по-прежнему используете устаревшую версию, вы можете обновить ее до последней..

Существует несколько параметров для реализации CSP, и вы можете обратиться к OWASP для идеи. Тем не менее, давайте рассмотрим два наиболее часто используемых параметра.

Значение параметраСмысл
по умолчанию-SrcЗагрузить все из определенного источника
скрипт-SrcЗагружать только скрипты из определенного источника

Следующий пример загрузки всего из одного источника на различных веб-серверах.

апаш

Добавьте следующее в файл httpd.conf и перезапустите веб-сервер, чтобы он заработал.

Заголовок установлен Content-Security-Policy "default-src ‘self’;"

Nginx

Добавьте следующее в блок сервера в файле nginx.conf

add_header Content-Security-Policy "default-src ‘self’;";

Microsoft IIS

Перейдите к заголовкам ответа HTTP для вашего соответствующего сайта в IIS Manager и добавьте следующее

МИС-СНТ

X-Разрешенный-Междоменная-политика

Использование продуктов Adobe, таких как PDF, Flash и т. Д.? Вы можете реализовать этот заголовок, чтобы указать браузеру, как обрабатывать запросы через междоменный домен. Используя этот заголовок, вы ограничиваете загрузку ресурсов вашего сайта из других доменов, чтобы избежать злоупотребления ресурсами..

Есть несколько вариантов.

ЦенностьОписание
никтополитика не допускается
мастер-толькоразрешить только мастер-политику
всеможно все
по-контент толькоРазрешить только определенный тип контента. Пример – XML
по-FTP-толькоприменимо только для FTP-сервера

апаш

Если вы не хотите разрешать какие-либо политики.

Заголовок устанавливает X-Permitted-Cross-Domain-Policies "никто"

Вы должны увидеть заголовок, как показано ниже.

Nginx

И, скажем, вам нужно реализовать master-only, а затем добавить следующее в nginx.conf под блоком сервера.

add_header X-Permitted-Cross-Domain-Policies только для мастера;

И результат.

Referrer-Полис

Хотите контролировать реферрер-политику вашего сайта? Есть определенные преимущества конфиденциальности и безопасности. Однако не все параметры поддерживаются всеми браузерами, поэтому ознакомьтесь с вашими требованиями перед внедрением.

Referrer-Policy поддерживает следующий синтаксис.

ЦенностьОписание
нет-ссылающейсяИнформация о реферере не будет отправлена ​​с запросом.
нет-реферер-когда-понижение рейтингаНастройка по умолчанию, при которой реферер отправляется по тому же протоколу, что и HTTP на HTTP, HTTPS на HTTPS.
небезопасном URLполный URL будет отправлен с запросом.
общее происхождениеРеферер будет отправлен только для того же сайта происхождения.
строгое происхождениеотправлять только когда протокол HTTPS
строгое происхождение, когда кросс-происхождениеполный URL-адрес будет отправлен по строгому протоколу, например HTTPS
происхожденияотправить исходный URL во всех запросах
Происхождение-когда-кросс-происхождениеотправить полный URL на том же источнике. Однако в других случаях отправляйте только исходный URL.

апаш

Вы можете добавить следующее, если хотите установить no-referrer.

Заголовок установлен Referrer-Policy "нет-ссылающейся"

А после перезагрузки вы должны иметь в заголовках ответа.

Nginx

Допустим, вам нужно реализовать тот же источник, поэтому вы должны добавить следующее.

add_header Referrer-Policy же-origin;

После настройки вы должны получить результаты ниже.

Ожидать-CT

Новый заголовок, который все еще находится в экспериментальном состоянии, должен дать браузеру команду проверить соединение с веб-серверами для прозрачности сертификатов (CT). Этот проект Google направлен на устранение некоторых недостатков в системе сертификатов SSL / TLS..

Следующие три переменные доступны для заголовка Expect-CT.

ЦенностьОписание
максимальный возрастВ секундах, как долго браузер должен кэшировать политику.
обеспечивать соблюдениеНеобязательная директива для обеспечения соблюдения политики.
отчет-URIБраузер для отправки отчета по указанному URL, если действительный сертификат прозрачности не получен.

апаш

Предположим, вы хотите применить эту политику, отчет и кэш на 12 часов, после чего вам нужно добавить следующее.

Установить заголовок Expect-CT ‘принудительно, max-age = 43200, report-uri ="https://somedomain.com/report"’

И вот результат.

Nginx

Что делать, если вы хотите, чтобы отчет и кэш на 1 час?

add_header Expect-CT ‘max-age = 60, report-uri ="https://mydomain.com/report"«;

Выход будет.

Особенность-политика

Управление функциями браузера, такими как геолокация, полноэкранный режим, динамик, USB, автозапуск, динамик, вибрация, микрофон, оплата, видеомагнитофон и т. Д. Для включения или отключения в веб-приложении.

апаш

Допустим, вам нужно отключить полноэкранный режим, и для этого вы можете добавить следующее в httpd.conf или apache2.conf.

Заголовок всегда устанавливает Feature-Policy "полноэкранный ‘нет’ "

Как насчет добавления нескольких функций в одной строке?

Это тоже возможно!

Заголовок всегда устанавливает Feature-Policy "полноэкранный «нет»; микрофон нет"

Перезапустите Apache HTTP, чтобы увидеть результат.

Приведенный выше код будет указывать браузеру отключить полноэкранный режим и микрофон.

Nginx

Давайте возьмем другой пример – отключить функцию вибрации.

add_header Feature-Policy "вибрировать «нет»;";

Или отключите геолокацию, камеру и динамик.

add_header Feature-Policy "геолокация «нет»; камера «нет»; говорящий «нет»;";

Вот вывод после перезапуска Nginx.

Вся конфигурация Nginx идет под блоком http в nginx.conf или любом другом используемом вами файле..

Вывод

Обеспечение безопасности веб-сайта является сложной задачей, и я надеюсь, что с помощью приведенных выше заголовков вы добавите уровень безопасности. Если у вас есть бизнес-сайт, то вы можете также рассмотреть возможность использования облачного WAF, например SUCURI защитить свой онлайн-бизнес. Преимущество SUCURI в том, что он обеспечивает безопасность и производительность..

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map