Servicio de Proxy HTTP

Zentyal utiliza Squid [1] para proxy HTTP junto a Dansguardian [2] para el control de contenidos.

[1]http://www.squid-cache.org
[2]http://www.dansguardian.org

Configuración general del Proxy HTTP con Zentyal

Para configurar el proxy HTTP iremos a Proxy HTTP ‣ Configuración General. Podremos definir si el proxy funciona en modo Proxy Transparente para forzar la política establecida o si por el contrario requerirá configuración manual. En cualquier caso, en Puerto estableceremos dónde escuchará el servidor conexiones entrantes. El puerto preseleccionado es el 3128, otros puertos típicos son el 8000 y el 8080.

Advertencia

El proxy de Zentyal únicamente acepta conexiones provenientes de las interfaces de red internas, por tanto, se debe usar una dirección interna en la configuración del navegador.

Otras opciones disponibles en la misma sección de la configuración es el tamaño de la caché, que define el espacio en disco máximo usado para almacenar temporalmente contenidos web. Se establece en Tamaño de caché y corresponde a cada administrador decidir cuál es el tamaño óptimo teniendo en cuenta las características del servidor y el tráfico esperado.

Además, también está disponible la funcionlidad Habilitar Single Sign-On(Kerberos) que permite validar automáticamente al usuario usando tickets de Kerberos generados al iniciar sesión en el dominio. Puedes encontrar más información sobre la autenticación de los usuarios en Controlador de Dominio y Compartición de ficheros .

_images/proxy-general.png

Configuración general del Proxy HTTP

Es posible indicar que dominios no serán almacenados en caché. Por ejemplo, si tenemos servidores web locales, no se acelerará su acceso usando la caché y se desperdiciaría memoria que podría ser usada por elementos de servidores remotos. Si un dominio está exento de la caché, cuando se reciba una petición con destino a dicho dominio se ignorará la caché y se devolverán directamente los datos recibidos desde el servidor sin almacenarlos. Estos dominios se definen en Excepciones a la caché.

A su vez, puede interesarnos que ciertas páginas no se sirvan a través del proxy, sino que se conecte directamente desde el navegador del cliente, ya sea por cuestiones de funcionamiento incorrecto o de privacidad de los usuarios. En esos casos, podemos añadir una excepción en Excepciones del Proxy Transparente.

_images/proxy-cache.png

Almacenamiento en caché del Proxy HTTP

Reglas de acceso

Una vez hayamos decidido nuestra configuración general, tendremos que definir reglas de acceso. Por defecto, la seccion Proxy HTTP ‣ Reglas de acceso contiene una regla permitiendo todo acceso.

Advertencia

Al igual que en el Cortafuegos, la política por omisión de regla siempre será denegar y la regla que tendrá preferencia en caso de que varias sean aplicacables será la que se encuentre más arriba.

_images/proxy-rule.png

Nueva regla de acceso al proxy

Período de tiempo:

Permite definir en que momento se tendrá en consideración esta regla, tanto las horas como los días. Por defecto se aplica en todo momento.

Origen:

Es un parámetro que nos permite definir si esta regla se aplicacará a los miembros de un Objeto de Zentyal, a un Grupo de Usuarios o a cualquier tipo de tráfico que atraviese el proxy. Para poder seleccionar Grupos de Usuarios habrá que tener configurado previamente el Controlador de Dominio y Compartición de ficheros. Además, dicha funcionalidad sólo está disponible en la versión comercial.

Decisión:

De forma similar al Cortafuegos, una vez Zentyal haya decidido que el tráfico coincide con una de las reglas definidas, debemos indicarle una Decisión, en el caso del Proxy hay tres opciones:

  • Permitir todo: Permite todo el tráfico sin hacer ninguna comprobación, nos permite aún así, seguir disfrutando de caché de contenidos web y registros de accesos.
  • Denegar todo: Deniega la conexión web totalmente.
  • Aplicar perfil de filtrado: Para cada petición, comprobará que los contenidos no incumplen ninguno de los filtros definidos en el perfil, se desarrollarán los perfiles de filtrado en el siguiente apartado.

Observemos el siguiente ejemplo:

_images/proxy-access.png

Un ejemplo de reglas de acceso en el proxy HTTP

Como se puede observar en la imagen, nadie podrá acceder el fin de semana, ya que es la regla situada más arriba. Entre semana el objeto de red ‘Desarrolladores‘ podrán acceder sin restricciones. Por último, el objeto de red ‘Marketing‘ únicamente tendrá acceso entre semana y de 08:00 - 15:00 , además, todas las peticiones que se tendrán que aprobar por los filtros y políticas definidos en el perfil ‘Perfil_Marketing‘ .

Perfiles de filtrado

Zentyal permite el filtrado de páginas web en base a su contenido. Es posible definir múltiples perfiles de filtrado en Proxy HTTP ‣ Perfiles de Filtrado.

_images/proxy-profile.png

Perfiles de filtrado disponibles para las reglas de acceso

Accediendo a la Configuración de estos perfiles, podremos especificar diversos criterios para ajustar el filtro a nuestras necesidades. En la primera pestaña podemos encontrar los Umbrales de contenido y el filtro del antivirus.

_images/proxy-profile_conf.png

Configuración general de un perfil

Advertencia

Para que aparezca la opción de antivirus, el módulo Antivirus debe estar instalado y habilitado.

Estos dos filtros son dinámicos, es decir analizarán cualquier página en busca de palabras inapropiadas o virus. El umbral de contenidos puede ser ajustado para ser más o menos estricto, esto influirá en la cantidad de palabras inapropiadas que permitirá antes de rechazar una página.

En la siguiente pestaña Reglas de dominios y URLs podemos decidir de forma estática que dominios estarán permitidos en este perfil. Podemos decidir Bloquear sitios especificados sólo como IP, para evitar que alguien pueda evadir los filtros de dominios aprendiendo las direcciones IP asociadas. Así mismo con la opción Bloquear dominios y URLs no listados podemos decidir si la lista de dominios más abajo se comporta como una blacklist o una whitelist, es decir, si el comportamiento por defecto será aceptar o denegar una página no listada.

_images/proxy-profile_domain1.png

Reglas de dominios y URLs

Finalmente, en la parte inferior, tenemos la lista de reglas, donde podremos especificar los dominios que queremos aceptar o denegar.

_images/proxy-profile_domain2.png

Dominios y URLs a permitir o bloquear

Para usar los filtros por Categorías de dominios debemos, en primer lugar, cargar una lista de dominios por categorías. Configuraremos la lista de dominios para el Proxy desde Proxy HTTP ‣ Listas por categorías. Una vez ahi seleccionaremos un archivo que contenga la lista de URLs agrupadas en categorias destinadas para el uso de filtros como SquidGuardian [3] o DansGuardian [4]. Para este ejemplo descargaremos una lista de URLs, desde [5] Shallalist .

_images/proxy-profile_lists.png

Una vez hayamos configurado la lista, podemos seleccionar que categoría en concreto deseamos permitir o denegar desde la pestaña Categorías de dominios del perfil de filtrado.

_images/proxy-profile_lists2.png

Gestionando las distintas categorías disponibles

En las dos pestañas restantes podemos decidir los tipos de contenido o ficheros que serán aceptados por este perfil, ya sea por tipo MIME o por extensión de fichero. Los tipos MIME [6] son un identificador de formato en Internet, por ejemplo application/zip.

_images/proxy-profile_mime.png

Filtro de tipos MIME

Por último, contamos con una interfaz similar para las extensiones de ficheros descargados mediante nuestro proxy HTTP:

_images/proxy-profile_extension.png

Denegando los ficheros con extension ‘bat’ y ‘bin’.

[3]http://www.squid-cache.org
[4]http://www.dansguardian.org
[5]http://www.shallalist.de/Downloads/shallalist.tar.gz
[6]http://en.wikipedia.org/wiki/Mime_type

Limitación de ancho de banda

El Proxy nos permite implementar un límite flexible para controlar el ancho de banda que consumen nuestros usuarios. Este límite está basado en los algoritmos de cubeta con goteo o Token bucket [7]. En estos algoritmos tenemos una cubeta con una reserva (en nuestro caso de ancho de banda) y una velocidad de llenado de la cubeta. La velocidad de vaciado dependerá de las descargas del usuario. Si el usuario hace un uso razonable de la conexión, la cubeta se rellenará más rápido de lo que la vacía, por lo que no habrá penalización. Si el usuario empieza a vaciar la cubeta mucho más rápido de lo que esta se llena, se vaciará, y a partir de entonces se tendrá que conformar con la velocidad de llenado únicamente.

Por cada límite de ancho de banda que definamos para un objeto determinado, podemos configurar dos tipos de cubetas: globales del objeto y por cliente. Como su nombre indica, dentro del objeto, cada uno de los puestos consumirá de su cubeta por cliente y todos consumirán de la cubeta global.

_images/proxy-limitation.png

Limitación de ancho de banda

En el ejemplo de la captura de pantalla, cada uno de los usuarios individuales del objeto Marketing cuenta con una cubeta de 50MB, si la gastan completamente, la conexión web funcionará a 30KB/s como máximo hasta que dejen de descargar por un tiempo. Una vez vacía, la cubeta tardará unos 28 minutos aproximadamente en volver a contener 50MB. En el ejemplo no se configura una cubeta global para el objeto.

[7]http://es.wikipedia.org/wiki/Conformado_de_tr%C3%A1fico#Token_Bucket

Bloqueo HTTPS por dominio

Aunque el Proxy no puede analizar el contenido del tráfico HTTPS dado que se encuentra cifrado, Zentyal implementa una integración con el cortafuegos para bloquear los paquetes salientes dirigidos al puerto 443 que contengan un determinado nombre de dominio. Esta funcionalidad solo se encuentra disponible en la Edición Comercial de Zentyal.

Para habilitarlo acudiremos a Proxy HTTP ‣ Perfiles de filtrado, crearemos un perfil o editaremos uno existente y simplemente marcaremos la casilla Bloquear tráfico HTTPS por dominio que se encuentra en la pestaña Reglas de dominios y URLs.

A partir de este momento, una vez guardados los cambios, cualquier dominio con decisón Denegar que añadamos en la lista de debajo será bloqueado. Podemos ver un ejemplo en la siguiente imagen:

_images/proxy-https.png

Bloquear tráfico HTTPS por dominio a través del firewall