You are on page 1of 48

Introduccin Internet Information Services 7.

0 (IIS 7)
Ivn Gonzlez Vilaboa
ivan@plainconcepts.com Develoment Advisor Microsoft MVP Windows Server IIS Plain Concepts

Agenda
Introduccin Ncleo del servidor Web Extensibilidad Configuracin Administracin Despliegue Seguridad Diagnstico y resolucin de problemas

Ms fcil de administrar
IIS7 contiene docenas de nuevas caractersticas que permiten administrarlo de forma ms fcil que nunca:

Ncleo del servidor Web


Procesado de peticiones en IIS 6

Authentication
NTLM Basic Anon

Implementacin monoltica nada Instala todo o nada

CGI

Determine Handler

Static File ISAPI

ASP.NET PHP

Send Response
Log Compress

Extensin de la funcionalidad del ISAPI servidor slo a travs de ISAPI

Ncleo del servidor Web


Procesado de peticiones en IIS 7

Authentication Authorization ResolveCache CGI Determine Static File Handler ExecuteHandler UpdateCache Send Response SendResponse Log Compress
ISAPI NTLM Basic Anon

La funcionalidad del servidor se reparte en ~ 40 modulos... modulos... Los mdulos se conectan en un pipeline de peticiones genrico Los mdulos extienden la funcionalidad del servidor a travs de un API pblica de mdulos

Ncleo del servidor Web


Muchos, muchos mdulos
Instala, gestiona, y actualiza slo los mdulos que uses Reduce la superficie de ataque Reduce la huella del servidor en memoria Proporciona mayor granularidad de control Permite reemplazar componentes del ncleo del servidor con nuestros propios componentes

Instalar de forma consistente el mismo conjunto de mdulos Evitar: 503 Service Unavailable [el mdulo est habilitado pero no instalado] La aplicacin no funciona cmo se esperaba [web.config referencia un mdulo que no est instalado] [un mdulo inesperado entra en conflicto con un mdulo personalizado]

Demo
Ncleo del servidor Web

Extensibilidad
HTTP Request HTTP Response

Modelo nativo
Basic

Authentication Authorization ResolveCache

API en C++ Modelo de objetos IIS

...
ExecuteHandler

Modelo manejado
Continua usando los interfaces IHttpModule y IHttpHandler Podemos conectar handlers y mdulos ASP.NET ya existentes

...
UpdateCache SendResponse

Extensibilidad
Integracin de ASP.NET en IIS 6
Implementacin basada en ISAPI Slo ve las peticiones ASP.NET Authentication
NTLM Basic Anon

Caractersticas duplicadas

CGI aspnet_isapi.dll Authentication


Forms Windows

Determine Handler

Static File ISAPI

ASPX

Send Response
Log Compress

Map Handler

Trace

Extensibilidad
Integracin de ASP.NET en IIS 7
Basic Anon

Dos modos Clsico (se ejecuta como un ISAPI) El modo integrado


aspnet_isapi.dll

Authentication Authorization ResolveCache ExecuteHandler UpdateCache SendResponse


Compress Log

Static File ISAPI

Authentication
Forms

Mdulos .NET y handlers se


conectan directamente en el Windows pipeline
Trace

Map Handler

ASPX Procesa todas las peticiones

Migrar al modo integrado


La configuracin de los mdulos y los Handler se ha movido de: system.web/httpHandlers system.webServer\handlers system.web/httpModules system.webServer\modules Buscar conflictos entre mdulos en el procesado de las peticiones Establecer la precondicin managedHandler para un mdulo significa ejecutar slo para peticiones ASP.NET

Demo
Extensibilidad

Configuracin
La metabase se mueve a ficheros .config
El fichero principal de configuracin es ahora applicationHost.config No ms ficheros metabase.bin o metabase.xml ! Permite configurar propiedades de IIS y de ASP.NET en el mismo fichero Construida para ser simple, y con extensibilidad basada en un esquema

Configuracin
Mapa de la configuracin Herencia
IIS IIS + ASP.NET + .NET Framework

ASP.NET .NET Framework applicationHost.config web.config

root web.config

machine.config root configuration web.config

Configuracin
Compatibilidad: ABO Mapper
Proporciona compatibilidad para: IIS6 ADSI Script
Scripts Herramientas en lnea de comandos Llamadas nativas a ABO

IISADMIN

Slo puede hacer lo que IIS 6 hace


No puede leer/escribir nuevas propiedades de IIS7 o acceder a los nuevos datos del runtime No puede leer/escribir las propiedades de ASP.NET o los ficheros web.config

ABOMapper

No se instala por defecto applicationHost.config


Los scripts existentes de ADSI/WMI/instalacin no funcionarn sin esto

Configuracin
Replicar el contenido y la configuracin
Bienvenido al mundo del despliegue XCOPY! Replicar la configuracin de IIS en applicationHost.config
Cuenta built-in Internet User , no ms SID s especficos de la mquina Simplemente copiar los ficheros, no se necesitan herramientas en lnea de comandos Ojo a la informacin especfica de la mquina como IP s y letras de unidad

Replicar la configuracion de IIS en los ficheros web.config


XCOPY con la aplicacin

Configuracin
Centralizar el contenido y la configuracin
La configuracin de IIS en los ficheros web.config se puede centralizar en un servidor de ficheros El sistema de ficheros de Vista/Longhorn proporciona: Client Side Caching (CSC)
Proporciona una cach de disco local

Distributed File System Replication (DFSR)


Mltiples servidores de ficheros abstraidos en un slo nombre de carpeta compartida Proporciona replicacin de contenido

Configuracin
Delegacin de configuracin
Dos tipos de bloqueos de configuracin:
overrideMode (similar a "allowOverride") Bloqueo granular, e.j. lockItem, lockElements

Por defecto
Todas las secciones de IIS bloqueadas (overrideMode= Deny ) excepto:
Documento por defecto, Navegacin de directorios, Cabecera HTTP, Redirecciones HTTP, Validacin

Todas las secciones de .NET Framework / ASP.NET estn no bloqueadas

Configuracin
El esquema de configuracin
Podemos usar el fichero con el esquema para ver todas las posibilidades que nos ofrece la cofiguracin:
%windir%\system32\inetsrv\config\schema\IIS_schema.xml

El esquema describe:
Tipos de propiedades Valores por defecto Validaciones Etc.

Nota: Los valores de configuracin son case sensitive

Determinar la poltica de bloqueo de la configuracin

Ser conservador al principio Desbloquear segn sea necesario (bloquear ms tarde puede romper las aplicaciones)

Demo
Configuracin

Administracin
Nuevo IIS7 Manager
Acceso remoto sobre HTTP, lo hace firewall friendly
(La gestin remota no se instala por defecto)

Soporta la gestin delegada de sitios y aplicaciones por parte de no administradores Proporciona un API manejada de extensibilidad para su personalizacin

Administracin
Herramientas de gestin IIS7

GUI Lnea Comandos Script Cdigo Manejado

IIS Manager appcmd WMI (root\WebAdministration) (root\WebAdministration) Microsoft.Web.Administration

Gestionar IIS y ASP.NET simultneamente Ver datos del runtime:


worker processes, appdomains, executing requests

Administracin
Scripting: Proveedor WMI de IIS6
Set oIIS = GetObject("winmgmts:root\MicrosoftIISv2") ' Crear binding para nuevo sitio Set oBinding = oIIS.Get("ServerBinding").SpawnInstance_ oBinding.IP = "" oBinding.Port = "80" oBinding.Hostname = "www.sitio.com"

NO ES CONSISTENTE Crear Sitio

' Crear un sitio y extraer el nombre del sitio como valor de retorno Set oService = oIIS.Get("IIsWebService.Name='W3SVC'") strSiteName = oService.CreateNewSite("NuevoSitio", array(oBinding), "C:\inetpub\wwwroot") Set objPath = CreateObject("WbemScripting.SWbemObjectPath") objPath.Path = strSiteName strSitePath = objPath.Keys.Item("") Set oSite = oIIS.Get("IIsWebServer.Name='" & strSitePath & "'") oSite.Start ' Crear el vdir para nuestra aplicacion Set oVDirSetting = oIIS.Get("IIsWebVirtualDirSetting").SpawnInstance_ oVDirSetting.Name = strSitePath & "/ROOT/bar" oVDirSetting.Path = "C:\inetpub\bar" oVDirSetting.Put_ ' Hacer que el VDir sea una aplicacion Set oVDir = oIIS.Get("IIsWebVirtualDir.Name='" & strSitePath & "/ROOT/bar'") oVDir.AppCreate2 1

Crear Directorio Virtual

Crear Aplicacin

Administracin
Scripting: nuevo proveedor WMI
CONSISTENTE
Set oService = GetObject("winmgmts:root\WebAdministration") ' Crear binding para sitio Set oBinding = oService.Get("BindingElement").SpawnInstance_ oBinding.BindingInformation = "*:80:www.sitio.com" oBinding.Protocol = "http" Mtodos estticos ' Crear sitio oService.Get("Site").Create _ "NuevoSitio", array(oBinding), "C:\inetpub\wwwroot" ' Crear aplicacin oService.Get("Application").Create _ "/foo", "NuevoSitio", "C:\inetpub\wwwroot\acme"

Create

Administracin
Appcmd
C:\ C:\> SITE SITE SITE

Listar y Filtrar

appcmd list sites "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started) "Site1" (id:2,bindings:http/*:81:,state:Started) "Site2" (id:3,bindings:http/*:82:,state:Stopped)

C:\ C:\> appcmd list requests REQUEST "fb0000008000000e" (url:GET /wait.aspx?time=10000,time:4276 msec,client:localhost) wait.aspx?time=10000,time:4276 msec,client:localhost) C:\ C:\> appcmd list requests /apppool.name:DefaultAppPool /apppool.name:DefaultAppPool C:\ C:\> appcmd list requests /wp.name:3567 C:\ C:\> appcmd list requests /site.id:1

Podemos Podemos filtrar los resultados por Application Pool, Worker Process o Sitio

Administracin
Appcmd Viewing Config Schema
C:\ C:\> appcmd list config /section:? | findstr system.webServer system.webServer/ system.webServer/globalModules system.webServer/ system.webServer/serverSideInclude Secciones de IIS tambin system.webServer/ system.webServer/httpTracing podemos probar ... system.web y C:\ C:\> appcmd list config /section:directoryBrowse <system.webServer> system.webServer> <directoryBrowse enabled="true" /> </system.webServer> </system.webServer>

system.applicationHost system.applicationHost

C:\ C:\> appcmd list config /section:directoryBrowse /config:* config:* <system.webServer> system.webServer> <directoryBrowse enabled="true" showFlags="Extension, Size, Time, Date" /> showFlags="Extension, </system.webServer> </system.webServer> C:\> appcmd list config /section:directoryBrowse /text:* C:\ CONFIG CONFIG.SECTION: system.webServer/directoryBrowse system.webServer/ path: MACHINE/WEBROOT/APPHOST overrideMode: overrideMode: Inherit [system.webServer/directoryBrowse] system.webServer/directoryBrowse] enabled:"true" showFlags:"Extension, showFlags:"Extension, Size, Time, Date"

Muestra aquellos atributos que no estn establecidos explicitamente

Administracin
Microsoft.Web.Administration
Primer API manejada para administrar IIS Mismos objetos y funcionalidad que WMI, o appcmd Por qu no System.Configuration? System.Configuration:
Configuracin de ASP.NET y .NET Framework fuertemente tipada

Microsoft.Web.Administration:
Configuracin de IIS, ASP.NET, y .NET Framework debilmente tipada Objetos de IIS fuertemente tipados como Sites y ApplicationPools

Administracin
Microsoft.Web.Administration
ServerManager iisManager = new ServerManager(); foreach(WorkerProcess w3wp in iisManager.WorkerProcesses) { Console.WriteLine("W3WP ({0})", w3wp.ProcessId); foreach(Request request in w3wp.GetRequests(0)) { Console.WriteLine("{0} - {1},{2},{3}", request.Url, request.ClientIPAddr, request.TimeElapsed, request.TimeInState); } }

Educar a los usuarios finales, que publicarn sus aplicaciones y usarn IIS Manager para configurarlas Un escenario: El usuario publica su aplicacin El usuario cambia el web.config de la aplicacin usando IIS Manager El usuario copia la versin actualizada del web.config a su versin local de la aplicacin Varios das ms tarde, publica de nuevo la aplicacin ** Las modificaciones realizadas al web.config desde IIS Manager se sobreescriben! **

Demo
Administracin

Despliegue
Opciones de instalacin
Server Manager
Montones de componentes Servidor esttico por defecto [Vista] Usar caractersticas de Windows

Gestor de paquetes
Reemplaza a sysocmgr

Desatentida
El formato de fichero es totalmente diferente [Vista] Podemos escoger componentes, pero no establecer su configuracin

Despliegue
Instalar, migrar o actualizar
Log de instalacin: \Windows\IIS7.log Desinstalar Para los servicios para evitar tener que reiniciar Borrar los ficheros de configuracin, hacer un backup de ellos antes de desinstalar Migracin: no hay nada en Vista, en LH Server TBD Actualizar Se instalan todos los componentes web y/o FTP, desinstalar despus los componentes no necesarios Los Application Pools estarn en modo ISAPI, no configurados para ejecutar cdigo manejado => todas las peticiones ASP.NET fallarn

Despliegue
ASP.NET: Migracin
Application Pools
Modo integrado con ASP.NET por defecto Configurar para cargar una versin especfica del .NET Framework

Modo integrado
Entorno de servidor diferente para mismas notificaciones del pipeline

e.j. la peticin no es autenticada para BeginRequest


Configuracin de Handlers y mdulos integrada en IIS

system.webServer/handlers, system.webServer/modules

Despliegue
ASP.NET: Migracin
Advertencias de validacin sobre httpHandlers, httpModules, o la configuracin de identidad Eliminar la precondicin managedHandler en un mdulo ASP.NET que se va a ejecutar para todo tipo de contenido

Modo ISAPI
No podemos configurar los HTTP handlers ni los mdulos desde el UI

Despliegue
Replicacin de applicationHost.config
Provocar que todos los application pools se reciclen:
Cambios a los valores por defecto para todos los application pools Cambios a la lista <globalModules>

Provocar que un application pool se recicle:


Cambios en la configuracin para ese application pool

Debemos usar solo encriptacin RSA a nivel de mquina (por defecto), replicar la clave RSA de la mquina
http://msdn2.microsoft.com/enus/library/yxw286t2(VS.80).aspx

Despliegue
Replicacin de applicationHost.config
Cosas a tener en cuenta:
Datos especficos de la mquina, como direcciones IP o letras de unidad Los servidores deben de tener el mismo conjunto de mdulos instalado (referencias a mdulos no existentes en <globalModules> causarn errores 503)

Demo
Despliegue

Seguridad
Reduce la superficie de ataque Menos componentes instalados reduce la superficie de ataque disponible para un atacante Menos componentes instalados significa menos cosas que gestionar, actualizar y mantener Menos componentes en memoria significa mejor rendimiento, escalabilidad y fiabilidad

Seguridad
Gestin ms sencilla de la seguridad
Soporte para la delegacin de la administracin Gestin unificada de la autenticacin y la autorizacin Dos nuevas cuentas built-in.
La cuenta de usuario IUSR reemplaza a la cuenta IUSR_MachineName y se crea slo cuando instalamos el servidor FTP El grupo IIS_IUSRS reemplaza al grupo IIS_WPG

Demo
Seguridad

Diagnstico y resolucin de problemas


Nuevas caractersticas
Errores personalizados detallados, como con ASP.NET Failed Request Tracing Se acabaron las trazas a ETW y esperar por una respuesta Nuevos datos en tiempo de ejecucin: worker processes appdomains peticiones en ejecucin

Diagnstico y resolucin de problemas


Failed Request Tracing
No tenemos un mtodo claro de reproducir aquellas peticiones que fallan Podemos definir las condiciones de fallo por URL
Tiempo que ha llevado ejecutar la peticin Cdigos de estado/subestado Nivel de error

Persistimos en un log las trazas Me dir lo que est mal?


A veces por ejemplo, problemas con ACLs

Buscar indicios

Se puede usar para todas las peticiones para ver qu est sucediendo

Demo
Diagnstico y resolucin de problemas

Resumen
Despliegue ~ 40 mdulos, instalar solo los necesarios Migrar al modo integrado con ASP.NET Centralizacin/replicacin ms fcil Administracin Administrar IIS y ASP.NET desde las mismas
herramientas

Usar la compatibilidad hacia atrs con el ABO Mapper (no instalado por defecto) Determinar la poltica de bloqueo de la configuracin

Resolucin de problemas

Usar: Errores detallados, Failed Request Tracing, Currently Executing requests

Geeks.ms http://geeks.ms/blogs/iis Plain Concepts http://www.plainconcepts.com

2006 Plain Concepts. All rights reserved.


This presentation is for informational purposes only. Plain Concepts makes no warranties, express or implied, in this summary.