Está en la página 1de 59

Proxy HTTP

Este capítulo está dedicado a la instalación y configuración de un


servidor proxy http con características de caché y control de acceso.
Se comienza con una breve introducción al funcionamiento de este
tipo de servidores para posteriormente pasar a la implementación
práctica. Se verá Microsoft Forefront Threat Management Gateway
en plataformas Windows y Proxy Squid para plataformas Linux.

Proxy HTTP by Rafael Lozano is licensed under a Creative Commons Reconocimiento-NoComercial-


CompartirIgual 3.0 España License.
Información técnica
Nivel de usuario: Avanzado
Escenario: La instalación y configuración de un servidor proxy HTTP se ha realizado y probado sobre
dos redes locales virtuales independientes creadas en VirtualBox v5. En la primera se ha utilizado un
servidor Windows Server 2008 32 bits. Posteriormente, en la red local interna hay dos servidores
Windows Server 2012 y 2008, y un cliente Windows 7 con la siguiente configuración:

Conexiones de Red
Hostname
Máquina VirtualBox Red Interna Servidores de Puerta de Software
Virtual SO Hardware Red NAT red_windows Nombres Enlace adicional
Proxy WS 2008 HD 30GB Dinámica en 192.168.20.11/24 192.168.20.11 172.16.0.1 Forefront
R2 RAM 2GB 172.16.0.0/16 TMG 2010
SeWiPr WS 2012 HD 30GB 192.168.20.1/24 127.0.0.1 192.168.20.11 Ninguno
RAM 2GB
SeWiSe WS 2012 HD 30GB 192.168.20.10/24 192.168.20.1 192.168.20.11 Ninguno
RAM 1,5GB reservada DHCP
CW W8 HD 15GB Dinámica en 192.168.20.1 192.168.20.11 Ninguno
RAM 1 GB 192.168.20.0/24

En la siguiente red se ha empleado un servidor Lubuntu 14.04 y un cliente con el mismo sistema
operativo, según la siguiente configuración

Conexiones de Red
Hostname
Máquina VirtualBox Red Interna Servidores de Puerta de Software
Virtual SO Hardware Red NAT red_linux Nombres Enlace adicional
Proxy Lubuntu HD 5GB Dinámica en 192.168.21.11/24 192.168.21.1 172.16.0.1 Ninguno
14.04 RAM 0,5GB 172.16.0.0/16
SeLiPr Lubuntu HD 5GB 192.168.21.1/24 127.0.0.1 192.168.21.11 Ninguno
14.04 RAM 0,5GB
SeLiSe Lubuntu HD 5GB 192.168.21.10/24 192.168.21.1 192.168.21.11 Ninguno
14.04 RAM 256 MB reservada DHCP
CL Lubuntu HD 5GB Dinámica en 192.168.21.1 192.168.21.11 Ninguno
14.04 RAM 256 MB 192.168.21.0/24

Para que los clientes de una red privada puedan acceder a Internet a través del proxy HTTP es
necesario que los servidores DHCP estén configurados correctamente y funcionando para que estos
clientes puedan obtener una configuración de red. También, es fundamental que los servidores DNS
estén correctamente configurados. Así, los clientes podrán disponer de direccionamiento IP y
resolución de nombres.

Conocimientos previos: Es necesario tener conocimientos teóricos y prácticos de la configuración


TCP/IP de una interfaz de red, en plataformas Windows y Linux. Para la parte de Linux se necesita
saber el uso de un editor de texto plano, como nano o vi, además de los comandos básicos de Unix
en gestión de archivos y directorios.
Fecha del documento: Febrero 2016

I
Esquema de red: La conexión de red es la siguiente

II
Tabla de contenido

Tabla de contenido

1. Introducción al proxy HTTP.............................................................................................................1


2. Microsoft Forefront Threat Management Gateway...................................................................2
2.1 Instalación............................................................................................................................................................. 2
2.2 Configurar los valores de implementación iniciales...................................................................................5
2.2.1 Configurar opciones de red..................................................................................................................... 6
2.2.2 Configurar opciones del sistema............................................................................................................ 7
2.2.3 Definir las opciones de implementación..............................................................................................8
2.3 Consola de administración............................................................................................................................... 9
2.4 Servicios básicos............................................................................................................................................... 10
2.5 Asistente para acceso web............................................................................................................................. 11
2.6 Configuración de los clientes......................................................................................................................... 14
2.7 Inspección HTTPS............................................................................................................................................. 17
2.8 Control del acceso............................................................................................................................................ 21
2.8.1 Acceso autenticado................................................................................................................................. 21
2.8.2 Impedir acceso a un sitio web.............................................................................................................. 23
2.8.3 Restricciones horarias............................................................................................................................ 25
2.8.4 Restricciones de usuarios y grupos..................................................................................................... 27
2.9 Peticiones entrantes........................................................................................................................................ 29
2.9.1 Publicar un servidor web....................................................................................................................... 29
2.9.2 Publicar un servidor FTP........................................................................................................................ 32
2.9.3 Publicar un servidor Exchange............................................................................................................. 33
2.10 Proxy cache...................................................................................................................................................... 34
2.10.1 Descarga programada.......................................................................................................................... 36

3. Proxy Squid...................................................................................................................................... 37
3.1 Instalación........................................................................................................................................................... 38
3.2 Configuración..................................................................................................................................................... 38
3.2.1 Comprobando la configuración de squid..........................................................................................39
3.2.2 Configuración inicial................................................................................................................................ 40
3.3 Configuración de los clientes......................................................................................................................... 40
3.4 Control de acceso............................................................................................................................................. 42
3.4.1 Definir ACL's.............................................................................................................................................. 42
3.4.1.1 ACL basada en la dirección IP de origen.......................................................................................... 43
3.4.1.2 ACL basada en puertos........................................................................................................................ 44
3.4.1.3 ACL basada en el método de conexión...........................................................................................44
3.4.1.4 ACL basada en nombres de dominio de destino..........................................................................44
3.4.1.5 ACL basada en la URL.......................................................................................................................... 44
3.4.1.6 ACL basada en la ruta de la URL........................................................................................................ 44
3.4.1.7 ACL basada en la dirección IP de destino........................................................................................45
3.4.1.8 ACL basadas en tiempo....................................................................................................................... 45
3.4.2 Lista de acceso......................................................................................................................................... 45
3.4.3 Autenticación de usuarios..................................................................................................................... 46
3.5 Construyendo el filtro de peticiones............................................................................................................ 47
3.6 Caché de memoria........................................................................................................................................... 50

Índice I
3.7 Caché de disco.................................................................................................................................................. 50

4. Bibliografía........................................................................................................................................53

Índice II
Rafael Lozano Proxy HTTP

Proxy HTTP

1. Introducción al proxy HTTP


Un servidor proxy es un equipo que actúa de intermediario entre un explorador web e Internet.
Los servidores proxy ayudan a mejorar el rendimiento en Internet ya que almacenan una copia de las
páginas web más utilizadas. Cuando un explorador solicita una página web almacenada en la
colección (su caché) del servidor proxy, el servidor proxy la proporciona, lo que resulta más rápido
que consultar la Web. Los servidores proxy también ayudan a mejorar la seguridad, ya que filtran
algunos contenidos web y software malintencionado.

Los servidores proxy se utilizan a menudo en redes de organizaciones y compañías.


Normalmente, las personas que se conectan a Internet desde casa no usan un servidor proxy.

El funcionamiento de un proxy HTTP es muy simple en su concepción básica. El servidor proxy


mantiene copia de las respuestas a peticiones recientes. El cliente HTTP envía una petición al servidor
proxy. El servidor proxy comprueba su caché. Si la respuesta no está en la caché, el proxy envía la
petición al servidor web correspondiente. Las respuestas llegan al servidor proxy y las almacena para
peticiones futuras de otros clientes.

El servidor proxy reduce la carga en el servidor original, reduce el tráfico y mejora la latencia. Sin
embargo, para utilizar un servidor proxy, el cliente debe configurarse para enviar todas sus peticiones
al proxy en lugar de a Internet.

Las funciones principales que realiza un servidor proxy son:

✔ Funcionan como cortafuegos y como filtro de contenidos.- Son un mecanismo de seguridad


implementado por el ISP o los administradores de la red en un entorno de Intranet para
desactivar el acceso o filtrar las solicitudes de contenido para ciertas web consideradas
ofensivas o dañinas para la red y los usuarios.

✔ Mejoran el rendimiento.- Guardan en la caché las páginas web a las que acceden los sistemas
de la red durante un cierto tiempo. Cuando un sistema solicita la misma página web, el

Página 1
Rafael Lozano Proxy HTTP

servidor proxy utiliza la información guardada en la memoria caché en lugar de recuperarla


del proveedor de contenidos. De esta forma, se accede con más rapidez a las páginas Web.

Figura 1.- Servidor Proxy

2. Microsoft Forefront Threat Management Gateway


Microsoft Forefront Threat Management Gateway (TMG) es un completo gateway de seguridad
web desarrollado por Microsoft que ayuda a proteger a las empresas de las amenazas que existen
actualmente en Internet. Cuenta con una interfaz simple con la que se puede habilitar una seguridad
perimetral a prueba de ataques gracias al firewall integrado, VPN, prevención de accesos no
autorizados, antivirus y antispam.

Microsoft Forefront TMG estaba también integrado en la suite completa de Forefront conocida
con el nombre en clave de Microsoft Forefront STIRLING. El producto es el sucesor de Microsoft ISA
Server 2006.

Forefront TMG permite a los usuarios de una organización usar Internet de forma segura y
productiva, sin tener que preocuparse del malware ni de otras amenazas. Proporciona numerosas
funciones de protección entre las que se incluyen el filtrado de direcciones URL, inspección contra
malware, prevención de intrusiones, firewall de nivel de aplicación y nivel de red e inspección
HTTP/HTTPS, que se integran en una puerta de enlace unificada y fácil de usar, lo que reduce el coste
y la complejidad de la seguridad web.

Obviamente Microsoft Forefront (TGM) no es un producto gratuito, pero se puede descargar


una versión de evaluación de 120 días de este producto, en: https://www.microsoft.com/es-
es/download/details.aspx?id=14238, donde además podemos encontrar información sobre el
producto como los requisitos del sistema, instrucciones de instalación, etc.

2.1 Instalación
Vamos a instalar Forefront TMG en el servidor y posteriormente los clientes de la red local
conectarán a Internet a través de él. Para la instalación de Forefront TMG seguiremos los siguientes

Página 2
Rafael Lozano Proxy HTTP

pasos:

1. Ejecutar como administrador el archivo executable con la versión de evaluación.

2. En la pantalla de inicio haremos clic en el botón Siguiente.

3. Aceptaremos la ubicación por defecto de los archivos de instalación.

Figura 2.- Instalación de Microsoft Forefront TMG

4. Posteriormente aparece la pantalla de la figura. Si tenemos nuestro sistema actualizado


podemos hacer clic en Ejecutar la herramienta de preparación. De lo contrario tendremos que
actualizarlo ya que Forefront TGM necesita como requisito mínimo Windows Server 2008 SP2.

5. A continuación se ejecutará la herramienta de preparación para Forefront TMG. En la primera


pantalla nos informa de las comprobaciones que va a hacer y que es posible un reinicio.
Hacemos clic en el botón Siguiente.

6. Aceptamos los términos de la licencia y hacemos clic en el botón Siguiente.

7. En el tipo de instalación indicamos la opción por defecto, es decir, vamos a instalar la


aplicación y la herramienta de administración. Posteriormente hacemos clic en el botón
Siguiente.

8. A partir de ahora comienza a preparar el sistema añadiendo los roles y características

Página 3
Rafael Lozano Proxy HTTP

necesarios. Esperaremos a que termine y dejaremos activada la casilla Iniciar el asistente para
la instalación de Forefront TMG. Después hacemos clic en el botón Finalizar.

9. Nos devuelve a la pantalla inicial donde haremos clic en el enlace Ejecutar el asistente para la
instalación.

10.En la primera pantalla haremos clic en el botón Siguiente para continuar.

11.De nuevo aceptamos los términos de la licencia y hacemos clic en el botón Siguiente.

12.En información de cliente introducimos el nombre del usuario y la organización. Al ser una
versión de evaluación dejamos el número de serie del producto por defecto. Posteriormente
hacemos clic en el botón Siguiente.

13.En Escenario de instalación dejamos activada la opción Instalar servicios y Administración de


Forefront TMG. Después hacemos clic en el botón Siguiente.

14.En Ruta de acceso de instalación dejamos la ubicación por defecto y hacemos clic en el botón
Siguiente.

15.En la siguiente ventana debemos indicar el rango de direcciones IP de la red interna de


nuestra red local, que será el rango de direcciones que gestionará el servidor Forefront TMG,
así pues pulsaremos en dicha ventana sobre el botón Agregar.

Figura 3.- Rango de direcciones

16.hora aparecerá una ventana en la que tendremos que indicar el intervalo de direcciones de
nuestra red. Disponemos de tres formas de indicar la red que el Forefront Server gestionará:

Página 4
Rafael Lozano Proxy HTTP

a) Agregar adaptador.- Si hacemos clic en este botón entonces nos aparecerá una ventana
con la lista de tarjetas de red del servidor para elegir una de ellas.

b) Agregar privado.- Nos permite elegir la red a gestionar mediante los intervalos privados de
direcciones IP reservadas para las organizaciones.

c) Agregar intervalo.- Nos aparecerá una ventana para introducir la dirección inicial y final del
rango de direcciones de nuestra red. En nuestro ejemplo, utilizaremos este método e
introduciremos el rango de direcciones de la red local interna de Windows, como en la
siguiente figura. Finalmente haremos clic en el botón Aceptar primero y Siguiente después.

17.Ahora nos advierte que algunos servicios pueden ser detenidos o reiniciados durante la
instalación. Haremos clic en el botón Siguiente.

18.El asistente ya está listo para realizar la instalación. Haremos clic en el botón Instalar.

19.Cuando finalice la instalación activaremos la casilla Iniciar la administración de Forefront TMG


cuando se cierre el asistente. Posteriormente haremos clic en el botón Finalizar.

2.2 Configurar los valores de implementación iniciales


Cuando se inicia la administración de Forefront TMG se inicia ante el el Asistente de
introducción a Forefront TMG para configurar o modificar la configuración básica inicial de
implementación. El asistente está formado por los tres asistentes siguientes:

✔ Asistente para configuración de red.- Se usa para configurar los adaptadores de red en el
servidor. Los adaptadores de red se asocian a una única red de Forefront TMG. La red de
Forefront TMG hace referencia a la red física o lógica a la que pertenece el equipo en el que se
instala Forefront TMG.

✔ Asistente para la configuración del sistema.- Este asistente se usa para configurar los valores
del sistema operativo, como el nombre de equipo y el dominio o el grupo de trabajo.

✔ Asistente para la implementación.- Este asistente se usa para configurar la protección contra
código malintencionado en el tráfico web y para unirse al programa de información del cliente
y al servicio de telemetría.

Página 5
Rafael Lozano Proxy HTTP

Figura 4.- Configuración de los valores iniciales

2.2.1 Configurar opciones de red


En la pantalla anterior haremos clic en el enlace Configurar opciones de red y seguiremos los
siguientes pasos:

1. Haremos clic en el botón Siguiente de la primera pantalla.

2. En la página Selección de plantilla de red seleccionamos la opción que más se ajusta a nuestra
topología de red. Según la configuración de red al inicio del documento, la que más se adapta
es Firewall perimetral. Como se puede ver en el diagrama tenemos una red interna que se
conecta a Internet a través del servidor Forefront TMG (llamado aquí host local). Así que
dejamos esta opción por defecto y hacemos clic en el botón Siguiente.

3. En la página Configuración de red de área local (LAN) del asistente, en Adaptador de red
conectado a LAN, desplegamos la lista y seleccionamos la interfaz de red Interna. Al hacerlo
veremos que rellena los datos de dirección IP y máscara automáticamente tomados de la
configuración de la interfaz de red. Debemos definir una puerta de enlace predeterminada
solo en uno de los adaptadores de red de Forefront TMG. Normalmente, es el adaptador de
red asociado a Internet, por lo que dejaremos en blanco el de la red Interna. Hacemos clic en
el botón Siguiente.

Página 6
Rafael Lozano Proxy HTTP

Figura 5.- Topología de red

4. En la página Configuración de Internet del asistente, desplegamos de nuevo la lista de


interfaces de red y seleccionamos la interfaz de red Externa, la cual estará conectada a
Internet. Como esta interfaz de red obtiene sus parámetros de forma dinámica, hacemos clic
en el botón Obtener una dirección IP automáticamente. Al hacer clic en el botón Siguiente
veremos un mensaje de aviso que nos indica que va a ser necesario abrir reglas en Forefront
TMG para poder obtener una configuración IP desde un servidor DHCP que esté operando en
la red Externa. Hacemos clic en el botón Aceptar.

5. Por último, hacemos clic en el botón Finalizar.

Es posible que la interfaz de red Externa no tenga configuración, ya que al instalar Forefront
TMG ha cortado todo el tráfico de red. Ahora es un buen momento para desactivar y volver a activar la
tarjeta de red. Con el último paso del asistente, Forefront está permitiendo tráfico DHCP con lo que
podemos configurar nuestra interfaz de red externa.

2.2.2 Configurar opciones del sistema


Para configurar estas opciones hacemos clic en Configurar opciones del sistema del Asistente de
introducción. Posteriormente seguimos los siguientes pasos:

1. En la primera página hacemos clic en el botón Siguiente.

Página 7
Rafael Lozano Proxy HTTP

2. En la página Identificación de host del asistente de configuración del sistema, en el cuadro


Nombre de equipo, escribimos el nombre del servidor Forefront TMG. Por defecto tomará el
nombre actual del equipo. También definiremos si es un miembro de un dominio Windows o
de un grupo de trabajo del siguiente modo:

◦ Si seleccionamos Dominio de Windows, el nombre del dominio se utilizará como sufijo DNS
principal y no tendremos que modificar este valor. Solicitará que reiniciemos el equipo.

◦ Si seleccionamos Grupo de trabajo, tal vez queremos agregar explícitamente un sufijo DNS
principal para registrar el equipo en la zona correcta siempre que DNS admita
actualizaciones dinámicas. Podemos escribir serviciosenred.local y posteriormente pedirá
un reinicio.

Figura 6.- Identificación del host

3. En cualquiera de los dos casos anteriores, si hemos modificado algún valor nos pedirá un
reinicio. Cuando se inicie de nuevo, ejecutamos la herramienta Administración de Forefront
TMG y volverá a aparecer el asistente de configuración de los valores iniciales. Hacemos clic
en Configurar opciones del sistema y continuamos por donde lo dejamos.

4. La siguiente pantalla es la última y hacemos clic en el botón Finalizar.

2.2.3 Definir las opciones de implementación


Por último hacemos clic en el enlace Definir opciones las opciones de implementación del Asistente

Página 8
Rafael Lozano Proxy HTTP

de introducción. Posteriormente seguimos los siguientes pasos:

1. En la primera página hacemos clic en el botón Siguiente.

2. En Configuración de Microsoft Update hacemos clic en Usar el servicio Microsoft Update para
buscar actualizaciones (recomentado). Posteriormente hacemos clic en el botón Siguiente.

3. Al disponer de una versión de evaluación en la siguiente pantalla las opciones para actualizar
las licencias y configurar la protección web están establecidas por defecto y deshabilitadas.
Hacemos clic en el botón Siguiente.

4. En la pantalla siguiente indicaremos si queremos participar en el programa de mejora.


Elegimos una opción y hacemos clic en el botón Siguiente.

5. En la siguiente pantalla seleccionaremos la forma de enviar los informes de telemetría de


Microsoft con información sobre malware y otros ataques de red. Elegimos una opción y
hacemos clic en el botón Siguiente.

6. Por último hacemos clic en el botón Finalizar.

2.3 Consola de administración


Una vez hemos terminado de ejecutar el asistente de introducción y el asistente para acceso
web podemos iniciar el Administración del servidor Forefront TMG donde veremos la siguiente pantalla.

Figura 7.- Administración del servidor Forefront TGM

Los elementos de la consola de administración del servidor Forefront TGM son:

Página 9
Rafael Lozano Proxy HTTP

✔ Árbol de la consola.- Se encuentra en la izquierda de la pantalla y se muestran los nodos que


están disponibles en Administración del servidor Forefront TMG. En principio estos nodos se
encuentran solamente se muestra el servidor donde está instalado.

✔ Panel de detalles.- Es el panel central entre el árbol de la consola y el panel de tareas. Aquí se
muestra información del elemento seleccionado en el árbol de la consola. Al hacer clic en los
distintos elementos del árbol, la información del panel de detalles cambia. El panel de detalles
puede mostrar muchos tipos de información, como páginas web, gráficos, tablas y columnas.

✔ Panel de tareas.- A la derecha de la pantalla. El panel de tareas puede incluir una ficha Tareas
y una ficha Ayuda. En los nodos Directivas de acceso web y Directiva de firewall, el panel de tareas
también incluye la ficha Herramientas.

2.4 Servicios básicos


Anteriormente hemos visto que cuando instalamos Forefront TMG, se crea una política por
defecto del sistema que varía de un escenario a otro y en la cual se han creado unas directivas de
firewall que permiten tanto al servidor Forefront TMG como a los clientes de la red interna el acceso a
determinados servicios que se prestan en el propio servidor.

Sin embargo, es posible que necesitemos crear más reglas que habiliten acceso a algún servicio,
pues podrían estar bloqueados por defecto. Por ejemplo, supongamos que en nuestro esquema de
red el servidor Forefront TMG utiliza el servicio DNS instalado en el servidor principal. Es posible que
este reenvíe alguna consulta DNS a Internet. En esta situación si Forefront TMG impidiera el tráfico
DNS hacia fuera, entonces habría que añadir alguna regla que lo permitiera.

La mayor parte del tráfico interna de una red local no va a pasar por el servidor Forefront TMG,
sino que se establecerá entre dos PCs directamente. Sin embargo, necesitaremos algunas reglas para
servicios que pueda ofrecer el servidor proxy. Estas reglas son de obligada creación en el caso de que
el servidor de la red que ofrece estos servicios fuera el mismo que el servidor Forefront TMG.

Así pues vamos a llevar a cabo una configuración en el servidor Forefront para crear una regla
que permita todo el tráfico de red de ida y vuelta entre la red Interna y el servidor (Host local). Para
ello seguir los siguientes pasos:

1. Abrir la consola de administración.

2. En el árbol de la consola seleccionar Directivas de firewall en el servidor.

3. En el panel acciones hacer clic en Crear regla de acceso. Comienza el asistente de creación de
una nueva regla del cortafuegos.

4. En el primer paso introduciremos un nombre a la regla que nos permita identificarla en la lista
de reglas. En este caso pondremos Tráfico red interna. Posteriormente hacemos clic en el
botón Siguiente.

5. Establecemos la acción a ejecutar para el tráfico de red que cumpla las condiciones de la
regla. En este caso queremos permitir el acceso a servicios básicos de la red. Por tanto
elegiremos Permitir. Posteriormente haremos clic en el botón Siguiente.

6. A continuación deberemos especificar el tráfico de red al cual va a afectar la regla en cuestión,

Página 10
Rafael Lozano Proxy HTTP

pudiendo elegir que afecte a determinados protocolos o incluso o determinados puertos,


haciendo clic sobre el botón Puertos, aunque en este caso vamos a hacer que la regla se
aplique a Todo el tráfico saliente, seleccionando dicha opción en el desplegable
correspondiente, y haciendo clic posteriormente sobre el botón Siguiente.

7. En la siguiente pantalla podemos desactivar la inspección malware ya que el tráfico que


estamos regulando es de la red local interna y en principio es de confianza. Hacemos clic en el
botón Siguiente.

8. En el siguiente paso del asistente deberemos especificar los orígenes a los cuales será
aplicada esta regla, es decir, donde se origina el tráfico de red que va a supervisar con esta
regla, para lo cual haremos clic sobre el botón Agregar, y en la nueva ventana mostrada
haremos clic sobre la carpeta Redes para seleccionar Interna y Host local.

9. En el siguiente paso deberemos especificar los destinos a los cuales será aplicada esta regla,
para lo cual haremos clic sobre el botón Agregar, y en la nueva ventana mostrada haremos clic
sobre la carpeta Redes para seleccionar Interna y Host local.

10. El siguiente paso nos permite especificar los usuarios a los cuales será aplicada esta regla, si
bien en nuestro caso daremos por válida la opción Todos los usuarios, ofertada por defecto por
el asistente, y haremos clic directamente en ella sobre el botón Siguiente.

11. Para terminar de definir la regla, haremos clic en el botón Finalizar.

12. Tras terminar de definir la regla anterior en la parte superior de la ventana de administración
del servidor Forefront TMG se nos muestra un mensaje que nos indica que deberemos hacer
clic sobre el botón Aplicar para que la regla pase a ser aplicada de modo efectivo, así pues
pulsaremos sobre dicho botón para proceder a aplicar la regla definida.

13. De nuevo, al hacer un cambio en las reglas de la directiva de firewall, hará una copia de
seguridad con la configuración actual y debemos escribir un nombre descriptivo para el caso
de que queramos recuperarla. Escribimos Habilitar Tráfico de red interna y hacemos clic en el
botón Aceptar.

2.5 Asistente para acceso web


Cuando hayamos terminado de definir las opciones de implementación que vimos en el
apartado anterior, vemos en la parte inferior del asistente de introducción una casilla de verificación
que pone Ejecutar el asistente para acceso web. Este asistente nos permite crear varias directivas en
Forefront que nos facilita la tarea para configurar lo siguiente:

✔ El acceso a Internet de los PCs de la red local Interna.- En este caso vamos a crear una
directiva de acceso web básica que proporciona acceso anónimo para los usuarios internos a
todos los destinos en Internet.

✔ Definir una lista de URLs y destinos en Internet bloqueados.- En este caso vamos impedir a los
usuarios de la red externa el acceso a ciertos destinos web indiquemos. Podemos usar las
categorías de URL predefinidas para excluir los tipos de destinos web a los que no quremos
que tengan acceso los usuarios.

✔ Definir la inspección de malware.- El asistente también permite habilitar las tecnologías de

Página 11
Rafael Lozano Proxy HTTP

protección para las amenazas basadas en Web.

✔ Inspección HTTPS.- Consiste en proteger una organización de los riesgos de seguridad como
los virus y otro contenido malintencionado que podrían usar los túneles de SSL para infiltrarse
en una organización sin ser detectados.

✔ Almacenamiento en cache web.- Consiste en definir una memoria caché de objetos


solicitados con frecuencia para mejorar la velocidad de acceso web y el rendimiento de la red.
Para ello debemos asignar específicamente espacio de disco a la memoria caché. De manera
predeterminada, después de la instalación no existe espacio definido para la memoria caché

En principio podemos obviar la ejecución del asistente dejando la casilla desactivada ya que
podemos invocarlo posteriormente. Antes de ejecutar el asistente, los clientes de la red local interna
no pueden navegar y la actividad del propio servidor Forefront TMG tras la instalación está muy
limitada. Por defecto el servidor impide la salida a Internet a los PCs de la red interna, así como el
acceso desde el propio servidor Forefront TMG a Internet por medio de HTTPS, aunque si permite
HTTP. El motivo por el cual impide el resto de tráfico es por que todavía no hemos configurado
ninguna regla de acceso web.

En un principio existen una directiva de firewall, la regla de acceso Regla Predeterminada, que se
aplica siempre en último lugar y que deniega todo el tráfico de todas las redes a cualquier red para
cualquier usuario, es la única regla activa.

Figura 8.- Regla predeterminada del sistema

Podemos comprobar lo que hemos indicado en el párrafo anterior si mostramos la regla


predeterminada del sistema que se encuentra en Servidor → Directiva de Firewall . Vemos que la única
regla del firewall es la denegación de todo el tráfico de red.

Pese a la existencia de la regla citada anteriormente, se instala una política de sistema por
defecto en las directivas del firewall la cual permite el acceso del servidor Forefront TMG a funciones
básicas de la red, tales como DHCP, DNS, etc. Si deseamos visualizar la política de sistema por defecto
del firewall citada en el párrafo anterior, haremos clic en Mostrar reglas de directiva del sistema en el
panel acciones del elemento Directiva de Firewall del árbol de consola.

Estas directivas pueden variar de un escenario a otro, ya que se configuraron automáticamente


cuando ejecutamos los asistentes de configuración inicial, y son suficientes para que el propio
servidor Forefront TMG acceda a estos servicios básicos en la red interna o en Internet.

Estas reglas de directivas del sistema permiten acceder a servicios tan elementales como Active
Directory, DNS o DHCP entre otros; dependiendo de los servicios que haya instalados en el servidor.
Las reglas de política de sistema que están deshabilitadas por defecto tienen una flecha roja
apuntando hacia abajo en su esquina inferior derecha, y podemos activarlas cuando lo necesitemos.

Vamos ahora a ejecutar el asistente de acceso web para que los PCs de la red interna puedan

Página 12
Rafael Lozano Proxy HTTP

acceder a Internet. En principio solamente vamos a definir el acceso web para que los clientes puedan
acceder a Internet utilizando el servidor Forefront TMG como proxy web. Para ello seguiremos los
siguientes pasos:

1. En el árbol de consola seleccionar Directiva de acceso web.

2. En el panel detalles hacer clic en el botón Configurar directiva de acceso web.

3. En la primera pantalla hacer clic en el botón Siguiente.

4. En esta pantalla nos pregunta si al crear la regla de acceso web vamos a bloquear unas URLs
que se encuentran categorizadas como no deseables debido a su contenido. Dejamos
activado Si y hacemos clic en el botón Siguiente para editar esta regla de bloqueo.

5. En la esta pantalla tenemos que indicar qué categorías vamos a bloquear. Por ejemplo,
podemos bloquear todas las URLs de la categoría Apuestas para que los usuarios de nuestra
red no dediquen tiempo a apostar por Internet. Seleccionamos Apuestas y hacemos clic en el
botón Agregar. Posteriormente hacemos clic en el botón Siguiente.

6. En la siguiente pantalla configuramos la inspección malware para que el contenido web que
venga de Internet se examina para detectar posible software malicioso como spyware y virus.
Dejamos por defecto que inspeccione el contenido web y podemos bloquear contenido
cifrado, como los archivos comprimidos, que podrían contener malware. Hacemos clic en el
botón Siguiente.

7. En la siguiente pantalla desactivamos la inspección HTTPS la cual se verá en un apartado


posterior. Hacemos clic No inspeccionar el tráfico HTTPS y no validar los certificados de sitios
HTTPS. Permitir todo el tráfico HTTPS y en el botón Siguiente.

8. En la siguiente pantalla vamos a deshabilitar la caché proxy, la cual veremos más adelante.
Para ello desactivamos la casilla de verificación Habilitar la regla de almacenamiento en caché
web predeterminada y hacemos clic en el botón Siguiente.

9. Por último, hacemos clic en el botón Finalizar y después en Aplicar.

Cuando terminemos veremos que las directivas de acceso web han quedado de la siguiente
forma:

Página 13
Rafael Lozano Proxy HTTP

Figura 9.- Directivas de acceso web

Vemos que ha añadido dos directivas de acceso web. En la primera se bloquean URLs
prohibidas, en la segunda se permite a los cliente de la red interna acceso a Internet. El orden de las
directivas es fundamental, ya que cada petición es contrastada con la directiva y si cumple los criterios
establecidos en la directiva entonces se le aplicará la acción indicada (Denegar o Permitir), a partir de
entonces no se somete la petición del cliente a la siguiente directiva.

En esta situación Forefront TMG está bloqueando el acceso a URLs categorizadas en alguna de
las categorías por defecto que gestiona Microsoft. Esto provocará que cuando el usuario intente
acceder a una URL, está será consultada por Forefront TMG con sus servidores en Internet para ver si
está clasificada en alguna categoría prohibida, y si es así, entonces la bloqueará.

Si la petición de usuario no está incluida en ninguna categoría anterior, entonces no cumple la


directiva y con la siguiente directiva se le permitirá el acceso. En ambas directivas el origen de la
petición es la red interna y el destino es la red externa (Internet).

2.6 Configuración de los clientes


Una vez habilitado el acceso web para los clientes de la red interna, estos deberán tener como
puerta de enlace la dirección IP del equipo que ejecuta el servidor Forefront TMG, ya que todo el
tráfico entre la red local interna, el servidor e Internet tiene que pasar por él. Por tanto, debemos
cambiar la configuración del servidor DHCP para que la dirección IP de la puerta de enlace de las
concesiones sea 192.168.20.11.

Sin embargo, los clientes de la red local envían sus peticiones HTTP por el puerto 80, mientras
que el servidor Forefront TMG opera en el 8080. En esta situación, hay que configurar los clientes
para que sus conexiones HTTP se envíen a la puerta de enlace en el que está actuando el servidor
proxy.

Para clientes Windows no es necesario realizar ninguna configuración añadida, ya que

Página 14
Rafael Lozano Proxy HTTP

disponemos del servicio de detección automática de proxy web winHTTP. Este servicio proporciona
las funcionalidades necesarias para la detección automática de un proxy utilizando para ello el
protocolo WPAD (Web Proxy Autodiscovery Protocol). Este protocolo se encarga de configurar de forma
automática las aplicaciones clientes que interactúen a través de HTTP para que utilicen el servidor
proxy adecuado. Si tenemos una conexión directa a Internet no es necesario, debido a ello este
servicio tiene configurado el tipo de inicio en manual, lo cual hace que solo se inicie y ocupe memoria
si alguna instancia o aplicación lo requiere.

Figura 10.- Configuración del navegador para enviar solicitudes al proxy

En caso de que tengamos otro tipo de clientes o queremos configurar manualmente el proxy,
deberemos modificar las propiedades de Internet. Si deseamos configurar un equipo cliente de la red
local para que utilice el proxy del servidor Forefront TMG, desde el navegador de dicho equipo cliente,
deberemos entrar en la configuración del navegador y en la configuración de red indicar que va a
utilizar un servidor proxy mediante su dirección IP y el puerto 8080. El siguiente ejemplo se ha
realizado sobre Internet Explorer 10.

A partir de este instante, el usuario que realizó la configuración anterior en el equipo cliente
correspondiente, utilizará el proxy-caché del equipo PROXY para su salida a Internet.

Si tenemos nuestra red local en un dominio, podemos realizar la configuración anterior para
todos los usuarios del dominio, de modo que éstos utilicen el proxy-caché para la salida a Internet y
que además no puedan cambiar esta configuración. En este caso deberemos modificar las directivas
de grupo del dominio que permiten configurar el servidor proxy para Internet Explorer y además
impiden que el usuario las cambie.

Para ello, en el servidor primario de Windows realizaremos los siguientes pasos:

1. En Administrador del servidor hacer clic en Herramientas.

2. Seleccionar Administración de directivas de grupo.

Página 15
Rafael Lozano Proxy HTTP

3. En el árbol de la consola desplegar el bosque y en el dominio serviciosenred.local hacer clic


con el botón derecho del ratón sobre Default Domain Policy. Posteriormente hacer clic en la
opción Editar.

4. Desplegar Configuración de usuario → Preferencias → Configuración de Internet .

5. Sobre el panel derecho hacer clic con el botón derecho del ratón y seleccionar la opción
Nuevo y, posteriormente, la versión del navegador de nuestros clientes de la red local.

6. Hacer clic en la pestaña Conexiones y posteriormente en el botón Configuración de LAN...

7. Activar la casilla Usar servidor proxy para la LAN (esta configuración no se aplicará a conexiones de
acceso telefónico ni VPN).

Figura 11.- Configuración de servidor proxy por directiva de grupo

8. Escribir la dirección IP del servidor Forefront TMG 192.168.20.11 en el campo Dirección IP y el


puerto 8080 en el campo Puerto.

9. Hacer clic en el botón Aceptar y posteriormente de nuevo en el botón Aceptar.

10. Para evitar que los usuarios puedan cambiar la configuración anterior desplegar Configuración
de usuario → Directivas → Plantillas administrativas → Componentes de Windows → Internet
Explorer.

11. Habilitar la directiva Impedir el cambio de configuración del proxy. Los usuarios no podrán
cambiar la configuración de la conexión de Internet Explorer.

12. Hacer clic en el botón Aceptar.

Página 16
Rafael Lozano Proxy HTTP

2.7 Inspección HTTPS


HTTPS (HTTP sobre SSL) es uno de los protocolos más comunes en uso en Internet. Encriptando
una comunicación HTTP con SSL un cliente puede establecer un canal de comunicación seguro y
privado con un servidor web. Usando HTTPS podemos suministrar una protección esencial para envío
de credenciales y evitamos la interceptación de información sensible.

Una de las tecnologías de protección más importantes que Forefront TMG ofrece es la
inspección HTTPS, la cual permite al servidor Forefront TMG gestionar las sesiones HTTPS de los
clientes. Esencialmente suministra un autentico proxy para tráfico HTTPS, en lugar de simplemente
una comunicación HTTPS tunneling. Esto lo consigue realizando un ataque man-in-the-middle de
confianza, por llamarlo de alguna forma entendible. Cuando un cliente hace una petición HTTPS, la
cual pasa por Forefront TMG, el servidor establece una nueva conexión con el servidor de destino y
recupera su certificado. Entonces, Forefront TMG copia la información del certificado y crea su propio
certificado usando estos detalles para suministrarlo al cliente. Tan pronto como el cliente confíe en el
certificado de Forefront TMG, la comunicación HTTPS se realiza. Todo el proceso se completa de
forma transparente para el cliente.

En principio, mediante la directiva de acceso web que configuramos en el apartado anterior,


solamente podemos navegar por Internet a sitios que no requieran HTTPS. Para habilitar la inspección
HTTPS seguiremos los siguientes pasos:

Figura 12.- Configurar la inspección HTTPS

Página 17
Rafael Lozano Proxy HTTP

1. En el árbol de consola seleccionar Directivas de acceso web.

2. En el panel de acciones, ficha Tareas, hacer clic en Configurar inspeccion de HTTPS. Aparece la
siguiente pantalla

3. Activar la casilla Habilitar la inspección HTTPS.

4. Dejar activada la opción Inspeccionar el tráfico y validar los certificados de sitio. Esto provocará
que si el certificado no es válido, Forefront TMG impedirá al cliente acceder al sitio.

5. Ahora tendremos que generar un certificado que Forefront TMG empleará para crear su
conexión segura con el cliente. Dejamos activada la opción Usar Forefront TMG para generar un
certificado y hacemos clic en el botón Generar…

6. Aparece una nueva ventana en la que dejaremos los datos puestos por defecto y haremos clic
en el botón Generar certificado ahora. Podemos dejar que no expire nunca el certificado
generado. Posteriormente hacemos clic en el botón Cerrar.

7. Ahora tendremos que distribuir el certificado entre los clientes y lo mejor es dejar que se
publique en Active Directory. Hacemos clic en el botón Opciones de certificado de entidad de
certificación raíz de confianza HTTPSy aparece una nueva ventana en la que dejamos activada la
opción Automáticamente a través de Active Directory (recomendado). En este caso tendremos que
hacer clic en el botón Credenciales de administrador de dominio para escribir el usuario y la
clave del administrador de dominio. Al finalizar hacemos clic en el botón Aceptar.

8. Hacemos clic en el botón Aceptar y finalmente en el botón Aplicar. Aparecerá una ventana para
escribir una descripción de la copia de seguridad que genera con la configuración actual y
para terminar hacemos clic en el botón Aplicar.

Una vez tenemos activada la inspección HTTPS los clientes pueden navegar a sitios web seguros
mediante certificado Sin embargo, los clientes no obtendrán el certificado de origen del sitio web al
que están navegando, sino el que se ha generado en Forefront TMG. Si visualizamos en un navegador
los datos del certificado cuando se conecta a un sitio web seguro podemos ver algo parecido a la
siguiente imagen.

Página 18
Rafael Lozano Proxy HTTP

Figura 13.- Certificado

Vemos que el certificado del sitio https://www.bankofamerica.com es el de Forefront TMG, no el


del sitio al que estamos navegando.

La navegación por HTTPS pueda dar muchos problemas si Forefront TMG no puede validar el
certificado. En ese caso en lugar de visualizar el sitio web, el navegador puede dar un error SSL como
el siguiente.

Figura 14.- Error SSL

Para poder averiguar donde está el problema que impide acceder al sitio web seguro podemos
utilizar alguna de las herramientas que Forefront TMG ofrece para comprobar la conectividad de los
clientes a través del proxy o de cualquier otro elemento (como los servidores DNS) que pudiera estar

Página 19
Rafael Lozano Proxy HTTP

fallando e impidiendo al cliente navegar por Internet. En nuestro caso vamos a emplear Prueba de
conectividad la cual te ofrece información sobre el problema. Para ello seguimos los siguientes pasos:

1. En el árbol de la consola seleccionamos el elemento Solución de problemas.

2. Hacemos clic en la pestaña Prueba de conectividad.

3. En el cuadro de texto Dirección URL de destino escribimos una URL de un sitio web seguro, por
ejemplo https://www.google.com. Posteriormente hacemos clic en el botón Probar
conectividad y esperamos el resultado.

Cuando termine de hacer la prueba mostrará el siguiente resultado.

Figura 15.- Resultado de la prueba de conectividad

Vemos que no ha podido conectar con el servidor de Google y en el área de texto de la parte
inferior indica que ha habido un error de certificado con el servidor de destino. En el detalle de error
aparece 0x80090322 – El nombre principal de destino es incorrecto. Según la web de Microsoft este error
indica que el nombre del certificado en el servidor no coincide con la URL a la que se accede.

Los certificados inválidos ocurren con cierta frecuencia, y es por ello que se opta por desactivar
la inspección HTTPS ya que de lo contrario los clientes de la red interna no podrían navegar a
múltiples sitios con acceso seguro pero con certificados no válidos. Activar o desactivar la inspección
HTTPS queda a elección del administrador de la red.

Página 20
Rafael Lozano Proxy HTTP

2.8 Control del acceso


El servidor Forefront TMG ofrece posibilidades para limitar el acceso a Internet desde la red
interna a determinadas páginas, a determinados usuarios, a determinados equipos, o a determinadas
horas.

2.8.1 Acceso autenticado


En el apartado anterior vimos como crear una regla de firewall para que los usuarios puedan
navegar por Internet. Por defecto, todos los usuarios pueden conectarse a Internet utilizando el
servidor Forefront y sin necesidad de autenticarse. Sin embargo, para añadir un mayor control
podríamos querer que los usuarios se autentifiquen antes de salir a Internet. De esta forma,
solamente los usuarios registrados del sistema podrían utilizar el proxy para conectarse a Internet.
Así dispondremos de un doble control, por dirección IP del cliente y por autenticación.

Figura 16.- Configuración de la autenticación de usuarios

Para configurar el acceso autenticado seguir los siguientes pasos:

1. Abrir la consola de administración del Forefront.

Página 21
Rafael Lozano Proxy HTTP

2. En el árbol de la consola seleccionar Directivas de acceso web.

3. En el panel acciones hacer clic en Configurar proxy web.

4. Hacer clic en el botón Autenticación…

5. Activar la casilla Requerir que todos los usuarios se autentiquen.

6. Activar los métodos de autenticación Implícita e Integrada.

7. Hacer clic en el botón Seleccionar dominio…

8. Escribir el dominio de red y hacer clic en el botón Aceptar.

9. Hacemos clic en el botón Aceptar.

10. Hacemos clic en el botón Aplicar y Aceptar.

11. Finalmente aplicamos los cambios en Forefront TMG. Volvemos a hacer clic en el botón Aplicar
del panel detalles para aplicar los cambios en la configuración del proxy.

A partir de ahora, cuando un usuario trate de acceder a Internet, Forefront TMG intentará
autenticar al usuario con las credenciales de inicio de sesión. Si el cliente está dentro del dominio
accederá directamente debido a la característica inicio de sesión único de las redes Windows con
dominio. Si Forefront TMG está en una red sin dominio, al cliente le aparecerá un cuadro de diálogo
para introducir sus credenciales las cuales corresponderán a un usuario local.

Figura 17.- Autenticación de usuarios

Desgraciadamente la autenticación solamente funciona si en las opciones de Internet de cada


cliente se configura la dirección IP y el puerto del proxy. En este caso la detección automática del
proxy no funcionará.

Página 22
Rafael Lozano Proxy HTTP

2.8.2 Impedir acceso a un sitio web


Por ejemplo, supongamos que deseamos que las páginas de descarga de películas del dominio
todotorrent.com no sean accesibles desde la red interna de nuestra organización. Para ello seguir
los siguientes pasos:

1. Abrir la consola de administración.

2. En el árbol de la consola seleccionar Directivas de firewall en el servidor.

3. En el panel de tareas hacemos clic sobre Crear regla de acceso...

4. Escribimos el nombre de la regla de acceso. Por ejemplo, Descargas de peliculas.


Posteriormente hacemos clic en el botón Siguiente.

5. En Acción de la regla seleccionamos Denegar y hacemos clic en el botón Siguiente.

6. En Protocolos desplegamos la lista y seleccionamos Todos el tráfico saliente. Posteriormente


hacemos clic en el botón Siguiente.

7. En Origenes de la regla de acceso indicaremos que serán los PC's de la red interna. Para ello
hacemos clic en el botón Agregar y en la ventana que aparece desplegamos la carpeta Redes y
seleccionamos Interna y hacemos clic en el botón Agregar. Posteriormente hacemos clic en el
botón Cerrar y finalmente en el botón Siguiente.

Figura 18.- Nuevo elemento de dirección URL

8. En Destinos de la regla de acceso tenemos que definir el dominio todotorrent.com como el

Página 23
Rafael Lozano Proxy HTTP

destino de las peticiones de los clientes de la red interna. Para ello hacemos clic en el botón
Agregar y en la ventana Agregar entidades de red y hacemos clic en el botón Nuevo del menú
principal.

9. Seleccionamos Conjunto de direcciones URL y en la ventana Nuevo elemento de regla de conjunto


de direcciones URL escribimos un nombre para este elemento y hacemos clic en el botón
Agregar y escribimos *.todotorrent.com. La regla anterior abarca a todo el dominio
todotorrent.com; si sólo deseáramos evitar el acceso a una determinada página web de
dicho dominio, por ejemplo a la página web http://www.divatope.com, especificaremos
dicha URL en esta ventana. Cuando finalicemos hacemos clic en el botón Aceptar.

10. En Agregar entidades de red seleccionar el elemento creado en el paso anterior en la carpeta
Conjunto de direcciones URL y hacemos clic en el botón Agregar. Posteriormente hacemos clic
en el botón Cerrar y en el botón Siguiente.

11. En Conjunto de usuarios dejaremos Todos los usuarios para que se aplique a todos los usuarios
de nuestra organización y haremos clic en el botón Siguiente.

12. Para terminar haremos clic en el botón Finalizar y posteriormente en el botón Aplicar.

Podremos comprobar que el servidor Forefront aplica las reglas basándose en el orden
numérico en el que están colocadas, de modo que cuando se encuentre una regla de acceso válida,
es decir que cumpla las condiciones de la solicitud realizada, pasará a aplicarla, y NO evaluará las
reglas posteriores existentes.

Así pues, si tuviéramos la regla de denegación de acceso al dominio de todotorrent.com,


tras la regla Trafico Internet que permite todo el tráfico hacia Internet, nunca llegaría a aplicarse la regla
de denegación de acceso a todotorrent.com.

Si desde un cliente de la red interna intentamos navegar al dominio todotorrent.com


veremos el siguiente resultado

Página 24
Rafael Lozano Proxy HTTP

Figura 19.- Denegación de acceso por regla de firewall

Como se puede apreciar en el mensaje de error de la parte inferior de la imagen, no se permite


acceder a la URL requerida.

2.8.3 Restricciones horarias


Es posible que queramos impedir, o conceder, el acceso a Internet a los usuarios de la
organización durante un periodo de tiempo determinado. En esta situación podemos definir una regla
que restrinja el acceso a Internet a determinadas horas. Vamos a ilustrar este concepto creando una
regla que restringe el acceso a Internet entre las 10 y las 13 horas. Para ello seguir el siguiente
proceso:

1. Abrir la consola de administración de Forerfront.

2. En el árbol de la consola seleccionar Directivas de firewall en el servidor.

3. En el panel de tareas hacemos clic sobre Crear regla de acceso...

4. Escribimos el nombre de la regla de acceso. Por ejemplo, Sin Internet por la mañana.

Página 25
Rafael Lozano Proxy HTTP

Posteriormente hacemos clic en el botón Siguiente.

5. En Acción de la regla seleccionamos Denegar y hacemos clic en el botón Siguiente.

6. En Protocolos desplegamos la lista y seleccionamos Todos el tráfico saliente. Posteriormente


hacemos clic en el botón Siguiente.

7. En Origenes de la regla de acceso indicaremos que serán los PC's de la red interna. Para ello
hacemos clic en el botón Agregar y en la ventana que aparece desplegamos la carpeta Redes y
seleccionamos Interna y hacemos clic en el botón Agregar. Posteriormente hacemos clic en el
botón Cerrar y finalmente en el botón Siguiente.

8. En Destinos de la regla de acceso hacemos clic en el botón Agregar y desplegamos la carpeta


Redes. Seleccionaremos la red Externa y haremos clic en el botón Siguiente.

9. En Conjunto de usuarios dejaremos Todos los usuarios para que se aplique a todos los usuarios
de nuestra organización y haremos clic en el botón Siguiente.

10. Para terminar haremos clic en el botón Finalizar.

Ahora disponemos de una nueva regla de firewall y antes de aplicarla hay que modificarla para
establecer la restricción horaria. Para ello seguimos con el proceso.

11. Seleccionar la regla de acceso que acabamos de definir y en el panel acciones hacemos clic en
Editar regla de seleccionada.

12. Hacer clic en la ficha Programación.

13. Hacemos clic en el botón Nueva para crear una nueva programación.

14. En el nombre de la programación escribir Todos los días entre 10 y 13. Posteriormente marcar
estos días y horas en el cuadrante horario y seleccionar Activa.

15. Hacer clic en el botón Aceptar.

16. Hacer clic en el botón Aplicar.

17. Finalmente hacemos clic en el botón Aceptar.

18. Por último aplicamos la regla haciendo clic en el botón Aplicar.

Página 26
Rafael Lozano Proxy HTTP

2.8.4 Restricciones de usuarios y grupos


Otra situación que podría darse en nuestra organización es que los accesos a Internet se hagan
de forma indiscriminada e irracional, desaprovechando de ese modo el ancho de banda existente
para la salida a Internet, imposibilitando que otros usuarios de nuestra red que desean hacer uso
correcto del servicio, no puedan acceder en plenitud de condiciones al mismo; en este escenario una
buena opción podría ser definir una regla que imposibilite el acceso a todos los sitios de Internet a
determinados usuarios o equipos.

Por ejemplo, supongamos que queremos impedir que los usuarios del grupo Ayudantes no
puedan navegar por Internet. Para ello seguiremos los siguientes pasos:

1. Abrir la consola de administración.

2. En el árbol de la consola seleccionar Directivas de firewall en el servidor.

3. En el panel de tareas hacemos clic sobre Crear regla de acceso...

4. Escribimos el nombre de la regla de acceso. Por ejemplo, Ayudantes no navegan por Internet.
Posteriormente hacemos clic en el botón Siguiente.

5. En Acción de la regla seleccionamos Denegar y hacemos clic en el botón Siguiente.

6. En Protocolos desplegamos la lista y seleccionamos Todos el tráfico saliente. Posteriormente


hacemos clic en el botón Siguiente.

Página 27
Rafael Lozano Proxy HTTP

7. En Orígenes de la regla de acceso indicaremos que serán los PC's de la red interna. Para ello
hacemos clic en el botón Agregar y en la ventana que aparece desplegamos la carpeta Redes y
seleccionamos Interna y hacemos clic en el botón Agregar. Posteriormente hacemos clic en el
botón Cerrar y finalmente en el botón Siguiente.

8. En Destinos de la regla de acceso hacemos clic en el botón Agregar y desplegamos la carpeta


Redes. Seleccionaremos la red Externa y haremos clic en el botón Siguiente.

9. En Conjunto de usuarios hacemos clic en el botón Agregar...

10. En la ventana Agregar usuarios hacemos clic en el botón Nuevo del menú principal. Se inicia el
asistente para crear un nuevo grupo de usuarios.

11. Escribimos el nombre del grupo de usuarios, en este caso, Ayudantes. Posteriormente
hacemos clic en el botón Agregar y seleccionamos Usuarios y grupos de Windows.

12. Utilizamos la herramienta de búsqueda para buscar el grupo Ayudantes. Cuando lo


encontremos hacemos clic en el botón Aceptar.

Figura 20.- Regla de acceso con restricciones por grupo de usuarios

13. De vuelta al asistente de creación de grupo de usuarios hacemos clic en el botón Siguiente y
para terminar en el botón Finalizar.

14. En la ventana Agregar usuarios seleccionamos el grupo recién creado y hacemos clic en el
botón Agregar. Finalmente hacemos clic en el botón Cerrar.

15. Quitamos Todos los usuarios y para terminar haremos clic en el botón Finalizar.

Según esta regla, cualquier usuario que pertenezca a este grupo no podrá acceder a Internet.

Página 28
Rafael Lozano Proxy HTTP

2.9 Peticiones entrantes


En este apartado analizaremos el modo en que deberemos configurar nuestro servidor
Forefront TMG para lograr el acceso desde Internet a los servicios prestados en nuestra red local
interna, configurando para ello las oportunas reglas de publicación. Por ejemplo, queremos que
desde Internet los usuarios puedan acceder al servicio WWW, FTP e Email que se están ejecutando en
el servidor SeWiPr.

2.9.1 Publicar un servidor web


Por ejemplo, vamos a permitir a los usuarios de Internet que accedan al servidor web instalado
en SeWiPr. Para ello seguiremos los siguientes pasos:

1. Abrir la consola de administración.

2. En el árbol de la consola seleccionar Directivas de firewall en el servidor.

3. En el panel de tareas hacemos clic sobre Publicar sitio web...

Figura 21.- Publicación de un servidor web

4. Escribimos el nombre de la regla de acceso. Por ejemplo, Servidor Web. Posteriormente


hacemos clic en el botón Siguiente.

5. En Acción de la regla seleccionamos Permitir y hacemos clic en el botón Siguiente.

Página 29
Rafael Lozano Proxy HTTP

6. En Tipo de publicación seleccionaremos Publicar un único sitio web o un equilibrador de carga.


Posteriormente hacemos clic en el botón Siguiente.

7. En la siguiente ventana activaremos la opción Usar conexiones no seguras para conectar al


servidor web o conjunto de servidores publicado, y posteriormente haremos clic sobre el botón
Siguiente.

8. A continuación especificaremos el nombre del sitio web que deseamos publicar, tecleando su
URL de acceso. En nuestro caso teclearemos www.serviciosenred.local en Nombre
interno del sitio. Además activaremos la casilla Usar un nombre de equipo o dirección IP para
conectar al servidor publicado, y escribiendo posteriormente en la caja de texto
correspondiente el nombre del equipo o dirección IP donde se encuentra el servidor web
publicado. Finalmente haremos clic sobre el botón Siguiente.

9. Ahora, si queremos redirigir la petición a una raíz de documentos diferente a la configurada en


el servidor web lo escribiremos en el cuadro de texto Ruta de acceso (opcional). La dejaremos
en blanco si no queremos hacer ninguna redirección y que las peticiones vayan a la raíz de
documentos del servidor web. Además, activaremos la casilla Reenviar el encabezado de host
original en vez del real especificado en el campo de nombre de sitio interno en la página anterior.
Podemos dejar esta casilla desactivada, en cuyo caso se sustituirá el nombre de servidor
empleado por el indicado en el paso anterior. Posteriormente hacemos clic en el botón
Siguiente.

10. En la siguiente ventana seleccionaremos Este nombre de dominio (escríbalo a continuación) en el


desplegable correspondiente, y tras ello teclearemos www.serviciosenred.local en el
cuadro de texto Nombre público, para finalmente hacer clic sobre el botón Siguiente. Los
clientes que accedan desde el exterior a este servidor tendrán que hacerlo con este nombre o
el servidor Forefront TMG rechazará la conexión.

11. En la siguiente ventana deberemos especificar el puerto de escucha por el cual el servidor
Forefront TMG atenderá peticiones de acceso a este sitio web. Haciendo clic en el botón
Nueva comenzará un asistente para definir una nueva escucha de web.

12. Primero escribiremos el nombre. En este ejemplo usaremos Escucha Servidor Web.
Posteriormente haremos clic en el botón Siguiente.

13. A continuación seleccionaremos la opción No Requerir conexiones seguras SSL con los clientes,
tras lo cual haremos clic sobre el botón Siguiente.

14. En la siguiente ventana indicaremos la red desde la que deseamos permitir dicho tipo de
conexión, activando en nuestro caso la casilla Externa, ya que las peticiones vendrán desde
fuera. Posteriormente haremos clic sobre el botón Siguiente.

15. En nuestro caso no será necesario que los clientes que acceden al servidor web se
autentifiquen en el servidor Forefront TMG. Seleccionaremos la opción Sin autenticación en la
lista Seleccionar como los clientes proporcionarán credenciales a Forefront TMG. Posteriormente
haremos clic en el botón Siguiente.

16. Al no tener autenticación, no será necesario configurar Inicio de sesión único. Hacemos clic en
el botón Siguiente.

Página 30
Rafael Lozano Proxy HTTP

17. Haremos clic en el botón Finalizar al terminar de definir la escucha de web.

18. De vuelta en el asistente de publicación de sitio web seleccionaremos la nueva escucha de


web creada anteriormente y haremos clic en el botón Siguiente.

19. En el caso de que el servidor web requiera autenticación haremos que el servidor Forefront la
requiera a su vez al cliente. Para ello en la lista Seleccionar el método usado por Forefront TMG
para autenticarse en el servidor web publicado seleccionaremos la opción Sin delegación, pero el
cliente se puede autenticar directamente. Posteriormente haremos clic en el botón Siguiente.

20. En Conjunto de usuarios indicaremos que usuarios pueden acceder al servidor web. En este
caso dejaremos Todos los usuarios ya que el servidor web es público. Posteriormente haremos
clic en el botón Siguiente.

21. Para finalizar haremos clic en el botón Finalizar.

Para probarlo podemos simular un acceso desde la red externa al servidor web. Para ello
podemos emplear la máquina física o el servidor primario de Linux. Para ello abrimos el navegador y
en la barra de dirección teclearemos http://www.serviciosenred.local1. Veremos el

Figura 22.- Acceso desde la red Externa al servidor web publicado

siguiente resultado.

Como se puede observar los usuarios de la red externa (o Internet) acceden al servidor proxy
cuando hacen sus peticiones HTTP. Éste redirige la petición al servidor web dentro de la red interna, el
cual les responderá.

Si al intentar acceder desde la red externa vemos el siguiente error

Figura 23.- Error Forefront Server en publicación de servidor web

debemos hacer una modificación en la escucha web creada para permitir autenticación de los
clientes usando HTTP. Para ello seguir los siguientes pasos:

1. Hacer doble clic sobre la regla de publicación de sitio web que acabamos de crear.

1 Deberemos de configurar la resolución de nombres local para que www.serviciosenred.local sea traducido a la
dirección IP que tuviera el servidor Forefront en la red externa (172.16.0.0/16). Los clientes de la red externa
acceden al servidor web a través de la tarjeta Externa del servidor Forefront TMG. Se puede utilizar el archivo
C:\Windows\System32\drivers\etc\hosts en sistemas Windows y el archivo /etc/hosts en sistemas Linux para
configurar la resolución local de www.serviciosenred.local a la dirección IP indicada.

Página 31
Rafael Lozano Proxy HTTP

2. Hacer clic en la ficha de Escucha, y posteriormente hacer clic en Propiedades.

3. Hacer clic en la ficha Autenticación y, a continuación, en Opciones avanzadas.

4. En Configuración de cliente, activar la casilla de verificación Permitir la autenticación de cliente a


través de HTTP.

5. Hacer clic en Aceptar para cerrar las opciones avanzadas de autenticación.

6. Haga clic en Aceptar dos veces.

2.9.2 Publicar un servidor FTP


En el caso de querer publicar un servidor de un servicio para el que no tenemos una opción
específica en el panel de tareas, como por ejemplo FTP, deberemos elegir la opción del menú Regla de
publicación de un servidor no web. Para publicar nuestro servidor FTP en Internet seguir los siguientes
pasos:

1. Abrir la consola de administración.

2. En el árbol de la consola seleccionar Directivas de firewall en el servidor.

3. En el panel de tareas hacemos clic sobre Publicar protocolos de servidor no web...

Figura 24.- Publicar un servidor FTP. Lista de protocolos

4. Escribimos el nombre de la regla de acceso. Por ejemplo, Servidor FTP. Posteriormente


hacemos clic en el botón Siguiente.

5. Tecleamos la dirección IP del servidor FTP. En nuestro caso será 192.168.20.1. Posteriormente

Página 32
Rafael Lozano Proxy HTTP

hacemos clic en el botón Siguiente.

6. En Seleccionar protocolo desplegaremos la lista y elegiremos Servidor FTP. Después, haremos


clic en el botón Siguiente.

7. En Direcciones IP de escucha de red seleccionaremos la red Externa. A continuación haremos clic


en el botón Siguiente.

8. Por último, haremos clic en el botón Finalizar del asistente.

Para que la nueva regla tenga efecto deberemos hacer clic en el botón Aplicar del panel de
detalles. Al igual que antes podemos probarlo abriendo una conexión FTP desde la red externa. Si
desde la máquina física abrimos el explorador de archivos y tecleamos en la barra de lugar

Figura 25.- Conexión FTP abierta desde la máquina física con el usuario maria

ftp://ftp.serviciosenred.local veremos el siguiente resultado.

Vemos que la conexión FTP se abre en ftp.serviciosenred.local, que es el servidor


proxy y esta la reenvía al servidor FTP en SeWiPr.

2.9.3 Publicar un servidor Exchange


Al igual que ocurría con el servidor web, tenemos una opción específica en el panel de tareas
para publicar un servidor de correo Exchange. Para publicar nuestro servidor de correo en Internet
deberemos seguir los siguientes pasos:

1. Abrir la consola de administración.

2. En el árbol de la consola seleccionar Directivas de firewall en el servidor.

3. En el panel de tareas hacemos clic sobre Publicar servidor de correo...

4. En la pantalla inicial del asistente escribiremos el nombre de la regla de acceso. Por ejemplo,
Servidor Exchange. Posteriormente hacemos clic en el botón Siguiente.

5. En Seleccionar tipo de acceso elegiremos Acceso de cliente: RPC, IMAP, POP3, SMTP.
Posteriormente haremos clic en el botón Siguiente.

Página 33
Rafael Lozano Proxy HTTP

Figura 26.- Protocolos de acceso de cliente al servidor de correo

6. En la siguiente ventana activamos todas las opciones para dar acceso a los clientes en todos
los protocolos posibles. A continuación, hacer clic en el botón Siguiente.

7. En Seleccionar servidor escribiremos la dirección IP del servidor de correo. En nuestro ejemplo


vamos a suponer que está instalado en el servidor primario. Por tanto, deberemos escribir la
dirección IP 192.168.20.1. Posteriormente, hacer clic en el botón Siguiente.

8. En Direcciones IP de escucha de red seleccionaremos la red Externa. A continuación haremos clic


en el botón Siguiente.

9. Por último, haremos clic en el botón Finalizar del asistente.

Al finalizar haremos clic en el botón Aplicar del panel detalles. Podemos probarlo abriendo un
cliente de correo electrónico, como Outlook, y configurando una cuenta de correo en la que
especificaremos como servidor de correo entrante y saliente el nombre o la dirección IP del servidor
proxy.

2.10 Proxy cache


En este apartado analizaremos las posibilidades que nos ofrece el servidor Forefront TMG para
ser utilizado como proxy-caché. La caché del servidor nos dotará de una doble función:

✔ Caché de reenvío (Forward Caching).- Proporcionará las páginas web que se encuentren
almacenadas en su caché a los equipos internos de la red de nuestra red local.

✔ Caché inversa (Reverse Proxy).- Proporcionará las páginas web de los servidores internos de
nuestra red que se encuentren almacenadas en la caché a los equipos externos que deseen

Página 34
Rafael Lozano Proxy HTTP

acceder a los mismos.

La caché del servidor proxy mejora sustancialmente el rendimiento de acceso al servidor,


liberándolo además de mucha carga de CPU, al margen de la mejora en la velocidad de respuesta a
las demandas de nuestros usuarios.

Si en el árbol de la consola del Administrador del servidor Forefront TMG seleccionamos


Directiva de acceso web veremos en el panel central que Almacenamiento en cache web está
deshabilitado, ya que no lo habilitamos cuando configuramos la directiva de acceso web. En esta
situación no está funcionando el proxy caché.

Si queremos activar la función de proxy caché seguiremos los siguientes pasos:

1. En el panel acciones hacer clic en Configurar el almacenamiento en caché web. Se abre una
ventana de propiedades de configuración de la memoria caché que indica que la caché tiene
un tamaño de 0 MB.

2. Nos situamos en la pestaña Unidades caché y seleccionamos el único elemento que hay. A
continuación hacemos clic en el botón Configurar.

3. Nos situaremos sobre la unidad donde deseamos almacenar los elementos a cachear, en
nuestro caso en la unidad C:, y tras ello estableceremos en la caja de texto correspondiente el
tamaño máximo de la caché a 1 Gb. (1.024 Mb.) en este caso.

Figura 27.- Definición de unidad de caché

4. Hacer clic sobre el botón Establecer.

Página 35
Rafael Lozano Proxy HTTP

5. Hacer clic en el botón Aplicar.

6. Hacer clic en el botón Aceptar o Aplicar hasta que aparezca una ventana en la que nos da
opción de guardar los y reiniciar los servicios. Elegimos esta opción y hacemos clic en el botón
Aceptar.

De vuelta a la ventana de administración del servidor Forefront TMG observaremos el elemento


Directiva de acceso web que Almacenamiento en caché web está habilitado está realizando labor de
cacheo de las páginas web visitadas.

2.10.1 Descarga programada


Supongamos que los usuarios de una organización se conectan con mucha frecuencia a un sitio
web en Internet. En esta situación sería interesante que si los usuarios comienzan a trabajar a una
hora determinada, estos ya tuvieran almacenada en la caché todos los contenidos de este sitio web,
de modo que el acceso al mismo fuera mucho más rápido y se aprovechara mejor el ancho de banda
de la conexión a Internet de la organización.

Por ejemplo, si estamos en un centro educativo que tiene un portal web publicado en un
servidor externo al centro y que es consultado asiduamente por los miembros de la comunidad
educativa del centro con mucha frecuencia. En este escenario resulta idóneo programar una descarga
programada de la caché.

Para definir una descarga programada seguir los siguientes pasos:

1. Abrir la consola de administración.

2. En el árbol de la consola seleccionar Directiva de acceso web.

3. En el panel acciones hacer clic en Configurar el almacenamiento en caché web.

4. Hacer clic en la pestaña Descarga de contenido.

5. Hacer clic en el botón Nuevo…

6. Comienza el asistente de creación de una nueva tarea de descarga de contenido. Introducir


un nombre para la tarea. Posteriormente hacer clic en el botón Siguiente.

7. Seleccionar una frecuencia de la descarga de contenidos. En este caso elegiremos


Diariamente. Posteriormente hacer clic en el botón Siguiente.

8. A continuación se nos presentará una ventana en la que deberemos especificar la fecha desde
la que queremos que comience a aplicarse la descarga y la hora a la que se efectuará la
misma. Por defecto aparece la fecha actual e indicaremos aquí el día siguiente y como hora las
7 de la mañana, para que los contenidos estén almacenados en la caché antes del comienzo
de la jornada. Posteriormente haremos clic en el botón Siguiente.

9. Ahora tenemos que indicar la URL del portal que vamos a cachear. También activaremos la
casilla No seguir el vínculo fuera del nombre de dominio de direcciones URL especificado para evitar
que también cachee páginas externas a la URL. Hacer clic en el botón Siguiente.

Página 36
Rafael Lozano Proxy HTTP

Figura 28.- URL para cachear

10. En la siguiente ventana mostrada por el asistente deberemos indicar las condiciones y vigencia
del cacheo realizado. Activaremos Almacenar todo el contenido en caché para que lo guarde
independientemente de lo que indiquen los encabezados, y dejaremos el TTL por defecto.
Hacemos clic sobre el botón Siguiente.

11. En la última ventana del asistente hacer clic en el botón Finalizar.

12. Nos aparecerá un aviso indicando que los trabajos de descarga programada se realizan
cuando la función proxy web está habilitada y el grupo configuración de descarga programada
está habilitado en las directivas del sistema. Hacemos clic en el botón Si para que configure
estos parámetros.

13. Finalmente aplicamos los cambios.

3. Proxy Squid
Squid es el software para servidor proxy más popular y extendido entre los sistemas operativos
basados en UNIX. Es muy confiable, robusto y versátil. Entre otras cosas, Squid puede hacer Proxy y
cache con los protocolos HTTP y FTP entre otros, cache transparente, aceleración HTTP, cache de
consultas DNS y otras muchas más como filtro de contenido, control de acceso por IP y por usuario.

Página 37
Rafael Lozano Proxy HTTP

3.1 Instalación
Vamos a instalar Squid en el el servidor. En este documento se verá la versión 3. Desde una
ventana de terminal ejecutar como usuario root el siguiente comando
apt­get install squid
Al terminar la instalación el servidor se pone en marcha y ya está en funcionamiento. Para
comprobar su ejecución podemos ejecutar el siguiente comando
ps aux | grep squid3
Entonces veremos una línea como la siguientes
proxy     4019  0.0  2.5  38552 12840 ?        Ss   17:14   0:00 
/usr/sbin/squid3 ­N ­YC ­f /etc/squid3/squid.conf
Vemos que hay un proceso en ejecución que corresponde al proxy.

Si hacemos la instalación con los paquetes binarios de la distribución debemos tener presente
que vienen compilados sin habilitar SSL, lo cual impedirá que Squid gestione las peticiones HTTPS de
los clientes. Configurar Squid para gestionar estas peticiones no es tarea trivial, ya que debemos
hacer primero una instalación desde código fuente realizando la compilación con la opción
­­enable­ssl, para posteriormente configurar el burping SSL o Squid en medio, lo cual puede
acarrear problemas éticos y legales. Hay que tener presente que el protocolo SSL se diseño para
suministrar una conexión privada entre dos entidades (servidor y cliente). Desencriptar una
comunicación HTTPS sin consentimiento ni conocimiento del usuario podría violar las normas y ser
ilegal.

3.2 Configuración
Squid mantiene sus archivos de configuración en el directorio /etc/squid3. El archivo
principal de configuración es /etc/squid3/squid.conf. El formato de este archivo es muy
simple. Las líneas que comienzan con # son comentarios y son ignoradas por el servidor. El resto son
directivas de configuración con la siguiente sintaxis
directiva valor [valor2 valor3 …]
Las directivas pueden tener uno o varios valores a continuación del nombre de la directiva. Se
recomienda que una línea no comience por espacio en blanco y que al final de esta tampoco tenga
espacios en blanco.

Este archivo incluye todas las directivas de configuración disponibles, la mayoría están
comentadas y tienen un valor predefinido, estos valores predefinidos son óptimos para la mayoría de
las instalaciones y solo se tendrán que cambiar en caso de que la configuración lo requiera, en
algunos otros casos se descomentan las directivas aun cuando se deje el valor predeterminado con
propósitos de hacer explicitas las configuraciones.

Ya que no existe página de manual para el archivo de configuración, en su lugar, la información


de las directivas de configuración están incluidas como comentarios en el mismo archivo
squid.conf  se recomienda que antes de hacer cambios en este archivo hacer una copia de
respaldo para usarla como manual de referencia.

Página 38
Rafael Lozano Proxy HTTP

3.2.1 Comprobando la configuración de squid


Para verificar que hemos escrito correctamente las directivas en el archivo de configuración
tenemos la posibilidad de ejecutar el siguiente comando.
squid ­k parse
Aparece una salida parecida a la siguiente:
squid3 ­k parse
2013/12/04 18:10:26| Processing Configuration File: /etc/squid3/squid.conf (depth 0)
2013/12/04 18:10:26| Processing: acl manager proto cache_object
2013/12/04 18:10:26| Processing: acl localhost src 127.0.0.1/32 ::1
2013/12/04 18:10:26| Processing: acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
2013/12/04 18:10:26| Processing: acl SSL_ports port 443
2013/12/04 18:10:26| Processing: acl Safe_ports port 80 # http
2013/12/04 18:10:26| Processing: acl Safe_ports port 21 # ftp
2013/12/04 18:10:26| Processing: acl Safe_ports port 443 # https
2013/12/04 18:10:26| Processing: acl Safe_ports port 70 # gopher
2013/12/04 18:10:26| Processing: acl Safe_ports port 210 # wais
2013/12/04 18:10:26| Processing: acl Safe_ports port 1025­65535 # unregistered ports
2013/12/04 18:10:26| Processing: acl Safe_ports port 280 # http­mgmt
2013/12/04 18:10:26| Processing: acl Safe_ports port 488 # gss­http
2013/12/04 18:10:26| Processing: acl Safe_ports port 591 # filemaker
2013/12/04 18:10:26| Processing: acl Safe_ports port 777 # multiling http
2013/12/04 18:10:26| Processing: acl CONNECT method CONNECT
2013/12/04 18:10:26| Processing: http_access allow manager localhost
2013/12/04 18:10:26| Processing: http_access deny manager
2013/12/04 18:10:26| Processing: http_access deny !Safe_ports
2013/12/04 18:10:26| Processing: http_access deny CONNECT !SSL_ports
2013/12/04 18:10:26| Processing: http_access allow localhost
2013/12/04 18:10:26| Processing: http_access deny all
2013/12/04 18:10:26| Processing: http_port 192.168.21.1:3128
2013/12/04 18:10:26| Processing: coredump_dir /var/spool/squid3
2013/12/04 18:10:26| Processing: refresh_pattern ^ftp: 1440 20% 10080
2013/12/04 18:10:26| Processing: refresh_pattern ^gopher: 1440 0% 1440
2013/12/04 18:10:26| Processing: refresh_pattern ­i (/cgi­bin/|\?) 0 0% 0
2013/12/04 18:10:26| Processing: refresh_pattern . 0 20% 4320
2013/12/04 18:10:26| Processing: visible_hostname selipr.serviciosenred.local
Como se puede apreciar realiza el proceso de las directivas que hay actualmente en el fichero
de configuración. Aparece una línea de proceso por cada directiva. Si no se visualiza ningún mensaje
debajo del proceso de una directiva entonces significa que el archivo de configuración está
correctamente configurado.

Sin embargo, si alguna directiva no está correctamente escrita entonces puede visualizar un
mensaje como el siguiente debajo de su proceso:
2013/12/04 18:13:20| Processing: htttp_port 192.168.21.1:3128
2013/12/04 18:13:20| cache_cf.cc(381) parseOneConfigFile: squid.conf:1136 unrecognized: 
'htttp_port'
Donde dice que la linea 1136 no reconoce la opción htttp_port. Solo cuando la validación de
la configuración este correcta puede iniciar o reinicar el servicio. Para hacer esto ejecutaremos el
siguiente comando
sudo service squid restart
Cuando realicemos alguna cambio en el archivo de configuración reiniciaremos el servicio.

Página 39
Rafael Lozano Proxy HTTP

3.2.2 Configuración inicial


La directiva http_port define el puerto en el que Squid escuchará peticiones HTTP de los
clientes. Esta es un parámetro requerido, el puerto predefinido de Squid es el 3128, y en el fichero de
configuración aparecerá así:
http_port 3128
En este ejemplo, Squid abrirá el puerto TCP 3128 en todas las direcciones IP del sistema. Si el
sistema es tiene más de una interfaz de red y queremos limitar en que redes dará servicio de proxy,
podemos indicar la dirección IP de la tarjeta de red del servidor. Por ejemplo
http_port 192.168.21.1:3128
Si añadimos además la opción transparent entonces estamos indicando que Squid actúe
como un proxy transparente. La ventaja de configurar Squid en dicho modo de trabajo, es que no
sería necesario configurar el navegador de los PCs clientes para trabajar con el proxy, sino que
simplemente configuramos la puerta de enlace del PC cliente con la IP del servidor proxy. La directiva
anterior quedaría entonces así
http_port 192.168.21.1:3128 transparent
En el siguiente apartado se trata con mayor detalle esta cuestión.

La directiva visible_hostname define el nombre de host con el que Squid se anunciará, y


también será el nombre que aparecerá en las paginas de error. Defina un nombre valido, por ejemplo:
visible_hostname selipr.serviciosenred.local
Squid por defecto usa los servidores DNS definidos en el archivo /etc/resolv.conf a
menos que se definan los servidores DNS usando la directiva dns_nameservers. Si no deseamos
que Squid use los servidores DNS del sistema definiremos la lista de servidores de la siguiente forma:
dns_nameservers 192.168.21.1 192.168.21.10
Se recomienda que el servidor proxy Squid tenga acceso a uno o más servidores DNS cache
para acelerar el servicio de resolución de nombres.

3.3 Configuración de los clientes


De nuevo, tendremos que configurar los clientes para que en su configuración de red tengan la
dirección IP del servidor proxy como puerta de enlace. En nuestro caso será la 192.168.21.1. Además,
las peticiones que realicen al puerto 80 tienen que redirigirse al puerto 3128, que es donde opera
Squid por defecto.

Una forma poco recomendable de hacerlo involucra una configuración manual en cada uno de
los navegadores, algo tedioso y lento, ya que implica tener que configurar cada navegador en cada PC
de cliente. Lo que buscamos nosotros es poder realizar la configuración desde el propio servidor sin
tener que realizar configuración alguna en los clientes. En este caso podemos hacerlo de dos formas:

✔ Configurar Squid para que trabaje en modo transparente y redireccionar las peticiones del
puerto 80 ( y 443 en su caso) al 3128, o al que hubiéramos configurado en Squid.

✔ Usando el protocolo WPAD que se comentó en el apartado de Windows, en el cual el


navegador obtiene los parámetros de proxy vía DHCP ó DNS.

Para el primer caso tendríamos que configurar la directiva http_port con la opción

Página 40
Rafael Lozano Proxy HTTP

transparent, tal y como se ha indicado en el apartado anterior, y después hay que incluir en
nuestro script que configura el NAT un comando iptables que crea una regla en la tabla NAT para
redirigir las peticiones del puerto 80 (HTTP) al 3128 2. Sería la siguiente
iptables ­t nat ­A PREROUTING ­p tcp ­­dport 80 ­j REDIRECT ­­to­port 
3128
Si también estuviéramos utilizando Squid para gestionar las peticiones HTTPS, entonces habría
que redirigir también el puerto 443.

Esta opción es simple y válida para la mayoría de los escenarios, es decir, para cualquier
aplicación que emplea comunicaciones HTTP. Sin embargo tiene un inconveniente y es que no
podríamos configurar nuestro Squid para autenticación de usuarios.

En caso de que necesitáramos habilitar autenticación de usuarios deberemos buscar un


método diferente para no tener que configurar el proxy en los clientes y que estos puedan salir a
Internet de forma transparente. Para este escenario tendremos que configurar el protocolo WPAD.
Para ello vamos a crear un script en Javascript llamado PAC (Proxy Auto Config) que estará disponible
para todos los PCs de la red local interna. Para ello necesitamos:

✔ Un servidor web Apache.

✔ Un servidor DHCP para los clientes que obtienen IP automática.

✔ Un servidor DNS para los clientes con configuración IP estática.

Antes de nada volveremos a configurar la directiva http_port de Squid a su IP y puerto, pero


suprimiendo la opción transparent. Quedaría de la siguiente manera.
http_port 192.168.21.1:3128
Ahora creamos el script PAC que se guardará en el archivo wpad.dat y en la raíz de
documentos del servidor web, en nuestro caso /var/www/html. En su forma más simple tendría el
siguiente contenido.
function FindProxyForURL(url, host) {
return "PROXY 192.168.21.1:3128";
}
Ahora editamos el archivo donde se configuran los sitios web virtuales. Este archivo es
/etc/apache2/sites­available/000­default.conf. Vamos a la primera declaración
<VirtualHost> y añadimos la siguiente directiva:
AddType application/x­ns­proxy­autoconfig .dat
Simplemente lo que hemos hecho es asociar la extensión .dat corresponde al tipo mime
indicado en la directiva.

Ahora debemos configurar el servidor DHCP. Editamos el archivo /etc/dhcp/dhcpd.conf y


añadimos la siguiente directiva a nivel global.
# Activar el uso de la opción 252 (Autoconfiguración del proxy)
option local­pac­server code 252 = text;

2 Para más información sobre la configuración de una conexión compartida a Internet, consultar el manual
publicado en www.apuntesdigitales.es sobre NAT.

Página 41
Rafael Lozano Proxy HTTP

En la declaración de ámbito (subnet) añadimos la siguiente opción


# Detección automática del proxy
option local­pac­server "http://wpad.serviciosenred.local/wpad.dat\n";
Por último configuramos el servidor DNS para asegurarnos que en la zona correspondiente al
dominio local (intranet) tenemos un registro A que apunta al servidor proxy. Para ello editamos el
archivo de zona y añadimos lo siguiente.
WPAD        IN    A  192.168.21.1
Algunos clientes web localizan los parámetros de proxy haciendo consultas DNS al registro SRV
wpad.tcp, entonces creamos un registro SRV, por ejemplo:
wpad.tcp    IN    SRV    0 0 80 selipr
Otra alternativa que usan algunos clientes web es localizar el URL del proxy pac vía una consulta
a un registro TXT, por ejemplo:
wpad        IN    TXT    "service: wpad:http://wpad.serviciosenred.local:80/wpad.dat"
Para sistemas operativos GNU/Linux que usan clientes web en el shell, como wget, lynx, links,
curl y otros, deben definir las variables de entorno http_proxy. Desde el shell:
$ export http_proxy="http://192.168.21.1:3128/"
Si el proxy requiere autenticación y soporta autenticación simple:
$ export http_proxy="http://usuario:contraseña@192.168.21.1:3128/"
O para que siempre se cargue al inicio de sesión, agregamos el comando el archivo
~/.bashrc.

Para que los clientes puedan detectar automáticamente el proxy el navegador tiene que
configurarse para autodetectar la configuración de proxy en la red.

3.4 Control de acceso


Squid incorpora un sistema de control de acceso bastante flexible y potente basado en Listas
de Control de Acceso o ACLs. Los controles de acceso en Squid están formados por dos componentes
principales: los elementos de ACL y las listas de acceso.

3.4.1 Definir ACL's


Los elementos de una ACL definen el origen o destino de la petición realizada por el cliente, hay
diferentes tipos de elementos de ACL, Los tipos de elementos de ACL de tipo origen pueden ser:

✔ Dirección IP del cliente

✔ Nombre del usuario

✔ Grupo de usuarios

✔ Navegador

Los tipos de elementos de ACL de tipo destino pueden ser:

✔ Puerto

✔ Dominio DNS

Página 42
Rafael Lozano Proxy HTTP

✔ URL

✔ Tipo MIME

Además hay otros tipos de elementos de ACL como:

✔ Protocolo

✔ Método usado en la petición, GET, POST, CONNECT

La directiva de configuración acl define los elementos de una ACL, su estructura es:
acl nombreacl tipoacl [­i] valor...
acl nombreacl tipoacl [­i] "archivo"
El nombreacl es un nombre elegido por el administrador y que es significativo para definir el
tipo de elemento que viene a continuación. Cada elemento de ACL debe tener un nombre único
asignado. La opción ­i es para que en el caso de que indiquemos valores de caracteres no sean
sensibles a mayúsculas o minúsculas.

Los elementos de ACL consisten en uno o más valores. En caso de ser más de uno se separan
por espacios en blanco. También, podemos especificar una lista ACL en varias líneas ya que Squid las
combinará en una sola. En el caso de que sean muchos valores conviene introducirlos en un archivo
de texto el cual se pondrá encerrado entre comillas y con su path absoluto.

Vamos a ver ahora los tipos de elementos los cuales están basados en la petición del cliente y
que pueden hacer referencia a las direcciones de origen, destino, puerto, nombres de dominio origen
y destino, hora, etc. Para ello podemos usar los siguientes tipos de elementos de ACL.

3.4.1.1 ACL basada en la dirección IP de origen


Con src definimos las direcciones IP origen de la petición. Puede ser una sola dirección o un
rango de direcciones IP, soporta el uso de mascaras de subred en formato CIDR. Por ejemplo, si
queremos una ACL con las direcciones IP de nuestra red local la definiríamos así
acl redlocal src 192.168.21.0/24
acl redlocal src 192.168.21.0/255.255.255.0
También podemos hacer referencia a una sola dirección IP con alguna de las dos siguientes
formas
acl selise src 192.168.21.10/32
acl selise src 192.168.21.10/255.255.255.255
Podemos poner varias direcciones IP en una lista como en el siguiente ejemplo
acl lista_ip src 192.168.21.20/32 192.168.21.21/32 192.168.21.22/32
Y en el caso de que sean muchas direcciones podemos introducirlas en un archivo.
acl lista_ip src “/etc/squid3/lista_ip.acl”
El archivo puede tener el siguiente contenido:
192.168.21.20/32
192.168.21.21/32
192.168.21.22/32
192.168.21.23/32

Página 43
Rafael Lozano Proxy HTTP

192.168.21.24/32
...
3.4.1.2 ACL basada en puertos
El tipo de ACL port define una lista de un puerto, un rango o una lista de puertos usados en la
petición HTTP usados en la petición. Por ejemplo
acl puertos_seguros port 80 21 1025­65535
acl puertos_ssl port 443 
3.4.1.3 ACL basada en el método de conexión
Las ACL de tipo method define una lista de métodos HTTP usados en la petición, en la mayoría
de casos los clientes usan el método GET o POST, sin embargo algunos clientes usan el método
CONNECT para realizar un túnel hacía un puerto TCP, por ejemplo para conectarse a un sitio seguro
vía HTTPS (TCP/443). Sin embargo, otros clientes pueden aprovechar esta característica para enviar
SPAM haciendo un túnel HTTP usando el método CONNECT. Por lo tanto es altamente recomendable
limitar el uso del método CONNECT a puertos seguros, por defecto, solo se permite el uso del método
CONNECT al puerto HTTPS TCP/443.
acl CONNECT method CONNECT
3.4.1.4 ACL basada en nombres de dominio de destino
La regla de tipo dstdomain se establecen permisos sobre dominios web de destino. Por
ejemplo
acl pemitidos dstdomain .serviciosenred.local .juntadeandalucia.es
acl prohibidos dstcomain “/etc/squid3/dominios_porno.acl”
El fichero dominios_porno.acl puede tener el siguiente contenido
www.playboy.com
www.private.com
...
3.4.1.5 ACL basada en la URL
El tipo de ACL url_regex define expresiones regulares para elementos de ACL basados en la
URL o partes de la URL. Con este tipo podemos definir una ACL que intercepta peticiones en cuya URL
se hallen ciertas palabras o frases. Este tipo suele utilizarse para negar el acceso a determinadas
URL's. Su sintaxis básica es
acl <nombre> url_regex [­i] <patrón>
Donde <patrón> indica la URL a la que queremos controlar el acceso. Por ejemplo
acl descargas_prohibidas url_regex www.megaupload.com
El tipo url_regex también puede ser usado para crear controles de acceso basados en
palabras dentro de la URL solicitada por el cliente. Con la opción ­i indicaremos que no hará
distinción entre mayúsculas y minúsculas. Por ejemplo, la siguiente ACL nos permitirá bloquear el
acceso a URL's que contengan las palabras gai, sex, lesb, porn, xxx o nude.
acl palabras_prohibidas url_regex ­i gai sex lesb porn xxx nude
3.4.1.6 ACL basada en la ruta de la URL
El tipo de ACL urlpath_regex es basado en la ruta el URL solicitado, es decir, quita la parte

Página 44
Rafael Lozano Proxy HTTP

del protocolo y el nombre del servidor, por ejemplo, si el cliente solicita el URL
http://www.example.com/downloads/music/featured.mp3, la coincidencia tomaría
efecto solo a la parte de /downloads/music/featured.mp3.

El siguiente ejemplo crea una ACL para extensiones de archivos multimedia


acl archivos_multimedia urlpath_regex ­i \.mp3$ \.mp4$ \.wma$ \.avi$ 
\.wmv$ \.mov$ \.mpg$ \.mpeg$ \.ram$ \.vob$
Las expresiones anteriores pueden introducirse mejor en un archivo como lista
acl archivos_multimedia urlpath_regex ­i "/etc/squid3/multimedia.acl"
3.4.1.7 ACL basada en la dirección IP de destino
Con dst definimos las direcciones IP de destino de la petición. Podemos utilizar nombres de
dominio en lugar de direcciones IP. Por ejemplo:
acl webmail dst www.gmail.com www.hotmail.com www.yahoo.com 
La regla de tipo srcdomain se establecen permisos sobre dominios web de origen y se
determina por la resolución de DNS inversa. Para poder ocupar esta regla es necesario contar un DNS
local. Por ejemplo
acl repos srcdomain selipr.serviciosenred.local 
selise.serviciosenred.local
3.4.1.8 ACL basadas en tiempo
La regla time estable un tiempo limite de conexión dentro de una semana. Parámetros por
días de la semana son S domingo, M lunes, T martes, W miércoles, H jueves, F viernes y A sábado. En
el manejo de las horas se establece un horario de 24:00 hrs. Por ejemplo, la siguiente regla establece
que esta habilitada los días Lunes a Viernes de 09:00 a 18:00 hrs.
acl horario_permitido time MTWHF 09:00­18:00 
3.4.2 Lista de acceso
Las listas de acceso son usadas para permitir o denegar el acceso a uno o más elementos de
ACL. La directiva http_access define el tipo de acceso a uno o más elementos de ACL. Su sintaxis
es
http_access allow|deny [!]nombreacl ...
El esquema más simple de http_access para determinar el acceso a un a una ACL sería el
siguiente:
http_access allow|deny <nombreacl>
Squid evalúa las reglas en el orden en el que son escritas, es decir, de arriba hacía abajo. Si la
primer regla no hace coincidencia con la petición, entonces el Squid realizará una operación de tipo
OR y evaluará los elementos de la siguiente regla de acceso.
http_access allow|deny <nombreacl>
                OR
http_access allow|deny <nombreacl>
                OR
...
Si en una regla de acceso hay más de un elemento de ACL, el sistema utiliza el operador AND

Página 45
Rafael Lozano Proxy HTTP

para cada elemento de la regla, esto quiere decir, que todos los elementos de la ACL deben hacer
coincidencia para que una acción se aplique. En conclusión, el esquema de evaluación de las reglas de
control de acceso en Squid se traduce a:
http_access allow|deny <nombreacl> AND <nombreacl> AND ...
                OR
http_access allow|deny <nombreacl> AND <nombreacl> AND ...
                OR

Si después de evaluar todas las reglas de acceso Squid no encuentra una regla que haga
coincidencia con la petición, la acción predeterminada será lo contrario a la acción definida por la
última regla de la lista, por lo que es recomendable que la última regla en su lista sea aquella que
deniegue el acceso, podemos usar la ACL predeterminada all, por ejemplo:
http_access allow|deny <nombreacl> AND <nombreacl> AND ...
                OR
http_access allow|deny <nombreacl> AND <nombreacl> AND ...
                OR
...
http_access deny all
3.4.3 Autenticación de usuarios
Con Squid también podemos establecer los usuarios que se conectarán a Internet mediante
autenticación. De esta forma podemos controlar tanto las máquinas que se conectan, por dirección
IP, y los usuarios que lo hacen, mediante autenticación. Hay un inconveniente y es que Squid no
contempla la autenticación cuando está configurado como proxy transparente.

Squid contempla la autenticación mediante diferentes métodos entre los que podemos
encontrar los siguientes:

1. Servidor LDAP.- Usa el protocolo Lightweight Directory Access Protocol.

2. NCSA.- Usa un archivo de usuarios y contraseñas.

3. MSNT.- Usa un dominio de autenticación Windows NT.

4. PAM.- Usa los módulos de autenticación PAM.

5. SMB.- Usa un servidor SMB como Windows NT o Samba.

6. SASL.- Usa las bibliotecas de autenticación SASL.

En este ejemplo vamos a utilizar el módulo ncsa_auth, de la NCSA (National Center for
Supercomputing Applications) y que ya viene incluido como parte del paquete principal de Squid en la
mayoría de las distribuciones actuales. Este módulo provee una autenticación muy sencilla a través de
un archivo de texto simple cuyas contraseñas fueron creadas con htpasswd, la misma utilidad que se
emplea para crear la base de datos de usuarios al configurar la autenticación en el servidor web
Apache3.

El primer paso es crear la base de datos de usuario. Para ello teclearemos el siguiente

3 Esta utilidad viene incluida en el paquete apache2-utils. Si no tenemos instalado el servidor web Apache,
tendremos que instalar este paquete.

Página 46
Rafael Lozano Proxy HTTP

comando en una ventana de terminal como usuario root.


htpasswd ­cd /etc/squid3/claves juan
El comando anterior crea el archivo /etc/squid3/clave al que añade el usuario juan.
Pedirá introducir una contraseña dos veces y si coinciden entonces creará el usuario. Para añadir al
resto de usuarios tendremos que ejecutar el mismo comando pero sin la opción ­c para que no
sobreescriba el fichero y con el nombre del siguiente usuario a introducir.
htpasswd ­d/etc/squid3/claves maria
La opción ­d es obligada ya que por defecto htpasswd utiliza un cifrado MD5 mientras que el
módulo NCSA de Squid contempla un cifrado crypt.

Ahora tendremos configurar Squid para que emplee el módulo NCSA en la autenticación. Para
ello hay que añadir la siguiente línea al archivo de configuración /etc/squid3/squid.conf.
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/claves
Como se puede apreciar la directiva anterior indica donde se encuentra el módulo NCSA y el
archivo con la base de datos de usuarios.

A continuación se debe especificar una lista de control de acceso denominada passwd la cual
se configurará para utilizar de modo obligatorio la autenticación para poder acceder a Squid.
acl password proxy_auth REQUIRED
Finalmente añadiremos la siguiente directiva para conceder acceso a los usuarios autenticados
de nuestra red.
http_access allow localnet password
Ahora, cuando el usuario quiera acceder a Internet se encontrará un cuadro de diálogo para
introducir sus credenciales.

Figura 29.- Autenticación con Squid en Chromium

Como comentamos antes, la autenticación no es posible si se usa un proxy transparente. Esto


implica suprimir la opción transparent en la directiva http_port. Por tanto, para que el
navegador acceda a Internet tenemos que configurarlo para que utilice el servidor proxy
192.168.21.1:3128.

3.5 Construyendo el filtro de peticiones


Vamos a construir nuestro servidor proxy con la definición de las ACL y las reglas de acceso
correspondientes. Supongamos que tenemos que configurar Squid para que satisfaga los siguientes
requisitos:

1. Se permite la salida a Internet a los PC's de la red local sin necesidad de autenticarse.

Página 47
Rafael Lozano Proxy HTTP

2. El servidor puede acceder a todos los dominios.

3. Solamente se admiten conexiones desde los puertos para WWW y FTP, aunque para FTP
pasivo solamente se emplearán el rango 5000-10000.

4. No se permiten conexiones a un conjunto de sitios web dedicados a descargas ilegales y


pornografía. Como el número de sitios de este tipo es grande impediremos también las
conexiones a aquellas URL's que contegan las palabras habituales en este tipo de sitios.

5. Tampoco se permiten conexiones a las redes sociales.

6. No se podrán reproducir archivos multimedia.

7. Los PC's de la red local solamente pueden conectarse entre las 8:00 y las 15:00 horas de
Lunes a Viernes.

Con estos requisitos tendríamos la siguiente configuración


################################# ACL's ################################
# PC's de la red local
acl redlocal src 192.168.21.0/24

# El propio servidor
acl localhost src 127.0.0.1/8

# Los puertos seguros son el 80 (www), 21 (ftp) y 5000­10000
acl puertos_seguros port 80 21 5000­10000

# Sitios prohibidos (descargas ilegales y pornografía)
acl sitios_prohibidos dstdomain “/etc/squid3/sitios_prohibidos.acl”

# Palabras que no se admiten en las URL's
acl palabras_prohibidas url_regex “/etc/squid3/palabras_prohibidas.acl”

# Las redes sociales no se permiten
acl redes_sociales dstdomain “/etc/squid3/redes_sociales.acl”

# No se reproducen archivos multimedia
acl no_multimedia url_regex “/etc/squid3/no_multimedia.acl”

# El horario autorizado está entre las 8:00 y las 15:00 de L a V
acl horario time MTWHF 08:00­15:00

########################### Reglas de acceso ###########################
# Permitimos al servidor acceso total
http_access allow localhost puertos_seguros

# Se deniegan los sitios prohibidos
http_access deny sitios_prohibidos

# Se deniegan las URL's con las palabras prohibidas
http_access deny palabras_prohibidas

Página 48
Rafael Lozano Proxy HTTP

# Se deniegan los sitios de las redes sociales
http_access deny redes_sociales

# No se pueden reproducir los archivos multimedia
http_access deny no_multimedia

# Se permiten a los PC's de la red local los puertos seguros
http_access allow redlocal puertos_seguros horario

# Todo lo demás se deniega
http_access deny all
El orden de definición de las ACL's no es relevante, no así con el orden de las reglas de acceso.
Debemos recordar que cuando Squid encuentra una regla de acceso que permite la conexión a la
petición no sigue evaluando reglas. Por tanto si ponemos en primer lugar la regla que concede acceso
a los PC's de la red local en los puertos admitidos y dentro de su horario les concedería acceso sin
haber comprobado si es un dominio admisible o la URL contiene las palabras prohibidas, además de
permitir reproducción de archivos multimedia.

Ahora hay que definir el contenido de los ficheros con los sitios web prohibidos, las palabras
que no se admiten en la URL, los sitios de las redes sociales y las extensiones de los archivos
multimedia. Podrían ser los siguientes:
# Archivo /etc/squid3/sitios_prohibidos.acl
www.megaupload.com
www.rapidshare.com
www.warez.com

# Archivo /etc/squid3/redes_sociales.acl
www.facebook.com
www.tuenti.com
www.twitter.com
www.myspace.com
www.google+.com

# Archivo /etc/squid/palabras_prohibidas.acl
gai
sex
lesb
porn
xxx
nude
warez

# Archivo /etc/squid3/no_multimedia.acl
\.mp3$ 
\.mp4$ 

Página 49
Rafael Lozano Proxy HTTP

\.wma$ 
\.avi$ 
\.wmv$ 
\.mov$ 
\.mpg$ 
\.mpeg$ 
\.ram$ 
\.vob$

3.6 Caché de memoria


Una de las principales funciones de Squid es proxy HTTP. Esto significa que almacena en disco
las peticiones HTTP de los clientes para servirlas rápidamente si se las vuelven a pedir. Los siguientes
parámetros configuran la caché de disco en Squid.

El parámetro cache_mem especifica la cantidad ideal de memoria que será usada para
mantener el cache de los objetos entrantes en memoria. El parámetro cache_mem NO especifica el
tamaño máximo de memoria asignada al proceso squid3. Solo especifica cuanta memoria usará
para el cache de objetos de memoria.

Squid usa una gran cantidad de memoria por razones de rendimiento. Mantiene en memoria
metadatos de los objetos cacheados en disco. En arquitecturas de 32 bits, cada metadato ocupa 72
bytes mientras que en arquitecturas de 64 bits utiliza 104 bytes. Un metadato representa a un objeto
cacheado en disco. Una caché con un millón de objetos requiere 72 MB de memoria solo para los
metadatos. En la práctica Squid necesita mucha más memoria.

Si vemos el consumo de memoria del proceso squid3 obtendremos una salida parecida a la
siguiente:
 PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND    
 5482 proxy     20   0 38680  12m 3456 S   0,0  2,6   0:00.48 squid3 
El campo VIRT indica la cantidad de memoria virtual que utiliza. En el ejemplo anterior tenemos
38680 KB, unos 38 MB. El campo RES indica la cantidad de memoria física que actualmente ocupa el
proceso. En este ejemplo está ocupando 12 MB. Vemos que la diferencia entre ambos es muy grande,
lo que significa que Squid está haciendo un uso intensivo de paginación.

Si queremos poner una caché de memoria a 64 MB escribiremos la siguiente directiva.


cache_mem 64 MB

3.7 Caché de disco


El parámetro cache_dir define el directorio para almacenar los objetos en cache de disco,
este parámetro define la ruta del directorio, el tipo de cache de disco y su tamaño, su formato es:
cache_dir tipo directorio MB nivel1 nivel2 [opciones]
Podemos especificar múltiples directorios para caché en disco, por ejemplo, para repartir la
caché de disco en varios discos duros y equilibrar el acceso a la caché.

El tipo define el sistema de almacenamiento que Squid usará para almacenar los objetos en
disco, el tipo predeterminado es UFS.

directorio define la ruta absoluta al directorio designado para el cache, en la mayoría de

Página 50
Rafael Lozano Proxy HTTP

distribuciones GNU/Linux el directorio predeterminado es /var/spool/squid, en Debian/Ubuntu


se usa /var/spool/squid3.

MB define la cantidad de disco en Megabytes para el directorio definido. El valor


predeterminado es 100 MB, por ejemplo:
cache_dir ufs /var/spool/squid3 100 16 256
Recuerde que el tamaño del cache influenciará el tamaño de memoria que Squid usara en el
sistema. Además no es aconsejable poner el tamaño del disco duro, mejor, si quiere que squid use
todo el disco, calcularemos el 80% de la capacidad total y usaremos ese valor.

nivel1 define subdirectorios de primer nivel que serán creados en el directorio, el valor
predeterminado es 16. nivel2 define el número de subdirectorios para el segundo nivel del
directorio. El valor predeterminado es 256.

Como vimos anteriormente, Squid mantiene en memoria entre 72 (arquitecturas 32 bits) y 104
(arquitecturas 64 bits) bytes de memoria para los metadatos de cada objeto en el cache, llamada
estructura de datos StoreEntry. Squid usa aproximadamente 10 MB de memoria por cada 1 GB de
disco en arquitecturas de 32 bits, y 14 MB en arquitecturas de 64 bits, por lo tanto se recomienda que
tome esto en consideración ya que, por ejemplo, un cache_dir de 10GB va a requerir
aproximadamente 100MB de memoria adicionales para la meta información.

La gestión de la caché de disco es una cuestión crítica, ya que determinará en gran medida el
rendimiento de Squid. Conviene afinar mucho la configuración de la caché de disco, para evitar
cuellos de botella que afecten al rendimiento.

En primer lugar el tipo por defecto para el directorio caché es UFS. Este sistema usa un solo
proceso para escribir en el disco, lo que puede causar cuellos de botella. El tipo aufs usa el mismo
sistema de almacenamiento que UFS pero este usa hilos y así evita bloquear el proceso Squid con
operaciones de I/O al disco. Además, Squid realiza muchas operaciones de I/O en disco, por lo que se
recomienda tener el directorio de cache en un disco rápido, de preferencia que este separado del
disco en el que esta instalado el sistema operativo. Si tenemos un disco duro adicional, por ejemplo
un SATA de 80 GB, se le asigno el nombre de dispositivo /dev/sdb, creamos una partición de 10GB
que usaremos para el cache de disco, la partición es /dev/sdb1.

Es recomendable que la partición sea formateada con un sistema de archivos sin journaling
para evitar la carga extra, por ejemplo ext2:
mke2fs /dev/sdb1
Se recomienda que la partición sea montada sin soporte de actualización de los tiempos de
acceso. Para ello se define en sus opciones opciones de montaje la opción noatime al dispositivo
asignado para el cache de Squid. Esto se hace en el archivo de información de montaje de dispositivos
/etc/fstab. Por ejemplo:
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/sda3 / ext3 defaults,relatime 0 1
...
# Cache Squid
/dev/sdb1 /var/spool/squid3 ext2 defaults,noatime 0 0

Página 51
Rafael Lozano Proxy HTTP

Poner en cero la opción pass, para evitar un chequeo de la partición cuando se reinicie el
sistema con caches de disco muy grandes ya que podría retrasar el tiempo en el que reinicia el
sistema hasta el que el chequeo termine.

Si hacemos cambios en la partición y/o directorio de caché es conveniente parar Squid, borrar
la antigua caché y reiniciar de nuevo Squid.
service squid3 stop
rm ­rf /var/spool/squid3/*
mount /var/spool/squid3
Nos tendremos que asegurar de que el usuario proxy tiene permisos de lectura, escritura y
ejecución sobre el directorio del cache. Lo mejor sería asignárselo como propietario.
chown proxy:proxy /var/spool/squid3
chmod 750 /var/spool/squid3
Finalmente crearemos la estructura de directorios en el directorio del cache:
squid3 ­z
Por último recordar que podemos tener múltiples caches, es decir, varias lineas cache_dir y
así distribuir la carga de acceso a disco de la cache en varios discos.

El parámetro maximum_object_size define el tamaño máximo de los objetos que serán


almacenados en el cache de disco. Los objetos mayores a este tamaño NO serán almacenados en
disco. El valor está especificado en KB, y su valor predeterminado es 4MB.
maximum_object_size 4096 KB
Si deseamos tener objetos mayores incrementaremos el tamaño, si deseamos incrementar la
velocidad en lugar de ahorrar ancho de banda mantendremos un valor bajo.

Página 52
Rafael Lozano Proxy HTTP

4. Bibliografía
FOROUZAN, B. A., Transmisión de Datos y redes de comunicaciones – 4ª Edición. 2007 McGraw-Hill, ISBN
978-84-481-5617-6
VATUS, T., DAWSON, T., N. PURDY, G. Linux – Guía para administradores de redes. 2005 Anaya
Multimedia – O'reilly, ISBN 84-415-1868-8
MICROSOFT, Technet Forefront Threat Management Gateway (TMG), 2010 [acceso 3 de febrero 2016].
Disponible en <https://technet.microsoft.com/library/ff355324.aspx>
MEDINA, J.A., SÁNCHEZ, A.G., Manual de Instalación de Servidor Proxy Web con Ubuntu Server y Squid,
Computación gráfica de México, 2012 [acceso 4 diciembre 2013]. Disponible en
<http://tuxjm.net/docs/Manual_de_Instalacion_de_Servidor_Proxy_Web_con_Ubuntu_Server_y_Squid/ht
ml-multiples/>
BARRIOS, J., Configuración de Squid: Acceso por Autenticación, 2013 [acceso 4 enero 2014]. Disponible
en <http://www.alcancelibre.org/staticpages/index.php/19-1-como-squid-autenticacion>
RIGADA, A., Instalación Proxy Squid, 2008 [acceso 15 diciembre 2013]. Disponible en
<http://blogdeaitor.wordpress.com/2008/11/02/instalacion-proxy-squid/>

Página 53

También podría gustarte