Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
СЛУЖБЫ IIS 7.0 и более поздних версий содержат модуль фильтрации запросов, основанный на фильтре ISAPI URLScan для IIS 6.0. Модуль помогает повысить безопасность веб-серверов.
Команда IIS также выпустила модуль перезаписи ДОПОЛНИТЕЛЬНЫХ URL-адресов для IIS, который предоставляет функциональные возможности для обработки URL-адресов на основе правил. Несмотря на то, что основной целью модуля переопределения URL-адресов является перезапись путей URL-адресов для запросов, модуль переопределения также можно использовать в качестве средства обеспечения безопасности, которое помогает предотвратить доступ к содержимому веб-сайта.
В этой статье описываются различия между этими двумя модулями и приводятся рекомендации по выбору более безопасного веб-сервера.
Фильтрация запросов и перезапись URL-адресов в конвейере обработки запросов IIS
Прежде всего, важно понять, как модуль фильтрации запросов и модуль перезаписи подключаются к конвейеру IIS. На следующей схеме показан относительный порядок этих двух модулей:
Модуль фильтрации запросов выполняется в начале конвейера обработки запросов путем обработки события BeginRequest. Модуль оценивает метаданные запроса, такие как заголовки, строка запроса, длина содержимого и т. д., чтобы определить, соответствуют ли метаданные запроса любому существующему фильтру. При наличии совпадения модуль создает ответ 404 (файл не найден), а затем создает ярлыки для остальной части конвейера IIS.
Если модуль фильтрации запросов не отфильтровал запрос, запрос передается следующему модулю в конвейере IIS, который может быть модулем перезаписи URL-адресов. Модуль переопределения URL-адресов оценивает запрос по правилам перезаписи. Если правило приводит к перенаправлению, отправляет пользовательский ответ или прерывает запрос, модуль перезаписи создает соответствующий ответ, а затем создает ярлыки для остальной части конвейера IIS.
Обратите внимание, что модуль фильтрации запросов помещается перед модулем переопределения URL-адресов. Это связано с тем, что в архитектуре IIS модуль фильтрации запросов считается компонентом привратника, который защищает веб-сервер от вредоносных запросов. Модуль переопределения URL-адресов считается серверным компонентом обработки URL-адресов, который работает с URL-адресами, которые уже были отфильтрованы модулем фильтрации запросов. Перезапись URL-адресов можно рассматривать как логику серверного приложения, аналогичную ASP.NET приложениям, которые также могут выполнять перезапись или перенаправление. Фильтрация запросов — это первая линия защиты, в то время как средство перезаписи URL-адресов может быть вторым барьером безопасности, более характерным для приложения. Дополнительные сведения см. в записи блога "Взаимодействие между модулями переопределения URL-адресов и фильтрации запросов для IIS7" на веб-сайте IIS.
Различия между фильтрацией запросов и переопределением URL-адресов
Концептуальные различия между фильтрацией запросов и перезаписью URL-адресов:
- Фильтрация запросов разработана и оптимизирована исключительно для сценариев безопасности.
- Перезапись URL-адресов может применяться в широком наборе сценариев; Сценарии безопасности — это лишь подмножество из них.
Учитывая это, вы можете сравнить функции каждого модуля, которые можно использовать для сценариев безопасности. Следует учитывать следующие категории:
- Критерии фильтрации. Какие входные данные можно использовать для принятия решения о блокировке запроса? Кроме того, какие условия можно использовать для выражения логики блокировки запросов?
- Действия, блокирующие запросы. Какие действия можно выполнить, если запрос удовлетворяет критериям фильтрации?
- Влияние на производительность. Как фильтрация запросов и перезапись URL-адресов могут повлиять на производительность веб-сервера?
Критерии фильтрации
В следующей таблице перечислены возможные критерии фильтрации и объясняется, как их поддерживает каждый модуль.
Критерий | Поддерживается модулем фильтрации запросов? | Поддерживается модулем перезаписи URL-адресов? |
---|---|---|
Сканировать запрошенный URL-путь | Да, с помощью поиска подстроки | Да, использование регулярных выражений и шаблонов с подстановочными знаками |
Проверка длины URL-адреса | Да | Нет |
Сканировать строку запроса | Нет | Да, использование регулярных выражений и шаблонов с подстановочными знаками |
Проверка длины строки запроса | Да | Нет |
Проверка HTTP-команд | Да | Да |
Проверка длины содержимого запроса | Да | Нет |
Сканирование заголовков HTTP | Нет | Да, использование регулярных выражений и шаблонов с подстановочными знаками |
Проверка длины заголовков HTTP | Да | Нет |
Проверка переменных сервера | Нет | Да |
Проверка IP-адреса или имени узла отправителя | Нет* | Да |
* Модуль ограничения IP-адресов в IIS можно использовать для блокировки запросов с определенных IP-адресов и имен узлов.
Действия Request-Blocking
Модуль фильтрации запросов имеет только одно действие, которое он выполняет, когда запрос соответствует критерию фильтрации. Действие состоит в том, чтобы вернуть код состояния 404 (Файл не найден).
Модуль перезаписи URL-адресов предоставляет гораздо более широкий набор параметров, если запрос должен быть заблокирован, включая следующее:
- Запрошенный URL-адрес можно переписать на другой URL-адрес. Например, чтобы предотвратить горячую компоновку изображений, можно переписать URL-адрес в файл изображения заполнителя для любых запросов, поступающих от стороннего домена.
- Веб-клиент можно перенаправить на другой URL-адрес.
- В веб-клиент можно отправить код состояния HTTP по вашему выбору. Например, вы можете отправить ответ с состоянием 401 (Не авторизовано) для запросов, соответствующих определенным условиям фильтрации.
- HTTP-запрос можно прервать, удалив подключение сокета. Таким образом, веб-клиент вообще не получает сведений о веб-сервере.
Влияние на производительность
Оба модуля реализованы, чтобы как можно меньше влиять на производительность веб-сервера IIS. Однако между этими модулями существуют следующие важные различия в производительности.
- Модуль перезаписи URL-адресов в значительной степени зависит от шаблонов регулярных выражений. Оценка регулярных выражений является дорогостоящей операцией, и если вы определите много сложных правил перезаписи, вы можете увидеть заметное влияние на пропускную способность веб-сервера.
- Модуль фильтрации запросов не использует регулярные выражения или другие сопоставления шаблонов. Он просто выполняет поиск подстроки, что может оказать значительно меньшее влияние на пропускную способность веб-сервера.
Выбор между фильтрацией запросов и переопределением URL-адресов
Если вы выбираете между фильтрацией запросов и переопределением URL-адресов для ужесточения безопасности веб-сервера, общее правило заключается в том, чтобы начать с фильтрации запросов. Фильтрация запросов оптимизирована для сценариев безопасности, и ее набор функций, скорее всего, будет достаточным для реализации требований к безопасности. Если у вас есть требование, которое не может быть выполнено модулем фильтрации запросов, используйте модуль переопределения URL-адресов для реализации этого требования и оставьте остальные задачи безопасности в модуле фильтрации запросов. Таким образом, модуль перезаписи URL-адресов влияет на производительность, используя минимальный объем правил перезаписи для обработки сервером.