IIS and WAP Deployment

Last updated: January 14, 2026

📚 Reference: This guide aligns with IIS Documentationarrow-up-right and Web Application Proxy Overviewarrow-up-right

The Day I Learned About IIS Security

Early in my career, I deployed an IIS web application using the default settings. Within hours of going live, the application pool crashed repeatedly, users complained about slow performance, and security scans revealed the server was vulnerable to several attack vectors.

That painful experience taught me that IIS isn't "install and publish" – it requires careful configuration of application pools, authentication methods, security hardening, and performance tuning. This article shares what I've learned deploying hundreds of IIS applications in production environments.

What is Internet Information Services (IIS)?

IIS is Microsoft's web server platform for hosting websites, web applications, and services. In my deployments, IIS serves as the foundation for:

  • Public-facing websites: Corporate sites, customer portals

  • Internal web applications: Intranet, SharePoint, custom apps

  • REST APIs: Microservices, integration endpoints

  • ADFS endpoints: Federation metadata, authentication pages

  • Exchange/OWA: Email web access

  • Application hosting: ASP.NET, PHP, Node.js applications

Why I Deploy IIS

From my experience, IIS provides:

  1. Windows integration: Seamless with Active Directory, NTLM, Kerberos

  2. Performance: Kernel-mode caching, application pool isolation

  3. Security: Request filtering, URL rewriting, dynamic IP restrictions

  4. Management: PowerShell automation, centralized configuration

  5. Scalability: Web farms, ARR (Application Request Routing), load balancing

IIS Architecture

Core Components

spinner

HTTP.SYS

Kernel-mode driver that:

  • Listens on TCP ports (80, 443)

  • Routes requests to correct application pool

  • Handles SSL/TLS termination

  • Implements kernel-mode caching

Windows Activation Service (WAS)

Manages application pool lifecycle:

  • Starts worker processes

  • Monitors health

  • Recycles pools based on configuration

Application Pools (w3wp.exe)

Isolated process boundaries for applications:

  • Each pool runs as separate w3wp.exe process

  • Crashes in one pool don't affect others

  • Different identity per pool

  • Configurable resource limits

Websites

Logical containers that define:

  • Bindings (IP, port, hostname)

  • Physical path to content

  • Associated application pool

  • Authentication methods

Installing IIS

Basic Installation

Full Installation with All Features

Install URL Rewrite Module

Essential for redirects and rewrite rules:

Install Application Request Routing (ARR)

For load balancing and reverse proxy:

Application Pool Configuration

Creating Application Pools

Application Pool Recycling

Application Pool Limits

Rapid-Fail Protection

Website Configuration

Creating Websites

Host Headers and SNI

Virtual Directories and Applications

Authentication Configuration

Windows Authentication

spinner

Kerberos Configuration

For Windows Authentication to use Kerberos (more secure than NTLM):

Forms Authentication

Client Certificate Authentication

SSL/TLS Configuration

Install SSL Certificate

Configure TLS Protocols

Configure Cipher Suites

HTTP to HTTPS Redirect

Security Hardening

Request Filtering

Remove Server Headers

Security Headers

IP Restrictions

Web Application Proxy (WAP)

WAP publishes internal applications to external users securely.

WAP Architecture

spinner

Installing WAP

Publishing Applications Through WAP

Publish with ADFS Pre-authentication

Publish with Pass-through Authentication

Publish with Client Certificate Authentication

WAP Health Monitoring

Load Balancing with ARR

Application Request Routing for load balancing IIS servers.

Configure ARR

Monitoring and Troubleshooting

Performance Monitoring

Failed Request Tracing

Common Issues

Application Pool Crashes

Kerberos Authentication Failures

SSL/TLS Errors

Best Practices Summary

Application Pools

  1. Separate pools per application: Isolation prevents cascade failures

  2. Use gMSA for identity: Automatic password management

  3. Configure recycling: Schedule during low-traffic periods

  4. Set resource limits: Prevent resource exhaustion

Security

  1. HTTPS everywhere: Redirect HTTP to HTTPS

  2. Strong TLS only: Disable SSL 2.0/3.0, TLS 1.0/1.1

  3. Request filtering: Block dangerous extensions and characters

  4. Security headers: HSTS, X-Frame-Options, CSP

  5. Remove server headers: Don't advertise IIS version

Performance

  1. Enable compression: Static and dynamic content

  2. Configure caching: Output caching, kernel caching

  3. Limit connections: Prevent resource exhaustion

  4. Monitor performance: Proactive alerting

Authentication

  1. Prefer Windows Auth: Seamless for internal apps

  2. Configure Kerberos: More secure than NTLM

  3. Use ADFS for cloud: Federated SSO

  4. Client certificates: For high-security APIs

Conclusion

IIS is a powerful, flexible web server platform. From my experience deploying IIS across hundreds of applications, success requires:

  • Proper application pool configuration: Isolation and security

  • Strong SSL/TLS: Protect data in transit

  • Defense in depth: Multiple security layers

  • Monitoring and alerting: Proactive issue detection

  • Regular maintenance: Certificate renewals, security updates

In the next article, we'll bring everything together with Enterprise Identity Integration Patterns, showing how AD, ADFS, PKI, IIS, and WAP work together in complete authentication flows.


Further Reading

Ready to see everything integrated? Continue to the final article! →

Last updated