Administración de WebSites Índice 1. Los servidores Web
Transcripción
Administración de WebSites Índice 1. Los servidores Web
Administración de WebSites Màster en Enginyeria del Software Desenvolupament d’aplicacions en Internet Fundació Politècnica de Catalunya Jaume Moral Ros ([email protected]) Albert Obiols Vives ([email protected]) © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Índice 1.2.3.4.5.6.7.8.9.- Servidores web Organización de un web site Estudio de un servidor web: Apache Instalación y configuración de Apache Extensiones del servidor Seguridad Soporte para contenido dinámico Búsqueda de contenidos Análisis de nuestro web site © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 1. Los servidores Web © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 1 ¿Qué hace un servidor de web? • Un servidor Web es un programa que corre en una máquina y que atiende peticiones en base a los protocolos HTTP y HTTPS. Cliente Servidor Servidor Web © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya ¿Qué hace un servidor de web? • Responde a peticiones del navegador – Ficheros HTML, GIF, JPEG… – Generando contenido dinámicamente • Lleva un control de los accesos • Ofrece un mecanismo de configuración – Ficheros de texto – Aplicación de gestión © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya ¿Qué podemos configurar? • Tipos MIME con los que trabajamos • Directorios que publicamos • Controles de acceso a la información • Contenidos dinámicos • Puerto por el que escuchamos (80) • Encriptación de las comunicaciones ... © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 2 Productos • • • • • • • Cern Netscape Enterprise Server Microsoft Information Server Apache Domino Oracle Application Server (OAS) ….. © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Uso de servidores web • De acuerdo con las estadísticas de Netcraft Survey la utilización de los Servidores Web de febrero de 2000 són: Otros 13% Apache IIS Enterprise Otros Enterprise 7% IIS 22% Apache 58% © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Características que debemos tener en cuenta al escoger un servidor • • • • • • • • Producto comercial o freeware Facilidad de instalación y configuración Facilidad para extender Facilidad de integración con otros productos Rendimiento del servidor y recursos usados Soporte a las transacciones seguras Soporte técnico Plataformas disponibles © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 3 2. Organización de un web site © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya El árbol web • Intentar mantener todo lo que queremos publicar en un solo directorio • Directorios de usuarios • Directorios auxiliares que deben mapearse en el arbol • Redirecciones a otros webs o al mismo © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Imagenes • Centralizar las imágenes utilizadas en todo el web site en un directorio • Utilizar referencias del tipo /imagenes/logo.gif • Las imágenes que sólo se usan en una sección, puden mantenerse a parte. © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 4 CGI y contenido dinámico • No mezclar páginas estáticas con las que tienen contenido dinámico. • Centralizar los CGI en un directorio y asegurarse de que no se pueden ejecutar en el resto de directorios • Un CGI puede comprometer nuestro sistema. Una página estática no. © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya El webmaster • Toma las decisiones que afectan al web • Decide qué debe publicarse y cómo • Se encarga de que la información esté actualizada. • Contesta a las dudas de los usuarios • Se encarga de que el servidor funcione correctamente © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya ¿Quién publica información? • Debemos decidir quién puede modificar la información a parte del webmaster • Proporcionar plantillas para crear nuevas páginas • Conversores para poder reaprovechar el trabajo • Supervisión del webmaster © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 5 ¿Qué política seguimos? • ¿Dejamos que los miembros de nuestra empresa puedan crear sus propias páginas? • ¿Dejamos crear contenido dinámico? • ¿Permitimos conexión desde fuera de la empresa? © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 3. Estudio de un servidor Web: Apache © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Características de Apache • • • • • Libre distribución Disponible en múltiples plataformas Servidor más utilizado en Internet Fácilmente extensible Soporte on-line en internet © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 6 Historia de Apache • Evolución del servidor NCSA • Hacia el 1995 tomó el nombre de Apache © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Situación actual y futuro • Última versión estable: 1.3.12 • Disponible la versión alfa de la 2.0, con una nueva arquitectura • Soporte desde la Apache Foundation a los módulos de integración con Java, PERL, PHP3 y XML. © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya ¿ Dónde conseguir Apache? • Apache Software Foundation http://www.apache.org – Distribución en código fuente – Binarios para varias plataformas – Documentación © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 7 Arquitectura de Apache (1) • En NT, multithreading • En UNIX, basada en procesos – “Pre-forking” – Asigna las peticiones a los procesos ya creados – Crea procesos dinámicamente si es necesario © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Arquitectura de Apache (2) Peticiones httpd httpd GIF httpd HTML ... httpd CGI © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Arquitectura de Apache. Módulos • Apache API permite crear módulos para extender el servidor • Hay módulos que vienen con la instalación básica, pero podemos encontrar muchos más. • Pueden estar compilados en el servidor o cargarse como DLL (DSO) © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 8 4. Instalación y configuración de Apache © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya La instalación • 2 Formas de instalación • A partir de binarios – Más sencilla, pero menos personalizable • A partir del código fuente – Debemos compilar el código – Tenemos control absoluto © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Configuración del servidor • Basado en ficheros de texto. – httpd.conf: configuración global – .htaccess: configuración por directorio • Complejo y poco intuitivo • Gran control sobre la configuración • Existen herramientas para configurar visualmente. © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 9 Secciones del httpd.conf • Entorno global – Directivas relativas a todo el sistema • Configuración del servidor principal – Opciones comunes a todos los servidores • Virtual Hosts – Configuración de cada host virtual – Si no tenemos, es lo mismo que la anterior © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Tipos de directivas • Core – Siempre estan disponibles • Base – Proporcionadas por los módulos básicos • Extension – Necesitamos añadir un módulo para poder utilizarlas. © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Más sobre las directivas • Hay que conocer las básicas y recurrir a la documentación frecuentemente • Nunca las conoceremos todas porque cada módulo incorpora alguna nueva • Un buen punto de partida es preguntarse a que módulo pertenecen © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 10 Entorno global • Se tocan en el momento de la instalación y no suelen cambiar a menos que cambiemos el sistema • Directivas para configurar: – Directorio de instalación – Parámetros de tunning – Carga de módulos con extensiones © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Configuración del servidor principal • Puerto por el que escuchamos, nombre del servidor, raiz del árbol web y página índice Port 80 ServerName www.fib.upc.es DocumentRoot /home/soft/apache/htdocs DirectoryIndex index.html © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Configuración del servidor principal • Mapeo de directorios (alias), redirecciones y directorios de CGI Redirect /intranet http://intranet.fib.upc.com Alias /manuales /home/soft/apache/htdocs/manuales ScriptAlias /home/soft/apache/cgi-bin © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 11 Agrupación de directivas • La mayoría de directivas se aplican sólo a una parte del web • Podemos agrupar por la URL, por el directorio o por el tipo de fichero <Directory> </Directory> <Location> </Location> <Files> </Files> © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Documentos de error • Cuando una petición produce un error el servidor genera una página por defecto • Podemos personalizar estas páginas para el servidor o en una cierta sección ErrorDocument 404 /errors/missing.html ErrorDocument 403 /errors/forbidden.html © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Protección por direcciones IP • Política restrictiva • Si queremos publicar un nuevo directorio, deberemos permitir el acceso. <Directory /home/soft/apache/htdocs > Order deny, allow Deny from all Allow from tentacle.fib.upc.es </Directory> © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 12 Opciones de directorio (1) • Permite activar las siguientes opciones en un directorio: – Ejecución de CGI – Presentar una lista de ficheros si no encuentra la página índice – Seguir los symbolic links – Permitir Server Side Include – Content negotiation © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Opciones de directorio (2) • Algunas de estas opciones sólo tienen sentido si agrupamos por directorio • Podemos dejar redefinir estas opciones en un fichero .htaccess <Directory /home/soft/apache/htdocs > Options MultiViews Indexes Includes AllowOverride Options </Directory> © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Virtual Hosts • Nos permiten acceder con varios nombres a una misma máquina como si fueran dos servidores diferentes • Permiten escuchar por varios puertos diferentes • Trasladaremos parte de la configuración global a cada uno de los virtual hosts © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 13 Virtual host en el mismo puerto NameVirtualHost 147.83.41.23 <VirtualHost 147.83.41.23> ServerName www.fib.upc.es DocumentRoot /home/soft/apache/fib </VirtualHost> <VirtualHost 147.83.41.23> ServerName www.aulesempresa.upc.es DocumentRoot /home/soft/apache/aulesempresa </VirtualHost> © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Virtual host en distintos puertos • Debemos especificar los puertos por los que escucharemos Listen 80 Listen 443 <VirtualHost _default_:443> ServerName www.fib.upc.es DocumentRoot /home/soft/apache/fib </VirtualHost> © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 5. Extensiones del servidor © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 14 Carga de módulos – Cargamos los módulos de que disponemos – Cada módulo nos puede ofrece nuevas directivas a parte de las del núcleo (core) de Apache – En la documentación podemos ver las directivas que incorpora cada módulo LoadModule includes_module libexec/mod_include.so AddModule mod_include.c © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Cómo se añade un módulo • • • • • Obtención del módulo Configuración Compilación Instalación Cambios en el httpd.conf © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Handlers • Un handler es la acción que se ejecuta como respuesta a una petición • Los módulos pueden proporcionar nuevos handlers AddHandler server-parsed .shtml <Location /pruebas-include/> SetHandler server-parsed </Location> © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 15 Diferentes tipos de módulos • Environment creation • Content type decisions • URL mapping • Directory Handling • Access Control • HTTP response • • • • • • Scripting Internal Content Handlers Request Logging Miscellaneous Experimental Development © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Diferentes tipos de módulos Environment creation (+) mod_env (+) mod_setenvif (-) mod_unique_id Set environment variables for CGI/SSI scripts Set environment variables based on HTTP headers Generate unique identifiers for request Content type decisions (+) mod_mime Content type/encoding determination (configured) (-) mod_mime_magic Content type/encoding determination (automatic) (+) mod_negotiation Content selection based on the HTTP Accept* headers © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Diferentes tipos de módulos URL mapping (+) (-) (+) (-) mod_alias mod_rewrite mod_userdir mod_speling Simple URL translation and redirection Advanced URL translation and redirection Selection of resource directories by username Correction of misspelled URLs Directory Handling (+) mod_dir (+) mod_autoindex Directory and directory default file handling Automated directory index file generation © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 16 Diferentes tipos de módulos Access Control (+) (+) (-) (-) (-) (-) mod_access mod_auth mod_auth_dbm mod_auth_db mod_auth_anon mod_digest Access Control (user, host, network) HTTP Basic Authentication (user, passwd) HTTP Basic Authentication via Unix NDBM files HTTP Basic Authentication via Berkeley-DB files HTTP Basic Authentication for Anonymous-style users HTTP Digest Authentication HTTP response (-) (-) (-) (+) mod_headers mod_cern_meta mod_expires mod_asis Arbitrary HTTP response headers (configured) Arbitrary HTTP response headers (CERN-style files) Expires HTTP responses Raw HTTP responses © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Diferentes tipos de módulos Scripting (+) mod_include (+) mod_cgi (+) mod_actions Server Side Includes (SSI) support Common Gateway Interface (CGI) support Map CGI scripts to act as internal `handlers’ Internal Content Handlers (+) mod_status (-) mod_info Content handler for server run-time status Content handler for server configuration summary © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Diferentes tipos de módulos Request Logging (+) (-) (-) (-) mod_log_config mod_log_agent mod_log_referer mod_usertrack Customizable logging of requests Specialized HTTP User-Agent logging (deprecated) Specialized HTTP Referrer logging (deprecated) Logging of user click-trails via HTTP Cookies Miscellaneous (+) mod_imap (-) mod_proxy (-) mod_so Server-side Image Map support Caching Proxy Module (HTTP, HTTPS, FTP) Dynamic Shared Object (DSO) bootstrapping © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 17 Diferentes tipos de módulos Experimental (-) mod_mmap_static Caching of frequently served pages via mmap() Development (-) mod_example Apache API demonstration (developers only) © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya ¿ Dónde encontrar módulos? • La comunidad de Apache es muy activa y podemos encontrar una gran variedad de módulos ya hechos http://modules.apache.org © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 6. Seguridad © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 18 Formas de protección • Filtro por dirección IP • Protección por username/password • Protección por certificado digital © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Protecciones por IP • Restringen el acceso por la dirección de la petición (allow/deny) • Más útil para rangos que para IP particulares, fácilmente falsificables. • Cuidado con los proxies • Si queremos acceder desde el exterior, no nos interesa © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Username/Password • Obligan a entrar un username y password para entrar a parte de nuestro web • El password viaja por la red muy poco protegido – Se puede solcionar con un servidor seguro • Nos permiten proteger sin limitar la localización del cliente © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 19 Certificado del cliente • Precisa un servidor seguro para poder utilizarlo • Cada cliente que tenga que acceder necesitará un certificado propio • Útil cuando queremos máxima seguridad en comunicaciones externas © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Agujeros de seguridad • Propio servidor web – Overflows de buffers • • • • Parámetros de los CGI CGI con setuid Directorios de usuarios y simbolic links Políticas poco restrictivas © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Consejos de seguridad • Ejecutar el servidor con pocos permisos – Usuario nobody / Grupo nogroup – Si hay algun error, no podrá hacer daño • Tratar los parámetros de los CGI • Controlar quién puede hacer CGI y dónde los puede poner • Desactivar lo que no sea necesario © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 20 Servidores seguros • Encriptan las comunicaciones entre el navegador y el servidor • Precisan un certificado en el servidor para autentificarse ante el cliente • Imprescindible si queremos transmitir información sensible – Informcación de comercio electrónico – Número de visa © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Módulo mod_ssl • Configuraremos el módulo para conexiones seguras SSL • Necesitamos las OpenSSL para compilar • Integración del módulo al núcleo • Generación de un certificado • Acceso seguro a nuestro Web Site © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 7. Soporte para contenido dinámico © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 21 Consideraciones de rendimiento • La forma más sencilla de tener contenido dinámico son los CGI • Coste asociado a crear un nuevo proceso: no son escalables • Alternativas a los CGI basadas en módulos de Apache © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Módulo de PHP3 • PHP3: equivalente a las páginas ASP de Microsoft • Interpretación por parte del módulo del código contenido en páginas HTML. • Añade un handler que normalmente asociaremos a las extensiones PHP3 © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Módulo para Servlets: mod_jserv • Módulo que enlaza Apache con un servidor de servlets • Servidor de servlets a parte del servidor – Permite que varios servidores hagan peticiones para ejecutar servlets a un único proceso – Podemos tener varios servidores en diferentes máquinas © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 22 JServ y Jakarta • Jakarta es un servidor de servlets desarollado conjuntamente con Sun • Se convertirá en la implementación de referencia • Utiliza igualmente el módulo Jserv para comunicarse con Apache. © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Otras opciones • mod_perl – Añade un intérprete de PERL al servidor – Ejecuta de forma “nativa” los scripts – Permite desarollar módulos en perl • Apache::ASP – precisa mod_perl – permite utilizar el modelo de programación de ASP, utilizando perl como lenguaje. © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 8. Búsqueda de Contenidos © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 23 Tipos de buscadores en la red • Buscadores por palabras • Buscadores de ficheros • Pagar por ser encontrado • Robots de búsqueda • Inserción de URL’s © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Filosofias de Ordenación • El que más paga • El que recibe más links del web • El que recibe más links de entre los encontrados © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Pistas para que nos encuentren • Directorio vs. Buscador – En los directorios hay que darse de alta – Los buscadores son automáticos • Objectivo: Conseguir que nos apunten – Los buscadores no nos encuentran si estamos aislados. • Controlando los robots: robots.txt © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 24 Buscadores en nuestro web • Podemos subcontratar el servicio de búsqueda • Sofware de búsqueda instalado en nuestro servidor – Indexación de directorios – Recorrido de las URL. © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Búsquedas en nuestro Web Site • Instalación del programa swish-e para realizar búsquedas en nuestro Web. • Indexación de los contenidos • Búsqueda del contenido • Instalación de un cgi pasarela para búsquedas © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 9. Análisis de nuestro Web © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 25 El formato básico de logs • IP origen de la peticion – Puede ser un proxy • Fecha y hora • Petición HTTP • Código de status retornado – Error / OK / no modificado © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Otras informaciones en los logs • Navegador que hace la petición • URL desde la que se ha hecho la petición (Referrer) – No todos los servidores lo soportan – No siempre está disponible – Permite saber desde donde se accede a las páginas © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Análisis de los logs • Ver los documentos más accedidos • Ver des de donde se conectan nuestros clientes • Visitas y horas punta • Carga del servidor • Errores © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 26 Aspectos a tener en cuenta • A través de los logs no sabemos cuanta gente sigue los links externos • 1 petición no es una página • Los logs ocupan mucho espacio – No utilizar ficheros demasiado grandes – Habilitar métodos para comprimir/borrar © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Formas de analizar • Programas comerciales – Web Trends – Fast Stats • Programas freeware – Generan salidas más sencillas • Cargar los logs en una base de datos para poder hacer consultas. © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Mantenimiento del Web • Búsqueda de páginas erronias o inexistentes • Recomendable alguien que dinamice nuestro web y actualice los contenidos • Buzón de sugeréncias o atención al cliente © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 27 Pruebas de carga • Se trata de simular las peticiones que recibirá nuestro Web Site y ver cómo responde. • Muertes de éxito • Dimensionar el servicio que ofrecemos • Algun software disponible: – torture.pl – Apache JMeter © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Entornos con muchas peticiones • Evitar los CGI • Balanceo de carga entre varios servidores – A través de DNS – Utilizando mod_proxy para redireccionar peticiones – Balanceo de carga entre varios servidores de servlets © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Tunning del servidor – Directivas relacionadas con los procesos del servidor dentro del Entorno Global – Permiten adaptar mejor nuestro sistema al numero de peticiones MinSpareServers 10 MaxSpareServers 20 StartServers 10 MaxClients 150 MaxRequestsPerChild 10000 © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 28 Más información • Apache – www.apache.org – www.apacheweek.com – modules.apache.org – www.modssl.org • Administración de web – www.webtecniques.com © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya Más información • E-negocis – http://www.tvcatalunya.com/e-negocis/ • Informit – http://www.informit.com • Netcraft – http://www.netcraft.co.uk/Survey/Reports/ © Jaume Moral, Albert Obiols y Fundació Politècnica de Catalunya 29