Proxy HTTP PDF
Proxy HTTP PDF
Proxy HTTP PDF
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.
I
Esquema de red: La conexión de red es la siguiente
II
Tabla de contenido
Tabla de contenido
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
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.
✔ 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
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.
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:
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.
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.
14.En Ruta de acceso de instalación dejamos la ubicación por defecto y hacemos clic en el botón
Siguiente.
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.
✔ 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
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
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.
Página 7
Rafael Lozano Proxy HTTP
◦ 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.
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.
Página 8
Rafael Lozano Proxy HTTP
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.
Página 9
Rafael Lozano Proxy HTTP
✔ 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.
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:
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.
Página 10
Rafael Lozano Proxy HTTP
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.
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.
✔ 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.
Página 11
Rafael Lozano Proxy HTTP
✔ 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.
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.
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 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:
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.
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.
Cuando terminemos veremos que las directivas de acceso web han quedado de la siguiente
forma:
Página 13
Rafael Lozano Proxy HTTP
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á.
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.
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.
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.
Página 15
Rafael Lozano Proxy HTTP
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.
7. Activar la casilla Usar servidor proxy para la LAN (esta configuración no se aplicará a conexiones de
acceso telefónico ni VPN).
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.
Página 16
Rafael Lozano Proxy HTTP
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.
Página 17
Rafael Lozano Proxy HTTP
2. En el panel de acciones, ficha Tareas, hacer clic en Configurar inspeccion de HTTPS. Aparece la
siguiente pantalla
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
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.
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:
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.
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
Página 21
Rafael Lozano Proxy HTTP
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.
Página 22
Rafael Lozano Proxy HTTP
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.
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.
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.
Página 24
Rafael Lozano Proxy HTTP
4. Escribimos el nombre de la regla de acceso. Por ejemplo, Sin Internet por la mañana.
Página 25
Rafael Lozano Proxy HTTP
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.
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.
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.
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.
Página 26
Rafael Lozano Proxy HTTP
Por ejemplo, supongamos que queremos impedir que los usuarios del grupo Ayudantes no
puedan navegar por Internet. Para ello seguiremos los siguientes pasos:
4. Escribimos el nombre de la regla de acceso. Por ejemplo, Ayudantes no navegan por Internet.
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.
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.
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
Página 29
Rafael Lozano Proxy HTTP
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.
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
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.
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
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á.
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
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
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
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
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.
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.
✔ 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
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.
Página 35
Rafael Lozano Proxy HTTP
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.
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é.
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
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.
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.
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
aptget 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
enablessl, 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.
Página 38
Rafael Lozano Proxy HTTP
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
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.
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 toport
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.
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
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.
✔ Grupo de usuarios
✔ Navegador
✔ Puerto
✔ Dominio DNS
Página 42
Rafael Lozano Proxy HTTP
✔ URL
✔ Tipo MIME
✔ Protocolo
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.
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 102565535
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.
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:
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
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.
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
3. Solamente se admiten conexiones desde los puertos para WWW y FTP, aunque para FTP
pasivo solamente se emplearán el rango 5000-10000.
7. Los PC's de la red local solamente pueden conectarse entre las 8:00 y las 15:00 horas de
Lunes a Viernes.
# El propio servidor
acl localhost src 127.0.0.1/8
# Los puertos seguros son el 80 (www), 21 (ftp) y 500010000
acl puertos_seguros port 80 21 500010000
# 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:0015: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$
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.
El tipo define el sistema de almacenamiento que Squid usará para almacenar los objetos en
disco, el tipo predeterminado es UFS.
Página 50
Rafael Lozano Proxy HTTP
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.
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