Servidor web apache

download Servidor web apache

If you can't read please download the document

Transcript of Servidor web apache

  • 1.
      • apache

Dani Gutirrez Porset [email_address] 2. ndice

  • Introduccin
  • Arquitectura modular. Directivas. Mdulos core, MPM, otros mdulos bsicos
  • Funcionalidades: Negociacin de contenidos, Host virtuales, Reescritura de URLs, Proxys, Contenidos dinmicos
  • Seguridad
  • Herramientas
  • Configuracin
  • Software
  • Referencias
  • Licencia de uso

3. Introduccin

  • Es una de las estrellas del sw libre:
    • El servidor web ms usado desde abril-96 (news.netcraft.com)
    • lAmp, wAmp
  • Usado en:
    • Wikipedia, Wikimedia
    • Google: GWS.
      • http://www.googlerank.com/ranking/Ebook/howgoogleworks.html

4. Introduccin

  • Multiplataforma:
    • Unix, Linux, BSD
    • Windows
    • OS/2
    • ...
  • Ramas de versiones:
    • 1.x (1.3)
    • 2.x (2.2, 2.0): ms modular, ms portable a otros S.O., threads, IPv6, nueva API

5. Introduccin

  • Desarrollado por la fundacin Apache:
    • Otros proyectos:
      • ant: herramienta para hacer builds semejante a make
      • jakarta: software opensource para java
      • lucene: motor de bsqueda
      • tomcat: contenedor de servlets y jsp
      • spamassassin
    • Licencias: v2.0 (compat. GPLv3), v1.1, v1.0. Tradicionalmente permiten distribuir cdigo abierto y cerrado.

6. Arquitectura modular

  • Compilados (static) o enlazados dinmicamente (shared)
  • Grupos:
    • Core.
    • Mdulos multiproceso.
    • Otros (refhttp://modules.apache.org ):
      • Propios de apache (ms de 70). Ejs: Filtrado (mod_include, mod_ext_filter), Compresin (mod_deflate), Cache (mod_*cache),...
      • Third-party. Ejs:
        • Interfaces a lenguajes: php, perl, python (lAmP/wAmP), tcl
        • mod_throttle, mod_bandwidth, mod_security,...

7. Directivas

  • Reglas sintcticas especficadas en los mdulos
  • Uso tpico de PCRE:
    • Perl-compatible regular expressions.
    • Ref:http://pcre.org/pcre.txt

8. Directivas

  • Contextos de aplicacin:
    • Servidor
    • Host virtual
    • , , ,
    • Ficheros .htaccess. (segn AccessFileName):
      • Se analizan en todos los directorios del path de cada documento accedido. Baja el rendimiento.
      • Recomendados slo para casos de cambios frecuentes que afecten a directorios ej. ISPs

9. Mdulo core

  • Opciones generales:
    • Directorio raz (/var/www), nombre del servidor, mail de contacto, banner de pgina
    • Charset, tipos mime (por defecto y forzados)
  • Directivas de contexto:
    • , , ,
    • Ficheros de control (.htaccess)
    • Options
  • Inclusin de otros ficheros
  • Cdigos y logs de errores.

10. Mdulo core

  • Del protocolo http: KeepAlive, lmites de mtodos, de tamao de peticiones.
  • Lmites de CPU, memoria, procesos (CGIs, SSIs). Timeout (normal, keepalive).
  • Tipo de autenticacin y control de acceso bsico (Require).
  • Host virtuales.
  • Handlers de ficheros.
  • Filtros de E/S.

11. Mdulos multiproceso (MPM)

  • Funciones:
    • Establecer conexiones (ej. directiva Listen)
    • Atender peticiones mediante threads y/o procesos
  • Utilidad: adaptarse a mltiples entornos:
    • Multiplataforma: aprovechar caractersticas del S.O. (ej. POSIX, Windows)
    • Necesidades concretas: escalabilidad vs estabilidad. Permiten limitar threads, procesos, peticiones de clientes.

12. Mdulos multiproceso (MPM)

  • No puede haber ms de un MPM a la vez en un servidor.
  • Posibilidades segn S.O.:
    • Unix:
      • prefork: sin threads (similar a v1.x):
        • Cada peticin es atendida por un proceso hijo. Hay algunos ya lanzados (idle).
        • Compatible con libreras non-thread-safe. Ms seguro: se aslan ms las peticiones
      • worker: con threads. Menos recursos que prefork.
      • event: semejante a worker. Experimental
    • Otros: Beos, Netware, OS/2, Windows

13. Otros mdulos bsicos

  • mod_autoindex, mod_dir: ndices de directorios.
  • mod_log_config, mod_logio: logs de acceso.
  • mod_setenvif: establece variables de entorno en funcin de la peticin.
  • mod_so: carga de mdulos dinmicos.
  • mod_status: da informacin del servidor.

14. Negociacin de contenidos

  • (Ver protocolo http)
  • Posibilidades:
    • Fichero de mapeo de tipos
    • Opcin Multiviews.
  • Criterios:
    • Idioma
    • Parmetro qs (source quality) ej. jpeg / gif
    • Charset
    • Codificacin ej. gz
  • Mdulos: mod_negotiation, mod_mime

15. Hosts virtuales

  • Tener varios servidores web en una sola mquina, con un nico apache.
  • Modalidades:
    • Basados en nombre: en una IP:puerto hay varios servidores virtuales. Ms sencillos
    • Basados en IP. Ej. casos:
      • Uso de SSL con host virtuales.
      • Gestin de ancho de banda
    • Basados en puerto

16. Hosts virtuales

  • Directivas principales:
    • Listen
    • NameVirtualHost (necesaria si name-based). Mejor emplear una IP en vez de un nombre.
    • . Mejor emplear una IP en vez de un nombre.
    • ServerName, ServerAlias, DocumentRoot
  • Mdulos:
    • Gestin sencilla: core
    • Gestin avanzada: mod_vhost_alias

17. Reescritura de URLs

  • Reescribir URLs (a zonas de ficheros, a otras URLs) en base a condiciones:
    • Cabeceras http, peticiones, fecha y hora,...
  • Mdulos:
    • Gestin sencilla: mod_alias (directivas Alias..., Redirect..., ScriptAlias...), mod_userdir
    • Gestin avanzada: mod_rewrite

18. Proxys

  • Posibilidades:
    • Proxys directo e inverso
    • Cadena de proxys remotos
    • Bloqueo a algunas direcciones
  • Mdulos:
    • mod_proxy
    • Segn el protocolo: mod_proxy_http, mod_proxy_ftp,...

19. Contenidos dinmicos

  • cgi (mod_cgi) / scgi / fast cgi.
    • El cgi recibe:
      • Variables de entorno (mod_env)
      • La peticin:http:...?campo1=valor1&campo2=... segn el mtodo:
        • GET: en la variable QUERY_STRING
        • POST: en stdin. Longitud en variable CONTENT_LENGTH
    • Pgina de respuesta: a travs de stdout
    • Utilidad: librera libcgi para cada lenguaje
  • ssi (mod_include)
  • php, servlets, jsp, asp, asp.net, server api (nsapi, isapi),...

20. Seguridad

  • Mdulos segn las 2 fases:
    • Autenticacin: determinar quin se conecta.
      • Tipo de autenticacin (mod_auth_...): (segn el protocolo http) basic, digest
      • Proveedor de autenticacin (mod_authn_,...): fichero, base de datos (sql, dbm), ldap, annimo
    • Autorizacin (mod_authz_...): determinar si el usuario, autenticado o annimo, est autorizado o no aaccedera un recurso concreto.
      • Ejs. que pertenezca a una lista de usuarios, a un grupo, que sea el propietario

21. Seguridad

  • Control de acceso: determinar si es posible el acceso en base a condiciones ej. equipo cliente, hora,...
    • Mdulos:
      • mod_authz_host:
        • Restriccin segn IP/nombre del cliente, caractersticas de la peticin (variables de entorno con mod_setenv_if)
        • Importante: hace tres pasadas segn la directiva Order.
      • mod_rewrite, ej. segn la hora

22. Seguridad

  • Protocolo ssl/tls: mod_ssl
    • Funcionalidades:
      • Autenticacin de servidor. Requiere como mnimo indicar un certificado y una clave privada
      • Autenticacin de clientes.
      • Uso de proxy reenviando peticiones a servidor ssl
    • Todos los formatos son PEM
    • Virtual hosts: Cada servidor virtual https se corresponde con una ip y un puerto. Por tanto no puede emplearse virtual hosts basados en nombre.

23. Herramientas

  • [del paquete apache2-utils]
  • Autenticacin de usuarios:
    • DBM: dbmmanage, htdbm
    • Ficheros: htpasswd (basic), htdigest (digest)
  • Apache benchmarking: ab
  • Ficheros de log:
    • logresolve: resolucin de nombres de IPs
    • rotatelogs: rotacin
    • check_forensic: anlisis forense
  • Otros (htcacheclean, checkgid)

24. Configuracin

  • [lo indicado aqu aplica a la versin 2]
  • Tipos de ficheros:
    • Ficheros de configuracin
    • Mdulos
    • Ficheros .htaccess (directiva AccessFileName)
    • Fichero de tipos MIME (directiva TypesConfig)

25. Configuracin

  • Ficheros de configuracin
    • apache2.conf: es el principal.
    • Otros ficheros ledos con directiva Include:
      • ports.conf: puertos de escucha (puede escuchar por ms de uno)
      • httpd.conf: por compatibilidad con versiones anteriores de apache
      • conf.d/: otros ficheros de configuracin
      • mods-enabled/: mdulos habilitados. Son softlinks a mdulos disponibles (mods-available/*)
      • sites-enabled/: sitios habilitados. Son softlinks a sitios disponibles (sites-available/*)

26. Software (paquetes ubuntu)

  • apt-cache search apache| grep -i apache
    • Autenticacin/Autorizacin: mysql, postgresql, radius, shadow, pam, ldap, kerberos, webauth,...
    • Lenguajes: php, perl, python, Tomcat servlets, asp, mono, ruby, fast cgi, scgi
    • Herramientas:
      • Monitorizacin y benchmarking, Gestin de logs.
      • Seguridad, ej. limitacin de conexiones y/o trfico, chroot, filtrado avanzado, DNSBL, Oasis saml, AppArmor,...
    • Extensiones: FrontPage, streaming, macros, virtual hosts, xml, xslt, GeoIP, bittorrent,...
    • Plataformas externas, ej. Subversion, request-tracker, gforge, sope,...
    • Libreras: libapr1 (apache portable runtime library), libapreq2 (apache request library)

27. Referencias

  • Principales:
    • http://httpd.apache.org
    • http://httpd.apache.org/docs/2.2/
  • Refs. seguridad:
    • http://httpd.apache.org/docs/2.2/misc/security_tips.html
    • http://www.modsecurity.org/
    • http://www.slideshare.net/abhishek_singh/web-intrusion-detection
    • http://www.slideshare.net/ozh/apache-and-php-security
    • http://gallir.wordpress.com/2008/03/16/protegete-de-los-bots-agresivos/
  • Refs. rendimiento:
    • http://httpd.apache.org/docs/2.2/misc/perf-tuning.html
    • http://highscalability.com/tags/apache
    • http://www.ibm.com/developerworks/linux/library/l-tune-lamp-1/
    • http://www.xtec.net/~acastan/textos/Tuning%20LAMP.pdf
    • http://www.slideshare.net/loretahur/escalabilidad-apache-y-mysql/

28. Licencia de uso

    • http://creativecommons.org/licenses/by-sa/3.0/