Squid

Introducción
El término en ingles «Proxy» tiene un significado muy general y al mismo tiempo ambiguo, aunque invariablemente se considera un sinónimo del concepto de «Intermediario». e suele traducir, en el sentido estricto, como delegado o apoderado !el que tiene el que poder sobre otro". En inform#tica, el término Proxy $ace referencia a un programa o dispositivo que reali%a una acción en representación de otro.

Definición de Proxy
&n ervidor Intermediario !Proxy" se define como una m#quina que ofrece un servicio de red que consiste en permitir a los clientes reali%ar conexiones de red indirectas $acia otros servicios de red.

En su forma m#s pura, se trata de una m#quina dual'$omed, es decir, conectada a dos redes, pero que no tiene capacidad de enrutamiento. El Proxy reserva un espacio de (isco de longitud variable, al que se denominar# cac$é.

 . En este caso. adem#s de $acer dic$o env. p#gina o arc$ivo a la cac$é para su posterior uso. se encarga de a-adir este nuevo ob*eto. el Proxy tiene que ba*ar aquel contenido de Internet.Funcionamiento Por una de las interfaces. y lo siguiente que $ace es buscar en la cac$é. el proxy recibe una petición de un $ost cliente.o. para ver si ya existe una copia de la p#gina u ob*eto que est# solicitando el cliente+  i ya existe.a al cliente solicitante. solo toma esa copia existente en el disco duro. y se la env. El soft)are toma una de estas peticiones. i no existe dic$a copia. para poder envi#rselo al cliente.

uando un equipo de la red desea acceder a una información o recurso. es realmente el Proxy quien reali%a la comunicación y a continuación traslada el resultado al equipo inicial.Funcionamiento &n Proxy permite a otros equipos conectarse a una red de forma indirecta a través de él. porque no es posible la comunicación directa y en otros casos porque el Proxy a-ade una funcionalidad adicional. como puede ser la de mantener los resultados obtenidos !por e*emplo una p#gina /eb" en una cac$e que permita acelerar sucesivas consultas coincidentes. . . En unos casos esto se $ace as.

El cliente solicita una conexión.Pasos de Funcionamiento El cliente se conecta $acia un ervidor Intermediario !Proxy". El servidor Intermediario !Proxy" proporciona el recurso ya sea conect#ndose $acia el servidor especificado o sirviendo éste desde un cac$é. En algunos casos el ervidor Intermediario !Proxy" puede alterar la solicitud del cliente o bien la respuesta del servidor para diversos propósitos. fic$ero u otro recurso disponible en un servidor distinto. .

 0elocidad+ i varios clientes van a pedir el mismo recurso. o modificarla siguiendo un algoritmo. por tanto se pueden limitar y restringir los derec$os de los usuarios.  1iltrado+ El Proxy puede negarse a responder algunas peticiones si detecta que est#n pro$ibidas. y dar permisos sólo al Proxy.Ventajas de un Proxy  . un Proxy puede falsificar información.omo intermediario que es. el Proxy puede $acer cac$é+ guardar la respuesta de una petición para darla directamente cuando otro usuario la pida.ontrol+ ólo el intermediario $ace el traba*o real. .  2odificación+ .

 Intromisión+ Es un paso m#s entre origen y destino. en concreto los que requieren una comunicación directa entre 5 emisor y 5 receptor. 4 menos si $ace de cac$é y guarda copias de los datos.  Inco$erencia+ i $ace de cac$é.arga+ &n Proxy $a de $acer el traba*o de muc$os usuarios. .Desventajas de un Proxy  3buso+ &suarios a*enos que desean navegar anónimamente.  Irregularidad+ El $ec$o de que el Proxy represente a m#s de un usuario da problemas en muc$os servicios.  . y algunos usuarios pueden no querer pasar por el Proxy. es posible que se equivoque y dé una respuesta antigua cuando $ay una m#s reciente en el recurso de destino.

basta con $acer+ sudo apt-get install squid . como ubuntu.Instalar Squid Para instalar squid en una distribución derivada de debian.

Configuración de Squid Para $acer esto se a-adir#n y6o modificaran algunas l.o con solo los argumentos necesarios.neas al fic$ero de configuración del quid. y crear uno vac.conf viene muy documentado. Es com7n $acer una copia de seguridad del fic$ero inicial. " sudo mv squid!conf squid!conf!#a$ " sudo touc% squid!conf . 3ntes de seguir. éc$ale un vista%o. cuya ruta es+ etc squid squid!conf squid.

log cache_store_log /var/log/squid/store.0.0. http_port 8080 access_log /var/log/squid/access.0 acl yo src 12 .1 co$o proxy.0/0.0.0.Squid.log cache_log /var/log/squid/cache.1/!2 http_access allo" yo http_access deny all #ntroduci$os esta %onfiguración y luego configura$os firefox para que utilice 12 .0.0. .0.log acl all src 0.0.conf Esta es una configuración válida para un proxy.

El puerto por defecto es el !128( pero el 8080 ta$)i*n suele utili'arse.conf  http_port !128 Este es el puerto que &quid utili'a para escuchar las solicitudes de los clientes. &i lo desea( puede especificar varios n+$eros de puerto separados por espacios. .Squid.

log Estas tres entradas especifican las rutas en las que &quid registra todas sus acciones.or$al$ente no es necesario reali'ar ning+n ca$)io. &i &quid experi$enta una carga de uso intensa( puede que resulte +til distri)uir el cach* y los archivos de registro en varios discos. . .log cache_store_log /var/log/squid/store.conf    cache_access_log /var/log/squid/access.Squid.log cache_log /var/log/squid/cache.

as -%.Squid. . -lgunas listas -%. .( co$o all y localhost( están predefinidas. .conf  -%.s &quid proporciona listas de acceso para controlar el acceso al alterno. son listas con reglas que se procesan de for$a secuencial. de)en definirse antes de proceder a su uso.as listas -%.

2::. /datos0 depende del tipo de -%.0/2::.2::.conf  acl /no$)re_acl0 /tipo0 /datos0 /tipo0 selecciona el tipo de lista de acceso 1src( ti$e( srcdo$ain( dstdo$ain( url_regex.198.0 acl horadelal$uer'o ti$e <=>?@ 12700.2::..2.0.1..Squid.198. /no$)re_acl0 puede elegirse ar)itraria$ente.2::.182.   e3e$plos7 acl $isusuarios srcdo$ain .0 acl alu$nos src 182..8.0/2::.co$ acl profesores src 182.1:700 . .$ido$inio. individual y ta$)i*n puede leerse desde un archivo( por e3e$plo $ediante no$)res de hosts( direcciones #4 o direcciones 56.198.

acl google_com dstdomai( google. 5rlregex7 per$ite identificar sitios "e) seg+n cierto patrón.pd+.0ip. =ipos de -%.conf &rc o dst7 hace referencia a una ip o dirección de red. /cl +icheros_prohibidos urlpath_rege) .0/24  =i$e7 per$ite denegar conexiones dentro de un rango horario.. . .mp3. =a$)i*n se puede i$portar definiciones de sitios desde un fichero externo.0/24 acl google_es dst 216.0.1.-.  Squid.168.pd+. ! " # $ 8%00&1'%00 acl horario_laboral time  acl horario time 18%00&21%00 &rcdo$ain o dstdo$ain7 per$ite denegar conexiones a un deter$inado sitio.  4ort7 per$ite identificar un puerto de aplicación acl puertos_112 port 443 '63 Además de estos tipos hay muchos más .com  acl sitios_prohibidos url_rege) “/etc/squid/sitios_prohibidos” acl pi(cha_google url_rege) &i *+tp%//. acl red_local src “/etc/squid/ip_permitidas” acl red_local src 192.239.

. &e puede per$itir o denegar el acceso $ediante los valores deny 1Benegar2 y allo" 14er$itir2. . sea efectiva hay que aplicarla $ediante http_access.as cláusulas http_access se procesarán de arri)a a a)a3o( por lo que es $uy i$portante el orden.Squid.a +lti$a entrada sie$pre de)e ser http_access deny all o lo de3are$os pasar todo. http_access allo3 localhost http_access de(4 all .conf  http_access 1allo" A deny2 /no$)re_acl0 4ara que una -%.

conf  Existen $ultitud de argu$entos en squid.      cache_$e$ cache_dir cache_effective_user y cache_effective_group dns_na$eservers cache_peer .conf( pero es i$posi)le conocerlos todos.Squid. -lgunos que pueden ser +tiles.

El valor por defecto es 8 <C. . Este valor no especifica el uso total de $e$oria de &quid( por lo que es posi)le que el uso real sea superior.Squid.conf  cache_$e$ 8 <C Esta entrada define la cantidad de $e$oria que puede e$plear &quid para las respuestas $ás frecuentes y las activas.

%a$)iar los valores de su)directorios puede relenti'ar el siste$a.conf  cache_dir ufs /var/cache/squid/ 100 19 2:9 . . -de$ás de ufs están aufs( disDd( coss y null.os valores por defecto i$plican 100 <C de espacio ocupado en disco por el directorio /var/cache/squid y la creación de 19 su)directorios en *l( cada uno de los cuales contiene 2:9 su)directorios adicionales.os n+$eros del final indican el espacio $áxi$o en disco que de)e utili'arse en <C y el n+$ero de directorios de pri$er y segundo nivel.a entrada cache_dir define el directorio del disco en el que se al$acenan todos los o)3etos. El pará$etro indica ufs indica el algorit$o de lectura/escritura en disco.Squid. . .

Be este $odo evita$os que un usuario puedo acceder a los recursos gesionados por squid.Squid. En u)untu( squid utili'a el usuario proxy por defecto( por lo que en principio no ha)rá que usarlos.lah /var/spool/squid . sudo ps aux A grep proxy ls .conf  %ache_effective_user y cache_effective_group cache_effective_user proxy cache_effective_group proxy  Be este $odo indica$os el usuario que utili'a squid para e3ecutar sus procesos. En cualquier caso( co$prue)a que el proceso squid se e3ecuta )a3o el usuario proxy y que los directorios cach* son propiedad de proxy.

1 80.& que utili'ará el proxy para resolver no$)res. .!2.:8.!! 4ode$os definir los servidores B.&.0. &e pueden definir varios servidores B.conf  dns_na$eservers 12 .Squid.0.

4uede ha)er proxys.conf  %ache_peer &quid per$ite crear 3erarquEas de cach*s.hi3o 1parent2( el padre de)e proporcionar el o)3eto pedido tanto si está en la cach* co$o si no lo está. &i esta)lece$os una 3erarquEa padre.cach*s padres y her$anos. .Squid.

conf  ?E6<-.19. 4uerto proxy 8081 y puerto icp !1!0 icp_access allo" all G per$iti$os acceso icp a todos Befault7 en caso de duda( usar este vecino. 4roxy.112.Squid.F 1.19.112.1!9 si)ling 8081 !1!0 proxy. icp_port !1!0 G puerto icp cache_peer 1 2. 4uerto proxy !128 y puerto icp !1!0 cache_peer 1 2.only7 no al$acenar en cach* la respuesta de este vecino .only G defini$os cache her$ano.1!1 parent !128 !1!0 default G defini$os cache padre.

icp_port !1!0 G puerto icp cache_peer 1 2.Squid.112.F 2. 4uerto proxy !128 y puerto icp !1!0 cache_peer 1 2.1!1 parent !128 !1!0 default G defini$os cache padre.1!: si)ling 8081 !1!0 proxy.conf  ?E6<-. 4uerto proxy 8081 y puerto icp !1!0 icp_access allo" all G per$iti$os acceso icp a todos .112.19.19.only G defini$os cache her$ano.

Squid.conf  4-B6E icp_port !1!0 G puerto icp icp_access allo" all G per$iti$os acceso icp a todos .

  . .osotros de $o$ento( utili'ar$enos la autenticación de -pache.Squid.conf  =a$)i*n pode$os li$itar el acceso al proxy $ediante usuario y contraseHa. &i tene$os un controlador de do$inio( pode$os autenticar contra *l.

acl autori'ado ident $auri http_access allo" autori'ado Opción alternativa Hay que Añadir en squid.conf: auth_para$ )asic progra$ /usr/li)/squid/ncsa_auth /etc/squid/squid_pass"d acl ncsa_users proxy_auth 6EL5#6EB acl business_hours ti$e < = > ? @ 8700.1 700 http_access allo" ncsa_users business_hours .conf I touch /etc/squid/squid_pass"d I ch$od 9JJ /etc/squid/squid_pass"dK cho"n proxy7proxy /etc/squid/squid_pass"d I htpass"d /etc/squid/squid_pass"d """ 5e3 pass3ord% 6e&t4pe (e3 pass3ord% /ddi(g pass3ord +or user 333 I locate ncsa_auth /usr/lib/squid/(csa_auth 5suarios del siste$a.Squid.

conf  4roxy transparente 5n proxy transparente no requiere la configuración de firefox.conf  http_port !128 transparent  En ipta)les 1página siguiente2 .Squid. 4ara conseguir un proxy transparente hacen falta dos cosas7   En squid.

.i eth0 .state E&=-C.3 -%%E4= ipta)les .F5=45= .#..#&?EB(6E.state .-=EB .45= .-=EB .$ state .sport 80 ..#&?EB(6E.#&?EB(6E.Squid+iptables ipta)les .sport 80 .t nat .dport !128 .3 6EB#6E%= .#.state E&=-C.$ state .to.-=EB ..45= ..o eth1 .state ..p tcp .3 -%%E4= ..3 -%%E4= ipta)les ..M ..E>(E&=-C..dport 80 .port !128 ipta)les .#&?EB(6E.i eth1 .i eth1 .-=EB .p tcp .3 -%%E4= ipta)les .p tcp .p tcp .46E6F5=#.$ state .dport 80 .E>(E&=-C.$ state ....o eth0 ..p tcp .F5=45= ..