jueves, 16 de septiembre de 2010

Módulos de optimización y hardening de un servidor Apache

Aceleración
 
* mod_gzip/mod_deflate: En general, casi todos los clientes web son capaces de "hablar" HTTP recibiendo los datos comprimidos por parte del servidor. La idea es configurar el servidor web para que sea capaz de servir los datos comprimidos, ahorrando parte del ancho de banda disponible acelerando el tráfico web. Tanto mod_gzip como mod_deflate son capaces de comprimir los datos servidos.

* mod_cache: Es sobre todo útil cuando se usa a la vez que mod_proxy (se verá más adelante). La idea es que Apache cachee los datos que ya ha servido, y no tenga que procesar las peticiones de nuevo. Este módulo depende a su vez de mod_disk_cache y mod_mem_cache para cachear la información en un espacio de disco o en memoria predefinidos para ello. En el caso de usarse con mod_proxy, la idea es que el servidor web final tenga una carga inferior para los contenidos más utilizados, estando estos cacheados en el servidor Apache que actúa como proxy intermedio.

C
onfidencialidad y autenticación

* mod_ssl: El tráfico web HTTP va en claro o sin cifrar. Si queremos ser capaces de hacer que el servidor web trabaje sirviendo datos cifrados desde extremo a extremo mediante HTTPS, debemos habilitar mod_ssl. De esta forma incluso podremos exigir a nuestros clientes la autenticación mediante certificados SSL X.509 de cliente (soportados mediante SSL v3).

* mod_auth_*: Si queremos que ciertas partes de los datos que servimos vía web requieran otro tipo de autenticación basado en usuario y contraseña, Apache nos provee de una infinidad de módulos para esta funcionalidad. El más básico es mod_auth. Podemos exigir autenticación Básica y Digest comparando los pares usuario/contraseña (o hash de la misma) contra un fichero, por convención llamado .htaccess, y permitir o no el acceso a los datos. Sin embargo, muchas veces se quiere utilizar para autenticar otros servidores de autenticación centralizada como pueden ser Radius, LDAP, Directorio Activo o una base de datos mysql por ejemplo. Para ello contamos con: mod_auth_radius, mod_auth_ldap o mod_auth_mysql por ejemplo.

Protección ante ataques

* mod_security: Tanto de forma embebida en el servidor web final, como en conjunción con mod_proxy para proteger ante accesos internos, mod_security es la alternativa libre en cuanto al software de Cortafuegos de Aplicación Web (o WAF) de los que hemos hablado varias veces en SbD. La idea es blindar el servidor web ante las peticiones que puedan ser ataques de tipo Inyección SQL o XSS, entre otros...

* mod_proxy: Una de las mejores maneras de aislar un servidor del mundo exterior es poner un proxy inverso de por medio. De esta manera, publicamos un servidor Apache en este caso hacia fuera y las peticiones se las lleva éste, como se hace en un sistema de correo con un relay que comprueba el spam y los virus. Así, si queremos incluso balancear tráfico entre diferentes servidores web finales, Apache con mod_proxy hará las peticiones hacia los internos. Como se comentó anteriormente, si además utilizamos mod_cache, podremos acelerar la aplicación web al cachear en el proxy inverso según que tipo de contenidos. Lo mismo ocurre con mod_security, al recibir Apache las peticiones, efectuará las que considere sanas hacia el servidor web final, no dejando pasar las demás.

* mod_evasive/mod_qos/mod_limitipconn/mod_antiloris: Dotar de la mayor disponibilidad posible el sistema es una de las labores de varios módulos diferentes. El más completo de todos es mod_evasive, aunque los otros módulos expuestos son buenas alternativas si sólo queremos limitar la Calidad de Servicio del servidor Apache mediante el ancho de banda y/o número de conexiones desde una determinada IP. Con mod_evasive incluso se puede reaccionar de forma dinámica cuando se detecte un ataque, bloqueando vía IPTables la IP atacante, avisos por correo o syslog, etc,... La idea principal de estos módulos es evitar los ataques de denegación de servicio debido al consumo de los recursos disponibles en el servidor. mod_antiloris está especificado para evitar ataques con la herramienta Slowloris. Lo he probado en una red local y efectivamente lo que antes bloqueaba mi Apache, al aplicarlo, permite que se siga utilizando por otras IPs.
(Security by Default)

No hay comentarios:

Publicar un comentario

Entradas populares