Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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-путь | Да, использование поиска подстроки | Да, использование шаблонов regex и подстановочных знаков |
| Проверка длины URL-адреса | Да | Нет |
| Строка запроса сканирования | Нет | Да, использование шаблонов regex и подстановочных знаков |
| Проверка длины строки запроса | Да | Нет |
| Проверка http-команд | Да | Да |
| Проверка длины содержимого запроса | Да | Нет |
| Сканирование заголовков HTTP | Нет | Да, использование шаблонов regex и подстановочных знаков |
| Проверка длины заголовков HTTP | Да | Нет |
| Сканирование переменных сервера | Нет | Да |
| Проверка IP-адреса отправителя или имени узла | Нет* | Да |
* Модуль ограничения IP-адресов в IIS можно использовать для блокировки запросов с определенных IP-адресов и имен узлов.
Действия по блокировке запросов
Модуль фильтрации запросов имеет только одно действие, которое выполняется, когда запрос соответствует критерию фильтрации. Действие — возвращать код состояния 404 (файл не найден).
Модуль перезаписи URL-адресов предоставляет гораздо более широкий набор параметров, если запрос должен быть заблокирован, включая следующее:
- Запрошенный URL-адрес можно переписать на другой URL-адрес. Например, чтобы предотвратить горячую ссылку изображений, можно переписать URL-адрес на файл-заполнитель изображения для любых запросов, поступающих от стороннего домена.
- Веб-клиент можно перенаправить на другой URL-адрес.
- Код состояния HTTP по вашему выбору можно отправить веб-клиенту. Например, можно отправить ответ состояния 401 (Несанкционированный) для запросов, соответствующих определенным критериям фильтрации.
- HTTP-запрос может быть прерван путем разрыва соединения с сокетом. Таким образом, веб-клиент не получает никакой информации о веб-сервере вообще.
Влияние на производительность
Оба модуля были реализованы так, чтобы минимизировать влияние на производительность веб-сервера IIS. Однако между этими модулями существуют следующие важные различия в производительности:
- Модуль перезаписи URL-адресов сильно зависит от шаблонов регулярных выражений. Оценка регулярных выражений является дорогостоящей операцией, и если вы определяете множество сложных правил перезаписи, возможно, вы увидите заметное влияние на пропускную способность веб-сервера.
- Модуль фильтрации запросов не использует регулярные выражения или любое другое сопоставление шаблонов. Он просто выполняет поиск подстроки, что может оказывать значительно менее негативное влияние на пропускную способность веб-сервера.
Выбор между фильтрацией запросов и переопределением URL-адресов
Если вы выбираете между фильтрацией запросов и перезаписи URL-адресов для ужесточения безопасности веб-сервера, общее правило — начать с фильтрации запросов. Фильтрация запросов оптимизирована для сценариев безопасности, и ее набор функций, скорее всего, будет достаточно для реализации требований безопасности. Если у вас есть требование, которое невозможно устранить модулем фильтрации запросов, используйте модуль перезаписи URL-адресов для реализации этого требования и оставьте остальные задачи безопасности модулю фильтрации запросов. Таким образом, вы уменьшите влияние на производительность модуля перезаписи URL-адресов, указав минимальное количество правил перезаписи для обработки сервера.