Introducción IIS 7

download Introducción IIS 7

of 48

Transcript of Introducción IIS 7

Introduccin Internet Information Services 7.0 (IIS 7)Ivn Gonzlez [email protected] 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.