Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

03 - Servidor IIS

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Servidor IIS (Internet Information Services)

O Internet Information Services (IIS) é o servidor web desenvolvido pela Microsoft para a plataforma Windows Server. Lançado originalmente como parte do Windows NT 4.0 Option Pack em 1997, o IIS evoluiu até se tornar uma das soluções corporativas mais robustas para hospedagem de aplicações web, serviços REST, FTP e até streaming de mídia.

1. Posicionamento no Mercado

O IIS é o segundo servidor web mais utilizado do mundo (atrás apenas do Apache em volume de servidores, embora o NGINX tenha ganhado espaço como proxy reverso). Sua adoção ocorre majoritariamente em ambientes corporativos que já utilizam o ecossistema Microsoft (Active Directory, SQL Server, .NET, Exchange).

Característica IIS Apache NGINX
Sistema operacional nativo Windows Multiplataforma Multiplataforma
Arquitetura de processos Worker Process (w3wp.exe) MPM (Prefork/Worker/Event) Event-driven
Suporte a .NET Nativo Via módulo mod_mono Limitado (Kestrel reverso)
Configuração XML (applicationHost.config) Texto (.htaccess, httpd.conf) Texto (nginx.conf)

2. Arquitetura Interna

Application Pool

O conceito central do IIS é o Application Pool (Pool de Aplicações). Cada pool:

  • É um processo isolado chamado w3wp.exe (Worker Process).
  • Pode hospedar múltiplos sites ou aplicações.
  • Possui sua própria identidade de segurança (ApplicationPoolIdentity).
  • Tem memória e configurações independentes de outros pools.

Se uma aplicação travar (crash), apenas o pool afetado é reiniciado, preservando a disponibilidade dos demais sites hospedados no mesmo servidor.

Hierarquia de Configuração

Machine.config (Machine-wide)
    └── ApplicationHost.config (Server-wide - IIS root)
         └── Web.config (Site level)
              └── Web.config (Application level)
                   └── Web.config (Subdirectory level)

O formato XML é usado em todos os níveis, com herança cascata: configurações mais profundas sobrescrevem as superiores.

WAS (Windows Process Activation Service)

Serviço do Windows que gerencia o ciclo de vida dos Worker Processes, monitora sua saúde e reinicia processos travados automaticamente.

3. Recursos Principais

HTTP/HTTPS

  • Suporte nativo a HTTP/1.1, HTTP/2 (desde IIS 10) e HTTP/3 (a partir do Windows Server 2022).
  • TLS via SChannel (implementação nativa de criptografia do Windows).
  • Certificate Store integrado ao sistema operacional.

Autenticação

Método Descrição
Anonymous Acesso público (usuário IUSR)
Basic Usuário/senha em Base64 (requer HTTPS)
Digest Hash MD5 com nonce (mais seguro que Basic)
Windows NTLM/Kerberos via Active Directory
Client Certificate Autenticação mútua por certificado X.509

FTP e FTPS

  • Servidor FTP integrado, com suporte a virtual hosts por nome.
  • Isolamento de usuários por diretórios físicos.
  • FTPS (FTP sobre TLS) desde o IIS 7.

WebSocket

  • Suporte desde o IIS 8 (Windows Server 2012).
  • Permite aplicações real-time (chat, dashboards, jogos multiplayer).

URL Rewrite

  • Módulo inspirado no mod_rewrite do Apache.
  • Permite redirecionamentos, reescrita de URLs amigáveis e bloqueio por padrões.

4. Extensibilidade

Módulos Nativos vs Gerenciados

  • Módulos Nativos (C++): Alta performance, executam dentro do worker process.
  • Módulos Gerenciados (C# .NET): Flexibilidade e produtividade, executam via pipeline ASP.NET integrado.

Exemplos de módulos comuns:
- StaticFileModule - serve arquivos estáticos (HTML, CSS, JS).
- DynamicCompressionModule - comprime respostas com GZIP/Deflate.
- UrlAuthorizationModule - aplica regras de autorização.
- OutputCacheModule - cacheia respostas para acelerar requisições repetidas.

5. Exemplo Prático de Configuração (web.config)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <defaultDocument>
      <files>
        <add value="index.html" />
      </files>
    </defaultDocument>
    <httpRedirect enabled="true" destination="https://novosite.com" />
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="10485760" />
      </requestFiltering>
    </security>
    <rewrite>
      <rules>
        <rule name="ForcarHTTPS" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

6. Comandos de Administração

# Listar sites hospedados no IIS
Import-Module WebAdministration
Get-Website

# Criar um novo site
New-Website -Name "MeuSite" -PhysicalPath "C:\sites\meusite" -Port 8080

# Reiniciar um Application Pool
Restart-WebAppPool "DefaultAppPool"

# Verificar status dos Worker Processes
Get-Process w3wp | Select Id, ProcessName, StartTime

# Backup da configuração do IIS
Backup-WebConfiguration -Name "Backup_$(Get-Date -f yyyyMMdd)"

7. Segurança Recomendada

  • Princípio do Menor Privilégio: Executar cada pool com identidade dedicada (não NetworkService).
  • TLS 1.2/1.3 apenas: Desativar SSL 2.0, SSL 3.0, TLS 1.0 e TLS 1.1 via registro.
  • Filtro de Requisições: Bloquear extensões perigosas (.bat, .exe, .config).
  • Headers de Segurança: Adicionar Strict-Transport-Security, X-Frame-Options, X-Content-Type-Options.
  • Atualização de Patches: Manter Windows Server em dia com Patch Tuesday.

8. Performance e Escala

Web Farm

Múltiplos servidores IIS atrás de um balanceador (NLB ou hardware), compartilhando sessão via ASP.NET Session State Server ou SQL Server.

Output Cache

Cacheia respostas completas em memória para acelerar requisições idênticas. Configurável por extensão, MIME type ou rota.

Compression

Compactação dinâmica (HTML, JSON, XML) e estática (pré-comprime arquivos no disco).

9. Comparativo de Versões

Versão SO Destaques
IIS 6 Windows Server 2003 Primeira versão com Application Pools
IIS 7 Windows Server 2008 Arquitetura modular, web.config completo
IIS 8 Windows Server 2012 WebSocket, SNI, Sandboxing
IIS 10 Windows Server 2016+ HTTP/2, Containers Windows
IIS 10 v1809+ Windows Server 2019+ HTTP/3, TLS 1.3

10. Conclusão

O IIS é a opção natural para organizações que já operam no ecossistema Microsoft, oferecendo integração profunda com Active Directory, .NET e SQL Server. Sua arquitetura baseada em Application Pools garante isolamento robusto entre aplicações, enquanto a configuração XML padronizada (web.config) permite deploy declarativo e versionável. Para desenvolvedores .NET, o IIS continua sendo a plataforma de hospedagem mais madura e otimizada, embora o Kestrel (servidor interno do ASP.NET Core) tenha ganhado espaço como alternativa leve em arquiteturas modernas e em containers.