Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
CONFIGURACIÓN DE CONFIGURACIÓN DE UN SERVIDOR UN SERVIDOR
PROXY-CACHÉ: PROXY-CACHÉ: SQUIDSQUID
Unidad 6
Andrés Rosique Herná[email protected]
Andrés Rosique Herná[email protected]
U04. Configuración de un servidor ftp: ProFTPD 2Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et Esta obra está bajo una licencia
Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 España de Creative Commons.Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-nc-sa/3.0/es/ o envíe una carta a Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
Licencia
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 3Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Índice
1.Introducción2.Funcionamiento3.Instalación: Suse – Ubuntu – Webmin
4.Ejecución5.Configuración6.Control de acceso7.Dansguardian: Introducción – Funcionamiento – Configuración
8.Glosario9.Bibliografía
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 4Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Introducción
● Squid es un programa de software libre (bajo licencia GPL) que implementa:– Un servidor Proxy.– Un demonio para Web caché.
● Tiene una amplia variedad de utilidades, desde acelerar un Servidor Web, guardando en caché peticiones repetidas a DNS y otras búsquedas para un grupo de usuarios que comparten recursos de la red, hasta caché de Web, además de añadir seguridad filtrando el tráfico.
● Está especialmente diseñado para ejecutarse bajo entornos Unix-like.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 5Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Introducción (2)
● Squid ha sido desarrollado durante muchos años y se le considera muy completo y robusto.
● Soporta muchos protocolos, aunque se usa principalmente para HTTP y FTP. Soporta también TLS, SSL, Internet Gopher y HTTPS.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 6Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Funcionamiento
● Squid se sitúa entre el navegador web e Internet interceptando su comunicación.
● Squid escucha en el puerto 3128.● El flujo de eventos (simplificado) es el siguiente:
1.El cliente hace una petición a Squid. 2.Squid comprueba la petición con las reglas ACL.
● Si las reglas admiten la petición, entonces vamos al paso 3.● En otro caso, informa con un error al cliente.
3.Squid revisa su caché por si tiene en ella el contenido solicitado.
● Si está en su caché, lo devuelve al navegador.● En otro caso, reenvía la petición a Internet.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 7Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Funcionamiento (2)
Navegador web Squid Internet
petición si pasa las ACL
si no pasa lasACL, error
3128
cabeceray cuerpo
cabeceray cuerpo
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 8Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
InstalaciónUbuntu
● Para instalar Squid en Ubuntu tenemos dos opciones: desde un terminal o desde el Synaptic.
● Desde un terminal:sudo apt-get install squid
● Desde el Synaptic:– Buscamos “squid” (sin las comillas).– Seleccionamos el paquete squid.– Pulsamos sobre Aplicar.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 9Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
InstalaciónIndependiente con Webmin
● Accedemos a Webmin con https://localhost:10000. Y después de autentificarnos, hacemos clic en Servidores, Squid – servidor proxy.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 10Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Haced una copiade seguridad de
/etc/squid/squid.conf antes de
modificarlo.
Ejecución
● En Ubuntu para que funcione Squid debemos incluir la directiva visible_hostname con el nombre de nuestro equipo.
● Para averiguar el nombre de nuestro equipos en un terminal tecleamos el comando$hostname
● Después editamos /etc/squid/squid.conf e incluimos en el lugar correspondiente:visible_hostname nombre_equipo
● Por último, ejecutamos (Suse y Ubuntu)$sudo /etc/init.d/squid start
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 11Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Ejecución (2)
● Squid tiene muchas opciones pero las más importantes son -z y -k parse.
● $sudo squid -zEsta opción le indica a Squid que cree los directorios de la caché. Esta opción se debe utilizar cuando se arranca Squid por primera vez o cuando se modifica en el archivo squid.conf la configuración de la directiva cache_dir.
● $sudo squid -k parseEsta opción le indica a Squid revise el fichero squid.conf por si hay algún error.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 12Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Configuración
● El fichero principal de configuración de Squid es /etc/squid/squid.conf.
● A continuación comentaremos las directivas más importantes:– http_port 3128 → puerto en el que escucha Squid– icp_port 3130 → puerto en el que escucha las
peticiones ICP (entre cachés).– cache_mem 8MB → cantidad de RAM que usa Squid
para● Objetos en tránsito (in-transit objects).● Objetos que se usan mucho (hot objects).● Objetos negativos (negative-cached objects).
No se pueden dejar espacios en blanco al
comienzo de las líneas en squid.conf.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 13Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Configuración (2)
– cache_swap_low 90 al alcanzar el 95% de la– cache_swap_high 95 caché se eliminan los
elementos menos usados hasta alcanzar el 90%.– maximum_object_size 4096 KB → no se
almacenará ningún archivo mayor de este tamaño.– minimum_object_size 0 KB → no se almacenará
ningún archivo menor de este tamaño.– cache_access_log /var/log/squid/access.log– cache_log /var/log/squid/cache.log– cache_store_log /var/log/squid/store.log
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 14Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Configuración (3)
– cache_dir tipo directorio Mbytes L1 L2 → ● tipo: sistema de almacenamiento a usar (ufs).● directorio: ruta de la caché (/var/cache/squid).● Mbytes: tamaño de la caché en MB (100).● L1: número de subdirectorios de primer nivel (16).● L2: número de subdirectorios de segundo nivel (256).
Es recomendable que el directorio esté en una partición
separada.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 15Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Control de acceso
● Squid puede permitir o denegar el acceso a la caché con las listas de control de acceso (ACL).
● El control de acceso se consigue usando:– Elementos ACL: asignan un nombre a las direcciones
IP, puertos, dominios, etc. para usarlo en las reglas ACL.
● acl permitidos src 172.26.0.0/255.255.0.0● acl todos src 0.0.0.0/0.0.0.0
– Reglas ACL: definen qué acciones están permitidas o no usando los elementos ACL.
● http_access allow permitidos● http_access deny todos
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 16Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Control de accesoElementos
● Control por IP origen (source):acl nombreACL src dirIP/mascaraacl nombreACL src dirIP1-dirIP2/mascara
● Control por IP destino (destination):acl nombreACL dst dirIP/mascaraacl nombreACL dst dirIP1-dirIP2/mascara
● Control por dominio de la máquina origen:acl nombreACL srcdomain nombreDominio
● Control por dominio de la máquina destino:acl nombreACL dstdomain nombreDominio
● Control por método de acceso (get, post, put):acl nombreACL method nombreMetodo
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 17Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Control de accesoElementos (2)
● Control por puerto:acl nombreACL port numeroPuerto
● Control por tiempo:acl nombreACL time [dia] [h1:m1-h2:m2]– [dia]puede tomar los siguientes valores:
● M: lunes.● T: martes.● W: miércoles.● H: jueves.● F: viernes.● A: sábado.● S: domingo.
– h1:m1 siempre tiene que se menor que h2:m2.
Existen muchos más elementos.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 18Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Control de accesoElementos (3)
● En la mayoría de los casos, se tiene una lista de valores para un elemento ACL aunque también es posible tener varias líneas ACL con el mismo nombre.
● Por ejemplo, las dos siguientes configuraciones son equivalentes:– acl puertosHTTP port 80 8000 8080
– acl puertosHTTP port 80– acl puertosHTTP port 8000– acl puertosHTTP port 8080
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 19Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Control de accesoReglas
● La sintaxis general para las reglas es access_list allow|deny [!]elementoACL...
● Donde access_list puede tomar diferentes valores pero el más importante es http_access.– http_access allow permitidos– http_access deny todos
● La opción ! indica negación.– http_access deny !puertosSeguros
Esta regla indica que se deniega el acceso a todos los puertos menos a los “puertos seguros”.
●allow: permitir.●deny: denegar.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 20Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Ejemplos de reglas ACL
● Partimos de los siguientes elementos ACL:– acl miIP src 1.2.3.4 → coincidirá con una
petición que venga de la IP 1.2.3.4.– acl elMundo dstdomain www.elmundo.es →
coincidirá con la URL www.elmundo.es.– acl mGet method GET → coincidirá con una
petición HTTP GET.Todavía no se está permitiendo ni negando nada.Una ACL con varios valores coincidirá si lo hace con cualquiera de los valores. Se usa un O (OR) lógico.
– acl susIP src 1.1.1.8 1.1.1.28 1.1.1.88 → coincidirá si la petición se hace desde la IP 1.1.1.8 o desde la IP 1.1.1.28 o desde la IP 1.1.1.88.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 21Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Ejemplos de reglas ACL (2)
– acl cTV dstdomain www.antena3.es www.rtve.es www.lasexta.com → coincidirá con una petición a cualquiera de los sitios www.antena3.es, www.rtve.es o www.lasexta.com.
– acl mPut method PUT POST → coincidirá con una petición PUT o una petición POST.
● Ejemplo de reglas ACL 1:– http_access allow miIP– http_access deny elMundo– http_access allow mGet– ¿Qué ocurre si un usuario desde la IP 1.2.3.4 hace
una petición de www.elmundo.es?
¡IMPORTANTE! Las reglas se revisan en orden.
La decisión sobre aceptar o denegar un acceso se toma en cuanto se encuentra la primera
coincidencia.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 22Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Ejemplos de reglas ACL (3)
– Squid se encuentra con la autorización de la primera regla, miIP. Nuestra petición coincide con la ACL miIP, porque la IP origen es 1.2.3.4 y se permite la petición. El resto de reglas no son revisadas.
– ¿Qué ocurre si se hace una petición PUT para www.elmundo.es desde 3.3.3.3?La petición no encaja con la primera regla pero coincide con la segunda. Y ésta regla implica que la petición debe ser rechazada. Así que el usuario recibe un mensaje de error de Squid.
– ¿Qué ocurre si se hace una petición GET para www.gmail.com desde 3.3.3.3?No coincide ni con la primera ni con la segunda regla pero sí con la tercera que permite la petición.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 23Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Ejemplos de reglas ACL (4)
● Ejemplo de reglas ACL 2:– http_access allow miIP elMundo– http_access deny miIP– La primera regla establece que una petición desde
1.2.3.4 y para www.elmundo.es será permitida. Sin embargo, la segunda regla establece que cualquier otra petición desde 1.2.3.4 será denegada. Así que estas dos reglas restringen al usuario con IP 1.2.3.4 a que pueda acceder sólo a www.elmundo.es.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 24Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Ejemplos de reglas ACL (5)
● Ejemplo de reglas ACL 3:– http_access deny susIP cTV mPut– http_access allow susIP cTV– http_access deny susIP– Estas 3 reglas permiten a los clientes susIP (1.1.1.8,
1.1.1.28 y 1.1.1.88) acceder a los servidores de cTV (www.antena3.es, www.rtve.es y www.lasexta.com) pero no con los métodos PUT o POST. Es más, los clientes de susIP no pueden acceder a ningún otro servidor.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 25Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Ejemplos de reglas ACL (6)
● Uno de los errores más comunes consiste en escribir una regla que nunca puede cumplirse. Es fácil olvidar que Squid usa Y (AND) lógico en las reglas y O lógico en los elementos.
● La siguiente configuración nunca se puede cumplir:– acl A src 1.1.1.1– acl B src 2.2.2.2– http_access allow A B
● La regla anterior debería escribirse así:– acl A src 1.1.1.1 2.2.2.2– http_access allow A
A Y B
1.1.1.1 O 2.2.2.2
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 26Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
DansguardianIntroducción
● Dansguardian es un filtro de contenido que usa Squid (o cualquier otro proxy) para realizar su trabajo.
● Dansguardian usa varios métodos de filtrado, como por ejemplo:– Por URL y dominio.– Por tipos MIME.– Según la extensión de los archivos.– Según las palabras que contenga la página web.– ...
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 27Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
DansguardianInstalación
● Para instalar Dansguardian en Ubuntu tenemos dos opciones: desde un terminal o desde el Synaptic.
● Desde un terminal:sudo apt-get install dansguardian
● Desde el Synaptic:– Buscamos “dansguardian” (sin las comillas).– Seleccionamos el paquete dansguardian.– Pulsamos sobre Aplicar.
● En cualquiera de los dos casos se instalarán más paquetes como por ejemplo el antivirus ClamAV.
Si hay algún problema al instalarlo con apt-get, podemos
probar con aptitude.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 28Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
DansguardianFuncionamiento
● Dansguardian se sitúa entre el navegador web y el proxy interceptando y modificando su comunicación.
● Squid escucha en el puerto 3128 y Dansguardian lo hace en el 8080. Cuando una petición llega al 8080, Dansguardian la filtra y la pasa a Squid en el 3128.
● El flujo de eventos (simplificado) es el siguiente: 1.El cliente hace una petición a Dansguardian. 2.Dansguardian verifica la petición y le aplica los filtros
por nombre de usuario, direcciones URL e IP.Si todo es correcto, se envía la petición a Squid.
El flujo de eventos detallado correspondiente a la última versión de
Dansguardian se encuentra aquí.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 29Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
DansguardianFuncionamiento (2)
3.Squid revisa la petición con sus ACL y, si está permitido, reenvía la petición a Internet.
4.A continuación desde Internet se envía tanto la cabecera como el cuerpo de la petición solicitada.
Navegador web SquidDansguardian Internet
petición 8080
si pasa los filtros
si no pasa losfiltros, error
si pasa las ACL
si no pasa lasACL, error
3128
cabeceray cuerpo
cabecera (4)
cuerpo (5)
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 30Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
DansguardianFuncionamiento (3)
5.Entonces Squid le pasa la cabecera como respuesta a la petición que realizó a Dansguardian, y éste verifica tanto el tipo MIME como la extensión del fichero. Si cumple los filtros, continúa por el paso 6.
6.Squid le devuelve el documento a Dansguardian y éste aplica los filtros por palabras e imágenes.
7.Si todo va bien, Dansguardian devuelve la cabecera y el cuerpo al navegador.
8.En cualquier punto, si alguno de los filtros bloquea la petición, el filtrado termina y se devuelve una página de acceso denegado.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 31Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
En algunas versiones de Dansguardian es necesario eliminar una línea del fichero dansguardian.conf para indicar
que se ha configurado.#UNCONFIGURED - Please remove this line after configuration
DansguardianConfiguración
● Los ficheros de configuración de Dansguadian están en /etc/dansguardian (como siempre).
● Los parámetros más importantes de dansguardian.conf son los siguientes:– language = ’spanish’– filterport = 8080 → el puerto de Dansguardian– proxyip = 127.0.0.1 → dirección IP de la
máquina donde reside Squid– proxyport = 3128 → puerto donde escucha Squid
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 32Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
DansguardianConfiguración (2)
● Los ficheros que nos van a permitir configurar el filtrado y control de contenidos son los siguientes:– bannedextensionlist → extensiones de archivos
prohibidos.– bannediplist → lista de IP que no van a tener acceso.– bannedmimetypelist → tipos de contenidos no permitidos.– bannedphraselist → palabras o frases prohibidas. Hay
ejemplos en /etc/dansguardian/phraselists.– bannedregexpurllist → expresiones prohibidas en URL.– bannedsitelist → bloquea el acceso a un dominio.– bannedurllist → impide el acceso a una parte del dominio.– banneduserlist → usuarios que no van a tener acceso.– contentregexplist → mediante el formato “palabra fea” →
“expresión” se puede sustituir unas expresiones por otras.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 33Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
DansguardianConfiguración (3)
– exceptioniplist → lista de IP que no serán filtradas.– exceptionphraselist → palabras o frases que no se
filtrarán.– exceptionsitelist → dominios que no se prohibirán.– exceptionurllist → parte de un dominio que no se
bloqueará.– exceptionuserlist → usuarios que siempre tendrán
acceso.– greysitelist / greyurllist → desbloquea los dominios /
partes de los dominios prohibidos con banned pero los seguirá analizando usando el resto de filtros.
– pics → configura el filtrado de imágenes.– weightedphraselist → lista de palabras con su
correspondiente peso e instrucciones de definición <palabra><peso>.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 34Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Glosario
● ACL: Access Control List (lista de control de acceso)● HTCP: HyperText Caching Protocol → sustituto ICP.● HTTP: HyperText Transfer Protocol (protocolo de
transferencia de hipertexto).● HTTPS: HyperText Transfer Protocol over Secure
Socket Layer (protocolo de transferencia de hipertexto sobre SSL).
● ICP: Internet Cache Protocol.● MIME: Multipurpose Internet Mail Extensions
(extensiones de correo Internet multipropósito).● PICS: Platform for Internet Content Selection.
Andrés Rosique Herná[email protected]
U06. Configuración de un servidor proxy-caché: Squid 35Ins
tala
ció
n y
ma
nte
nim
ien
to d
e s
erv
icio
s d
e In
tern
et
Bibliografía
● Libros:– Duane Wessels. Squid: The Definitive Guide. O'Reilly, 2004
● Enlaces:– http://es.wikipedia.org/.– http://www.onlamp.com/pub/a/onlamp/2004/02/12/squid.html.– http://dansguardian.org/?page=dgflow– http://www.cettolini.it/informatica/topic.asp?cat=1&topic=2.– http://sourceforge.net/docman/display_doc.php?docid=30290&group_id=131757
● Otros:– Apuntes del curso Software libre y educación (curso
avanzado): servicios de red, gestores de contenido y seguridad. Thales-CICA, 2004-2005.