servidor web apache
TRANSCRIPT
- 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/