El análisis en profundidad de IIS 6.0 (2)

  

W3SVC puede ser el componente menos notable del sistema IIS 6.0, pero esto no significa que no sea importante. La tarea de W3SVC es crear y monitorear el hilo de trabajo de acuerdo con la configuración de los datos de configuración, y la aplicación del sitio web es ejecutada por el hilo de trabajo. En IIS 5.0, lo más parecido al componente W3SVC de IIS 6.0 es el servicio de administración de IIS. El servicio de administración de IIS es parte de Inetinfo; por lo tanto, si hay un problema con Inetinfo, el servicio de administración de IIS también tendrá problemas y ya no se podrá utilizar el servicio de administración de IIS. Reinicie Inetinfo u otras aplicaciones fallidas. En IIS 6.0, W3SVC se ejecuta como un proceso independiente y es poco probable que las fallas de las aplicaciones web afecten a W3SVC porque no hay un código de terceros que se ejecute dentro de W3SVC. W3SVC siempre se está ejecutando, por lo que puede supervisar el estado de las aplicaciones web y tomar medidas cuando sea necesario. Debido a esta estrategia, el servidor puede supervisar y reiniciar aplicaciones según los parámetros especificados por el usuario.

■ http.sys

El cambio más significativo en el diseño del sistema IIS 6.0 es la adición del controlador http.sys. La tarea del controlador http.sys es manejar las solicitudes HTTP, y está en el kernel. Realice la operación en modo. No subestime este cambio. Cambiar la tarea de manejar solicitudes HTTP del modo de usuario de IIS 5.0 e IIS 4.0 al modo de núcleo de IIS 6.0 marca el nacimiento de una nueva generación de servidores IIS.

En Win 2K y NT 4.0, IIS se ejecuta en modo de usuario. Las aplicaciones que se ejecutan en modo de usuario no se comunican directamente con el hardware, sino que llaman directamente a procedimientos estándar que pasan datos a componentes de modo kernel (como controladores NIC, subsistemas gráficos) o al modo de kernel de llamada. Una función del componente para llevar a cabo tareas como guardar archivos, configurar direcciones IP y enviar archivos HTML a la red.

La conversión entre el modo de usuario y el modo de kernel es una operación muy costosa. El servidor pasa primero la solicitud HTTP entrante de la pila TCP /IP del modo de kernel al modo de usuario Winsock, que será Winsock. La solicitud se pasa a IIS. El cambio del modo de kernel al modo de usuario ocurre muy rápidamente, pero inevitablemente trae un retraso inmediato al proceso. Cuando la carga es grande, este retraso se acumula, y como esta conversión es indispensable, no hay forma de que el administrador optimice el proceso.

El controlador de modo de kernel https.sys para IIS 6.0 reduce en gran medida el número de conmutaciones entre el modo de usuario y el modo de kernel. Http.sys escucha las solicitudes HTTP, determina qué proceso de modo de usuario maneja la solicitud o si el controlador mismo devuelve el contenido solicitado por el usuario.

IIS 6.0 se ejecuta en modo de usuario y se basa completamente en http.sys en modo kernel como motor de servidor que recibe las solicitudes de los usuarios. Por lo tanto, http.sys debe poder responder en todo momento y debe ser extremadamente confiable. El código de usuario puede causar errores de proceso, por lo que Microsoft diseñó http.sys para que no ejecute ningún código de usuario, de modo que incluso si la aplicación falla, no afectará a IIS 6.0, e IIS 6.0 puede seguir escuchando las solicitudes HTTP de la manera habitual.

Si desea devolver una respuesta estática desde un búfer de modo kernel, lo ideal es un procesador HTTP de modo kernel de alta velocidad que no permita ejecutar el código de la aplicación, lo que reduce el cambio al modo de usuario. Gastos generales costosos para devolver rápidamente las respuestas de los buffers en modo kernel. Http.sys de IIS 6.0 administra dicho búfer y utiliza un algoritmo de búfer heurístico altamente optimizado para determinar qué colocar en el búfer. Por ejemplo, http.sys solo puede almacenar en búfer las solicitudes que ocurren más de una vez. Contenido

Dado que http.sys extrae el contenido estático directamente del búfer de respuesta, no hay necesidad de cambiar al modo de usuario, por lo que el rendimiento general de IIS 6.0 ha mejorado significativamente en comparación con el rendimiento de IIS 5.0. Según los datos de Microsoft, la prueba de referencia de WebBench muestra que IIS 6.0 devuelve contenido estático 150% más rápido que IIS 5.0. Incluso la ejecución de servidores IIS 6.0 en el modo de aislamiento de IIS 5.0 (cuando la arquitectura de IIS 6.0 es similar a IIS 5.0) también puede beneficiarse del búfer de respuesta del controlador http.sys y otras mejoras.

Además, Microsoft ha adoptado muchos algoritmos optimizados en el controlador http.sys para permitirle reenviar solicitudes directamente al proceso de trabajo apropiado. En IIS 4.0 e IIS 5.0, se deben seguir varios pasos para determinar qué instancia del proceso tiene una aplicación web que debería recibir la solicitud actual, pero en IIS 6.0, http.sys registró todas las aplicaciones de IIS 6.0 y proporcionó cada proceso. Un identificador que IIS utiliza internamente para identificar uno o más espacios de nombres utilizados por la aplicación registrada. Por lo tanto, cuando http.sys recibe una solicitud HTTP, puede pasar rápidamente la solicitud de kernel-mode http.sys a la aplicación web de modo de usuario correcta.

El controlador http.sys también realiza otras tareas, como:

(1) Compara las URL entrantes con reglas de diferentes longitudes y formatos.

(2) Administrar la cola de solicitudes entrantes.

(3) Responsable de registrar la información de registro del sitio web de IIS (mejorando así el rendimiento del registro).

(4) Implemente políticas de limitación de ancho de banda y admita la gestión de nivel TCP /IP.

(5) Implementar el servicio de solicitud de certificado de cliente (pero no es compatible con Secure Sockets Layer - SSL).
Dado que http.sys es un controlador de sistema operativo, no un componente de IIS, la configuración del controlador se realiza en el registro en lugar de los datos de configuración de IIS. Actualmente, hay muchas configuraciones de registro de http.sys que aún no tienen una documentación formal. Esto puede significar que Microsoft no recomienda a los usuarios modificar estas configuraciones, ya que estas configuraciones pueden cambiar en el futuro. La configuración del registro para el controlador http.sys se encuentra en HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ Services \\ HTTP, donde se pueden agregar varias claves de registro (las claves de registro no están incluidas en la configuración predeterminada), como:
(1) EnableNonUTF8: If Agregue la subclave EnableNonUTF8 y establezca su valor en 0. http.sys solo acepta URL codificadas en UTF-8. El nombre completo de UTF-8 es Formato de transformación del juego de caracteres universal (UCS) 8, que es un estándar de juego de caracteres, el texto completo estándar http://www.ietf.org/rfc/rfc2279.txt, que permite el uso de juegos de caracteres en varios idiomas. . De forma predeterminada, el valor de EnableNonUTF8 es 1, lo que indica que IIS acepta las URL codificadas en el juego de caracteres de doble byte (DBCS) UTF-8, ANSI.

(2) PercentUAllowed: cuando esta subclave se establece en 1 (la predeterminada), http.sys reconoce aquellas URL cuyos caracteres parciales están representados por% uNNNN, donde NNNN es un conjunto de números que representan los caracteres reales. Cuando PercentUAllowed se establece en 0, IIS 6.0 rechazará las URL cuyos caracteres parciales se representan de esta manera.

% uNNNN es un símbolo Unicode menos común, no lo confunda con la representación habitual de UTF-8. En la representación UTF-8,% 20 representa un espacio, por ejemplo, http://www.iisanswers.com/new article.htm es equivalente a http://www.iisanswers.com/new%20article.htm, entre los dos La conversión se realiza automáticamente mediante el navegador IE, independientemente del valor establecido por EnableNonUTF8 y PercentUAllowed, IIS 6.0 aceptará.

Estas dos configuraciones, junto con otros elementos de configuración que se pueden encontrar en la documentación de IIS 6.0, reflejan las mejoras de IIS 6.0 en la resolución de URL desde un lado. En IIS 5.0, algunos problemas de seguridad importantes están estrechamente relacionados con la forma en que los servidores web analizan las URL. Ahora, Microsoft finalmente resolvió las fallas originales y realizó algunas mejoras, lo que permitió a los administradores definir con mayor claridad las URL de análisis de IIS 6.0. Las reglas Estas mejoras son especialmente importantes en Internet, que tiene un carácter inherentemente internacional y coexisten varios idiomas.

Para obtener más información sobre Unicode, consulte http://www.unicode.org; para obtener más información sobre los defectos de IIS 5.0, consulte http://www.wiretrip.net/rfp/p/Doc.asp /i5 /d57.htm. Una herramienta para ayudar a configurar http.sys se puede encontrar en el Kit de recursos de Windows Server 2003.

■ W3Core

De forma predeterminada, IIS 6.0 se ejecuta en el modo de aislamiento del proceso de trabajo, como se muestra en la Figura 5. En este modo, para cada aplicación web, IIS 6.0 lo ejecuta con una instancia separada de w3wp.exe. Los trabajadores también se hace referencia w3wp.exe
Por lo tanto, existe el modo de aislamiento del proceso dentro del proceso (en proceso) la aplicación no es un problema, la mejora efectiva de la fiabilidad y la seguridad. La mejora en la confiabilidad se debe a que la falla de una aplicación web no afecta a otras aplicaciones web, ni a http.sys. Cada aplicación web es monitoreada individualmente por W3SVC por su salud. El aumento de la seguridad se debe al hecho de que la aplicación ya no se ejecuta en la cuenta del sistema, como las aplicaciones en proceso de IIS 5.0 e IIS 4.0. De forma predeterminada, todas las instancias de w3wp.exe se ejecutan en una cuenta de servicio de red limitada. Como se muestra en la Figura 6, también puede configurar el proceso de trabajo para que se ejecute con una cuenta de usuario diferente si es necesario.
Figura VI

Si el ataque de desbordamiento de búfer es exitosa invasión de una aplicación web, un atacante puede acceder a los recursos sólo cuando la cuenta se ejecuta el proceso de trabajo tiene acceso, la cuenta de servicio de red por defecto no puede escribir En la carpeta Inetpub, los permisos de ejecución son extremadamente limitados, por lo que los ataques como el gusano CodeRed simplemente no son posibles.

Algunas aplicaciones web, especialmente algunos filtros de la API del servidor de Internet (ISAPI), pueden encontrar problemas al quedarse sin proceso. En IIS 5.0 e IIS 4.0, los filtros ISAPI siempre se ejecutan dentro de Inetinfo y sus objetivos de diseño no se están quedando sin proceso. Por esta razón, algunos filtros están en el modo de aislamiento de procesos de trabajo de IIS 6.0. Los problemas pueden ocurrir en tiempo de ejecución, en particular, los filtros que llaman a SF_READ_RAW_DATA o SF_SEND_RAW_DATA son especialmente notables. Para este fin, IIS 6.0 también proporciona un segundo modo de operación llamado modo de aislamiento IIS 5.0. Si el filtro ISAPI no funciona correctamente en el modo de aislamiento de procesos de trabajo, no debería haber ningún problema en el modo de aislamiento de IIS 5.0. En este segundo modo de operación, la aplicación aún se beneficia de muchas mejoras en IIS 6.0, como las mejoras de rendimiento y confiabilidad del controlador http.sys.

En la documentación de IIS 6.0, puede ver una nueva característica llamada "grupo de aplicaciones". Un grupo de aplicaciones contiene uno o un conjunto de procesos de trabajo y el grupo de aplicaciones se denomina. El grupo de aplicaciones se puede entender desde la siguiente perspectiva: en IIS 5.0, podemos configurar la protección de la aplicación a bajo nivel (proceso IIS), intermedio (grupo de búferes), avanzado (aislamiento). Esta función es útil, pero si queremos Ejecutar dos aplicaciones en un grupo (una instancia de dllhost.exe) y ejecutar otras dos aplicaciones en otro grupo (¿una instancia de dllhost.exe?), ¿Qué debo hacer? IIS 5.0 no proporciona una forma de nombrar una instancia de dllhost.exe, por lo que no es posible colocar dos aplicaciones específicas en un grupo. El grupo de aplicaciones para IIS 6.0 le permite especificar un nombre, como se muestra en la Figura 7. Puede colocar fácilmente un sitio web o directorio en un grupo de aplicaciones a través de la página Directorio principal del cuadro de diálogo Propiedades.

Copyright © Conocimiento de Windows All Rights Reserved