IIS
IIS (Internet Information Services, ранее — Internet Information Server) — это набор серверных служб и веб-сервер с закрытым исходным кодом, разработанный корпорацией Microsoft для операционных систем семейства Windows. IIS предоставляет функциональность для размещения веб-сайтов, веб-приложений, FTP-серверов, SMTP-серверов и других сетевых служб, работающих по протоколам HTTP, HTTPS, FTP, FTPS, SMTP и NNTP. Является вторым по распространённости веб-сервером в мире (после Apache HTTP Server) и доминирует в корпоративном сегменте, использующем инфраструктуру Microsoft.
История
Предыстория и первые версии (1995–2000)
Первая версия IIS (1.0) была выпущена в 1995 году как компонент Windows NT 3.51 Service Pack 3. Она представляла собой простой HTTP-сервер, предназначенный для размещения статических HTML-страниц. IIS 2.0 (1996) вошёл в состав Windows NT 4.0 и добавил поддержку Active Server Pages (ASP) — технологии для создания динамических веб-страниц на языке VBScript или JScript. IIS 3.0 (1997) интегрировал поддержку ASP 2.0 и улучшил производительность.
В 1998 году вышла версия IIS 4.0, которая стала частью Windows NT 4.0 Option Pack. Она ввела архитектуру на основе изолированных процессов (application pools), что повысило стабильность: сбой в одном приложении не приводил к остановке всего сервера. IIS 5.0 (2000) поставлялся с Windows 2000 и поддерживал ASP 3.0, а также включал улучшенную систему журналирования и поддержку WebDAV.
Эпоха IIS 6.0 (2003–2008)
Версия IIS 6.0, выпущенная вместе с Windows Server 2003, стала значительным шагом вперёд. Она полностью отказалась от модели на основе ISAPI-фильтров в пользу изолированных пулов приложений (application pools), работающих в отдельных процессах (w3wp.exe). Это обеспечило высокую надёжность и безопасность. IIS 6.0 также поддерживал HTTP-сжатие, кэширование статического контента и улучшенную аутентификацию (включая Kerberos). В этой версии была введена поддержка .NET Framework 1.1, что позволило размещать ASP.NET-приложения.
IIS 7.0 и 7.5 (2008–2012)
С выходом Windows Server 2008 и Windows Vista появился IIS 7.0, который претерпел кардинальную архитектурную переработку. Модульная структура позволила администраторам подключать только необходимые компоненты, снижая поверхность атаки. Ключевой особенностью стал встроенный менеджер конфигурации (IIS Manager), объединивший управление веб-сервером, ASP.NET и другими службами. IIS 7.0 также ввёл поддержку FastCGI для не-Microsoft технологий (PHP, Python). Версия 7.5 (Windows Server 2008 R2, Windows 7) добавила поддержку TLS 1.2, улучшила работу с PowerShell и внедрила функцию «IIS Best Practices Analyzer».
IIS 8.0 и 8.5 (2012–2016)
IIS 8.0, выпущенный с Windows Server 2012 и Windows 8, представил поддержку SNI (Server Name Indication) для HTTPS, что позволило размещать несколько SSL-сертификатов на одном IP-адресе. Была добавлена поддержка WebSocket (RFC 6455) и динамического сжатия. IIS 8.5 (Windows Server 2012 R2, Windows 8.1) улучшил управление пулами приложений, ввёл функцию «Idle Worker Process Page-Out» (выгрузка неактивных процессов в файл подкачки) и поддержку HTTP/2.
IIS 10.0 (2016 — настоящее время)
IIS 10.0 поставляется с Windows Server 2016, Windows 10 и Windows Server 2019/2022. Основные нововведения: поддержка HTTP/2 (RFC 7540), протокола QUIC (начиная с Windows Server 2022), улучшенная интеграция с контейнерами Docker, поддержка .NET Core и ASP.NET Core. В версии для Windows Server 2022 добавлена поддержка TLS 1.3 и HTTP/3 (на основе QUIC). IIS 10.0 также включает встроенную поддерку Let's Encrypt через модуль ACME.
Архитектура и компоненты
Модульная структура
IIS 10.0 состоит из более чем 40 модулей, которые можно включать или отключать через диспетчер IIS или PowerShell. Основные модули:
- HTTP.sys — драйвер режима ядра, обрабатывающий HTTP-запросы и ответы, отвечающий за кэширование, очереди запросов и управление соединениями.
- W3SVC (World Wide Web Publishing Service) — служба, управляющая пулами приложений и рабочими процессами.
- Модули аутентификации — анонимная, базовая, дайджест-аутентификация, Windows-аутентификация (NTLM/Kerberos), сертификатная аутентификация.
- Модули обработки контента — статические файлы, ASP.NET, ASP, CGI, FastCGI, ISAPI.
- Модули безопасности — фильтрация запросов (Request Filtering), URL-авторизация, IP-ограничения.
- Модули ведения журнала — журналы W3C, NCSA, IIS, ETW (Event Tracing for Windows).
Пулы приложений (Application Pools)
Каждый пул приложений — это изолированный процесс (w3wp.exe), в котором выполняются одно или несколько веб-приложений. Изоляция предотвращает влияние сбоев одного приложения на другие. Пул может работать в режимах:
- Интегрированный (Integrated) — ASP.NET и IIS используют единый конвейер обработки запросов (по умолчанию для .NET приложений).
- Классический (Classic) — ASP.NET обрабатывается как ISAPI-расширение (режим совместимости).
Конвейер обработки запросов
В IIS 7.0 и выше запрос проходит через конвейер, состоящий из упорядоченных этапов (событий). Основные этапы:
- BeginRequest — начало обработки.
- AuthenticateRequest — аутентификация.
- AuthorizeRequest — авторизация.
- ResolveRequestCache — проверка кэша.
- MapRequestHandler — выбор обработчика (статический файл, ASPX, PHP и т.д.).
- ExecuteRequestHandler — выполнение обработчика.
- ReleaseRequestState — освобождение состояния сессии.
- UpdateRequestCache — обновление кэша.
- EndRequest — завершение.
Классификация и редакции
IIS поставляется в нескольких редакциях, в зависимости от версии Windows:
- Windows Client (Windows 10/11 Pro, Enterprise) — ограниченная версия с лимитом на 10 одновременных подключений.
- Windows Server (Standard, Datacenter, Essentials) — полная версия без ограничений по подключениям.
- Azure App Service — облачная версия IIS, используемая в платформе Microsoft Azure.
Применение
Хостинг веб-сайтов и приложений
IIS используется для размещения:
- Статических сайтов (HTML, CSS, JavaScript).
- ASP.NET и ASP.NET Core — основных платформ Microsoft для веб-разработки.
- PHP — через модуль FastCGI.
- Python, Ruby, Node.js — через CGI или обратный прокси-сервер.
- FTP-серверов — для обмена файлами.
- SMTP-серверов — для отправки электронной почты.
Корпоративные решения
IIS является основой для многих корпоративных продуктов Microsoft, включая:
- SharePoint — портальные решения и системы управления документами.
- Exchange Server (до версии 2019) — веб-доступ к почте (OWA).
- Dynamics CRM — системы управления взаимоотношениями с клиентами.
- Skype for Business — веб-компоненты.
Разработка и тестирование
IIS Express — облегчённая версия IIS, входящая в состав Visual Studio. Она предназначена для локальной разработки и отладки веб-приложений без необходимости установки полной версии IIS.
Безопасность
Встроенные механизмы
IIS предоставляет несколько уровней защиты:
- Аутентификация — поддержка Windows, форм, сертификатов, анонимного доступа.
- Авторизация — на основе URL, ролей, IP-адресов.
- Фильтрация запросов — блокировка вредоносных URL, заголовков, размеров запросов.
- SSL/TLS — поддержка HTTPS с SNI, TLS 1.3, HTTP/2 и HTTP/3.
- Dynamic IP Restrictions — защита от DDoS-атак путём ограничения количества запросов с одного IP.
Известные уязвимости
За историю IIS было обнаружено несколько критических уязвимостей, наиболее известные:
- CVE-2009-1535 — уязвимость в обработчике ASP, позволявшая выполнить произвольный код (эксплуатировалась червём Stuxnet).
- CVE-2010-3972 — уязвимость в FTP-сервере, приводившая к переполнению буфера.
- CVE-2015-1635 (MS15-034) — уязвимость в HTTP.sys, позволявшая вызвать отказ в обслуживании или выполнить код удалённо.
- CVE-2021-31166 — уязвимость в HTTP.sys, приводившая к удалённому выполнению кода (BlueKeep-подобная).
Корпорация Microsoft регулярно выпускает обновления безопасности (Patch Tuesday) для устранения таких уязвимостей.
Инструменты администрирования
- Диспетчер IIS (IIS Manager) — графический интерфейс для управления веб-сервером.
- PowerShell — модуль WebAdministration (до IIS 10) и IISAdministration (начиная с IIS 10) для автоматизации.
- AppCmd.exe — утилита командной строки для управления IIS.
- IIS Crypto — сторонняя утилита для настройки параметров шифрования.
- Windows Admin Center — веб-интерфейс для удалённого управления серверами.
Сравнение с альтернативами
IIS часто сравнивают с другими веб-серверами:
- Apache HTTP Server — IIS уступает Apache по распространённости в интернете, но превосходит в интеграции с Windows и .NET. Apache требует больше ручной настройки, IIS — более автоматизирован.
- Nginx — Nginx превосходит IIS в производительности при статическом контенте и высоких нагрузках, но уступает в поддержке .NET (требуется обратный прокси).
- Kestrel — кроссплатформенный веб-сервер для ASP.NET Core, часто используется вместе с IIS в качестве обратного прокси.
Интересные факты
- IIS является единственным веб-сервером, который имеет встроенную поддержку протокола FTP с шифрованием (FTPS).
- Версия IIS 6.0 работала без критических обновлений безопасности более 10 лет (2003–2014) при условии установки стандартных патчей.
- IIS Express, входящий в Visual Studio, поддерживает до 10 одновременных запросов, что достаточно для большинства задач разработки.
- Начиная с IIS 7.0, конфигурация хранится в XML-файлах (applicationHost.config, web.config), что позволяет управлять ей вручную или через системы управления конфигурациями (Desired State Configuration, Ansible).
Источники
- Microsoft Docs: Internet Information Services (IIS) Overview
- Netcraft Web Server Survey (ежемесячные отчёты о доле рынка веб-серверов)
- CVE Details: Microsoft IIS vulnerabilities
- TechNet: IIS 10.0 Architecture and Components
- Книга: «IIS 10.0 Administration» by Thomas Lee (2017)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →