Dani Gutirrez Porset [email_address] 2. ndice
- Arquitectura modular. Directivas. Mdulos core, MPM, otros
mdulos bsicos
- Funcionalidades: Negociacin de contenidos, Host virtuales,
Reescritura de URLs, Proxys, Contenidos dinmicos
3. Introduccin
- Es una de las estrellas del sw libre:
-
- El servidor web ms usado desde abril-96
(news.netcraft.com)
-
-
-
http://www.googlerank.com/ranking/Ebook/howgoogleworks.html
4. Introduccin
-
- 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:
-
-
- ant: herramienta para hacer builds semejante a make
-
-
- jakarta: software opensource para java
-
-
- tomcat: contenedor de servlets y jsp
-
- 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)
-
- Otros (refhttp://modules.apache.org ):
-
-
- Propios de apache (ms de 70). Ejs: Filtrado (mod_include,
mod_ext_filter), Compresin (mod_deflate), Cache
(mod_*cache),...
-
-
-
- Interfaces a lenguajes: php, perl, python (lAmP/wAmP), tcl
-
-
-
- mod_throttle, mod_bandwidth, mod_security,...
7. Directivas
- Reglas sintcticas especficadas en los mdulos
-
- Perl-compatible regular expressions.
-
- Ref:http://pcre.org/pcre.txt
8. Directivas
-
- 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
-
- Directorio raz (/var/www), nombre del servidor, mail de
contacto, banner de pgina
-
- Charset, tipos mime (por defecto y forzados)
-
- Ficheros de control (.htaccess)
- 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).
11. Mdulos multiproceso (MPM)
-
- 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.
-
-
- 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
-
- Fichero de mapeo de tipos
-
- Parmetro qs (source quality) ej. jpeg / gif
- Mdulos: mod_negotiation, mod_mime
15. Hosts virtuales
- Tener varios servidores web en una sola mquina, con un nico
apache.
-
- Basados en nombre: en una IP:puerto hay varios servidores
virtuales. Ms sencillos
-
- Basados en IP. Ej. casos:
-
-
- Uso de SSL con host virtuales.
16. Hosts virtuales
-
- 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
-
- 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,...
-
- Gestin sencilla: mod_alias (directivas Alias..., Redirect...,
ScriptAlias...), mod_userdir
-
- Gestin avanzada: mod_rewrite
18. Proxys
-
- Bloqueo a algunas direcciones
-
- Segn el protocolo: mod_proxy_http, mod_proxy_ftp,...
19. Contenidos dinmicos
- cgi (mod_cgi) / scgi / fast cgi.
-
-
- 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
- php, servlets, jsp, asp, asp.net, server api (nsapi,
isapi),...
20. Seguridad
-
- 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,...
-
-
-
- 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
-
-
- 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:
-
- Ficheros: htpasswd (basic), htdigest (digest)
-
- logresolve: resolucin de nombres de IPs
-
- check_forensic: anlisis forense
- Otros (htcacheclean, checkgid)
24. Configuracin
- [lo indicado aqu aplica a la versin 2]
-
- Ficheros .htaccess (directiva AccessFileName)
-
- Fichero de tipos MIME (directiva TypesConfig)
25. 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
-
-
- 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
-
- http://httpd.apache.org/docs/2.2/
-
- 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/
-
- 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/