Сервер IIS 7 и предыдущие версии содержали встроенную функциональность, которая позволяла администраторам разрешить или запретить доступ к серверу для определенных IP-адресов (или их диапазонов). Когда IP-адрес блокировался, любой HTTP-клиент с таким IP получал в ответ на запрос к серверу HTTP-ошибку "403.6 Forbidden". Этот функционал позволял администраторам настроить доступ к их серверу на основе активности, которую они могли проанализировать по логам сервера. Тем не менее, это был ручной процесс. Даже при том, что управление функциями могло настраиваться через скрипты для определения подозрительных пользователей с помощью анализа логов утилитами типа Microsoft's LogParser, все равно требовалось много ручной работы.
Решение
В IIS 8 встроенная функциональность была расширена для того, чтобы предложить следующие функции:
- Динамическая фильтрация IP-адресов, которая позволяет администраторам настроить их сервер на блокировку IP-адресов, которые создают слишком много запросов к серверу;
- Фильтрация IP-адресов теперь позволяет администраторам указать поведение сервера во время блокировки IP-адреса, так что запросы от злоумышленников могут быть прерваны сервером, вместо того, чтобы возвращать клиенту HTTP 403.6;
- Фильтрация по IP теперь поддерживает функцию прокси-режима, которая позволяет блокировать адреса не только по IP-адресу клиента, который получает сервер, но и по полученным значениям HTTP-заголовков x-forwarded-for.
Пошаговая инструкция
Требования:
- Предустановленная Windows 8 с включенным IIS 8;
Конфигурирование IIS для блокировки доступа на основе HTTP-запросов
Сервер IIS 8.0 может быть сконфигурирован для блокировки доступа к веб-сайтам на основе определенного числа запросов в единицу времени, которые производит клиент. Другим вариантом является блокировка на основе количества одновременных подключений клиента.
Для конфигурирования IIS для блокировки доступа основанной на числе HTTP-запросов проделайте следующие шаги:
Осуществите вход в систему с учетной записью администратора. Откройте Internet Information Services (IIS) Manager. Выберите свой сервер, сайт или папку в окне Connections и затем в панели функций запустите IP Address and Domain Restrictions.
Нажмите Edit Dynamic Restriction Settings на панели Actions.
В окне Dynamic IP Restriction Settings выберите Deny IP Address based on the number of concurrent requests, если вы хотите предотвратить слишком много одновременных подключений от пользователя. Если вы хотите предотвратить слишком большое количество запросов от пользователя, выберите Deny IP Address based on the number of requests over a period of time.
Нажмите ОК.
Конфигурирование поведения IIS при запрете IP-адресов
В IIS 7 и ранних версиях, сервер возвращал HTTP-ошибку "403.6 Forbidden", когда происходила блокировка IP-адреса. В IIS 8.0 администраторы могут сконфигурировать свой сервер для того, чтобы запрещать доступ с IP-адресов несколькими дополнительными вариантами.
Для того чтобы указать то, как должен поступать IIS, когда он блокирует IP-адрес, выполните следующие шаги:
Осуществите вход в систему с учетной записью администратора. Откройте Internet Information Services (IIS) Manager. Выберите свой сервер, сайт или папку в окне Connections и затем в панели функций запустите IP Address and Domain Restrictions.
Нажмите Edit Feature Settings на панели Actions.
В окне Edit IP and Domain Restriction Settings выберите в ниспадающем меню Deny Action Type предпочтительное поведение сервера:
- Unauthorized: IIS вернет ответ HTTP 401;
- Forbidden: IIS вернет ответ HTTP 403;
- Not Found: IIS вернет HTTP 404;
- Abort: IIS закроет HTTP-соединение.
Нажмите ОК.
Конфигурирование IIS для прокси-режима
Одной из проблем при IP-фильтрации является возможная ситуация, когда с одного IP-адреса на сервер обращаются множество разных клиентов (через firewall, балансировщик нагрузки, прокси). Так что для каждого такого клиента IP-адрес будет одинаковым. В IIS 8.0 администраторы могут сконфигурировать сервер с учетом HTTP-заголовка x-forwarded-for, в дополнение к IP-адресу клиента, для того, чтобы точнее определять какие именно запросы необходимо блокировать. Такое поведение называется «прокси-режимом».
Для конфигурирования IIS для прокси-режима проделайте следующие шаги.
Осуществите вход в систему с учетной записью администратора. Откройте Internet Information Services (IIS) Manager. Выберите свой сервер, сайт или папку в окне Connections и затем в панели функций запустите IP Address and Domain Restrictions.
Нажмите на Edit Feature Settings в панели Actions.
В окне Edit IP and Domain Restriction Settings выберите Enable Proxy Mode.
Нажмите ОК.
Заключение
В этом руководстве вы познакомились с конфигурирование IIS для динамического блокирования доступа к вашему серверу на основе числа запросов от клиента, а так же с настройкой поведения IIS, которое сервер будет использовать при блокировке потенциальных злоумышленников.
От переводчика
Вы можете прочитать обзорную статью о многих других нововведениях в IIS 8 (на русском) по этому адресу.
Для полноты картины я хотел бы дополнить статью полезными ссылками, которые более полно раскрывают многие новые функции IIS 8:
- Installing IIS 8 on Windows Server 8
- IIS 8.0 Using ASP.NET 3.5 and ASP.NET 4.5
- IIS 8.0 ASP.NET Configuration Management
- IIS 8.0 Application Initialization
- IIS 8.0 Dynamic IP Address Restrictions
- IIS 8.0 FTP Logon Attempt Restrictions
- IIS 8.0 CPU Throttling: Sand-boxing Sites and Applications
- IIS 8.0 Server Name Indication (SNI): SSL Scalability
- IIS 8.0 Centralized SSL Certificate Support: SSL Scalability and Manageability
- IIS 8.0 Multicore Scaling on NUMA Hardware
3 апреля в Самаре пройдет бесплатная конференция WebProfessionals, на которой будет рассказано про IIS 8 и другие элементы веб-платформы Microsoft. Регистрация уже открыта.