Servicio de Proxy HTTP

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

[1]Squid: http://www.squid-cache.org
[2]E2guardian: http://e2guardian.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 ‘TCP/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.

Otra opción disponible en la misma sección de la configuración es el Tamaño de caché, que define el espacio máximo en disco usado para almacenar temporalmente contenidos web. 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 opción Habilitar Single Sign-On (Kerberos). Esta funcionalidad 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 Servicio de Dominio y Directorio.

Configuración general del Proxy HTTP

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. Puede que sea por cuestiones de privacidad de los usuarios o simplemente porque las páginas no funcionan correctamente si son accedidos a través de un proxy. En esos casos, podemos añadir una excepción en Excepciones del Proxy Transparente.

Almacenamiento en caché del Proxy HTTP

Almacenamiento en caché del Proxy HTTP

Advertencia

No es posible añadir un subdominio de otro dominio existente debido a una limitación de Squid. Podemos leer más sobre ella aquí [3].

[3]Limitación: https://wiki.squid-cache.org/SquidFaq/SquidAcl#Squid_doesn.27t_match_my_subdomains

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.

Nueva regla de acceso al proxy

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:
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 Servicio de Dominio y Directorio. 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. Aún así, nos permite 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. Encontramos más información sobre los perfiles de filtrado en el siguiente apartado.

Observemos el siguiente ejemplo:

Un ejemplo de reglas de acceso en el proxy HTTP

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 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.

Perfiles de filtrado disponibles para las reglas de acceso

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.

Configuración general de un perfil

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.

Reglas de dominios y URLs

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.

Dominios y URLs a permitir o bloquear

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 [4] o E2guardian [5]. Para este ejemplo descargaremos una lista de URLs desde Shallalist [6].

Listas de categorías

Listas de categorías

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.

Gestionando las distintas categorías disponibles

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 [7] son un identificador de formato en Internet, por ejemplo application/zip.

Filtro de tipos MIME

Filtro de tipos MIME

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

Denegando los ficheros con extension 'bat' y 'bin'.

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

[4]Squid: http://www.squid-cache.org
[5]E2guardian: http://e2guardian.org/
[6]Shallalist: http://www.shallalist.de/Downloads/shallalist.tar.gz
[7]MIME: http://en.wikipedia.org/wiki/Mime_type

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 habilitar esta funcionalidad, 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:

Bloquear tráfico HTTPS por dominio

Bloquear tráfico HTTPS por dominio

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 [8]. 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.

Limitación de ancho de banda

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.

[8]Token bucket: http://es.wikipedia.org/wiki/Token_bucket