Proxy / Caché squid

Próxy/Caché

  • Proxy: Proporciona conexión a internet, cuando no tenemos enrutadores/NAT. Por lo tanto gestiona la comunicación HTTP, podemos filtrar!!!
  • Caché: Además guardar ficheros, de tal manera que los futuros accesos no son necesarios acceder a internet.

Mecanismos de validación

Una vez cacheada la página, si volvemos acceder a ella se preguntará al servidor si se ha modificado, el servidor responderá con la cabecera HTTP, y si la copia que tenemos es valida (no se ha modificado recientemente) se servirá directamente.

Mecanismos de frescura

Cada repuesta lleva asociada una fecha de caducidad (como un yogurt) y puede ser utilizada sin necesidad de que el servidor compruebe su validez.

Last-Modified
Expires
max-age

Caché: Squid

Como evitar el cacheo de nuestro contenido

  • Cache-control: max-age – Especifica el número máximos de segundos en los que el contenido sera considerado como fresco
  • Cache-control: s-maxage – Similar a la directiva max-age, pero aplicable solo para caches compartidas (por ejemplo squid).
  • Cache-control: public – indica que la versión cacheada puede ser guardada por proxies y otros servidores intermedios para que todo el mundo tenga acceso a ella..
  • Cache-control: private – indica que el archivo no es el mismo para usuarios diferentes. De esta manera el archivo puede ser cacheado por el navegador del usuario pero no debe ser cacheado por proxies intermedios.
  • Cache-control: no-cache – Significa que el archivo no debe ser cacheado, esto puede ser necesario en casos en los que una misma url pueda devolver diferentes contenidos.
  • Cache-control: no-store – Indica al navegador que sólo guarde el documento el tiempo necesario para mostrarlo.

refresh_pattern, controlando la caché

refresh_pattern -i \.jpg$ 30 50% 4320

Más información:

Proxy: squid

apt-get install squid3
  • Puerto 3128
  • Memoria de la cache (300 Mb)
  • Tamaño de cache (8 Gb)
  • Máximo tamaño de los elementos cacheados (20 Mb)
/etc/squid3/squid.conf 
acl localnet src 10.0.0.0/24
http_access allow localnet

Permitir acceso

/var/log/squid3/access.log

Configuración en los clientes

ACL de tipo origen

  • Dirección IP del cliente

  • Nombre del usuario

  • Grupo de usuarios

  • Navegador

ACL de tipo destino

  • Puerto

  • Dominio DNS

  • URL

  • Tipo MIME

Esquemas de control de acceso en Squid:ACLs

acl nombreacl tipoacl [-i] valor...
acl nombreacl tipoacl [-i] "archivo"

Tipos de elementos de ACL

src

browser

dstdomain

url_regex

 

port

method

req_mime_type

rep_mime_type

time

Las listas de acceso son usadas para permitir o denegar el acceso a uno o más elementos de ACL

http_access allow|deny [!]aclname ...
http_reply_access allow|deny [!]aclname ...
acl localhost src 127.0.0.1/32

acl loc_subnet src 192.168.221.0/24

acl loc_sysadmin src 192.168.221.110/32

acl loc_gerentes src 192.168.221.130 192.168.221.140 192.168.221.150 192.168.221.160

acl ip_sin_internet src "/etc/squid3/ip_sin_internet.acl"

acl dominios_videos dstdomain .youtube.com .justin.tv

acl dominios_msn dstdomain .login.live.com .contacts.msn.com .messenger.msn.com .messenger.hotmail.com .hotmail.msn.com .messenger.live.com loginnet.passport.com

acl dominios_porno dstdomain "/etc/squid3/dominios_porno.acl"

acl urls_descargas url_regex -i rapidshare megaupload

acl archivos_multimedia urlpath_regex -i \.mp3$ \.mp4$ \.wma$ \.avi$ \.wmv$ \.mov$ \.mpg$ \.mpeg$ \.ram$ \.vob$

acl url_msn url_regex -i gateway.dll

acl req_mimetype_audio req_mime_type -i ^audio/mp3$ ^audio/mp4$ ^audio/mpeg$ ^audio/wav$ ^audio/x-mp3$ ^audio/x-mp4$
acl rep_mimetype_audio rep_mime_type -i ^audio/mp3$ ^audio/mp4$ ^audio/mpeg$ ^audio/wav$ ^audio/x-mp3$ ^audio/x-mp4$

acl req_mimetype_video req_mime_type -i ^video/avi$ ^audio/mpeg$ ^video/ogg$ ^video/quicktime$ ^video/x-ms-wmv$
acl rep_mimetype_video rep_mime_type -i ^video/avi$ ^audio/mpeg$ ^video/ogg$ ^video/quicktime$ ^video/x-ms-wmv$

acl req_mimetype_flash req_mime_type -i ^video/flash$ ^video/flv$ ^video/x-flv$ ^video/x-shockwave-flash$ ^video/x-swf$
acl rep_mimetype_flash rep_mime_type -i ^video/flash$ ^video/flv$ ^video/x-flv$ ^video/x-shockwave-flash$ ^video/x-swf$

.....

http_access allow localhost

http_access deny ip_sin_internet

http_access allow url_msn loc_sysadmin
http_access deny url_msn

http_access allow dominios_msn loc_sysadmin
http_access deny dominios_msn

http_access allow loc_sysadmin

http_access allow loc_gerentes !dominios_porno !urls_descargas

http_access deny req_mimetype_audio
http_access deny req_mimetype_video
http_access deny req_mimetype_flash

http_access allow loc_subnet !dominios_videos !dominios_porno !urls_descargas !archivos_multimedia

http_access deny all

http_reply_access allow rep_mime_msn loc_sysadmin
http_reply_access deny rep_mime_msn

http_reply_access deny rep_mimetype_audio
http_reply_access deny rep_mimetype_video
http_reply_access deny rep_mimetype_flash

Autenticación por usuarios y grupos con Squid

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid3/usuarios-proxy-passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

/etc/squid3/squid.conf

htpasswd -c /etc/squid3/usuarios-proxy-passwd usuario1
acl usuarios proxy_auth REQUIRED

acl usuarios_directores proxy_auth usuario1 usuario2 usuario3
http_access allow usuarios

http_access allow usuarios_directores

Ejemplo:

acl Internet_Alto proxy_auth usuario1 usuario2 usuario3
acl Internet_Medio proxy_auth usuario30 usuario31 usuario32
acl Internet_Bajo proxy_auth usuario40 usuario41 usuario42

...
...
...
http_access allow localhost
http_access allow Internet_Alto
http_access allow Internet_Medio !dominios_videos !dominios_porno
http_access allow Internet_Bajo !dominios_videos !dominios_porno !urls_descargas !archivos_multimedia
http_access deny all
  • DansGuardian es un software de filtro de contenido, diseñado para controlar el acceso a sitios web.

http://urlblacklist.com

  • Sarg (Squid Analysis Report Generator) es una herramienta que permite a los administradores de sistemas ver de una manera sencilla y amigable que sitios de Internet visitan los usuarios de la red local usando los logs de Squid.

squid

By Jose Domingo Muñoz