1 Page 1 of 47 1. Instalación del servicio con Windows 2008 Server Ahora realizaremos la instalación del servidor Web. Nos iremos a la consola de administración del servidor para añadir esta función: Pulsamos en "Siguiente" y después de una pantalla de información, tendremos los componentes de IIS, veamos: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 2 of 47 Veamos que componentes necesitaremos instalar para una configuración estándar... Características HTTP comunes. Son las funciones básicas de IIS, las necesarias para servir páginas Desarrollo de aplicaciones. Si queremos que tenga soporte para ASP.NET. Para páginas sin programación no es necesario pero para desarrollar páginas y que ejecute el código ASP.NET es imprescindible así que la marcaremos. Estado y diagnóstico. Se encarga de registrar lo que sucede en el servidor. Por defecto ya marca el "registro HTTP" que registrará todos los accesos al servidor. El registro personalizado nos permitirá almacenar determinados campos de los accesos para tener un control de las páginas vistas con los campos definidos. La opción registro ODBC es para almacenar esta información en una base de datos que se comunica a través de ODBC. No es recomendable porque genera mucho tráfico si el sitio web tiene muchos accesos. Seguridad. Se encarga de definir el tipo de acceso al servidor y otra información importante para controlar el acceso, marcaremos todos. Rendimiento. Se encargar de administrar la caché para la mejora del rendimiento. Es necesario si vamos a crear sitios web con muchos accesos y con páginas dinámicas ASP.NET Herramientas de administración. Proporciona la interfaz y elementos para administrar nuestro IIS7, las marcaremos. Servicio de publicación de FTP. Lo instalamos porque lo vamos a probar en nuestro servidor. Marcaremos toda la sección de "Desarrollo de aplicaciones". Una vez seleccionadas estas opciones nos mostrará, como siempre, un resumen de lo que va a instalar, pulsaremos para terminar y veremos una barra de progreso con la instalación. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 3 of 47 1.1. Comentarios: Técnicamente las páginas web utilizan el protocolo HTTP de TCP/IP que corresponde al puerto 80. Por lo tanto el navegador intenta conectarse a la dirección del servidor mediante el puerto 80. Nuestro servidor IIS no tiene ninguna desventaja del famoso Apache de Linux. De hecho si quitamos la gratuidad al servidor Apache no le queda absolutamente nada que no pueda hacer IIS, incluso al contrario: la orientación a componentes de IIS es mucho mas completa y mejor implementada que la del Apache. IIS soporta la misma carga de clientes, es fácil de instalar y configurar y su mantenimiento es trivial cosa que no se puede decir de su competidor. Uno de los temas en los que Microsoft todavía tienen que avanzar es en la seguridad, el abarcar tantos conceptos, tecnologías y componentes hace que IIS sean mas susceptible de tener agujeros de seguridad que su competidor, mas simple y limitado. En cualquier caso en las Intranets, IIS de Microsoft gana por goleada. A lo largo de este curso iremos viendo porqué y que elementos podremos integrar en nuestra Intranet. Aun así y comprendiendo la importancia del mundo Web hay una versión de Windows 2003 y 2008 Server llamada "Web Edition" que permite de una forma muy económica montar un sitio Web con toda la potencia de su entorno e integrado perfectamente en nuestra red. Le han limitado algunos servicios pero dispone de todo lo necesario para desempeñar su función perfectamente. Todo a un previo muy asequible que queda perfectamente amortizado por la cantidad de horas necesarias para configurar un servidor Linux. Como complemento a nuestra Intranet debemos utilizar bases de datos para almacenar información. Quizás el uso de las bases de datos en las Intranets sea la parte mas importante porque la función de una Intranet que es proporcionar información debe estar de alguna forma almacenada y ordenada en bases de datos. En capítulos posteriores hablaremos en profundidad de las bases de datos pero como en esta introducción estamos explicando lo que necesitamos para construir nuestra Intranet, no podíamos dejar de comentar esta parte. IIS ofrece una administración muy sencilla que se realizará mediante el Administrador de servicios de Internet. IIS permite que el desarrollo de aplicaciones Web sea mucho más robusto y la creación de sitios Web sea más configurable y completa. Ofrece un entorno escalable basado en los componentes cliente/servidor que se pueden integrar dentro de las aplicaciones Web. Internet Information Server es el servidor Web más rápido y recomendable para la plataforma Windows 2003/2008, ya que se encuentra integrado completamente con el Servicio de Directorios de Windows (directorio activo), esta combinación del servicio Web con los servicios del sistema operativo permite desarrollar aplicaciones basadas en la Web fiables y escalables. Que conste que esto no lo he sacado de la propaganda, Microsoft suele dejar los programas mal terminados file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 4 of 47 (agujeros de seguridad, fallos) pero las ideas son buenas y casi siempre aporta facilidad de uso. Será el más criticado pero también hay que reconocer que está en el 90% de todos los ordenadores del mundo. 2. Primeros pasos con IIS Si la instalación ha sido correcta podremos entrar ya en nuestro sitio web. Para comprobarlo basta con iniciar un explorador web y escribir en la barra de dirección el nombre de nuestro servidor web, en nuestro caso le hemos llamado "servidor". Con Windows 2008 Server: Pantalla que nos da la bienvenida al servidor IIS y nos facilita alguna herramienta de administración a través de páginas web. Sin embargo lo habitual y recomendable es que trabajemos desde otro equipo. En construcción El sitio al que intentó conectarse no tiene en este momento una página predeterminada. Es posible que esté en proceso de actualización. Inténtelo de nuevo más tarde. Si el problema continúa, póngase en contacto con el administrador del sitio Web. Si tenemos un Windows Server 2003 veremos un mensaje como el anterior si estamos entrando desde fuera del servidor. Si nos fijamos en el mensaje lo que al principio podíamos tomar como file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 5 of 47 un error es simplemente un mensaje que le falta una página de inicio al servidor web. La versión 4.0 de NT Server si que activaba por defecto un sitio web de ejemplo pero ese sitio era un agujero de seguridad puesto que permitía realizar algunas operaciones "peligrosas" por este motivo en el Server 2003 Microsoft no activa ningún web sino que devuelve una página diciendo que si está funcionando pero que ahora hay que alimentarlo. Por lo tanto, para empezar a configurar los sitios Web debe indicar los directorios que contienen los documentos que desea publicar. El servidor Web no puede publicar documentos que no están en los directorios especificados. Por lo tanto, el primer paso para desarrollar un sitio Web debe ser determinar cómo desea organizar los archivos. Después se utiliza el complemento IIS para identificar los directorios que forman parte del sitio. La estructura de directorios que IIS crea es la siguiente: En la unidad C se crea el directorio "Inetpub" y de ahí los servicios instalados, en la imagen están además del servicio web "wwwroot" el servicio de mensajeria "mailroot" y el de transferencia se ficheros "ftproot". Luego... inicialmente cuando solicitemos una página irá a buscarla al directorio c:\inetpub\wwwroot La administración en Windows 2008 Server ha cambiado radicalmente respecto a la de Windows 2003 Server. Ahora es mas completa y permite muchas mas opciones. Dada su grandísima diferencia me tendría que extender mucho en esta primera parte así que me voy a centrar solo en la versión de Windows 2008 Server ya que es la última y la mas similar si queremos instalar el IIS en Windows Vista o Windows 7. En Windows Vista o Windows 7 tenemos una versión reducida de Internet Information Server. Si lo instalas podrás comprobar muchas de las opciones que vamos a ver a continuación. Pero es una versión limitada y deberíamos acudir a la versión del servidor. 3. La consola Administrativa de IIS en Windows Server 2008 3.1 Página de inicio de la administración de IIS7 Vamos a ver la página de administración de IIS7. Los que conocíais las versiones anteriores veréis que han cambiado un poco de sitio pero está todo y bien ordenado. En las herramientas administrativas abrimos el administrador de IIS7: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 6 of 47 El aspecto es el mismo que en las otras funciones del servidor. En las conexiones mas recientes tenemos los servidores a los que nos hemos conectado últimamente, a continuación las tareas mas comunes para conectarse con otros servidores y luego información en línea sobre IIS7. Cada servidor Web se compone de uno o varios grupos de aplicaciones: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 7 of 47 Estos son los motores de las aplicaciones que pueden ejecutar, en el ejemplo anterior tenemos: Classic .NET AppPol. Ejecuta las aplicaciones ASP.NET DefaultAppPool. Ejecuta aplicaciones estáticas y otras páginas de código antiguas. TSWebAccess. Puede que no la tengas, a mi me aparece porque la añadí antes en la configuración de los servicios de terminal. Son un grupo de páginas que permiten conectarse a servidores de terminales mediante páginas web. Como ves queda muy organizado ya que es muy buena la idea de los grupos de aplicaciones. Por ejemplo, cuando ejecutamos aplicaciones .NET utilizaremos ese motor y usará un espacio de direcciones propio para sus operaciones. Otras aplicaciones ejecutarán entonces otros motores que no interferirán con el que está ejecutando las páginas ASP.NET. Además al ejecutarse como si fueran aplicaciones diferentes, cada una puede tener sus propios parámetros de seguridad, memoria y recursos. En definitiva, el dividir en aplicaciones todo lo que puede ejecutar el servidor hace que sea mas eficiente, escalable y seguro. Date cuenta que podemos instalar un nuevo componente que ejecute por ejemplo código PHP (Linux) y se instalará como una aplicación mas del servidor IIS7. Lejos quedan los tiempos en los que IIS ejecutaba todo tipo de aplicaciones y páginas utilizando el mismo entorno de trabajo, espacio de memoria y propiedades. Esto lo hacía mas lento y mucho mas inseguro al compartir en el mismo espacio de memoria todas las aplicaciones. Definitivamente es una buena idea separar las aplicaciones. Habrás visto que tenemos también nuestra parte para el servicio de FTP. Si lo seleccionamos veremos un mensaje a la derecha que nos indica que pulsemos para administrar el servicio FTP, si le damos obtenemos esta nueva consola administrativa: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 8 of 47 Pues si, nos muestra la consola de la versión anterior IIS 6.0 como ves en el propio título. Esto significa que es exactamente el mismo servicio con las mismas opciones que tenía Windows 2.003 Server. Por último y antes de ver todo lo que tiene este servicio fíjate que al pulsar en el servidor: Vemos los iconos para configurar cada una de las partes del servicio. Esto antes era un grupo de solapas y ahora se han separado en un grupo de iconos. Si vienes de Windows 2.003 Server, no te preocupes, son las mismas cosas ampliadas. Básicamente se divide en tres niveles: Servidor Web. Configura todos los sitios web del servidor y las propiedades de él mismo. Utilizaremos estas opciones para configurar todos los sitios web que contiene y el comportamiento general del servidor. Sitio Web. Configura únicamente el sitio web seleccionado, sin afectar a los otros sitios webs alojados en el servidor. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 9 of 47 Aplicación o directorio. Controla la funcionalidad de una aplicación o de un directorio. Lo que configuremos aquí sobrescribe a lo que se haya puesto en el nivel anterior de la configuración del web. Por ejemplo, si en una carpeta determinada del sitio web queremos dar permisos distintos o queremos que se puedan explorar los directorios desde el navegador. 3.2 Características ASP.NET ASP.NET tiene un valor muy importante en las instalaciones corporativas porque cada vez mas las aplicaciones tienden a administrar o explotarse desde web. PHP en el mundo Internet y ASP.NET en las Intranets son los mas utilizados en el mundo ahora mismo. En esta versión de IIS7 se han potenciado mucho las aplicaciones sobre esta plataforma en varios aspectos, mejorar su rendimiento y facilitar su administración. Veamos cada uno de los iconos o secciones: Compilación de .NET. Cuando un desarrollador crea una aplicación en .NET, ésta permanece en código fuente hasta que se ejecuta. Es decir, se crear una página con código asp.net pero hasta que no se solicita no se compila para ejecutarse. Las demás peticiones ya no requerirán la compilación de la página y utilizarán ya ese código. El usuario siempre verá una aplicación compilada. Si vemos sus opciones: Son parámetros para controlar la salida, como el tamaño máximo del archivo resultado. Activar la depuración, imprescindible para los desarrolladores, el control de los ensamblados que utiliza la aplicación para los recursos. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 10 of 47 Globalización de .NET. Esta opción nos ayudará a configurar los idiomas utilizados en .NET. Así sabe qué debe devolver según el idioma definido y en que formato. Si dejamos la predeterminada, será la aplicación ASP.NET quien defina estos parámetros del idioma. Parece que no, pero para que veas la importancia, afectaría al formato de las fechas, monedas y números. También en la forma de codificación de las páginas para su transmisión, utilizando el mas común, UTF. Niveles de confianza de .NET. Introduce el concepto de la confianza del código. Si permitimos una confianza total, el servidor ejecutará todo sin restricciones ni límite de acceso a los recursos. Pero es muy peligroso para su explotación, sería un nivel únicamente para una máquina de desarrollo sin salida al exterior. Veamos los niveles: Full. Utilizado solo para desarrollo. No proporciona ningún mecanismo de seguridad High. Para uso interno (intranets) con acceso a los recursos. La seguridad es mínima pero al tratarse de Intranets de la empresa, suponemos que si debe tener acceso a los recursos excepto a acciones que pueden comprometer al sistema Medium. Para redes privadas con limitación de recursos. La seguiremos utilizando en Intranets y limita el acceso a muchos recursos. Aun así alguien "malicioso" si podría ejecutar código para saltarse la seguridad. Low. Para acceso público. Proporciona buena protección a la red pero si no está correctamente configurada la aplicación se podrían acceder a recursos del servidor Minimal. Para acceso público. Cuando no se tiene confianza en nadie, la mayoría de las aplicaciones no se ejecutarán pero es la opción mas segura. Configuración de aplicaciones. Si queremos crear código personalizado que ejecute el servidor. Las entradas se escriben de la forma -> nombre:valor. El código lee el valor establecido en el nombre y realiza las tareas apropiadas basándose en el valor proporcionado. Cadenas de conexión. Proporciona información para que las aplicaciones puedan conectarse a bases de datos. Es una forma mucho mas sencilla que antes porque definiremos aquí las cadenas conexión quedando file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 11 of 47 ocultas para la aplicación y así no descubrir información. Verás que ya hay una creada que apunta al propio servidor y que no debemos borrar. Clave del equipo. La clave de equipo proporciona la encriptación necesaria para proteger las aplicaciones. Con esta opción garantizamos mas la seguridad de los datos. Páginas y controles. Proporciona un aspecto robusto y coherente a las aplicaciones basadas en ASP.NET 2.0 y superior. Los que sepáis este lenguaje os sonarán las opciones que veréis aquí y que podemos predefinir en el sitio web: ¡muy práctico! file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 12 of 47 Proveedores. Se trata de las conexiones a bases de datos para proporcionarlas a IIS7. Como ves todo gira a integrar las aplicaciones ASP.NET con IIS ya que antes apenas había conexión entre las dos partes y tenían muchos ficheros de configuración distintos. Los proveedores incluyen varias de las entradas necesarias para conectar IIS7 con los datos: usuarios .net, roles .net, perfiles .net. Estado de la sesión. Un capítulo muy importante en las aplicaciones .NET ya que trata entre otras cosas del tiempo de vigencia de las variables de las aplicaciones: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 13 of 47 HTTP no mantiene información de ninguna sesión: cuando el usuario solicita una página el servidor abre y cierra la conexión. Esto no es válido para sitios web con identificación de usuarios, así que tenemos aquí los mecanismos para mantener una serie de variables "vivas" mientras exista la conexión con el usuario. De esta forma podemos tener la misma información en varias páginas de la visita (usuario). En esta sección mantendremos las variables de tipo "session", si te animas al curso de ASP.NET 3.5 (versión de 2.008) verás y aprenderás a fondo este interesante mundillo de la programación web. De las opciones mostradas, las predeterminada "en proceso" es la más rápida ya que utiliza la memoria del sistema aunque gasta algo de recursos. Correo electrónico SMTP. El protocolo de transferencia simple de mensajes, o SMTP, es una parte de la instalación básica de IIS7. En este caso el uso de SMTP es para tareas administrativas y no para su uso como pasarela de correo. Es muy habitual que las aplicaciones manden correos con el estado de la administración de éstas o del la "salud" de las aplicaciones. IIS7 proporciona una opción para configurar la dirección de correo SMTP para utilizarla en la aplicación. La configuración identifica a la aplicación, no al recipiente, es decir, la configuración le dice a IIS7 como configurar la aplicación. La configuración es muy sencilla y podemos establecer distintas direcciones de correo en distintos niveles: aplicación, webs individuales, ... file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 14 of 47 Proporciona dos métodos para enviar correos: utilizar un servidor SMTP o almacenar los correos localmente. En los dos casos debemos proporcionar una dirección de correo que será la que figure como el origen. Luego indicaremos un servidor SMTP con su puerto, habitualmente y como viene de forma predeterminada, el 25. Si es necesario identificarse lo indicaremos en las siguientes casillas. Hay que asegurarse de poner bien los credenciales para identificarse en servidores externos. Recuerda que para el curso utilizaremos el servidor de páginas que incorpora el Visual Web Developer, por lo tanto podrías 3.3 Características de las sección IIS Hemos visto para que sirven los iconos de la parte de ejecución de aplicaciones, veamos ahora los de las características del propio servidor web IIS7: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 15 of 47 Son las mismas opciones y algunas mas que teníamos antes en la pantalla de propiedades, aunque haya cambiado de posición es lo mismo, así que si conoces IIS6 no te costará reconocer estas opciones que antes eran solapas de la página de propiedades: ASP. Ya sabemos que es el lenguaje para hacer páginas "inteligentes" con ejecución de código. Antes hemos tratado de los detalles de ASP.NET, en este caso se trata de la versión anterior de estas páginas que se llamaban simplemente ASP: Al ser mas sencillas que las ASP.NET las opciones son muy pocas y se refieren a los parámetros de depuración, búfer, juegos de caracteres. Ojo no confundas esto con lo anterior, se trata de las file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 16 of 47 páginas ASP antiguas (extensión .asp) y no de los nuevos motores .NET (extensión .aspx). Algunas de las opciones interesantes son: Habilitar búfer. Esta opción está deshabilitada por defecto en IIS 4.0. También afecta al funcionamiento de las ASP que veremos mas adelante. Habilitar rutas de acceso primarias. Permite que las páginas ASP utilicen rutas de acceso relativas para el directorio primario del directorio actual (rutas de acceso con la sintaxis "..") Lenguaje ASP predeterminado. Tenemos dos motores instalados: Vbscript y Javascript y podemos utilizar cualquiera de ellos. De forma predeterminada y el recomendado es VBScript Si conoces IIS6 verás que las opciones son iguales que las anteriores, te muestro la pantalla de IIS6 para que veas las similitudes: Autenticación. Podemos configurar IIS para autenticar o determinar la identidad de la cuenta de un usuario de Windows, antes de permitir que éste establezca una conexión de red con su servidor. Sin embargo, la autenticación de los usuarios sólo tendrá lugar cuando esté desactivado el acceso anónimo o cuando los permisos NTFS requieran que los usuarios se identifiquen con el nombre y la contraseña de una cuenta de usuario válida de Windows. Con las opciones de autenticación que ofrece IIS, podemos elegir un método de autenticación que se ajuste a los requisitos de seguridad y a las capacidades del explorador Web del usuario. Puede especificar que los usuarios proporcionen el nombre de usuario y la contraseña de una cuenta de usuario válida de Microsoft Windows para poder tener acceso a cualquier información file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 17 of 47 del servidor. Este proceso de identificación recibe el nombre de autenticación. La autenticación, como muchas de las características de IIS, se puede establecer para sitios Web, directorios o archivos. IIS proporciona los siguientes métodos de autenticación para controlar el acceso al contenido del servidor. Veamos los métodos mas importantes Autenticación anónima La autenticación anónima proporciona a los usuarios acceso a las áreas públicas del sitio Web o FTP sin preguntar el nombre de usuario o la contraseña. Cuando un usuario intenta conectarse al sitio Web o FTP público, el servidor Web le asigna la cuenta de usuario de Windows llamada IUSR_nombre_equipo, donde nombre_equipo es el nombre del servidor en el que se ejecuta IIS. De manera predeterminada, la cuenta IUSR_nombre_equipo está incluida en el grupo de usuarios Invitados de Windows. Este grupo tiene restricciones de seguridad impuestas por los permisos NTFS, que designan el nivel de acceso y el tipo de contenido que hay a disposición de los usuarios públicos. Si tiene varios sitios en el servidor o si tiene áreas de su sitio que requieren diferentes privilegios de acceso, puede crear varias cuentas anónimas, una para cada sitio Web o FTP, directorio o archivo. Al dar a estas cuentas diferentes permisos de acceso o al asignar estas cuentas a grupos de usuarios de Windows diferentes, puede otorgar a los usuarios acceso anónimo a distintas áreas de contenido público Web y FTP. 1. La cuenta IUSR_nombre_equipo se agrega al grupo Invitados del equipo IIS durante la instalación. 2. Cuando se recibe una solicitud, IIS suplanta la cuenta IUSR_nombre_equipo antes de ejecutar cualquier código o de tener acceso a cualquier archivo. IIS puede suplantar la cuenta IUSR_nombre_equipo porque conoce el nombre de usuario y la contraseña de esta cuenta. 3. Antes de devolver una página al cliente, IIS comprueba los permisos de archivos y directorios NTFS para determinar si la cuenta IUSR_nombre_equipo tiene acceso al archivo. 4. Si está permitido el acceso, se completará la autenticación y los recursos estarán disponibles para el usuario. 5. Si no está permitido el acceso, IIS intentará utilizar otro método de autenticación. Si no hay ninguno seleccionado, IIS devolverá al explorador un mensaje de error "HTTP 403 Acceso denegado". La cuenta anónima debe tener el derecho de usuario para el inicio de sesión local. Si la cuenta no tiene el permiso Inicio de sesión local, IIS no podrá atender ninguna solicitud anónima. La instalación de IIS concede específicamente el permiso Inicio de sesión local a la cuenta IUSR_nombre_equipo. De forma predeterminada, las cuentas IUSR_nombre_equipo de los controladores de dominio no se asignan a las cuentas de invitados. Para permitir inicios de sesión anónimos, debemos cambiar las cuentas IUSR__nombre_equipo a Inicio de sesión local Autenticación básica La autenticación básica es un método estándar muy extendido para recopilar información de nombre de usuario y contraseña. El proceso para autenticar se realiza de la siguiente forma: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 18 of 47 1. El explorador Web Internet Explorer muestra un cuadro de diálogo en el que el usuario debe escribir su nombre de usuario y contraseña de Windows previamente asignados, que también se conocen como credenciales. 2. El explorador Web intentará establecer la conexión con un servidor, mediante las credenciales del usuario. La contraseña de texto simple se codifica en Base64 antes de enviarla a través de la red. Importante La codificación en Base64 no es un cifrado. Si una contraseña codificada en Base64 es interceptada en la red por un husmeador de redes, la contraseña puede ser descodificada y utilizada por personas no autorizadas. 3. Si las credenciales de un usuario son rechazadas, Internet Explorer muestra una ventana de diálogo de autenticación para que el usuario vuelva a escribir sus credenciales. En Internet Explorer se permite al usuario tres intentos de conexión antes de informarle de que no se puede establecer la conexión. 4. Cuando el servidor Web compruebe que el nombre de usuario y la contraseña corresponden a una cuenta de usuario válida de Microsoft Windows, se establecerá una conexión. La autenticación básica tiene la ventaja de que forma parte de la especificación HTTP y es compatible con la mayoría de los exploradores. La desventaja de los exploradores Web que utilizan la autenticación básica es que transmiten las contraseñas sin cifrar. Mediante la supervisión de las comunicaciones en la red, alguien podría fácilmente interceptar y descodificar estas contraseñas mediante herramientas de dominio público. Por tanto, la Autenticación básica no es recomendable a menos que tenga la seguridad de que la conexión entre el usuario y el servidor Web sea segura, como una línea dedicada o una conexión Capa de sockets seguros (SSL) Autenticación de texto implícita La autenticación de texto implícita ofrece la misma funcionalidad que la autenticación básica. Sin embargo, la autenticación de texto implícita supone una mejora en la seguridad debido a la forma en que se envían las credenciales del usuario a través de la red. La autenticación de texto implícita transmite las credenciales a través de la red como un hash MD5, también conocido como mensaje implícito, en el que el nombre de usuario y la contraseña originales no pueden descifrarse del hash. La autenticación de texto implícita está disponible para los directorios del Sistema distribuido de creación y control de versiones Web (WebDAV). file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 19 of 47 Antes de habilitar la autenticación de texto implícita en el servidor IIS, asegúrese de que se cumplen los requisitos mínimos siguientes. Sólo los administradores de dominio pueden comprobar que se cumplen los requisitos del controlador de dominio (DC). Si tiene dudas, consulte al administrador del dominio si el controlador del dominio cumple con los requisitos siguientes: Todos los clientes que tienen acceso a un recurso protegido con autenticación de texto implícita van a utilizar Internet Explorer 5.0 o posterior. El usuario y el servidor IIS deben ser miembros o tener la confianza del mismo dominio. Los usuarios deben tener una cuenta válida de usuario de Windows almacenada en Active Directory en el controlador de dominio. El controlador del dominio debe ser un equipo con Windows 2000 o posterior. El servidor IIS debe ser un equipo con Windows 2000 o posterior. Autenticación de Windows La autenticación de Windows (anteriormente llamada NTLM, también denominada autenticación de desafío y respuesta de Windows NT) es un método seguro de autenticación, ya que el nombre de usuario y la contraseña se procesan con el método de hash antes de enviarlos a través de la red. Al habilitar la autenticación de Windows integrada, el explorador del usuario demuestra que conoce la contraseña mediante un intercambio criptográfico con el servidor Web, en el que interviene el método de hash. La autenticación de Windows integrada utiliza los métodos de autenticación Kerberos v5 y NTLM. Si los servicios Active Directory están instalados en un controlador de dominio con Windows 2000 o posterior y el explorador del usuario es compatible con el protocolo de autenticación Kerberos v5, se utilizará la autenticación Kerberos v5; de lo contrario, se utilizará la autenticación NTLM. Nota El protocolo de autenticación Kerberos v5 es una característica de la arquitectura de Servicios distribuidos de Windows 2000. Para que la autenticación Kerberos v5 se realice correctamente, tanto el cliente como el servidor deben tener una conexión de confianza a un Centro de distribución de claves (KDC) y ser compatibles con los Servicios de directorio. Traduciendo este definición digamos que el navegador no se valida cada vez, sino que envía los credenciales del dominio/usuario y establece una comunicación donde no vuelve a enviar la contraseña. Es el mejor sistema para una Intranet pero debemos tener un sistema de dominios instalado en nuestra red. Autenticación mediante formularios y Suplantación de ASP.NET Los formularios son una colección de controles basada en la gestión de usuarios de ASP.NET que proporcionan todas las páginas necesarias para la identificación y mantenimiento de usuarios. La suplantación también es otra de las alternativas de ASP.NET y si no vas a desarrollar con .NET no necesitarás ninguno de estos dos métodos. Qué autenticación elegir Revisamos los niveles de seguridad file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 20 of 47 Autenticación anónima: permite que cualquier usuario tenga acceso sin que se le pida su nombre de usuario y contraseña. Autenticación básica: solicita al usuario su nombre de usuario y contraseña, que se envían sin cifrar a través de la red. Autenticación de texto implícita: funciona de manera similar a la autenticación básica, pero difiere de ella en que las contraseñas se envían como un valor de hash. La autenticación de texto implícita sólo está disponible para los dominios con un controlador de dominio de Windows 2000. La autenticación de Windows utiliza la tecnología de hash para identificar al usuario sin enviar realmente la contraseña a través de la red. Autenticación basada en ASP.NET. Si utilizamos los controles y formularios para controlar el acceso. Si utilizamos la primera opción el acceso será anónimo y no tendremos ningún tipo de identificación a lo largo de la sesión del usuario. Es una seguridad propia para un Web de Internet, ya que nadie debe, en principio, identificarse. La segunda opción la rechazamos inmediatamente por no tener ningún tipo de seguridad a la hora de transmitir la contraseña. Y de las demás nos quedamos con la "Seguridad de Windows". Ésta envía los credenciales del usuario en cada petición. Esto funcionalmente hace que desde ASP.NET podamos saber siempre que usuario ha solicitado la página. También es buena opción utilizar las opciones de seguridad de ASP.NET si vamos a desarrollar con este lenguaje, como ves posibilidades hay muchas... Reglas de autorización. Es una mezcla de reglas de cortafuegos con permisos. Si conoces ASP.NET es lo mismo que la asignación de permisos según los "roles". Es otra de las mejoras de esta versión IIS7, y ya van unas cuantas!. Determina quien puede acceder al servidor, por ejemplo podemos dejar acceso a una carpeta o aplicación pero denegar a las demás. Si lo mezclamos con la seguridad basada en formularios, donde se identifiquen los usuarios, tendremos un control muy avanzado de los accesos a nuestro servidor. Iremos añadiendo reglas indicando quienes tienen permiso y de que tipo, lo mismo que en un cortafuegos: CGI. "Common Gateway Interface" es uno de los mas antiguos sistemas para ejecutar aplicaciones web. Fue prácticamente la primera vez que las páginas pudieron consultar bases de de datos y file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 21 of 47 otro tipo de operaciones no estáticas. Se utilizaba escribiendo ficheros con secuencias de comandos que luego ejecutaba el servidor. Se mantiene por compatibilidad e incluso se mejoran algunas opciones como el establecer el tiempo de espera o "timeout" Compresssion. La velocidad del servidor web depende del ancho de banda disponible, por eso si se comprime la información, ésta necesitará menos ancho de banda para transmitirse: Documento predeterminado. Establece el archivo que va a devolver por defecto: Es decir, cuando el usuario escriba la dirección del sitio web (por ejemplo www.miempresa.es) el servidor web devolverá el primero que encuentre de los que le indicamos en esta página. Lo habitual es default.aspx si aloja aplicaciones realizadas en .NET. Siempre que se acceda sin indicar un nombre de página se buscará por ese orden estas páginas en la carpeta o web solicitado. Es muy importante que exista para no dejar puntos sin control y pueda ser sujeto de un ataque. Exámen de directorios. Esta opción permite navegar por las carpetas y ficheros de un sitio web, de forma similar a la navegación por carpetas del explorador de archivos. Lógicamente por seguridad esta opción está deshabilitada y así debe permanecer porque mostramos a los usuarios todos nuestros ficheros de la web, incluidos los de configuración, facilitando un posible ataque. Sin embargo es una útil opción si lo que queremos es precisamente que el usuario explore una serie de ficheros donde podremos controlar que datos queremos mostrar al usuario: Hora file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 22 of 47 Tamaño Extensión del archivo Fecha Fecha larga (sin está disponible) Los usuarios verán nombres de ficheros con sus iconos que identifican el tipo de contenido del fichero. Para tener mas seguridad se desaconseja utilizar esta opción. Páginas de error. Cuando el servidor o una aplicación encuentra un error, éste genera un código. Con esta opción podremos personalizar estos errores. Lo veremos con mas detalle un poco mas adelante. Asignación de controlador. Cuando nosotros solicitamos una página web al servidor, éste analiza el tipo de página y dependiendo de su extensión la procesará de una forma u otra. Es decir si es de tipo .asp la ejecutará con un determinado programa y si es .aspx con otro. En esta sección podemos añadir los controladores que queremos que nuestro servidor pueda manejar: Como ves, por seguridad están deshabilitados los dos primeros, sistemas muy antiguos e inseguros. Debajo tenemos todas los tipos de archivos que va a reconocer y con que aplicación debe ejecutarlos según la extensión que tenga. Nada impide por supuesto que creemos uno nuestro con determinadas extensiones y así cuando se solicite una página de esa extensión IIS lo mandará a ejecutar con ese programa. Por ejemplo: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 23 of 47 Cuando se solicite una página con extensión .aspx en lugar de devolverla, la ejecutará el programa que estamos indicando, que en este caso es el motor de ASP.NET 2.0 Redirección HTTP. Hay varias razones por las que podemos querer redirigir nuestro sitio web. Por ejemplo, porque estamos reorganizando nuestro sitio, lo estamos moviendo e sitio o de dominio, mostrar un mensaje de "parado por mantenimiento"... Con IIS7, se trata de un procedimiento muy sencillo, podemos redireccionar una carpeta o el servidor web entero. Encabezados de respuesta HTTP. Le comunica cierta información a las solicitudes de los clientes: Podemos crear los encabezados automáticos que queramos desde esta opción. Como ves hay uno definido que, independiente del contenido de la página, incluirá en la solicitud del usuario. Esta información no aparece en el navegador, el usuario no verá nada especial en la página, pueden ser datos de identificación del autor o de configuración de las páginas, como veremos ahora. Podemos añadir encabezados mas complejos si seleccionamos la opción de "establecer encabezados comunes": file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 24 of 47 Tenemos estas dos opciones, la primera de ellas es muy importante que se mantenga. Le indica al servidor que deje la conexión establecida con el cliente mientras esté enviando elementos. Todas las páginas incluyen muchos elementos, así que es mejor que se quede la conexión abierta para su transferencia, de lo contrario la velocidad se verá muy afectada. La segunda parte, la de la expiración del contenido, se refiere a que podemos forzar al servidor a que actualice la información del servidor cada cierto tiempo. Seguro que has visto alguna retransmisión de algún partido por la web de algún periódico y has visto que la página se recarga sola cada poco tiempo, aquí es donde podemos establecer esos tiempos. Restricciones de direcciones IPv4 y de dominios. Podemos restringir o conceder el acceso a los dominios o intervalos de direcciones que indiquemos: Por ejemplo, sabemos que ha habido problemas desde una IP de nuestra red, podemos suprimir el acceso de esa dirección mediante esta opción. O es una de nuestras subredes de nuestra empresa pero que no queremos que accedan a esta zona o a esta sección Web. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 25 of 47 Es mejor utilizar las restricciones a nivel de direcciones ya que si son a nivel de dominios, el servidor siempre tendrá que hacer consultas de nombres de dominio y eso cuesta algo mas de tiempo. Restricciones ISAPI y CGI. Son tecnologías mas antiguas que no están activadas por defecto y deberíamos activarlas simultáneamente desde aquí para poderse utlizar. Es decir, al ser antiguas e inseguras debemos decirle explícitamente que las reconozca. Esta restricción hace que nuestro servidor sea mucho mas seguro. Filtros ISAPI. Las aplicaciones ISAPI (ISAPI es la API de IS, es decir la interfaz de programación del servidor web), o lo que es lo mismo, las aplicaciones que se pueden ejecutar en el servidor web se indican de dos formas: extensiones ISAPI y filtros ISAPI. Una extensión ISAPI controla las solicitudes de páginas ASP, CGI, ... En cambio un filtro ISAPI realiza un servicio distinto que la extensión. Por ejemplo, podemos decirle en un filtro ISAPI que determinadas páginas de inicio de sesión (login) sea rechazadas dependiendo de los criterios que indiquemos. Es decir "filtra" las páginas que luego se ejecutarán. Simplemente añadiremos en ese cuadro de diálogo el nombre del filtro y el ejecutable. Con esto, .NET puede utilizar el filtro ISAPI para ver las solicitudes ASP.NET file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 26 of 47 Registro de la actividad El registro de la actividad es una de las partes importantes porque nos va a mostrar todo las peticiones que se realizan a nuestro servidor. Dada su importancia la trataremos un poco mas adelante. Tipos MIME. Las "extensión de mail de Internet Multipropósito" (MIME) define como debe manejar el cliente determinados tipos de archivos. Esta tecnología viene originalmente del correo electrónico donde le ayudaba a tratar con los ficheros adjuntos, definiendo los tipos que podría reconocer. Habrás observado que cuando le damos a un hipervínculo que es un vídeo se abre el Windows Media, eso es porque reconoce los formatos MIME, lanzando la aplicación asociada con esa extensión. De igual forma que Windows reconoce las extensiones, estas definiciones le indican al navegador como tratarlas. Modulos. IIS necesita saber dónde encontrar el código que necesita para ejecutar tareas. Puesto que IIS7 está basado en .NET, encontrará todo lo que necesita en el propio núcleo de .NET. Esta sección contiene una lista de módulos de código nativo que se instalan con IIS. Almacenamiento en caché de resultados. Un servidor puede mejorar su rendimiento actualizando el contenido solo si necesita actualizarlo. Es decir, si una persona solicita un informe y luego otra persona lo solicita 5 minutos después lo normal sería que fuese el mismo informe. En ese caso se mandaría una copia del primer informe al usuario. Con esta opción nos permite crear unas reglas de uso de caché para controlar como IIS7 recicla el contenido file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 27 of 47 Certificados de servidor. Los certificados digitales son la forma de asegurar al cliente que está en el sitio que ha solicitado. Añadido con SSL asegura totalmente la comunicación. Para utilizar esta característica debemos crear una entrada en esta sección. En las anteriores versiones de IIS solo se permitía la instalación de un certificado, la evolución hace que en este IIS7 tengamos varias opciones interesantes: Técnica Utilización Descripción Importar Cualquier sitio Web Es la antigua opción. Podemos conseguir un certificado de una empresa autorizada externa, como VeriSign, e importarlo en nuestro servidor. Solo tenemos que indicarle dónde está y la contraseña para abrirlo Crear solicitud de certificado Intranets y sitios privados de confianza Es un proceso de dos pasos, primero creamos una solicitud y se la enviamos a VeriSign, por ejemplo. Esta empresa nos responde y utilizaremos la opción de completar la solicitud de certificado para instalarlo. Es parecido a lo anterior pero no tenemos que hacer una solicitud por separado y luego importarlo, sino que todo se hace desde aquí. Crear certificado de dominio Intranets y sitios privados de confianza Antes utilizábamos en este tipo de peticiones un servidor que emitía certificados de nuestro dominio. Perdíamos mucho tiempo accediendo al web para acceder a ese servidor, recuperar el certificado y finalmente instalarlo manualmente. Ahora, con esta opción podemos crear directamente un certificado para su uso en nuestra intranet o file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 28 of 47 en un sitio web privado. Con esto ahorramos dinero en la solicitud de un certificado y proporcionamos una forma segura de conexión. Crear certificados autofirmados Para pruebas y desarrollos Muchas veces los desarrolladores necesitan certificados para pruebas. Esta opción proporciona un certificado que funciona para pruebas y redes pequeñas pero no para su uso a gran escala porque cualquiera puede generar un certificado y acceder a este IIS. Ya ves que sencillo es, no hay razón por la que no podamos poner en marcha un sitio web seguro. Una vez que lo tenemos instalado podemos trabajar con SSL para asegurar totalmente nuestro sitio Web y garantizar su privacidad. SSL Son las siglas del protocolo de páginas web seguras. Verás que es muy fácil asegurar nuestra web y nos garantizará la confidencialidad de los datos. Incluso para una sencilla página de inicio de sesión deberíamos aplicarle este protocolo para que la información se envíe encriptada y no pueda interceptarse. Actualmente es imprescindible en cualquier sitio web que requiera confidencialidad: desde portales de comercio electrónico, banca o correo electrónico. El primer paso para crear un sitio web seguro es crear un certificado de servidor. Una vez creado podemos crear un sitio web seguro que utilice este certificado: Para acceder a esta pantalla sólo le he indicado "Agregar nuevo sitio web". Como puedes ver al seleccionar el protocolo seguro "https" se activa la sección inferior para indicar el certficado. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 29 of 47 Procesos de trabajo. Finalmente esta opción nos muestra los procesos que se están ejecutando y la lista de solicitudes que tienen. Por ejemplo, si vamos a esta pantalla y en un navegador solicitamos una página web veremos que: Nos muestra que se está ejecutando la aplicación predeterminada que es el propio servidor web. Te recuerdo las aplicaciones que por defecto tenemos instaladas (puede ser algo distinta a las que tienes en tu equipo): Como ves, se cumplen varias cosas. Por un lado "DefailAppPool", que es nuestro servidor web se encuentra en la lista de los grupos de aplicaciones de nuestro servidor, por eso al solicitar una página web nos indica que está en ejecución. Y también vemos como efectivamente las aplicaciones se van a ejecutar de forma independiente para no afectar a las otras. Además pulsando en ese proceso podremos ver mas detalles. Por fin! esto no estaba disponible hasta esta versión y es una gran mejora porque por fin podemos ver lo que se está ejecutando dentro del servidor web 4. Características de administración A nivel de servidor nos encontramos con un pequeño grupo de herramientas de administración: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 30 of 47 Recuerda que los iconos son distintos si estamos seleccionando el servidor o un sitio web creado dentro de IIS. Lo que apliquemos a nivel de servidor serán para todos los sitios web y lo que apliquemos en cada uno de ellos servirá para configurarlos individualmente. Si pulsas en el web predeterminado verás que solo hay un icono de administración que es "Permisos del administrador de IIS" ya que todos los demás (y ese mismo) se encuentran a nivel de servidor. Veamos estas opciones: Delegación de características IIS nos permite configurar el nivel de acceso de todas sus características: Podemos elegir en delegar cada característica y cómo queremos que se haga. Permisos del Administrador de IIS Muestra una lista de los usuarios que tienen permiso para realizar administración de tareas a nivel de sitio. Si añadimos un usuario a la lista le proporcionaremos niveles de administración. Usuarios del Administrador de IIS En ocasiones podemos querer dar privilegios de administración a alguien que no es de nuestra organización y por tanto no tiene usuario en nuestro directorio activo. Para evitar la creación de un usuario, con esta opción podemos crear un usuario y asignarle una contraseña para pasar a ser un administrador del sitio. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 31 of 47 Servicio de Administración Con esta opción configuraremos cómo queremos que se identifiquen los usuarios que administrarán de forma remota este servidor: Como ves en la pantalla por un lado definimos que usuarios lo administrarán: de Windows o los creados en el punto anterior. Debajo podemos indicar en que IP de nuestro servidor se atenderán estas peticiones y el puerto sobre el que funcionará el servicio de administración. Recuerda que el puerto 80 está ocupado por nuestra web así que debe ser obviamente otro puerto. Debajo le indicaremos el certificado para la conexión seguro e incluso podemos filtrar las direcciones IP remotas. Esto es muy útil porque si sabemos la dirección del equipo o proveedor externo que nos administrará el sitio web podemos restringir las conexiones de forma rápida. Configuración compartida Para terminar, una pequeña utilidad para tener centralizada la información de configuración de nuestro IIS, así la podrá compartir con otro o hacer mas sencilla la tarea de la copia de seguridad imprescindible. Por tanto si vamos a tener una "granja" de servidores no necesitaremos almacenar la configuración de cada uno de ellos individualmente. Podemos establecer la configuración de los otros utilizando la información proporcionada por esta opción. 5. Mensajes de error personalizados y registro de visitas 5.1 Mensajes de error personalizados Cuando se produce un error en nuestra Intranet: no encuentra una página, error del servidor, excedido tiempo de espera... IIS muestra una página con el error. Estas páginas las encontramos en un directorio de nuestro disco duro y podemos cambiarlas. Siempre es mejor mostrar un mensaje personalizado con el logo y aspecto de nuestra Intranet que uno genérico. Veamos un file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 32 of 47 ejemplo del mismo mensaje de error visto por IIS de forma predeterminada y después he haber hecho alguna pequeña modificación en su aspecto: Estos son algunos de los errores que se pueden personalizar y que son los mas comunes: Código de error Mensaje 400 Solicitud incorrecta 403.1 Acceso de ejecución prohibido 403.2 Acceso de lectura prohibido 403.3 Acceso de escritura prohibido 403.8 Acceso al sitio denegado 403.14 Lista de directorios denegada 404 No se encuentra 404.1 Sitio no encontrado 500 Error interno del servidor 500-100.asp Error ASP Los mensajes de error se muestran en una lista del complemento IIS que IIS trata como una sola propiedad. Por ejemplo, cuando se configura un conjunto de mensajes de error personalizados para el sitio Web, todos los directorios de este servidor heredan la lista completa de mensajes personalizados. Es decir, no se combinan las dos listas de mensajes de error personalizados (para el servidor y para el directorio). file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 33 of 47 El error 404.1 sólo se produce en equipos con direcciones IP múltiples. Si se recibe una solicitud de cliente en una combinación de dirección y puerto IP determinada y la dirección IP no está configurada para la recepción en ese puerto específico, IIS devolverá el mensaje de error HTTP 404.1. Por ejemplo, si un equipo dispone de dos direcciones IP y solamente una de ellas está configurada para escuchar en el puerto 80, cualquier solicitud con puerto 80 que se reciba en la otra dirección IP hará que IIS devuelva el mensaje de error 404.1. Podemos asignar mensajes de error personalizados a un archivo o a una dirección URL para esto utilizaremos la hoja de propiedades Errores personalizados del complemento IIS: Para personalizar un mensaje de error mediante su asignación a un archivo: 1. Creamos un archivo que contenga su mensaje de error personalizado y colocamos el archivo en un directorio. 2. Seleccionamos el error HTTP que desea cambiar. 3. Hacemos clic en el botón Modificar propiedades. 4. Seleccionamos Archivo en el cuadro Tipo de mensaje. 5. Escribimos la ruta de acceso y el nombre del archivo que apunta al mensaje de error personalizado o utilizamos el botón Examinar para localizar el archivo en el disco duro del equipo. 6. Hacemos clic en Aceptar. Nota si es una URL seleccionaremos "Dirección URL" en el cuadro Tipo de mensaje. Podemos modificar los ficheros con FrontPage u otro editor pero ojo, si incluimos un gráfico debe ser con la forma http://servidor/images/logo.gif. De lo contrario incluirá un enlace a una ruta local c:\imagenes\logo.gif que no funcionará bien. Por ejemplo, modificando el fichero "404b.htm" que es el que se muestra cuando no encuentra la página quedaría así: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 34 of 47 Dado que ASP.NET tiene mucho que decir en IIS7 y que éste gestiona muy bien el control de errores, podemos complementar estos errores estáticos con otro interceptados y tratados con código ASP.NET desde nuestra aplicación web. 5.2 El registro de IIS El registro de un sitio Web o FTP se realiza mediante unos módulos que funcionan independientemente de las demás actividades del servidor. Podemos elegir el formato de los registros para cada sitio Web o FTP individual. Si está habilitado el registro en un sitio, podemos habilitarlo o deshabilitarlo individualmente para cada uno de sus directorios. Cada formato de registro utiliza una zona horaria diferente como base para las horas mostradas en los registros. El formato extendido W3C utiliza el Horario universal coordinado (UTC), lo que antes llamábamos hora del meridiano de Greenwich, Los otros formatos utilizan la hora local. Las horas mostradas en los archivos de registro reflejan la hora que el servidor utiliza para procesar las peticiones y las respuestas. Estas horas no reflejan el tiempo transcurrido en la red hasta llegar al cliente ni el tiempo de proceso del cliente. Formatos de archivo de registro Podemos elegir el formato que el servidor Web utiliza para registrar la actividad de los usuarios. Disponemos de los siguientes formatos: 1. Formato de archivo de registro W3C 2. Formato de registro de Microsoft IIS 3. Formato del archivo de registro común NCSA 4. Personalizado El formato de archivo de registro W3C, el formato de archivo de registro Microsoft IIS y el formato de archivo de registro NCSA son todos formatos de texto ASCII. El formato W3C y el formato file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 35 of 47 NCSA registran datos con formato de año de cuatro dígitos. El formato de Microsoft IIS utiliza un formato de dos dígitos para el año 1999 y anteriores y un formato de cuatro dígitos para los años posteriores. El formato de registro que se proporciona con Microsoft IIS asegura la compatibilidad con versiones anteriores de IIS. Únicamente se puede utilizar el formato de archivo de registro W3C para crear formatos de registro personalizados con los campos precisos que se necesiten. A título informativo comentaremos los tres tipos de registro que existen en IIS: 1. Formato de archivo de registro W3C El formato W3C es un formato ASCII que puede personalizarse con diversos campos diferentes. Puede incluir campos que considere importantes y limitar al mismo tiempo el tamaño del registro si omite los campos que no desea. Los campos están separados por espacios. La hora se registra como UTC (Horario universal coordinado). En el ejemplo siguiente se muestran líneas de un archivo que incluye los campos siguientes: Hora, Dirección IP del cliente, Método, Recurso (URL) visitado, Estado del protocolo y Versión del protocolo. #Software: Servicios de Internet Information Server 5.1 de Microsoft #Versión: 1.0 #Fecha: 1998-05-02 17:42:15 #Campos: time c-ip cs-method cs-uri-stem sc-status cs-version 17:42:15 172.16.255.255 GET /default.htm 200 HTTP/1.0 La entrada anterior indica que el 2 de mayo de 1998, a las 5:42 p.m., UTC, un usuario con HTTP versión 1.0 y dirección IP 172.16.255.255 emitió un comando GET de HTTP para el archivo \Default.htm. La petición se resolvió sin errores. El campo #Fecha: indica cuándo se hizo la primera entrada de registro, que es cuando se creó el registro. #Versión: indica que se utilizó el formato de registro W3C. Podemos seleccionar cualquiera de los campos, pero puede que algunos no tengan información disponible para algunas peticiones. Para aquellos campos seleccionados que no tengan información aparecerá un guión (—) en el campo como marcador de posición. Al seleccionar este formato hemos dicho que podemos personalizar sus campos. Si pulsamos en el botón "Propiedades" nos aparecerá una pantalla cuya segunda ficha será como esta: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 36 of 47 Esta pantalla permite indicar que campos queremos que figuren en el registro. 2. Formato de registro de Microsoft IIS El formato de Microsoft IIS es un formato ASCII fijo (no puede personalizarse) pero registra más datos que el formato común NCSA. El formato de Microsoft IIS incluye elementos básicos como la dirección IP del usuario, el nombre de usuario, la fecha y la hora de petición, el código de estado de servicio y el número de bytes recibidos. Además, incluye elementos detallados como el tiempo transcurrido, el número de bytes enviados, la acción (por ejemplo, una descarga realizada con un comando GET) y el archivo de destino. Los elementos se separan con comas, por lo que leer el formato resulta más sencillo que con los demás formatos ASCII, que utilizan espacios como separadores. La hora de registro es la local. Al abrir un archivo con formato Microsoft IIS en un editor de textos, las entradas serán similares a las de los ejemplos siguientes: 192.168.114.201, —, 03/20/98, 7:55:20, W3SVC2, VENTAS1, 192.168.114.201, 4502, 163, 3223, 200, 0, GET, /DeptLogo 172.16.255.255, anónimo, 03/20/98, 23:58:11, MSFTPSVC, VENTAS1, 192.168.114.201, 60, 275, 0, 0, 0, PASS, /intro. En las tablas siguientes se interpretan las entradas anteriores. La fila superior de cada tabla proviene de la segunda instancia del sitio Web (que aparece en "Servicio" como W3SVC2) y la fila inferior de la primera instancia del sitio FTP (que se indica en "Servicio" como MSFTPSVC1). El ejemplo se presenta en tres tablas por la limitación de ancho de página. Dirección IP del usuario Nombre del usuario Fecha Hora Servicio instancia Uso y resultado file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 37 of 47 192.168.114.201 172.16.255.255 — anonymous 03/20/98 7:55:20 03/20/98 23:58:11 Dirección IP del servidor Tiempo empleado Bytes enviados Bytes recibidos 192.168.114.201 4502 163 3223 275 0 172.16.255.255 60 SALES1 W3SVC2 SALES1 MSFTPSVC1 Código de estado de servicio Código de estado de Windows 0 200 0 0 Tipo de solicitud Destino de la operación Parámetros GET /DeptLogo.gif — [376] PASS /intro.htm — En el ejemplo, la primera entrada indica que un usuario anónimo, con la dirección IP 192.168.114.201, envió un comando GET de HTTP para el archivo de imagen /DeptLogo.gif a las 7:55 a.m. del 20 de marzo de 1998, desde un servidor llamado VENTAS1 que tiene la dirección IP 172.21.13.45. La petición HTTP de 163 bytes ha tenido un tiempo de proceso de 4502 milisegundos (4,5 segundos) y devolvió, sin errores, 3223 bytes de datos al usuario anónimo. En el archivo de registro, todos los campos terminan en coma (,). Un guión (—) actúa como marcador de posición si no hay un valor válido para un campo determinado. 3. Formato del archivo de registro común NCSA El formato común NCSA es un formato ASCII fijo (no puede personalizarse), disponible para sitios Web, pero no para sitios FTP. Registra información básica acerca de las peticiones de los usuarios, como nombre de host remoto, nombre de usuario, fecha, hora, tipo de petición, código de estado HTTP y número de bytes enviados por el servidor. Los elementos están separados con espacios en blanco y la hora de registro es la local. Al abrir un archivo con formato común NCSA en un editor de textos, las entradas serán similares a las del ejemplo siguiente: 172.21.13.45 — REDMOND\fred [08/Apr/1997:17:39:04 -0800] "GET /scripts/iisadmin/ism.dll?http/serv HTTP/1 Nota En la entrada anterior, el segundo campo (que mostraría el nombre de inicio de sesión remota del usuario) está vacío y está representado por el guión que sigue a la dirección IP 172.21.13.45. En las tablas siguientes se interpreta la entrada de ejemplo anterior. Se utilizan dos tablas por la limitación de ancho de página. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 38 of 47 Nombre de host remoto Nombre de inicio de sesión remota Nombre de usuario Fecha 172.21.13.45 — Rioja\jose 08 de abril de 1998 Hora y diferencia con GMT 17:39:10 -0800 Petición/Versión Código de estado de servicio Bytes enviados GET /scripts/iisadmin/ism.dll?http/serv HTTP/1.0 200 3401 La entrada indica que un usuario llamado Jose del dominio Rioja, con la dirección IP 172.21.13.45, envió un comando GET de HTTP (es decir, descargó un archivo) a las 5:39 p.m. del 8 de abril de 1998. La petición devolvió, sin errores, 3401 bytes de datos al usuario jose. 4. Personalizado. Necesita una serie de elementos mas complejos que no soporta directamente IIS7. Pulsa aquí si quieres mas información de este formato. Tamaño de archivo de registro y creación de nuevos archivos de registro Cuando está habilitado el registro de IIS, (lo está de manera predeterminada) se generan nuevas entradas de registro siempre que un usuario tiene acceso al servidor. Esto produce un incremento progresivo del tamaño del archivo de registro o del número de archivos de registro. Podemos necesitar equilibrar la recopilación de datos detallados con la necesidad de limitar los archivos a un número y tamaño fáciles de administrar. IIS ofrece dos opciones para administrar la generación de datos de registro y la creación de nuevos archivos de registro. Una forma de administrar los datos de registro es personalizar el registro extendido W3C de modo que sólo se recopilen los datos que se necesitan. Otra opción para administrar archivos de registro es limitar el tamaño del registro mediante el cambio de la frecuencia de creación del archivo de registro. Los archivos de registro son simplemente archivos ASCII (de texto). Si ha creado muchos archivos pequeños y prefiere uno grande, puede combinarlos como haría con cualquier archivo ASCII. Si el servidor se queda sin espacio en disco cuando IIS intenta agregar una entrada de registro a un archivo, el registro de IIS se cierra. Al mismo tiempo, en el registro de aplicación del Visor de sucesos de Windows, se registra un suceso. Cuando vuelve a haber espacio disponible en disco, se reanuda el registro de IIS. Esto hace que se registre un suceso adicional en el registro de aplicación del Visor de sucesos de Windows. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 39 of 47 Nombres de archivo de registro En los nombres de los archivos de registro se utilizan las primeras letras para representar el formato y los números restantes para indicar el marco horario o la secuencia del registro. Consulta la tabla siguiente para obtener más información. Las letras en cursiva representan dígitos: nn para dígitos secuenciales, aa para el año, mm para el mes, ss para la semana del mes, dd para el día y hh para la hora en formato de 24 horas (es decir, 17 es 5:00 p.m.). Formato Criterio para nuevo registro Patrón de nombre de archivo Formato de registro de Microsoft IIS Por el tamaño del archivo inetsvnn.log Cada hora inaammddhh.log Diario inaammdd.log Semanal inaammss.log Mensual inaamm.log Por el tamaño del archivo ncsann.log Cada hora ncaammddhh.log Diario ncaammdd.log Semanal ncaammss.log Mensual ncaamm.log Por el tamaño del archivo extendnn.log Cada hora exaammddhh.log Diario exaammdd.log Semanal exaammss.log Mensual exaamm.log Formato del archivo de registro común NCSA Formato de archivo de registro extendido W3C Nota Existen muchos programas de otros fabricantes que recogen estos datos y los interpretan, creando potentes informes acerca del volumen de páginas descargadas, tamaños, usuarios, ... 6. Los directorios virtuales Al configurar los sitios Web debemos indicar los directorios que contienen los documentos que queremos publicar. El servidor Web no puede publicar documentos que no están en los directorios especificados. Por lo tanto, el primer paso para desarrollar un sitio Web debe ser determinar cómo deseamos organizar los archivos. Si deseamos empezar ahora mismo sin tener que crear una estructura especial de directorios y todos los directorios se encuentran en el mismo disco duro del equipo que ejecuta los Servicios de Internet Information Server, podemos publicar los documentos inmediatamente copiando los archivos Web en el directorio principal predeterminado, C:\InetPub\Wwwroot. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 40 of 47 Cada sitio Web o FTP debe tener un directorio particular: el directorio particular es la ubicación central de las páginas publicadas. Contiene una página principal o archivo de índice que da la bienvenida a los clientes y contiene los vínculos a otras páginas del sitio. El directorio particular se asigna al nombre de dominio del sitio o al nombre del servidor. Por ejemplo, si el nombre del dominio de Internet del sitio es www.microsoft.com y el directorio particular es C:\Website\Microsoft, los exploradores utilizan la dirección URL http://www.microsoft.com para tener acceso a los archivos del directorio particular. En una intranet, si el nombre del servidor es ServidorActual, los exploradores utilizan la dirección URL http://ServidorActual para tener acceso a los archivos del directorio particular. El directorio particular predeterminado se crea al instalar los Servicios de Internet Information Server y crear un sitio Web nuevo. 6.1 ¿Qué es un directorio virtual? Para publicar desde cualquier directorio que no esté contenido en el directorio particular, debemos crear un directorio virtual. Un directorio virtual es un directorio que no está en el directorio particular pero que aparece en los exploradores de los clientes como si estuviera. Es decir: sabemos que podemos poner páginas Web en el directorio "c:\inetpub\wwwroot" y que estas se van a ver inmediatamente escribiendo en el navegador "http://servidor". Un directorio virtual es crear un directorio en nuestra página Web pero que apunta físicamente a otra ruta física del disco duro diferente. Por ejemplo podemos crear un directorio virtual que llamaremos "docs" y que apunta a la ruta física "d:\intranet\documentos" para ver esto en el servidor bastaría con escribir: "http:/servidor/docs" Un directorio virtual tiene un alias, un nombre que los exploradores Web utilizan para tener acceso al directorio. Puesto que el alias suele ser más corto que el nombre de la ruta del directorio, a los usuarios les resulta más cómodo escribirlo. Un alias es más seguro; los usuarios no conocen el lugar del servidor donde están ubicados físicamente los archivos y no pueden utilizar esa información para modificar los archivos. Con los alias es más fácil mover los directorios en el sitio: En lugar de cambiar la dirección URL del directorio, puede cambiar la asignación entre el alias y la ubicación física del directorio. Otro ejemplo, supongamos que configuramos un sitio Web para el grupo de mercadotecnia en la intranet de la compañía. La tabla siguiente muestra las asignaciones entre las ubicaciones físicas de los archivos y las direcciones URL a través de las cuales se obtiene acceso a los archivos. Ubicación física Alias Ruta de la dirección URL C:\Inetpub\wwwroot directorio particular (ninguno) http://Ventas \\Servidor2 \DatosVentas\ClientesProd Clientes http://Ventas/Clientes C:\Inetpub\wwwroot\Presupuestos Ninguno http://Ventas/Presupuestos file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 41 of 47 C:\Inetpub\wwwroot\EstadoPedidos Ninguno http://Ventas/EstadoPedidos D:\Mrcdtcn\PR http://Ventas/PR PR Los directorios virtuales y los físicos (directorios sin alias) aparecen en el complemento Servicios de Internet Information Server. Un directorio virtual viene indicado por un icono de carpeta con una flecha como las de los accesos directos en la esquina inferior izquierda. Mira esta imagen que siguiente muestra el sitio Web del ejemplo anterior, /Clientes y /PR son directorios virtuales: En un sitio Web simple, puede que no necesitemos añadir directorios virtuales. Basta con colocar todos los archivos en el directorio particular (directorio principal) del sitio. Si tienes un sitio complejo o quieres especificar diferentes direcciones URL para distintas partes del sitio, puedes agregar tantos directorios virtuales como necesites. En cualquier caso es un tema interesante. A menudo nos encontraremos con que instalamos una utilidad para nuestra Intranet y la documentación la instala directamente en un directorio virtual, de esta forma está mas fácil y accesible que un fichero .htm tradicional. 6.2 Crear directorios virtuales Si nuestro sitio Web contiene archivos que se encuentran en un directorio diferente del directorio particular o en otros equipos, debemos crear directorios virtuales para incluir esos archivos en el sitio Web. Para utilizar un directorio de otro equipo, debemos especificar su nombre según la nomenclatura universal (UNC) e indicar un nombre de usuario y una contraseña para los permisos de acceso. Para crear un directorio virtual 1. En la consola administrativa, seleccionamos el sitio Web o FTP al que deseamos agregar un directorio. 2. Hacemos clic con el botón derecho y seleccionamos "Agregar directorio virtual" 3. Utilizamos el Asistente para crear un directorio virtual para completar esta tarea. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 42 of 47 A continuación nos muestra esta sencilla pantalla de configuración: Donde nos pregunta preguntando por el alias que tendrá el sitio Web, es decir el nombre que escribiremos en el navegador: http://servidor/alias. Y lo asociaremos con una ruta física del disco duro, seleccionamos un directorio o ruta. Si queremos poner unos credenciales para identificarse en esta carpeta los indicaremos en "Conectar como". Nota Si utilizas NTFS, también puede crear un directorio virtual si haces clic con el botón derecho del ratón en un directorio en el Explorador de Windows, hace clic en Compartir y, después, selecciona la hoja de propiedades Uso compartido de Web. file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 43 of 47 7. IIS + FrontPage o SharePoint Designer Sólo como curiosidad veremos como conectar nuestro editor de páginas web, por ejemplo FrontPage, con el servidor IIS7. Para conectarlos tendremos que instalar un componente que antes estaba por defecto y que se llama "Extensiones de servidor". Podemos acceder a este programa pulsando aquí. Lo ejecutamos... file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 44 of 47 Como ves es mas un pantalla informativa, solo nos dejaría la de indexar contenidos para las búsquedas con FrontPage. Sigamos hasta que termine la instalación. Lo que ha hecho es añadirnos una nueva aplicación en nuestro IIS7: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 45 of 47 Recuerda que FrontPage dejó de venderse y que ahora se llama "SharePoint Designer", pero básicamente sigue siendo el mismo programa. Ahora podemos utilizar ya FrontPage con este servidor que nos permitirá realizar las funciones mas importantes... 7.1 Abrir sitios web Para abrir un web simplemente seleccionaremos la opción de abrir web. Si escribimos http://servidor abriremos el web raíz del servidor IIS. Para abrir otros webs haremos la misma operación pero escribiendo la ruta correcta: http://servidor/miweb 7.2 Crear sitios web 1. En Microsoft FrontPage, en el menú Archivo, seleccionamos Nuevo y, a continuación Web. 2. En el panel de tareas Nueva página o Web, en Nuevo a partir de una plantilla, haga clic en Plantillas de sitio Web. 3. Hacemos clic en Web de una página y, a continuación, en el cuadro Especificar la ubicación del nuevo sitio Web, escriba la dirección URL del sitio Web. La dirección URL la escribiremos con el formato http://servidor/miweb Nota Si te aparece este mensaje al intentar abrir el sitio web: Debes habilitar la autenticación de Windows en el sitio web, vete al sitio web y en las configuraciones de IIS, selecciona: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 46 of 47 Y habilitas la seguridad de Windows. Si la versión de FrontPage que tienes es la 2003 nos aparecerá a la derecha una lista de opciones para realizar, seleccionaremos "crear Web de una página" y nos aparecerá una pantalla: Hacemos clic en Aceptar y FrontPage creará el sitio Web en el servidor: file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011 1 Page 47 of 47 Para comprobar que los parámetros de “ejecución de comandos” están activos pulsamos con el botón derecho en la raíz del Web: En este caso también está activa la opción de “Permitir el examen de directorios” opción no recomendable pero que en desarrollo es útil mientras se construyen las páginas con los hipervínculos file://C:\Documents and Settings\joserm\Mis documentos\cursos\2012\asp.net\Web_o... 20/10/2011