Proxy squid

Squid
  • El proxy que anem a utilitzar és el squid (paquet squid).
  • Squid és un Servidor Intermediari (Proxy) d'alt rendiment, que pot funcionar com a Servidor Intermediari (Proxy) i catxè de continguts de xarxa per als protocols HTTP, FTP, GOPHER i WAIS, Proxy de SSL, catxè transparent, WWCP, acceleració HTTP, catxè de consultes DNS, filtració de contingut i control d'accés per IP i per usuari. No pot ser usaT com Servidor Intermediari (Proxy) per a protocolos com SMTP, POP3, TELNET, SSH, IRC, etc.
  • No s'instal·la per defecte, però es troba als repositoris Ubuntu, pel que pot ser instal·lat mitjançant Synaptic, aptitude o apt-get.
  • Squid és una aplicació que s'utilitza bàsicament per a:
  • Web caching
    • "Cachejar" és guardar la informació en una memòria que estigui més propera a l'usuari final.
    • El proxy-catxè recull pàgines web directament de l'exterior i en manté dins el seu disc dur local una còpia i un índex de totes les pàgines visitades.
    • Quan se li demana una pàgina, repassa l'índex, i si ja l'ha recollit amb anterioritat, la serveix a tota velocitat directament del seu disc a l'usuari, que no ha d'esperar la seva arribada d'Internet.
    • El proxy-catxè conté uns algoritmes de refresc i consulta les capçaleres de les pàgines web, per asegurar que el contingut del seu magatzem és informació real d'Internet i no una còpia 'caducada'.
    • Dins els catxè hi ha dos tipus:
      • Proxy HTTP: Els clients s'han de configurar per tal d'utilitzar el proxy com a medi de connexió a Internet.
      • Proxy Transparent: No cal configuració dels clients (totes les comunicacions pel port 80 són interceptades).
  • Reverse proxy (web server acceleration)
    • Permet utilitzar un servidor proxy com a suport d'un servidor web.
    • La filosofia és inversa al web caching i permet alliberar carrega en un servidor web compartint part de la carrega amb el proxy.
    • No s'implementa amb squid.
    • Apache permet implementar aquesta funcionalitat amb un mòdul.
Proxies (passarel·les) vs firewalls (tallafocs)
  • Quina diferència hi ha entre els tallafocs i els proxies? Tots dos són eines de control d'ús dels recursos d'una xarxa però que apliquen els seus mecanismes de control en nivells diferents del protocol OSI o TCP/IP.
  • La següent taula relaciona els nivells OSI amb l'eina corresponent:

Nivell OSI Tallafocs
Proxy
Nivell 1. Nivell físic No s'aplica No s'aplica
Nivell 2. Nivell d'enllaç No
Nivell 3. Nivell de xarxa (IP) No
Nivell 4. Nivell de transport (TCP) No
Nivells d'aplicació 5, 6 i 7 No

  • Cal tenir en compte però que aquesta classificació de les tasques que realitzen els tallafocs i els proxies no és completament rígida. Per exemple, proxies com Squid també fan tasques de control d'accés per IP (nivell 3) o per MAC (nivell 2) o per port (nivell 4).
  • En resum, els tallafocs estan pensats per a treballar als nivells de xarxa i transport de la informació i els proxies estan pensats per treballar a nivell d'aplicació, és a dir amb les dades que es transporten.
  • En xarxes modernes el protocols més utilitzats a nivell de xarxa i transport són Ethernet i TCP/IP.
  • Un tallafocs com iptables suporta aquests protocols i pot cobrir qualsevol requeriment de control en aquest nivells.
  • En canvi, a nivell d'aplicació tenim gairebé tants protocols com aplicacions que utilitzen la xarxa; per navegar per la xarxa utilitzem HTTP, per al correu electrònic utilitzem POP3, IMAP i SMTP, per a xarxes Windows utilitzem SMB/CFIS, per a xarxes Linux NFS, per a transferència de fitxers FTP... la llista és molt llarga.
  • Cal tenir en compte doncs que a nivell d'aplicació necessitem un proxy que suport el protocol que volem controlar. Squid és capaç de treballar amb HTTP, HTTPS, FTP i Gopher que són alguns dels protocols més utilitzats en xarxes. Per a filtrar altres protocols hauríeu d'utilitzar altres proxies.
  • Cal tenir en compte que un tallafocs com p. ex. iptables pot perfectament crear normes de control d'accés basades en informació del nivell d'aplicació (per exemple filtrar les pàgines que continguin la paraula sexe). El problema és que no està dissenyat per aquesta tasca i per tant és molt millor utilitzar un proxy de nivell d'aplicació.
Avantatges
  • Augmenta la velocitat d'accés a la Web.
  • Estalvia molt trànsit a les línies de connexió amb Internet
  • Millor control de l'accés a recursos.
  • Llistes ACL per controlar l'accés a determinades webs o IPs.
  • Permet filtrar a nivell d'aplicació (urls, continguts, horaris d'accés, etc.)
Inconvenients
  • S'envaeix la privacitat dels clients del proxy (molta informació personal és registrada )
  • La catxè pot ser un greu problema per a pàgines dinàmiques.
  • Squid, si s'utilitza directament és força laboriós i complicat de configurar. Tenim aplicacions (front-ends) que ens faciliten l'ús d'Squid.
Funcionament
  • Quan un usuari vol rebre una pàgina que no ha estat emmagatzemada amb anterioritat, el proxy, que 'frueix' d'una connexió a Internet molt més ràpida que cap de nosaltres, mentre en fa la còpia al seu disc, ens l'envia, de manera que moltes vegades millora una 'mica' aquesta primera recepció.
  • Quan la pàgina que demana l'usuari ja ha estat emmagatzemada, el proxy l'envia a tota velocitat, evitant retards per culpa de trànsit extern.
  • No podem esperar cap miracle del servei proxy-catxè, si les comunicacions amb l'exterior són lentes ell també ho patirà, però el rendiment general millorarà molt.

squid

Web caching
  • Com sap la cache quins objectes ha de guardar en memòria i quins no? Això depèn de com s'hagi desenvolupat la pàgina web i de com es configuri la memòria cau en el client.
  • Un objecte pot ser marcat per tal que no sigui mai guardat en memòria cau (P. ex. pàgines dinàmiques) i la cache ignorarà aquest objecte.
  • Tingueu en compte que parlem d'objectes i no de pàgines web. La majoria de pàgines web modernes són realment un conjunt d'objectes: fitxers HTML, imatges, codi de servidor com PHP, múltimedia, etc... Cadascun d'aquest objectes s'obté amb una petició HTTP especifica i per tant podem especificar diferents configuracions de cache per a cada objecte.
  • També es pot marcar un objecte amb una edat màxima (max age, indica un temps) o un camp expires (indica una data concreta) que indica a la cache quin serà el màxim de temps abans de que es vegi obligada a tornar a demanar l'objecte.
  • L'objecte també pot tenir un camp amb la data de l'última modificació (last modified). Si la data de modificació és més nova que la data de l'objecte guardat aleshores cal tornar a demanar l'objecte.
  • Quan un objecte de la cache encara és correcte és diu que és un objecte fresc (FRESH) i si no és correcte es diu que està caducat (STALE). El protocol HTTP defineix 3 modes de controlar la memòria cau:
    • Freshness: permet indicar la "frescura" de les respostes HTTP de forma que la cache les pugui reutilitzar sense tornar-les a demanar. Aquesta informació normalment s'indica a les capçaleres de les respostes HTTP (HTTP response headers). Les capçaleres més utilitzades:
      • Expires: indica una data a partir de la qual l'objecte es considerarà caducat.
      • Cache-Control: indica durant quants segons l'objecte es considerarà fresc.
    • Validation: es pot utilitzar per comprovar si una resposta en memòria cau encara és vàlida. La capçalera utilitzada és:
      • Last-Modified: Si la data de modificació de l'objecte és posterior a la data de l'objecte en memòria cau aleshores està caducat.
    • Invalidation: Alguns request com POST, PUT O DELETE poden invalidar un objecte de la memòria cau.
Exemple
  • Imagineu-vos que dins una sala amb 12 ordinadors volen veure la pàgina web d'Ubuntu.
  • En aquell moment hi ha 12 màquines que demanen al servidor web d'Ubuntu, que els hi envií les pàgines.
  • Com tots accedeixen a la vegada, es produeix una sensació de frustració quan les pàgines no acaben d'arribar mai.
  • Si a la sala es configuren els navegadors perquè utilitzin el proxy-catxè, en el moment que el primer usuari fa la petició de les pàgines d'Ubuntu, el proxy (1 màquina) surt a l'exterior i les recull (i no ho fan les 12 per separat).
  • Un cop emmagatzemades les pàgines web dins el proxy, els usuaris de la sala les reben a tota velocitat, i no 'embruten' de cap manera les línies exteriors.
Jeraquia de proxys
  • Per augmentar la velocitat d'accés a la Web i alleugerir el trànsit a les línies de comunicacions són molt recomanables les jerarquies proxy-catxé.
  • Quan hi ha una jerarquia, el proxy que no troba la pàgina dins el seu disc, la hi demana al seu 'superior', i això és repeteix fins que el proxy més proper la serveix ràpidament.
  • La XTEC forma part d'una d'aquestes jerarquies amb el seu proxy-catxé proxy.xtec.es.
  • El proxy de la XTEC està enllaçat amb el de RedIris (Madrid).
  • Si es gaudeix d'una connexió a Internet mitjançant un router de la XTEC ( XDSI / ADSL ) es pot participar de la jerarquia proxy-catxé per millorar el rendiment de la connexió.