Post on 06-Jul-2015
Introduccin Internet Information Services 7.0 (IIS 7)Ivn Gonzlez Vilaboaivan@plainconcepts.com Develoment Advisor Microsoft MVP Windows Server IIS Plain Concepts
AgendaIntroduccin Ncleo del servidor Web Extensibilidad Configuracin Administracin Despliegue Seguridad Diagnstico y resolucin de problemas
Ms fcil de administrarIIS7 contiene docenas de nuevas caractersticas que permiten administrarlo de forma ms fcil que nunca:
Ncleo del servidor WebProcesado de peticiones en IIS 6
AuthenticationNTLM Basic Anon
Implementacin monoltica nada Instala todo o nada
CGI
Determine Handler
Static File ISAPI
ASP.NET PHP
Send ResponseLog Compress
Extensin de la funcionalidad del ISAPI servidor slo a travs de ISAPI
Ncleo del servidor WebProcesado de peticiones en IIS 7
Authentication Authorization ResolveCache CGI Determine Static File Handler ExecuteHandler UpdateCache Send Response SendResponse Log CompressISAPI 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 WebMuchos, muchos mdulosInstala, 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]
DemoNcleo del servidor Web
ExtensibilidadHTTP Request HTTP Response
Modelo nativoBasic
Authentication Authorization ResolveCache
API en C++ Modelo de objetos IIS
...ExecuteHandler
Modelo manejadoContinua usando los interfaces IHttpModule y IHttpHandler Podemos conectar handlers y mdulos ASP.NET ya existentes
...UpdateCache SendResponse
ExtensibilidadIntegracin de ASP.NET en IIS 6Implementacin basada en ISAPI Slo ve las peticiones ASP.NET AuthenticationNTLM Basic Anon
Caractersticas duplicadas
CGI aspnet_isapi.dll AuthenticationForms Windows
Determine Handler
Static File ISAPI
ASPX
Send ResponseLog Compress
Map Handler
Trace
ExtensibilidadIntegracin de ASP.NET en IIS 7Basic Anon
Dos modos Clsico (se ejecuta como un ISAPI) El modo integradoaspnet_isapi.dll
Authentication Authorization ResolveCache ExecuteHandler UpdateCache SendResponseCompress Log
Static File ISAPI
AuthenticationForms
Mdulos .NET y handlers seconectan directamente en el Windows pipeline Trace
Map Handler
ASPX Procesa todas las peticiones
Migrar al modo integradoLa 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
DemoExtensibilidad
ConfiguracinLa metabase se mueve a ficheros .configEl 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
ConfiguracinMapa de la configuracin HerenciaIIS IIS + ASP.NET + .NET Framework
ASP.NET .NET Framework applicationHost.config web.config
root web.config
machine.config root configuration web.config
ConfiguracinCompatibilidad: ABO MapperProporciona compatibilidad para: IIS6 ADSI ScriptScripts Herramientas en lnea de comandos Llamadas nativas a ABO
IISADMIN
Slo puede hacer lo que IIS 6 haceNo 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.configLos scripts existentes de ADSI/WMI/instalacin no funcionarn sin esto
ConfiguracinReplicar el contenido y la configuracinBienvenido al mundo del despliegue XCOPY! Replicar la configuracin de IIS en applicationHost.configCuenta 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.configXCOPY con la aplicacin
ConfiguracinCentralizar el contenido y la configuracinLa 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
ConfiguracinDelegacin de configuracinDos tipos de bloqueos de configuracin:overrideMode (similar a "allowOverride") Bloqueo granular, e.j. lockItem, lockElements
Por defectoTodas 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
ConfiguracinEl esquema de configuracinPodemos 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)
DemoConfiguracin
AdministracinNuevo IIS7 ManagerAcceso 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
AdministracinHerramientas 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
AdministracinScripting: Proveedor WMI de IIS6Set 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
AdministracinScripting: nuevo proveedor WMICONSISTENTESet 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
AdministracinAppcmdC:\ 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
AdministracinAppcmd Viewing Config SchemaC:\ 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.applicationHost system.applicationHost
C:\ C:\> appcmd list config /section:directoryBrowse /config:* config:* system.webServer> showFlags="Extension, 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
AdministracinMicrosoft.Web.AdministrationPrimer 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
AdministracinMicrosoft.Web.AdministrationServerManager 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! **
DemoAdministracin
DespliegueOpciones de instalacinServer ManagerMontones de componentes Servidor esttico por defecto [Vista] Usar caractersticas de Windows
Gestor de paquetesReemplaza a sysocmgr
DesatentidaEl formato de fichero es totalmente diferente [Vista] Podemos escoger componentes, pero no establecer su configuracin
DespliegueInstalar, migrar o actualizarLog 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
DespliegueASP.NET: MigracinApplication PoolsModo integrado con ASP.NET por defecto Configurar para cargar una versin especfica del .NET Framework
Modo integradoEntorno de servidor diferente para mismas notificaciones del pipeline
e.j. la peticin no es autenticada para BeginRequestConfiguracin de Handlers y mdulos integrada en IIS
system.webServer/handlers, system.webServer/modules
DespliegueASP.NET: MigracinAdvertencias 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 ISAPINo podemos configurar los HTTP handlers ni los mdulos desde el UI
DespliegueReplicacin de applicationHost.configProvocar que todos los application pools se reciclen:Cambios a los valores por defecto para todos los application pools Cambios a la lista
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 mquinahttp://msdn2.microsoft.com/enus/library/yxw286t2(VS.80).aspx
DespliegueReplicacin de applicationHost.configCosas 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 causarn errores 503)
DemoDespliegue
SeguridadReduce 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
SeguridadGestin ms sencilla de la seguridadSoporte 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
DemoSeguridad
Diagnstico y resolucin de problemasNuevas caractersticasErrores 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 problemasFailed Request TracingNo tenemos un mtodo claro de reproducir aquellas peticiones que fallan Podemos definir las condiciones de fallo por URLTiempo 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
DemoDiagnstico y resolucin de problemas
ResumenDespliegue ~ 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 mismasherramientas
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.