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 ‣ 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. 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.
El tamaño de la caché 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.
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.
La característica Activar Single Sign-On (Kerberos) sirve para validar el usuario automáticamente usando el ticket de Kerberos creado al inicio de sesión, por lo tanto nos puede ser útil si estamos usando proxy No Transparente, políticas de acceso por grupos y, por supuesto, un esquema de autorizaciones basado en Kerberos. El funcionamiento del esquema mencionado se desarrollará en el capítulo Servicio de compartición de ficheros y de autenticación.
Advertencia
Si vamos a usar autenticación automática con Kerberos, al configurar el navegador cliente tendremos que especificar nuestro proxy (el servidor zentyal) por su nombre en el dominio local, nunca por IP.
El proxy HTTP puede eliminar anuncios de las paginas web. Esto ahorrara ancho de banda y reducirá distracciones e incluso riesgos de seguridad para los usuarios. Para usar esta característica, debemos activar la opción Bloqueo de Anuncios.
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. 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.
Mediante el Período de tiempo podemos 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.
El Orígen es un parámetro muy flexible, ya que nos permite definir si esta regla se aplicacará a los miembros de un Objeto de Zentyal o a los usuarios de un determinado Grupo (recordemos que las restricciones por grupo sólo están disponibles para el modo de Proxy no transparente). La tercera opción es aplicar la regla sobre cualquier tipo de tráfico que atraviese el proxy.
Advertencia
Por limitaciones de DansGuardian no son posibles ciertas combinaciones de reglas basadas en grupo y reglas basadas en objeto. La interfaz de Zentyal avisará al usuario cuando se de uno de estos casos.
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:
Cualquiera podrá acceder sin restricciones durante el fin de semana, ya que es la regla situada más arriba. El resto del tiempo, las peticiones que provengan del objeto de red ‘Marketing’ se tendrán que aprobar por los filtros y políticas definidos en ‘filtro_estricto’, las peticiones que provengan del objeto ‘Desarrolladores’ podrán acceder sin restricciones. Las peticiones que no estén contempladas en ninguna de estas tres reglas, serán denegadas.
Filtrado de contenidos con Zentyal¶
Zentyal permite el filtrado de páginas web en base a su contenido. Se pueden definir múltiples perfiles de filtrado en Proxy HTTP ‣ Perfiles de Filtrado.
Accediendo a la Configuración de estos perfiles, podremos especificar diversos criterios para ajustar el filtro a nuestros certificados. En la primera pestaña podemos encontrar los Umbrales de contenido y el filtro del antivirus. Para que aparezca la opción de antivirus, el módulo Antivirus debe estar instalado y activado.
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.
Finalmente, en la parte inferior, tenemos la lista de reglas, donde podremos especificar los dominios que queremos aceptar o denegar.
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 hayamos configurado la lista, podemos seleccionar que categoría en concreto deseamos permitir o denegar desde la pestaña Categorías de dominios del filtro.
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 [3] son un identificador de formato en Internet, por ejemplo application/pdf.
Como podemos ver en la imagen, la propia columna Permitir tiene una casilla donde podremos elegir si el comportamiento por defecto será denegar todos o aceptar todos los tipos.
[3] | http://en.wikipedia.org/wiki/Mime_type |
Contamos con una interfaz similar para las extensiones de ficheros descargados mediante nuestro proxy:
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 [4]. 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.
Truco
Este tipo de algoritmos es útil para permitir descargas de cierto tamaño, si no son sostenidas en el tiempo. Por ejemplo, en un centro educativo, podemos descargar un PDF, esto consumirá parte de la cubeta pero descargará a máxima velocidad. Sin embargo, si el usuario utiliza una aplicación de P2P, consumirá rápidamente toda su reserva.
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.
En el ejemplo de la captura de pantalla, cada uno de los usuarios individuales del objeto Ventas 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.
[4] | http://es.wikipedia.org/wiki/Conformado_de_tr%C3%A1fico#Token_Bucket |