Professional Documents
Culture Documents
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:
Authentication
NTLM Basic Anon
CGI
Determine Handler
ASP.NET PHP
Send Response
Log Compress
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
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
...
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
Determine Handler
ASPX
Send Response
Log Compress
Map Handler
Trace
Extensibilidad
Integracin de ASP.NET en IIS 7
Basic Anon
Authentication
Forms
Map Handler
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
root web.config
Configuracin
Compatibilidad: ABO Mapper
Proporciona compatibilidad para: IIS6 ADSI Script
Scripts Herramientas en lnea de comandos Llamadas nativas a ABO
IISADMIN
ABOMapper
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
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
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
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.
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
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"
' 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 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"
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
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>
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
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