Recent from talks
Nothing was collected or created yet.
Internet Information Services
View on Wikipedia
| Microsoft IIS | |
|---|---|
Screenshot of IIS Manager console of Internet Information Services 8.5 | |
| Developer | Microsoft |
| Initial release | May 30, 1995 |
| Stable release | |
| Written in | C++[1] |
| Operating system | Windows NT |
| Available in | Same languages as Windows |
| Type | Web server |
| License | Part of Windows NT (same license) |
| Website | www |
Microsoft IIS (Internet Information Services, IIS, 2S) is an extensible web server created by Microsoft for use with the Windows NT family.[2] IIS supports HTTP, HTTP/2, HTTP/3, HTTPS, FTP, FTPS, SMTP and NNTP. It has been an integral part of the Windows NT family since Windows NT 4.0, though it may be absent from some editions (e.g. Windows XP Home edition), and is not active by default. A dedicated suite of software called SEO Toolkit[3] is included in the latest version of the manager. This suite has several tools for SEO with features for metatag / web coding optimization, sitemaps / robots.txt configuration, website analysis, crawler setting, SSL server-side configuration and more.
History
[edit]The first Microsoft web server was a research project at the European Microsoft Windows NT Academic Centre (EMWAC), part of the University of Edinburgh in Scotland, and was distributed as freeware.[4] However, since the EMWAC server was unable to handle the volume of traffic going to Microsoft.com, Microsoft was forced to develop its own web server, IIS.[5]
Almost every version of IIS was released either alongside or with a version of Microsoft Windows:
- IIS 1.0 was initially released as a free add-on for Windows NT 3.51.
- IIS 2.0 was included with Windows NT 4.0.
- IIS 3.0, which was included with Service Pack 2 of Windows NT 4.0, introduced the Active Server Pages dynamic scripting environment.[6]
- IIS 4.0 was released as part of the "Option Pack" for Windows NT 4.0. It introduced the new MMC-based administration application and also was the first version where multiple instances of web and FTP servers can run, differentiating them by port number and/or hostname. It was also the first version to run application pools.
- IIS 5.0 shipped with Windows 2000 and introduced additional authentication methods, support for the WebDAV protocol, and enhancements to ASP.[7] IIS 5.0 also dropped support for the Gopher protocol.[8] IIS 5.0 added HTTP.SYS.
- IIS 5.1 was shipped with Windows XP Professional and was nearly identical to IIS 5.0 on Windows 2000.
- IIS 6.0 included with Windows Server 2003 and Windows XP Professional x64 Edition, added support for IPv6 and included a new worker process model that increased security as well as reliability.[9] HTTP.sys was introduced in IIS 6.0 as an HTTP-specific protocol listener for HTTP requests.[10] Also each component (like for example Server Side Includes or ASP) now has to be explicitly installed, because in earlier versions often hackers entered sites by using security bugs of components that were not even in use by the hacked site, improving security.
- IIS 7.0 was a complete redesign and rewrite of IIS and was shipped with Windows Vista and Windows Server 2008. IIS 7.0 included a new modular design that allowed for a reduced attack surface and increased performance. It also introduced a hierarchical configuration system allowing for simpler site deploys, a new Windows Forms-based management application, new command-line management options and increased support for the .NET Framework.[11] IIS 7.0 on Vista does not limit the number of allowed connections as IIS on XP did, but limits concurrent requests to 10 (Windows Vista Ultimate, Business, and Enterprise Editions) or 3 (Vista Home Premium). Additional requests are queued, which hampers performance, but they are not rejected as with XP.
- IIS 7.5 was included in Windows 7 (but it must be turned on in the side panel of Programs and Features) and Windows Server 2008 R2. IIS 7.5 improved WebDAV and FTP modules as well as command-line administration in PowerShell. It also introduced TLS 1.1 and TLS 1.2 support and the Best Practices Analyzer tool and process isolation for application pools.[12]
- IIS 8.0 is only available in Windows Server 2012 and Windows 8. IIS 8.0 includes SNI (binding SSL to hostnames rather than IP addresses), Application Initialization, centralized SSL certificate support, and multicore scaling on NUMA hardware, among other new features.
- IIS 8.5 is included in Windows Server 2012 R2 and Windows 8.1. This version includes Idle worker-Process page-out, Dynamic Site Activation, Enhanced Logging, ETW logging, and Automatic Certificate Rebind.
- IIS 10.0 version 1607 a.k.a. version 10.0.14393 is included in Windows Server 2016 released 2016-09-26 and Windows 10 Anniversary Update released 2016-08-02. This version includes support for HTTP/2,[13] running IIS in Windows containers on Nano Server, a new Rest management API and corresponding web-based management GUI, and Wildcard Host Headers.[14]
- IIS 10.0 version 1709 is included in Windows Server, version 1709 (Semi-Annual Channel) and Windows 10 Fall Creators Update both released 2017-10-17. This version adds support for HSTS, container enhancements, new site binding PowerShell cmdlets, and 4 new server variables prefixed with "CRYPT_".[15]
- IIS 10.0 version 1809 a.k.a. version 10.0.17763 is included in Windows Server 2019 and Windows 10 October Update released 2018-10-02. This version added flags for control of HTTP/2 and OCSP Stapling per site, a compression API and implementing module supporting both gzip and brotli schemes, and a UI for configuring HSTS.[16] IIS 10.0 on Windows 11 and Windows Server 2022 has native support for HTTP/3.
All versions of IIS prior to 7.0 running on client operating systems supported only 10 simultaneous connections and a single website.
Microsoft was criticized by vendors of other web server software, including O'Reilly & Associates and Netscape, for its licensing of early versions of Windows NT; the "Workstation" edition of the OS permitted only ten simultaneous TCP/IP connections, whereas the more expensive "Server" edition, which otherwise had few additional features, permitted unlimited connections but bundled IIS. It was implied that this was intended to discourage consumers from running alternative web server packages on the cheaper edition.[17] Netscape wrote an open letter to the Antitrust Division of the U.S. Department of Justice regarding this distinction in product licensing, which it asserted had no technical merit.[18] O'Reilly showed that the user could remove the enforced limits meant to cripple NT 4.0 Workstation as a web server with two registry key changes and other trivial configuration file tweaking.
Features
[edit]IIS 6.0 and higher support the following authentication mechanisms:[19]
- Anonymous authentication
- Basic access authentication
- Digest access authentication
- Integrated Windows Authentication
- UNC authentication
- .NET Passport Authentication (Removed in Windows Server 2008 and IIS 7.0)[20]
- Certificate authentication
IIS 7.0 has a modular architecture. Modules, also called extensions, can be added or removed individually so that only modules required for specific functionality have to be installed. IIS 7 includes native modules as part of the full installation. These modules are individual features that the server uses to process requests.[21]
IIS 7.5 includes the following additional or enhanced security features:[22]
- Client certificate mapping
- IP security
- Request filtering
- URL authorization
Authentication changed slightly between IIS 6.0 and IIS 7, most notably in that the anonymous user which was named "IUSR_{machinename}" is a built-in account in Vista and future operating systems and named "IUSR". Notably, in IIS 7, each authentication mechanism is isolated into its own module and can be installed or uninstalled.[20]
IIS 8.0 offers new features targeted at performance and easier administration. The new features are:
- Application Initialization: a feature that allows an administrator to configure certain applications to start automatically with server startup. This reduces the wait time experienced by users who access the site for the first time after a server reboot.[23]
- Splash page during application initialization: the administrator can configure a splash page to be displayed to the site visitor during an application initialization.[23]
- ASP.NET 4.5 support: With IIS 8.0, ASP.NET 4.5 is included by default, and IIS also offers several configuration options for running it side by side with ASP.NET 3.5.[24]
- Centralized SSL certificate support: a feature that makes managing certificates easier by allowing the administrator to store and access the certificates on a file share.[25]
- Multicore scaling on NUMA hardware: IIS 8.0 provides several configuration options that optimize performance on systems that run NUMA, such as running several worker processes under one application pool, using soft or hard affinity and more.[26]
- WebSocket Protocol Support[27]
- Server Name Indication (SNI): SNI is an extension to Transport Layer Security, which allows the binding of multiple websites with different hostnames to one IP address (similar to how Host Headers are used for non-SSL sites).[28]
- Dynamic IP Address Restrictions: a feature that enables an administrator to dynamically block IPs or IP ranges that hit the server with a large number of requests[29]
- CPU Throttling: a set of controls that allow the server administrator to control CPU usage by each application pool in order to optimize performance in a multi-tenant environment[30]
IIS 8.5 has several improvements related to performance in large-scale scenarios, such as those used by commercial hosting providers and Microsoft's own cloud offerings. It also has several added features related to logging and troubleshooting. The new features are:
- Idle worker-Process page-out: a function to suspend idle sites to reduce the memory footprint of idle sites[31]
- Dynamic Site Activation: a feature that registers listening queues only to sites that have received requests[32]
- Enhanced Logging: a feature to allow the collection of Server variables, request headers and response headers in the IIS logs[33]
- ETW logging: an ETW provider which allows collecting real-time logs using various Event-tracing tools[34]
- Automatic Certificate Rebind: a feature that detects when a site certificate has been renewed and automatically rebinds the site to it[35]
Express
[edit]IIS Express, a lightweight (4.5–6.6 MB) version of IIS, is available as a standalone freeware server and may be installed on Windows XP with Service Pack 3 and subsequent versions of Microsoft Windows. IIS 7.5 Express supports only the HTTP and HTTPS protocols. It is portable, stores its configuration on a per-user basis, does not require administrative privileges and attempts to avoid conflicting with existing web servers on the same machine.[36] IIS Express can be downloaded separately[37] or as a part of WebMatrix[38] or Visual Studio 2012 and later.[39] (In Visual Studio 2010 and earlier, web developers developing ASP.NET apps used ASP.NET Development Server, codenamed "Cassini".)[40] By default, IIS Express only serves local traffic.[41][39]
Extensions
[edit]IIS releases new feature modules between major version release to add new functionality. The following extensions are available for IIS 7.5:
- FTP Publishing Service: Lets Web content creators publish content securely to IIS 7 Web servers with SSL-based authentication and data transfer.[42]
- Administration Pack: Adds administration UI support for management features in IIS 7, including ASP.NET authorization, custom errors, FastCGI configuration, and request filtering.[43]
- Application Request Routing: Provides a proxy-based routing module that forwards HTTP requests to content servers based on HTTP headers, server variables, and load balance algorithms.[44]
- Database Manager: Allows easy management of local and remote databases from within IIS Manager.[45]
- Media Services: Integrates a media delivery platform with IIS to manage and administer the delivery of rich media and other Web content.[46]
- URL Rewrite Module: Provides a rule-based rewriting mechanism for changing request URLs before they are processed by the Web server.[47]
- WebDAV: Lets Web authors publish content securely to IIS 7 Web servers, and lets Web administrators and hosters manage WebDAV settings using IIS 7 management and configuration tools.[48]
- Web Deployment Tool: Synchronizes IIS 6.0 and IIS 7 servers, migrates an IIS 6.0 server to IIS 7, and deploys Web applications to an IIS 7 server.[49]
Usage
[edit]According to Netcraft, in February 2014, IIS had a "market share of all sites" of 32.80%, making it the second most popular web server in the world, behind Apache HTTP Server at 38.22%. Netcraft showed a rising trend in market share for IIS, since 2012[update].[50] On 14 February 2014, however, the W3Techs shows different results. According to W3Techs, IIS is the third most used web server behind Apache HTTP Server (1st place) and Nginx. Furthermore, it shows a consistently falling trend for IIS use since February 2013[update].[51]
Netcraft data in February 2017 indicates IIS had a "market share of the top million busiest sites" of 10.19%, making it the third most popular web server in the world, behind Apache at 41.41% and nginx at 28.34%.[52]
Security
[edit]IIS 4 and IIS 5 were affected by the CA-2001-13 security vulnerability which led to the infamous Code Red attack;[53][54] however, both versions 6.0 and 7.0 have no reported issues with this specific vulnerability.[55] In IIS 6.0 Microsoft opted to change the behaviour of pre-installed ISAPI handlers,[56] many of which were culprits in the vulnerabilities of 4.0 and 5.0, thus reducing the attack surface of IIS.[54] In addition, IIS 6.0 added a feature called "Web Service Extensions" that prevents IIS from launching any program without explicit permission by an administrator.
By default IIS 5.1 and earlier run websites in a single process running the context of the System account,[57] a Windows account with administrative rights. Under 6.0 all request handling processes run in the context of the Network Service account, which has significantly fewer privileges, so should there be a vulnerability in a feature or custom code it won't necessarily compromise the entire system given the sandboxed environment these worker processes run in.[58] IIS 6.0 also contained a new kernel HTTP stack (http.sys) with a stricter HTTP request parser and response cache for both static and dynamic content.[59]
According to Secunia, as of June 2011[update], IIS 7 had a total of six resolved vulnerabilities while[55] IIS 6 had a total of eleven vulnerabilities, out of which one was still unpatched. The unpatched security advisory has a severity rating of 2 out of 5.[55]
In June 2007, a Google study of 80 million domains concluded that while the IIS market share was 23% at the time, IIS servers hosted 49% of the world's malware, the same as Apache servers whose market share was 66%. The study also observed the geographical location of these dirty servers and suggested that the cause of this could be the use of unlicensed copies of Windows that could not obtain security updates from Microsoft.[60] In a blog post on 28 April 2009, Microsoft noted that it supplies security updates to everyone without genuine verification.[61][62]
The 2013 mass surveillance disclosures made it more widely known that IIS is particularly bad in supporting perfect forward secrecy (PFS), especially when used in conjunction with Internet Explorer. Possessing one of the long term asymmetric secret keys used to establish a HTTPS session should not make it easier to derive the short term session key to then decrypt the conversation, even at a later time. Diffie–Hellman key exchange (DHE) and elliptic curve Diffie–Hellman key exchange (ECDHE) are in 2013 the only ones known to have that property. Only 30% of Firefox, Opera, and Chromium Browser sessions use it, and nearly 0% of Apple's Safari and Microsoft Internet Explorer sessions.[63]
See also
[edit]References
[edit]- ^ Lextrait, Vincent (February 2010). "The Programming Languages Beacon, v10.0". Archived from the original on 30 May 2012. Retrieved 12 February 2010.
- ^ "Running IIS 6.1 as an Application Server (IIS 6.0)". TechNet. Microsoft. Archived from the original on 21 September 2013. Retrieved 14 December 2012.
- ^ "Getting started with the SEO Toolkit". Microsoft Learn. Microsoft. 11 April 2024. Retrieved 14 April 2024.
- ^ "Windows NT Internet Servers". Microsoft. 10 July 2002. Archived from the original on 19 September 2008. Retrieved 26 May 2008.
- ^ Kramer, Dave (24 December 1999). "A Brief History of Microsoft on the Web". Microsoft. Archived from the original on 14 May 2008. Retrieved 26 May 2008.
- ^ "Microsoft ASP.NET 2.0 Next Stop on Microsoft Web Development Roadmap".[permanent dead link]
- ^ "Chapter 1 - Overview of Internet Information Services 5.0". 9 December 2009. Retrieved 25 October 2010.
- ^ "Chapter 2 - Managing the Migration Process". 9 December 2009. Retrieved 27 June 2012.
- ^ "What's New In IIS 6.0?". Archived from the original on 14 May 2013. Retrieved 25 November 2010.
- ^ arkaytee. "Introduction to IIS Architectures". docs.microsoft.com. Retrieved 29 August 2019.
- ^ "IIS 7.0: Explore The Web Server For Windows Vista and Beyond". Retrieved 25 November 2010.
- ^ "What's New in Web Server (IIS) Role in Windows 2008 R2". Retrieved 25 November 2010.
- ^ Mike Bishop; David So (11 September 2015). "HTTP/2 on IIS". Microsoft.
{{cite web}}: CS1 maint: multiple names: authors list (link) - ^ Sourabh Shirhatti (14 June 2022). "New Features Introduced in IIS 10.0". Microsoft.
- ^ Sourabh Shirhatti; Richard Lang (19 May 2022). "New Features Introduced in IIS 10.0 Version 1709". Microsoft.
{{cite web}}: CS1 maint: multiple names: authors list (link) - ^ Sourabh Shirhatti. "New Features Introduced in IIS 10.0, version 1809". Microsoft.
- ^ "Netscape goes to jail, does not collect $200". InfoWorld. Archived from the original on 23 December 2008. Retrieved 12 April 2014.
- ^ "Differences Between NT Server and Workstation Are Minimal". O'Reilly Media. Archived from the original on 16 March 2016. Retrieved 7 July 2018.
- ^ "Authentication Methods Supported in IIS 6.0 (IIS 6.0)". IIS 6.0 Documentation. Microsoft. Archived from the original on 2 November 2012. Retrieved 13 July 2011.
- ^ a b "Changes Between IIS 6.0 and IIS 7 Security". iis.net. Microsoft. 7 February 2010. Retrieved 13 July 2011.
- ^ Templin, Reagan (11 August 2010). "Introduction to IIS 7 Architecture". iis.net. Microsoft. IIS 7 Modules. Retrieved 16 July 2011.
- ^ "Available Web Server (IIS) Role Services in IIS 7.5". Microsoft TechNet. Microsoft. 27 January 2010. Retrieved 13 July 2011.
- ^ a b Eagan, Shaun (29 February 2012). "IIS 8.0 Application Initialization". IIS Blog. Microsoft. Retrieved 19 September 2013.
- ^ Yoo, Won (29 February 2012). "IIS 8.0 ASP.NET configuration management". IIS Blog. Microsoft. Retrieved 19 September 2013.
- ^ Eagan, Shaun (29 February 2012). "IIS 8.0 Centralized SSL certificate support". IIS Blog. Microsoft. Retrieved 19 September 2013.
- ^ McMurray, Robert (29 February 2012). "IIS 8.0 Multicore Scaling on NUMA Hardware". IIS Blog. Microsoft. Retrieved 19 September 2013.
- ^ "IIS 8.0 WebSocket protocol support". IIS Blog. Microsoft. 28 November 2012. Retrieved 19 September 2013.
- ^ Eagan, Shaun (29 February 2012). "IIS 8.0 Server Name Indication". IIS Blog. Microsoft. Retrieved 19 September 2013.
- ^ McMurray, Robert (29 February 2012). "IIS 8.0 Dynamic IP Address Restrictions". IIS Blog. Microsoft. Retrieved 19 September 2013.
- ^ Eagan, Shaun (29 February 2012). "IIS 8.0 CPU Throttling". IIS Blog. Microsoft. Retrieved 19 September 2013.
- ^ Benari, Erez (26 June 2013). "Idle Worker-process Page Out". IIS Blog. Microsoft. Retrieved 18 September 2013.
- ^ Benari, Erez (3 July 2013). "Dynamic Site Activation". IIS Blog. Microsoft. Retrieved 18 September 2013.
- ^ Benari, Erez (10 July 2013). "Enhanced Logging". IIS Blog. Microsoft. Retrieved 18 September 2013.
- ^ Benari, Erez (15 July 2013). "ETW Logging". IIS Blog. Microsoft. Retrieved 18 September 2013.
- ^ Benari, Erez (3 September 2013). "Automatic Certificate rebind". IIS Blog. Microsoft. Retrieved 18 September 2013.
- ^ "IIS Express FAQ". iis.net. Microsoft. 14 January 2011. Retrieved 27 January 2011.
- ^ "Internet Information Services (IIS) 7.5 Express". Download Center. Microsoft. 10 January 2011. Retrieved 27 January 2011.
- ^ "IIS Express Overview". iis.net. Microsoft. 14 January 2011. Retrieved 27 January 2011.
- ^ a b Hanselman, Scott; Condron, Glen (15 September 2015). "3 Introducing Model View Controller (MVC)". Introduction to ASP.NET. Microsoft. 0:14:02.
- ^ Guthrie, Scott (29 June 2010). "Introducing IIS Express". ScottGu's Blog. Microsoft.
- ^ Gopalakrishnan, Vaidy (12 January 2011). "Handling URL Binding Failures in IIS Express". iis.net. Microsoft.
- ^ "FTP Publishing Service". iis.net. Microsoft. Retrieved 17 July 2011.
- ^ "Administration Pack". iis.net. Microsoft. Retrieved 17 July 2011.
- ^ "Application Request Routing". iis.net. Microsoft. Retrieved 17 July 2011.
- ^ "Database Manager". iis.net. Microsoft. Retrieved 17 July 2011.
- ^ "IIS Media Services". iis.net. Microsoft. Retrieved 30 July 2011.
- ^ "URL Rewrite". iis.net. Microsoft. Retrieved 17 July 2011.
- ^ "WebDAV Extension". iis.net. Microsoft. Retrieved 17 July 2011.
- ^ "Web Deploy 2.0". iis.net. Microsoft. Retrieved 17 July 2011.[permanent dead link]
- ^ "February 2014 Web Server Survey". news.netcraft.com. Netcraft. 3 February 2014.
- ^ "Usage statistics and market share of Microsoft-IIS for websites". w3techs. Q-Success.
- ^ "February 2017 Web Server Survey". news.netcraft.com. Netcraft. 27 February 2017.
- ^ "CA-2001-13 Buffer Overflow In IIS Indexing Service DLL". CERT® Advisory. Computer emergency response team. 17 January 2002. Retrieved 1 July 2011.
- ^ a b Hadi, Nahari (2011). Web commerce security: design and development. Krutz, Ronald L. Indianapolis: Wiley Pub. p. 157. ISBN 9781118098899. OCLC 757394142.
- ^ a b c "Vulnerability Report: Microsoft Internet Information Services (IIS) 6". Secunia. Secunia ApS. Retrieved 1 July 2011.
- ^ "IIS Installs in a Locked-Down Mode (IIS 6.0)". Microsoft Developer Network (MSDN). Microsoft. Archived from the original on 30 April 2011. Retrieved 1 July 2011.
- ^ "How To: Run Applications Not in the Context of the System Account in IIS (Revision 5.1) Microsoft Corporation". 7 July 2008. Retrieved 20 July 2007.
- ^ Henrickson, Hethe; Hofmann, Scott R. (2003). "Chapter 15: ASP.NET Web Services". IIS 6: the complete reference. New York City: McGraw-Hill Professional. p. 482. ISBN 978-0-07-222495-5. Retrieved 12 July 2011.
- ^ Henrickson, Hethe; Hofmann, Scott R. (2003). "Chapter 1: IIS Fundamentals". IIS 6: the complete reference. New York City: McGraw-Hill Professional. p. 17. ISBN 978-0-07-222495-5. Retrieved 12 July 2011.
- ^ "Web Server Software and Malware". Google Online Security Blog.
- ^ "Windows Pirates Encouraged to Install Security Updates". USA Today. Technology Live. February 2010. Retrieved 18 July 2011.
- ^ Cooke, Paul (27 April 2009). "Who Gets Windows Security Updates?". Windows Security Blog. Microsoft. Retrieved 18 July 2011.
- ^ SSL: Intercepted today, decrypted tomorrow, Netcraft, 25 June 2013.
External links
[edit]Internet Information Services
View on GrokipediaHistory
Origins and Early Development
Internet Information Services (IIS) emerged in the mid-1990s as Microsoft's response to the burgeoning demand for web server software amid the World Wide Web's expansion, positioning Windows NT as a viable platform for internet hosting against dominant Unix-based alternatives like NCSA HTTPd. IIS 1.0 was released in 1995 as a free downloadable add-on for Windows NT 3.51, initially supporting core protocols including HTTP for web content delivery, FTP for file transfers, and Gopher for pre-web document retrieval.[12][13][14] This version focused on serving static files and basic dynamic extensions via the Internet Server API (ISAPI), a C/C++ interface for custom modules, though it lacked native scripting support and faced challenges in scalability compared to contemporaries.[14] Early iterations rapidly evolved to address performance and integration needs within the Windows ecosystem. IIS 2.0 shipped integrated with Windows NT 4.0 in August 1996, incorporating enhancements such as multithreaded request handling for better concurrency and initial security hardening against emerging web vulnerabilities.[15][16] IIS 3.0 followed in late 1996 via Windows NT 4.0 Service Pack 3, introducing ISAPI filters for request interception and rudimentary support for server-side includes, paving the way for more sophisticated dynamic content generation without requiring full recompilation.[15] These updates reflected Microsoft's strategic push to embed internet services natively in enterprise servers, though early IIS deployments were hampered by configuration complexities and a smaller ecosystem relative to open-source rivals like Apache, which gained traction around the same period.[16][17] By the approach to version 4.0 in 1997, bundled with Windows NT 4.0's broader rollout, IIS had begun shifting toward application-centric features, including the debut of Active Server Pages (ASP) for interpreted scripting, marking a departure from compiled executables and enabling easier web application development—though this built on foundational ISAPI groundwork from prior releases.[14] These developments underscored IIS's origins in extending Windows NT's file-sharing strengths to internet protocols, prioritizing tight OS integration over standalone portability.[18]Key Version Releases
Internet Information Services version 1.0 was released in 1995 as a free add-on for Windows NT 3.51, marking the initial public offering of Microsoft's web server software.[12] Subsequent major versions were integrated directly into Windows operating systems, aligning IIS releases with server and client OS milestones to leverage shared infrastructure and security updates.[13] Key releases include:- IIS 4.0 (1996), bundled with Windows NT 4.0, introducing enhanced support for dynamic content via Active Server Pages (ASP).[15]
- IIS 5.0 (1999), shipped with Windows 2000, adding improvements in process isolation and COM+ integration for better application reliability.[15]
- IIS 6.0 (2003), included in Windows Server 2003, featuring a worker process model for enhanced stability and security through application pools.[15]
- IIS 7.0 (2007), released with Windows Server 2008 and Windows Vista, adopting a modular architecture for selective feature installation and reduced attack surface.[1]
- IIS 7.5 (October 22, 2009), part of Windows Server 2008 R2 and Windows 7, incorporating refinements like the IIS Application Warm-Up module and improved FTP support.[9]
- IIS 8.0 (October 30, 2012), integrated with Windows Server 2012, adding multicore scaling and dynamic site activation for efficient resource use.[9]
- IIS 8.5 (November 13, 2013), available in Windows Server 2012 R2 and Windows 8.1, introducing features such as dynamic cache etags and improved logging for high-traffic scenarios.[9]
- IIS 10.0 (2016), deployed with Windows Server 2016 and Windows 10, skipping version 9 and focusing on HTTP/2 support, enhanced security configurations, and push notifications for modern web standards.[13]
Integration with Modern Windows Servers
Internet Information Services (IIS) version 10 integrates natively as a selectable server role in Windows Server 2016 and subsequent releases, including Windows Server 2019 and Windows Server 2022, enabling administrators to add web serving capabilities through the Server Manager's Add Roles and Features Wizard.[9][19] This role-based installation process automatically includes core dependencies like the HTTP.SYS kernel-mode driver and configuration stores in the Windows registry and applicationHost.config files, ensuring tight coupling with the operating system's file system and process isolation mechanisms.[20] Once installed, IIS leverages Windows Server's enhanced resource management, such as dynamic memory allocation and CPU affinity, to handle high-throughput workloads without requiring separate hypervisor layers.[21] A key aspect of this integration is IIS 10's support for modern protocols and deployment models introduced or optimized in these server versions. For instance, HTTP/2 protocol handling, which improves multiplexing and header compression for reduced latency, became available starting with Windows Server 2016, with kernel-mode acceleration via HTTP.SYS updates ensuring compatibility with client browsers like Edge and Chrome.[20] Additionally, IIS supports containerization through Windows Server Containers and Hyper-V Containers, allowing web applications to run in isolated environments managed by Docker or Kubernetes on Server 2016 and later, with shared kernel mode for lightweight overhead.[20] Nano Server compatibility further enables headless, minimal-footprint deployments for edge scenarios, reducing the attack surface by excluding GUI components present in full Server installations.[20] Configuration and management in modern Windows Servers emphasize automation and security hardening. PowerShell cmdlets likeNew-WebSite and Get-IISAppPool integrate directly with Windows Server's Desired State Configuration (DSC) for declarative setups, while the IIS Management Console benefits from Windows Server's centralized logging via Event Tracing for Windows (ETW).[20] Security integrations include native support for TLS 1.2 enforcement and certificate management through the Windows Certificate Store, with features like HTTP Strict Transport Security (HSTS) UI added in version 1809 updates applicable to Server 2019 and 2022.[22] For Windows Server 2022, IIS 10 retains these capabilities with cumulative security patches, such as improved OCSP stapling per binding, ensuring compliance with evolving standards without version increments.[23] Preliminary compatibility extends to Windows Server 2025 previews, where IIS installation follows identical role-addition steps, maintaining backward compatibility for migrations from prior versions.[24]
Technical Architecture
Core Components
The core architecture of Internet Information Services (IIS), particularly from version 7.0 onward, separates functionality into kernel-mode and user-mode components to enhance performance, security, and modularity by processing HTTP requests through a layered pipeline. HTTP.sys, the kernel-mode HTTP protocol driver, serves as the entry point by listening on configured IP addresses and ports, enforcing basic kernel-level caching for static content, applying URL authorization rules, and queuing requests while rejecting invalid ones based on IP restrictions or rate limiting.[3][25] It routes queued requests to specific user-mode worker processes via URL subspaces registered by those processes, bypassing traditional ISAPI filters for faster initial handling.[26][27] In user mode, worker processes—executed as instances of w3wp.exe—perform the bulk of request execution, including dynamic content generation and integration with application frameworks like ASP.NET.[3] These processes operate within application pools, logical containers that group one or more worker processes sharing identical configuration settings, such as recycling intervals and CPU limits, to isolate applications, prevent crashes from affecting others, and enable rapid failover.[28][3] The Windows Process Activation Service (WAS) manages these pools and worker lifecycles for both HTTP and non-HTTP protocols, handling activation, recycling based on metrics like memory usage or request volume, and process health monitoring.[3] The World Wide Web Publishing Service (W3SVC) oversees site-level operations, including virtual directory management and protocol listener coordination, while modular elements like HTTP modules (for cross-cutting concerns such as authentication, compression, and logging) and handlers (for content-type-specific processing, e.g., ASPX pages via managed handlers) form the extensible pipeline.[1][3] This componentized design, refined in IIS 10.0 for Windows Server 2016 and later, supports feature delegation, allowing selective enabling of modules to reduce the attack surface— for instance, disabling unused authentication modules—and facilitates custom extensions via native C++ or managed code APIs.[1][26] Configuration is stored hierarchically in XML files like applicationHost.config, enabling inheritance from server to site levels without full restarts for most changes.[1]Request Processing Model
The request processing model in Internet Information Services (IIS) version 7.0 and later utilizes an integrated pipeline architecture that unifies native-code and managed-code modules to handle HTTP requests in a sequential, event-driven manner. Incoming requests are initially captured by the HTTP.sys kernel-mode driver, which performs protocol handling, queuing, and basic filtering before routing them to the appropriate worker process (w3wp.exe) associated with the target application pool based on URL reservation and configuration.[29][3] Within the worker process, the request enters the integrated pipeline, where it progresses through 21 distinct notification events, such as BeginRequest, AuthenticateRequest, AuthorizeRequest, ResolveRequestCache, and ExecuteRequestHandler, allowing modules to intervene at specific stages for tasks like authentication, authorization, compression, and caching.[30] Modules, which can be native (e.g., for static file serving) or managed (e.g., ASP.NET FormsAuthenticationModule), execute in a configured order during these events, applying logic uniformly across all content types when preconditions are absent, unlike the segregated classic mode in earlier IIS versions where ASP.NET operated in a separate pipeline.[30][3] Handler mapping then selects an appropriate handler based on the request's HTTP verb, file extension, and path, such as the StaticFileHandler for serving media files or the ASP.NET PageHandlerFactory for dynamic content generation; the handler executes the core request logic, generates the response, and the pipeline processes outbound events like EndRequest before returning the output via HTTP.sys to the client.[30] This model enhances modularity and extensibility, enabling features like URL rewriting early in the pipeline via modules such as the URL Rewrite Module, which intercepts requests before handler execution.[31] In high-load scenarios, worker processes recycle based on configurable process model settings, including idle timeouts and maximum requests per process, to maintain reliability.[32]Extensibility Mechanisms
Internet Information Services (IIS) provides extensibility primarily through its modular architecture, introduced in version 7.0, which decouples server features into independent modules and handlers that can be selectively installed, replaced, or extended. This design allows developers to customize request processing without modifying the core server, supporting both native code (C/C++) via the IIS core server API and managed code using the .NET Framework or later. Modules intervene in the HTTP request pipeline for cross-cutting concerns like authentication or compression, while handlers execute specific request types, such as rendering dynamic content for particular file extensions.[33][34] HTTP modules operate at the server level, hooking into events across the request lifecycle—such as authentication, authorization, or post-processing—to add functionality without altering existing code paths. For instance, a custom module might implement output caching or request logging by registering callbacks with the IIS pipeline. Native modules use the HttpModule base class and compile to DLLs loaded by the server, whereas managed modules leverage ASP.NET APIs for .NET languages, enabling easier development but requiring the integrated pipeline mode. This extensibility replaced much of the older ISAPI filter model, though ISAPI remains supported for backward compatibility in scenarios requiring low-level native performance.[35][33] HTTP handlers, in contrast, are invoked for targeted content processing, mapping to specific URL patterns or MIME types via configuration in the<system.webServer><handlers> section. Developers implement handlers by deriving from IHttpHandler in managed code or equivalent native interfaces, allowing custom logic like generating dynamic images or API endpoints. An example is a handler that appends copyright metadata to image requests, configurable through schema extensions and deployable as a module with UI integration in IIS Manager. ISAPI extensions, the predecessor to handlers, provide similar request termination in native code but lack the modularity of modern handlers, often requiring explicit mapping and posing higher security risks due to broader privileges.[36])
Additional mechanisms include configuration schema extensions for new settings and management APIs like Microsoft.Web.Administration for programmatic control, enabling end-to-end customization from runtime behavior to administrative interfaces. These features support scalable deployments, with modules and handlers loadable on-demand to minimize footprint, as seen in custom servers built for security-focused environments. While powerful, extensibility requires careful validation to avoid vulnerabilities, such as improper handler mappings exposing the server to injection attacks.[37][38]
Features
Fundamental Web Serving Capabilities
Internet Information Services (IIS) core web serving functionality centers on processing Hypertext Transfer Protocol (HTTP) requests to deliver static and dynamic content efficiently. At its foundation, IIS employs the HTTP.sys kernel-mode driver to listen for incoming HTTP traffic on configured IP addresses and ports, such as port 80 for unencrypted requests, performing initial protocol parsing, request queuing, and basic filtering before forwarding to user-mode components for further handling.[3] This architecture, introduced in IIS 6.0 and refined in subsequent versions, ensures low-latency response times by minimizing context switches and leveraging kernel-level optimizations for high-volume traffic.[1] For static content delivery, IIS directly serves files from the local file system or network shares, including HTML documents, cascading style sheets (CSS), client-side scripts (e.g., JavaScript), and media assets like images and videos, without invoking application code. The server maps file extensions to Multipurpose Internet Mail Extensions (MIME) types—such as text/html for .html files or image/jpeg for .jpg—to inform clients of content format, enabling proper rendering in browsers.[39] Configuration options include enabling directory browsing to list folder contents when no default document is specified, and setting default documents (e.g., index.html or default.aspx) to automatically serve entry points for directory requests.[39] IIS supports essential HTTP methods including GET for retrieving resources, POST for submitting data, and HEAD for metadata inspection, with responses adhering to HTTP status codes like 200 OK for successful deliveries or 404 Not Found for missing resources. Basic error handling allows customization of response pages for common errors, while request logging captures details such as client IP, timestamp, URI, and status code in formats like W3C Extended Log File Format for auditing and analysis.[1] Security fundamentals include anonymous authentication for public access, IP address restrictions, and support for Secure Sockets Layer (SSL)/Transport Layer Security (TLS) on port 443 to encrypt traffic, though advanced authentication modules extend beyond core serving.[1] These capabilities form the baseline for hosting simple websites, with modular design allowing selective feature enablement to minimize the attack surface.[1]Application and Scripting Support
Internet Information Services (IIS) enables dynamic web application hosting and server-side scripting via its request processing pipeline, which routes HTTP requests to appropriate handlers and modules for execution. This architecture supports isolation of applications through worker processes managed in application pools, preventing failures in one application from affecting others, a feature introduced in IIS 6.0 and refined in subsequent versions for improved stability and resource management.[3] IIS natively integrates with Active Server Pages (ASP), a legacy scripting technology using VBScript or JScript for embedding code in HTML pages, which remains supported on IIS 7.0 and later versions as an optional feature for backward compatibility with existing deployments. For modern .NET-based applications, IIS hosts ASP.NET and ASP.NET Core frameworks, leveraging the integrated pipeline mode to process requests within the same worker process as the server for reduced latency; ASP.NET Core, introduced in 2016, supports cross-platform deployment but requires IIS as a reverse proxy on Windows via the ASP.NET Core Module (ANCM), with in-process hosting available since version 2.2 for enhanced performance.[40][41] For non-Microsoft scripting languages, IIS utilizes FastCGI protocol handlers to execute PHP applications, a configuration enabled through the FastCGI module installed via the Web Platform Installer, allowing PHP versions up to 8.x to run efficiently under application pools as of IIS 10. Similarly, Python web applications can be hosted on IIS using FastCGI or the HttpPlatformHandler module, which launches external processes like Python interpreters; this setup supports frameworks such as Flask or Django, though it requires manual configuration of web.config files to map handlers to executables, with official guidance provided for Windows Server 2012 R2 and later.[42][43][44] Extensibility for custom scripting occurs through ISAPI extensions and filters, which allow C/C++ code to intercept and process requests, though Microsoft recommends managed code alternatives like HTTP modules for new development due to security and maintenance advantages. Application pools can be configured with specific .NET CLR versions (e.g., v4.0 for .NET Framework 4.x apps), ensuring compatibility and preventing version conflicts in multi-application environments.[1]Development and Testing Tools
IIS Express serves as a lightweight, self-contained edition of Internet Information Services (IIS) tailored for developers, enabling local testing of web applications without requiring a full IIS installation on production-like configurations.[45] It supports core IIS features such as ASP.NET hosting, URL rewriting, and authentication modules, while integrating seamlessly with development environments like Visual Studio for debugging and rapid iteration.[45] Released alongside IIS 7.5 in 2010 and updated through IIS 10 Express as of July 2024, it runs under the user's context by default, reducing administrative overhead and enhancing security during development cycles.[46] Failed Request Tracing (FRT) provides a diagnostic mechanism to capture and analyze request failures in IIS, buffering events from providers like WWW Server and ASP.NET until a failure threshold—such as HTTP status codes 400-599—is met, at which point traces are logged for review.[47] Configurable via IIS Manager at site, application, or server levels, FRT rules specify providers, verbosity levels (e.g., Basic or Verbose), and areas like authentication or module execution, aiding in pinpointing issues like slow responses or module errors without impacting successful requests.[47] Introduced in IIS 7.0, this tool generates XML logs viewable in browsers or log viewers, supporting troubleshooting of application routing and performance bottlenecks.[48] AppCmd.exe functions as a command-line utility for managing IIS configurations, allowing developers to script queries, backups, and modifications for testing scenarios, such as validating site bindings or application pool settings prior to deployment.[49] Available since IIS 7.0 and located in%windir%\system32\inetsrv\, it supports objects like sites, applications, and virtual directories, with commands to list, add, or set parameters in text or XML output, facilitating automated regression testing of configuration changes.[50] For instance, appcmd list config retrieves section details, enabling verification against expected states without graphical interfaces.[49]
Visual Studio's built-in support for IIS extends testing capabilities, permitting in-process hosting and debugging of ASP.NET Core applications directly on IIS instances during development, with features like breakpoint attachment and request inspection mirroring production behaviors.[51] This integration, available since Visual Studio 2015 for ASP.NET 5 previews and refined in later versions up to 2022, allows toggling between IIS Express and full IIS for comparative testing of environmental variances.[51]
Modular Extensions
Internet Information Services (IIS) version 7.0 and later employs a modular architecture that enables selective installation and activation of extensions, minimizing unnecessary features to enhance security and performance by reducing the potential attack surface.[52] This design contrasts with prior versions, where the full server footprint was installed by default, and allows administrators to enable only modules required for specific workloads, such as web serving or application hosting.[3] Core to this extensibility are IIS modules, which are pluggable components that intercept and process HTTP requests and responses at defined pipeline stages, including authentication, authorization, and logging.[4] Modules are categorized as native (implemented in unmanaged C++ code for high performance) or managed (built with the .NET Framework or .NET Core for easier development using languages like C#).[33] Native modules integrate directly with the IIS kernel, while managed modules run in the integrated pipeline alongside ASP.NET applications, supporting features like custom output caching or request rewriting.[3] Handlers complement modules by executing specific actions for request types, such as serving static files or routing to scripts, and can be extended via the same APIs.[33] Developers extend IIS using the server APIs, which provide entry points for registering modules in the configuration schema, typically viaapplicationHost.config or web.config files.[53] For instance, the URL Rewrite module, available as a downloadable extension, allows pattern-based URL manipulation without altering application code. Similarly, the Application Request Routing (ARR) module facilitates load balancing and caching for scalable deployments.
Installation of third-party or custom modules involves MSI packages or manual deployment, followed by registration in IIS Manager or configuration files, with support for shared environments through centralized management.[54] This modularity supports diverse scenarios, including hosting PHP via the FastCGI module or enabling CORS through dedicated extensions, but requires careful auditing to mitigate risks from malicious modules that can persist as backdoors by hooking into the request pipeline.[7] Empirical data from security analyses indicate that unused modules should be disabled, as attackers exploit them for stealthy persistence, with detection relying on tools like Process Monitor to identify anomalous DLL loading.[55] Overall, this architecture promotes resource efficiency, with benchmarks showing up to 20-30% footprint reduction in minimal installations compared to monolithic setups.[52]
Deployment and Configuration
Installation and Setup
Internet Information Services (IIS) version 10.0, the latest version integrated with Windows Server 2022 and Windows 11 as of 2025, is installed as an optional feature or server role requiring administrative privileges.[9][56] On Windows Server editions, installation occurs via Server Manager by selecting Manage > Add Roles and Features, opting for role-based installation, targeting the local server, and enabling the Web Server (IIS) role under Server Roles.[57] Sub-roles such as Web Server > Common HTTP Features (e.g., Default Document, Static Content) and Management Tools (e.g., IIS Management Console) are selected during this wizard to tailor functionality.[57] PowerShell provides an alternative with the commandInstall-WindowsFeature -Name Web-Server -IncludeManagementTools, which installs core components and management interfaces.[57]
For Windows client editions like Windows 10 or 11, IIS is activated through the Turn Windows features on or off dialog, accessed via Control Panel > Programs and Features, by checking Internet Information Services and expanding to enable sub-features such as World Wide Web Services > Application Development Features for scripting support.[4][58]
Post-installation setup begins with launching IIS Manager (inetmgr.exe) from the Administrative Tools or Start menu, where a default website is pre-configured to listen on port 80 and serve static content from %SystemRoot%\Web\.[59] Verification involves browsing to http://[localhost](/page/Localhost) in a web browser, which displays the IIS welcome page if the Windows Firewall permits inbound HTTP traffic (port 80) and no conflicting services occupy the port.[57] Initial configuration may include adding websites via Sites > Add Website in IIS Manager, specifying physical paths, bindings (e.g., IP address, port, hostname), and application pools for isolation.[59] The configuration files, primarily applicationHost.config in %SystemRoot%\System32\inetsrv\config\, store global settings editable via the manager or directly for advanced customization.[60]
Administrative Management
Administrative management of Internet Information Services (IIS) primarily utilizes the IIS Manager, a graphical user interface introduced in IIS 7.0 that provides streamlined access to server, site, and application configurations.[61] This tool supports task-oriented management, including creating websites, configuring bindings, managing authentication methods, and handling modules and handlers, with a modular design allowing extensions via managed code.[61] Configuration in IIS follows a hierarchical, distributed XML-based system, where settings are stored in files such as the global applicationHost.config at the server level and web.config files at the site or application level, enabling inheritance and overrides without restarting the server.[37] Administrators can delegate feature-level permissions through feature delegation in IIS Manager, restricting modifications to specific elements like default documents or request filtering to prevent unauthorized changes at lower levels.[61] For automation and scripting, IIS supports command-line tools like appcmd.exe for tasks such as starting or stopping sites, and the IISAdministration PowerShell module, which offers cmdlets for direct object references and improved scalability in long-running scripts compared to earlier modules.[62] Remote administration is enabled via IIS Manager connections or the Microsoft IIS Administration API, a RESTful interface for configuring and monitoring servers across Windows versions from 7 onward, requiring .NET Core for API operations.[63][64] Monitoring and diagnostics are integrated into administrative workflows, with IIS Manager providing views into worker processes, request tracing, and performance data, supplemented by Windows Performance Counters for metrics like requests per second and errors.[65] Centralized management tools allow oversight of multiple servers, though delegation and security settings must be configured to balance accessibility with control.[66]Integration with Windows Services
Internet Information Services (IIS) primarily operates through two core Windows services: the World Wide Web Publishing Service (W3SVC) and the Windows Process Activation Service (WAS).[67][68] The W3SVC handles incoming HTTP and HTTPS requests by interfacing with the kernel-mode HTTP.sys driver, managing protocol listeners, and exposing performance counters for monitoring.[69] It ensures reliable web serving by integrating with the Windows Service Control Manager (SCM) for startup, shutdown, and dependency resolution, typically set to automatic startup on Windows Server installations.[67] The WAS, introduced with IIS 7.0 in Windows Server 2008, generalizes process activation beyond HTTP protocols, supporting activation via named pipes, TCP, or MSMQ for broader application hosting.[68][70] It manages worker process lifecycle features, including recycling based on time, memory thresholds, or request volume—e.g., default recycling every 29 hours or at 1.4 GB private memory—to maintain stability and resource efficiency.[68] WAS depends on services like Remote Procedure Call (RPC) and integrates with SCM for health monitoring, allowing IIS to isolate application failures without disrupting the entire server.[3] These services are configured and controlled via the Windows Services management console (services.msc), PowerShell cmdlets likeGet-Service and Restart-Service, or command-line tools such as sc.exe and iisreset.exe for coordinated restarts.[71] Administrators assign logon accounts—often Network Service or a custom domain account—for security isolation, with dependencies enforced to ensure WAS starts before W3SVC.[71] Event logging integrates directly with the Windows Event Viewer, capturing service failures (e.g., error code 2 for file not found or 50 for timeouts) for diagnostics, while performance data feeds into Windows Performance Monitor counters.[72] This framework enables IIS to leverage Windows-native reliability features, such as automatic recovery on failure and integration with failover clustering for high availability in Windows Server environments as of 2022.[67]
For advanced scenarios, IIS supports hosting Windows Communication Foundation (WCF) services either within its process model or as standalone Windows services, allowing non-HTTP activation managed by WAS.[71] Permissions require administrative rights for service operations, with application pools running under least-privilege identities to mitigate risks from integrated components like Active Directory authentication.[71] In Windows Server 2022 with IIS 10, these integrations remain unchanged, emphasizing SCM's role in provisioning without direct IIS Manager dependency for service-level controls.[73]
Performance and Scalability
Resource Efficiency
IIS utilizes a modular design where unused features and modules can be disabled to minimize the server's attack surface and memory footprint, allowing for tailored resource allocation based on specific deployment needs.[1] Application pools isolate worker processes (w3wp.exe), each configurable with CPU and memory limits, private memory recycling thresholds (e.g., 1-2 GB per process to prevent leaks), and idle timeouts to reclaim resources automatically.[74][75] Kernel-mode components like HTTP.sys handle request parsing, queuing, and caching before passing to user-mode IIS, reducing context switches and CPU overhead for high-volume traffic; output caching for dynamic content further offloads repeated computations to memory, lowering disk I/O and processor demands.[26] In IIS 10 and later, support for HTTP/2 protocol enables multiplexing over persistent connections, decreasing the number of TCP handshakes and improving efficiency under concurrent loads compared to HTTP/1.1.[12] Empirical comparisons reveal workload-dependent efficiency: for static file serving at high concurrency, Nginx's asynchronous, event-driven architecture consumes less memory per connection (often under 1 KB versus IIS's thread-based model at several KB per active thread), enabling superior scalability on resource-constrained hardware.[76] However, in Windows-integrated scenarios with ASP.NET workloads, IIS leverages optimized managed code execution and just-in-time compilation, yielding competitive CPU utilization; isolated benchmarks have shown IIS achieving over double the request throughput with 2.3 times lower CPU usage than Nginx for certain dynamic tests.[77][78] Administrators can further enhance efficiency via Windows System Resource Manager (WSRM) for process-level CPU/memory throttling or by tuning thread pools to match core counts, preventing oversubscription.[75][79]Load Handling and Optimization
IIS utilizes the HTTP.sys kernel-mode driver to manage incoming connections and queue requests efficiently, dispatching them to worker processes only when resources are available, which supports handling thousands of concurrent connections per server.[26] Application pools isolate applications into separate worker processes (w3wp.exe), with configurable maximum worker processes per pool—typically set to 0 for single-process mode but increasable for multicore scaling on NUMA hardware, allowing workload distribution across CPUs to improve throughput under high load.[80][81] To prevent resource exhaustion, administrators can set CPU limits (e.g., action types like KillW3wp or ThrottleUnderLoad) and recycling intervals based on metrics such as memory usage or request volume, restarting processes periodically—such as every 29 hours by default—to address memory leaks without downtime.[81] Queue lengths default to 1,000 requests per worker process, with excess requests rejected via HTTP 503 to maintain stability, tunable via advanced settings for site-specific needs.[82] Performance optimization relies on caching mechanisms, including kernel-mode caching for static content to serve files directly from kernel space without user-mode involvement, and output caching for dynamic responses to avoid recomputation.[26] Dynamic content compression, enabled via modules, reduces response sizes by up to 70% for compressible payloads like HTML or JSON, though it elevates CPU usage; IIS caches compressed variants to amortize this cost across subsequent requests.[26][83] Further enhancements involve disabling unnecessary logging or ASP debugging to reduce I/O overhead, tuning connection timeouts (default 120 seconds), and enabling HTTP/2 for multiplexed streams that decrease latency under load.[84] Bandwidth throttling and maximum bandwidth settings per site prevent any single application from monopolizing resources, ensuring equitable load distribution in multi-tenant environments.[26]Empirical Benchmarks
Independent benchmarks of Internet Information Services (IIS) performance, primarily measured in requests per second (RPS), response times, and resource utilization, reveal strengths in dynamic content handling within Windows environments but generally lag behind event-driven servers like Nginx for high-concurrency static workloads. Evaluations depend heavily on configuration, hardware, and test methodology, with thread-per-connection models in IIS contributing to higher memory use under extreme loads compared to asynchronous alternatives.[85] A 2005 comparative study using WebBench 5.0 on a 2.4 GHz Pentium IV system with 768 MB RAM tested IIS 6.0 against Apache 2.0 across static/dynamic workloads and 1-32 concurrent clients. IIS demonstrated superior throughput, with a mean RPS difference of 29,559.7 (95% CI: 22,702.3-36,417.1) and bytes/second difference of 168,639,315.1 (95% CI: 130,202,929.1-207,075,701.1) favoring IIS, particularly under heavier multi-client loads where Apache faltered.[86] However, this predates modern optimizations in both servers, limiting direct applicability.[86] In a 2017 static file benchmark using Weighttp to simulate up to 1,000 concurrent connections and 200 million total requests on virtualized setups with 4 GB RAM, IIS 10.0 on Windows Server 2016 exhibited good scalability across 1-8 CPU cores for serving small HTML files, outperforming older versions like IIS 7.5 at higher core counts, though exact peak RPS varied by core allocation without quantified maxima reported.[87] A more recent user-conducted load test on unspecified hardware with IIS 10 capped at 6,820 RPS for a simple test page, highlighting practical limits in unoptimized deployments.[88] Framework-level proxies for IIS capability appear in TechEmpower Round 23 (2025), where ASP.NET Core implementations on Kestrel—a lightweight server often paired with IIS—reached 27.7 million RPS in plaintext serialization tests on high-end hardware, underscoring .NET ecosystem potential but not isolating IIS kernel-mode HTTP.sys overhead.[89] Cross-server comparisons, such as those noting Nginx's edge in transfer rates over IIS in Debian-based WRK tests, affirm IIS's relative efficiency in integrated Windows/.NET scenarios over raw static serving.[90] Overall, IIS achieves 10,000-50,000 RPS in tuned enterprise setups for mixed workloads, per aggregated reports, but requires careful tuning of worker processes and caching to approach competitors under sustained high throughput.[26][27]Security
Built-in Security Mechanisms
Internet Information Services (IIS) includes several integrated security features aimed at reducing the attack surface and blocking malicious requests directly at the server level. The Request Filtering module, available since IIS 7.0, serves as a primary defense by inspecting and filtering HTTP requests based on configurable rules, effectively replacing the deprecated URLScan ISAPI filter from earlier versions.[91] This module denies requests matching deny rules, such as those using unsafe HTTP verbs like TRACE or TRACK, which could otherwise leak server information or enable cross-site tracing attacks.[92] It also blocks access to sensitive files via hidden URL segments (e.g., /bin, /App_code, or /web.config) and restricts file extensions to prevent execution of unauthorized scripts, thereby mitigating risks from uploaded malicious content.[93] Further protections stem from IIS's built-in authentication and authorization framework, which supports multiple providers including Anonymous, Basic, Digest, Windows (NTLM/Kerberos), and Client Certificate Mapping authentication.[94] These mechanisms enforce identity verification before granting access to resources, with the unified authentication pipeline in IIS 7 and later versions allowing centralized management to avoid per-application vulnerabilities.[95] For encryption, IIS natively handles SSL/TLS protocols, including server certificate management and strong cipher suites, to secure data in transit against eavesdropping or man-in-the-middle attacks.[96] IIS also embeds IP Address and Domain Name Restrictions as a core feature, enabling administrators to allow or deny traffic from specific IP addresses, subnets, or hostnames, which helps isolate the server from known malicious origins. Complementing this, the Dynamic IP Restrictions extension—integrated since IIS 7.5—automatically adds temporary bans for client IPs exceeding thresholds for failed requests, countering brute-force and denial-of-service attempts without requiring external tools.[96] These mechanisms collectively promote a least-privilege model, where only essential features are enabled during installation to minimize exploitable components.[95]Authentication and Access Controls
Internet Information Services (IIS) employs modular authentication providers to verify user identities before granting access to resources. These providers, configurable via the<authentication> element in applicationHost.config or site-level web.config files, include Anonymous, Basic, Digest, Windows, and Client Certificate Mapping authentication, as standardized since IIS 7.0 in 2008.[94] Anonymous authentication permits unrestricted public access by impersonating the built-in IUSR account, which operates under low-privilege constraints to minimize exposure if exploited.[94] Basic authentication transmits credentials in Base64-encoded plain text within HTTP headers, necessitating HTTPS to prevent interception, and supports domain specification for Active Directory logons.[97] Digest authentication enhances security over Basic by hashing credentials with MD5 before transmission, requiring reversible encryption in Active Directory for validation.[94] Windows authentication leverages integrated protocols like Kerberos (preferred for its ticket-based mutual authentication) or NTLM fallback, with kernel-mode support in IIS 7+ enabling reduced-privilege operation via application pool identities.[98] Client Certificate Mapping authentication maps X.509 certificates to user accounts either via Active Directory attributes or IIS-specific rules, suitable for public key infrastructure environments.[94]
Access controls in IIS extend beyond authentication to enforce granular authorization and filtering. URL authorization, managed through the <authorization> element and requiring the URL Authorization module, applies allow or deny rules based on users, roles, or HTTP verbs after identity verification; for instance, rules can permit access solely to domain groups like "Administrators" while denying anonymous users.[99] IP Security restrictions, defined in the <ipSecurity> collection, enable allow/deny lists for IPv4 or IPv6 addresses and subnets, configurable at site or server levels to block unauthorized geographic or host-based access.[100] Introduced in IIS 8.0 with Windows Server 2012, Dynamic IP Restrictions automatically bans clients exceeding configurable request thresholds (e.g., 100 requests per minute) to mitigate denial-of-service and brute-force attacks.[101]
Request Filtering serves as a preventive access control layer, scanning incoming requests against predefined policies to reject malformed or suspicious inputs before processing. This feature, replacing the UrlScan ISAPI filter since IIS 7.0, blocks requests by URL patterns, query string lengths (default max 2048 bytes), file extensions, or hidden segments, with defaults denying access to executables like .exe in web roots to curb code execution risks.[92] Administrators can customize allowances, such as permitting specific verbs (GET, POST) while rejecting TRACE to prevent reconnaissance, enhancing overall resilience without relying on upstream firewalls.[93] These mechanisms collectively prioritize least-privilege access, though misconfigurations—like enabling Basic without TLS—have historically exposed credentials, underscoring the need for layered defenses including regular auditing via IIS Manager logs.[94]
Vulnerability History and Mitigations
One of the earliest major vulnerabilities in Microsoft Internet Information Services (IIS) was exploited by the Code Red worm, which emerged on July 15, 2001, and targeted a buffer overflow in the Index Server component of IIS 5.0, specifically affecting .ida and .idaa file extensions, leading to widespread infections of over 350,000 servers and significant internet disruption.[102] [103] Shortly thereafter, the Nimda worm, detected on September 18, 2001, propagated via multiple vectors including exploitation of IIS vulnerabilities such as differential backups and code red backdoors, as well as .asp and .aspx parsing flaws, infecting systems and appending malicious code to web files, which amplified damage on unpatched IIS installations.[104] In subsequent years, IIS faced ongoing issues, including the 2010 vulnerabilities addressed in Microsoft Security Bulletin MS10-065, which covered remote code execution risks in IIS FTP and HTTP request handling, affecting versions up to IIS 7.5 and requiring patches to mitigate parameter repetition and other flaws.[105] A notable persistence of legacy risks appeared in 2017 with CVE-2017-7269, a buffer overflow in IIS 6.0's WebDAV ScStoragePathFromUrl function, enabling remote code execution on unmaintained servers still in use, despite end-of-support in 2010.[106] By 2022, CVE-2022-21907 exposed a wormable remote code execution flaw in the IIS HTTP Protocol Stack, allowing unauthenticated attackers to execute code via crafted HTTP requests, patched in January 2022 but highlighting risks in exposed configurations.[107] More recently, attackers have abused IIS modules and extensions for persistence, with malicious variants traced back to at least 2013, evolving into sophisticated web shells that evade detection by integrating as legitimate native code modules, often deployed post-exploitation in environments like compromised SharePoint servers.[55] In August 2025, a critical remote code execution vulnerability in IIS Web Deploy (CVE-2025-XXXX, details pending full disclosure) allowed arbitrary code execution, addressed via Microsoft's patch release following responsible disclosure.[8] Just prior to October 26, 2025, CVE-2025-59287, an actively exploited remote code execution flaw in IIS components, prompted an out-of-band patch on October 23, 2025, underscoring the urgency of timely updates amid confirmed real-world attacks.[108] Mitigations for IIS vulnerabilities emphasize prompt application of Microsoft security updates, as the vendor releases monthly patches via Windows Update or the Microsoft Update Catalog, with historical bulletins like MS10-065 demonstrating effective resolution through targeted fixes.[105] Upgrading to supported versions, such as IIS 10 on Windows Server 2022, incorporates built-in enhancements like worker process isolation and reduced attack surface compared to IIS 6.0, where legacy features like WebDAV remain unpatched risks.[109] Best practices include removing unused modules (e.g., WebDAV if not required) to minimize exposure, configuring application pools with least-privilege accounts, enabling request filtering to block malformed inputs akin to Code Red exploits, and implementing IP restrictions for brute-force protection.[110] [111] Additionally, comprehensive logging via IIS Advanced Logging, firewall rules limiting HTTP/S traffic, and regular scanning for anomalous modules help detect and prevent persistence mechanisms like those in post-2013 web shells.[55] For high-risk environments, isolating IIS via network segmentation and enforcing TLS 1.3 further reduces exploitation vectors observed in wormable flaws like CVE-2022-21907.[107]Adoption and Usage
Market Share Data
As of October 2025, Microsoft Internet Information Services (IIS) accounts for 3.6% of websites using known web servers, placing it well behind dominant alternatives.[112] This figure derives from W3Techs' continuous scanning of millions of top websites, focusing on detectable server signatures rather than self-reported data or active traffic metrics.[113] In contrast, Nginx leads with 33.2%, followed by Apache at 25.3% and Cloudflare Server at 24.7%, reflecting a market favoring open-source and lightweight alternatives optimized for high concurrency.[113] Netcraft's September 2025 web server survey, which actively probes over 1.3 billion sites for responsiveness and hosting details, similarly underscores IIS's niche position, though exact IIS percentages were not isolated in the summary; historical Netcraft data prior to 2025 consistently showed IIS below 10% amid Apache's traditional lead in active sites.[114] IIS's share has trended downward from peaks around 12% in the early 2010s, attributable to the rise of Linux-based servers and cloud-native architectures that reduce reliance on Windows ecosystems.[115] Within enterprise segments tied to Microsoft stacks, such as .NET applications, IIS retains higher adoption—estimated at 6-10% in broader application server contexts—but lacks comprehensive public benchmarks isolating this.[116]| Web Server | Market Share (October 2025, W3Techs) |
|---|---|
| Nginx | 33.2% |
| Apache | 25.3% |
| Cloudflare Server | 24.7% |
| LiteSpeed | 14.9% |
| Microsoft IIS | 3.6% |
