La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción Internet Information Services 7.0 (IIS 7) Iván González Vilaboa Develoment Advisor Microsoft MVP – Windows Server IIS.

Presentaciones similares


Presentación del tema: "Introducción Internet Information Services 7.0 (IIS 7) Iván González Vilaboa Develoment Advisor Microsoft MVP – Windows Server IIS."— Transcripción de la presentación:

1 Introducción Internet Information Services 7.0 (IIS 7) Iván González Vilaboa Develoment Advisor Microsoft MVP – Windows Server IIS Plain Concepts

2 Agenda Introducción Núcleo del servidor Web Extensibilidad Configuración Administración Despliegue Seguridad Diagnóstico y resolución de problemas

3 Más fácil de administrar IIS7 contiene docenas de nuevas características que permiten administrarlo de forma más fácil que nunca:

4 Núcleo del servidor Web Procesado de peticiones en IIS 6 Send Response LogCompress NTLMBasic Determine Handler CGI Static File Authentication Anon Implementación monolítica Instala todo o nada… Extensión de la funcionalidad del servidor sólo a través de ISAPI… ASP.NET PHP ISAPI … …

5 Núcleo del servidor Web Procesado de peticiones en IIS 7 Send Response LogCompress NTLMBasic Determine Handler CGI Static File ISAPI Authentication Anon SendResponse Authentication Authorization ResolveCache ExecuteHandler UpdateCache … … La funcionalidad del servidor se reparte en ~ 40 modulos... Los módulos se conectan en un pipeline de peticiones genérico Los módulos extienden la funcionalidad del servidor a través de un API pública de módulos … …

6 Núcleo del servidor Web Muchos, muchos módulos Instala, gestiona, y actualiza sólo los módulos que uses… Reduce la superficie de ataque Reduce la huella del servidor en memoria Proporciona mayor granularidad de control Permite reemplazar componentes del núcleo del servidor con nuestros propios componentes

7 Instalar de forma consistente el mismo conjunto de módulos… Evitar: –503 Service Unavailable [el módulo está habilitado pero no instalado] –La aplicación no funciona cómo se esperaba [web.config referencia un módulo que no está instalado] [un módulo inesperado entra en conflicto con un módulo personalizado]

8 Demo Núcleo del servidor Web

9 Extensibilidad Modelo nativo –API en C++ –Modelo de objetos IIS Modelo manejado –Continua usando los interfaces IHttpModule y IHttpHandler –Podemos conectar handlers y módulos ASP.NET ya existentes Authentication... ExecuteHandler... SendResponse HTTP Request HTTP Response Authorization UpdateCache ResolveCache Basic

10 Extensibilidad Integración de ASP.NET en IIS 6 Implementación basada en ISAPI Sólo ve las peticiones ASP.NET Características duplicadas Send Response LogCompress NTLMBasic Determine Handler CGI Static File ISAPI Authentication Anon … … Authentication Forms Windows Map Handler ASPX Trace … … … aspnet_isapi.dll

11 Extensibilidad Integración de ASP.NET en IIS 7 Dos modos –Clásico (se ejecuta como un ISAPI) –El modo integrado Módulos. NET y handlers se conectan directamente en el pipeline Procesa todas las peticiones Log Compress Basic Static File ISAPI Anon SendResponse Authentication Authorization ResolveCache ExecuteHandler UpdateCache … … Authentication Forms Windows Map Handler ASPX Trace … … … aspnet_isapi.dll

12 Migrar al modo integrado La configuración de los módulos y los Handler se ha movido de: –system.web/httpHandlers system.webServer\handlers –system.web/httpModules system.webServer\modules Buscar conflictos entre módulos en el procesado de las peticiones Establecer la precondición managedHandler para un módulo significa ejecutar sólo para peticiones ASP.NET

13 Demo Extensibilidad

14 Configuración La metabase se mueve a ficheros.config El fichero principal de configuración es ahora applicationHost.config No más 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

15 Configuración Mapa de la configuración root configuration machine.config root web.config applicationHost.config web.config.NETFramework ASP.NET IIS IIS + ASP.NET +.NET Framework web.config Herencia…

16 Configuración Compatibilidad: ABO Mapper Proporciona compatibilidad para: –Scripts –Herramientas en línea de comandos –Llamadas nativas a ABO Sólo 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 No se instala por defecto –Los scripts existentes de ADSI/WMI/instalación no funcionarán sin esto applicationHost.config IISADMIN ABOMapperIIS6 ADSI Script

17 Configuración Replicar el contenido y la configuración Bienvenido al mundo del despliegue XCOPY! Replicar la configuración de IIS en applicationHost.config… –Cuenta built-in Internet User, no más SIDs específicos de la máquina –Simplemente copiar los ficheros, no se necesitan herramientas en línea de comandos –Ojo a la información específica de la máquina como IPs y letras de unidad Replicar la configuracion de IIS en los ficheros web.config… –XCOPY con la aplicación

18 Configuración Centralizar el contenido y la configuración La configuración 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) Múltiples servidores de ficheros abstraidos en un sólo nombre de carpeta compartida Proporciona replicación de contenido

19 Configuración Delegación de configuración Dos tipos de bloqueos de configuración: –overrideMode (similar a "allowOverride") –Bloqueo granular, e.j. lockItem, lockElements Por defecto… –Todas las secciones de IIS bloqueadas (overrideMode=Deny) excepto: Documento por defecto, Navegación de directorios, Cabecera HTTP, Redirecciones HTTP, Validación –Todas las secciones de.NET Framework / ASP.NET están no bloqueadas

20 Configuración El esquema de configuración Podemos usar el fichero con el esquema para ver todas las posibilidades que nos ofrece la cofiguración: %windir%\system32\inetsrv\config\schema\IIS_schema.xml El esquema describe: –Tipos de propiedades –Valores por defecto –Validaciones –Etc. Nota: Los valores de configuración son case sensitive

21 Determinar la política de bloqueo de la configuración … –Ser conservador al principio –Desbloquear según sea necesario (bloquear más tarde puede romper las aplicaciones)

22 Demo Configuración

23 Administración Nuevo IIS7 Manager Acceso remoto sobre HTTP, lo hace firewall friendly (La gestión remota no se instala por defecto) Soporta la gestión delegada de sitios y aplicaciones por parte de no administradores Proporciona un API manejada de extensibilidad para su personalización

24 Administración Herramientas de gestión IIS7 Gestionar IIS y ASP.NET simultáneamente Ver datos del runtime: –worker processes, appdomains, executing requests GUI Línea Comandos Script Código Manejado IIS Manager appcmd WMI (root\WebAdministration) Microsoft.Web.Administration

25 Administración 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 Sitio Crear Directorio Virtual Crear Aplicación NO ES CONSISTENTE

26 Administración Scripting: nuevo proveedor WMI 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" ' Crear sitio oService.Get("Site").Create _ "NuevoSitio", array(oBinding), "C:\inetpub\wwwroot" ' Crear aplicación oService.Get("Application").Create _ "/foo", "NuevoSitio", "C:\inetpub\wwwroot\acme" Métodos estáticos Create CONSISTENTE

27 Administración Appcmd – Listar y Filtrar C:\> appcmd list sites SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started) SITE "Site1" (id:2,bindings:http/*:81:,state:Started) SITE "Site2" (id:3,bindings:http/*:82:,state:Stopped) C:\> appcmd list requests REQUEST "fb e" (url:GET /wait.aspx?time=10000,time:4276 msec,client:localhost) C:\> appcmd list requests /apppool.name:DefaultAppPool C:\> appcmd list requests /wp.name:3567 C:\> appcmd list requests /site.id:1 C:\> C:\> Podemos filtrar los resultados por Application Pool, Worker Process o Sitio C:\>

28 Administración Appcmd – Viewing Config Schema C:\> appcmd list config /section:? | findstr system.webServer system.webServer/globalModules system.webServer/serverSideInclude system.webServer/httpTracing... C:\> appcmd list config /section:directoryBrowse C:\> appcmd list config /section:directoryBrowse /config:* C:\> appcmd list config /section:directoryBrowse /text:* CONFIG CONFIG.SECTION: system.webServer/directoryBrowse path: MACHINE/WEBROOT/APPHOST overrideMode: Inherit [system.webServer/directoryBrowse] enabled:"true" showFlags:"Extension, Size, Time, Date" C:\> C:\> Secciones de IIS – también podemos probar system.web y system.applicationHost C:\> C:\> Muestra aquellos atributos que no están establecidos explicitamente

29 Administración Microsoft.Web.Administration Primer API manejada para administrar IIS –Mismos objetos y funcionalidad que WMI, o appcmd ¿Por qué no System.Configuration? –System.Configuration: Configuración de ASP.NET y.NET Framework fuertemente tipada –Microsoft.Web.Administration: Configuración de IIS, ASP.NET, y.NET Framework debilmente tipada Objetos de IIS fuertemente tipados como Sites y ApplicationPools

30 Administración 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); } }

31 Educar a los usuarios finales, que publicarán sus aplicaciones y usarán IIS Manager para configurarlas… Un escenario: –El usuario publica su aplicación –El usuario cambia el web.config de la aplicación usando IIS Manager –El usuario copia la versión actualizada del web.config a su versión local de la aplicación –Varios días más tarde, publica de nuevo la aplicación ** Las modificaciones realizadas al web.config desde IIS Manager se sobreescriben! **

32 Demo Administración

33 Despliegue Opciones de instalación Server Manager –Montones de componentes –Servidor estático por defecto –[Vista] Usar características de Windows Gestor de paquetes –Reemplaza a sysocmgr Desatentida –El formato de fichero es totalmente diferente –[Vista] Podemos escoger componentes, pero no establecer su configuración

34 Despliegue Instalar, migrar o actualizar Log de instalación: \Windows\IIS7.log Desinstalar –Para los servicios para evitar tener que reiniciar –Borrar los ficheros de configuración, hacer un backup de ellos antes de desinstalar Migración: no hay nada en Vista, en LH Server TBD… Actualizar –Se instalan todos los componentes web y/o FTP, desinstalar después los componentes no necesarios… –Los Application Pools estarán en modo ISAPI, no configurados para ejecutar código manejado => todas las peticiones ASP.NET fallarán

35 Despliegue ASP.NET: Migración Application Pools –Modo integrado con ASP.NET por defecto –Configurar para cargar una versión específica del.NET Framework Modo integrado –Entorno de servidor diferente para mismas notificaciones del pipeline e.j. la petición no es autenticada para BeginRequest –Configuración de Handlers y módulos integrada en IIS system.webServer/handlers, system.webServer/modules

36 Despliegue ASP.NET: Migración –Advertencias de validación sobre httpHandlers, httpModules, o la configuración de identidad –Eliminar la precondición managedHandler en un módulo ASP.NET que se va a ejecutar para todo tipo de contenido Modo ISAPI –No podemos configurar los HTTP handlers ni los módulos desde el UI

37 Despliegue Replicación 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 Provocará que un application pool se recicle: –Cambios en la configuración para ese application pool Debemos usar solo encriptación RSA a nivel de máquina (por defecto), replicar la clave RSA de la máquina –http://msdn2.microsoft.com/en- us/library/yxw286t2(VS.80).aspxhttp://msdn2.microsoft.com/en- us/library/yxw286t2(VS.80).aspx

38 Despliegue Replicación de applicationHost.config Cosas a tener en cuenta: –Datos específicos de la máquina, como direcciones IP o letras de unidad –Los servidores deben de tener el mismo conjunto de módulos instalado (referencias a módulos no existentes en causarán errores 503)

39 Demo Despliegue

40 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

41 Seguridad Gestión más sencilla de la seguridad –Soporte para la delegación de la administración –Gestión unificada de la autenticación y la autorización –Dos nuevas cuentas built-in. La cuenta de usuario IUSR reemplaza a la cuenta IUSR_MachineName y se crea sólo cuando instalamos el servidor FTP El grupo IIS_IUSRS reemplaza al grupo IIS_WPG

42 Demo Seguridad

43 Diagnóstico y resolución de problemas Nuevas características 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 ejecución: –worker processes –appdomains –peticiones en ejecución

44 Diagnóstico y resolución de problemas Failed Request Tracing No tenemos un método claro de reproducir aquellas peticiones que fallan Podemos definir las condiciones de fallo por URL –Tiempo que ha llevado ejecutar la petición –Códigos 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

45 Demo Diagnóstico y resolución de problemas

46 Resumen Despliegue… ~ 40 módulos, instalar solo los necesarios Migrar al modo integrado con ASP.NET Centralización/replicación más fácil Administración… Administrar IIS y ASP.NET desde las mismas herramientas Usar la compatibilidad hacia atrás con el ABO Mapper (no instalado por defecto) Determinar la política de bloqueo de la configuración Resolución de problemas… Usar: Errores detallados, Failed Request Tracing, Currently Executing requests

47 Geeks.ms –http://geeks.ms/blogs/iishttp://geeks.ms/blogs/iis Plain Concepts –http://www.plainconcepts.comhttp://www.plainconcepts.com

48 © 2006 Plain Concepts. All rights reserved. This presentation is for informational purposes only. Plain Concepts makes no warranties, express or implied, in this summary.


Descargar ppt "Introducción Internet Information Services 7.0 (IIS 7) Iván González Vilaboa Develoment Advisor Microsoft MVP – Windows Server IIS."

Presentaciones similares


Anuncios Google