Squid proxy per GNU/Linux

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Squid és un programa de Proxy de codi obert. Per tant, hi ha versions per GNU/Linux i també per Windows i altres SOs.


Configuració bàsica

Ho podem instal·lar amb:

$ sudo apt-get install squid

Cal també instal·lar el WEBMIN, ja que els arxius de configuració del Squid son complicats.

  • http://www.webmin.com
    • A Downloads trobareu la darrera versió a descarregar per Debian/Ubuntu (.deb).
    • Dintre de Downloads trobareu també "Installing on Debian" on podeu seguir els passos per instal·lar-lo.

Per completar la pràctica:

  1. Instal·la el WEBMIN com hem indicat abans.
  2. Configureu la xarxa per tal que el Proxy (Ubuntu Server) tingui 2 targetes de xarxa, una interna i una externa (és igual si la externa la fem en NAT o en xarxa pont, però si fas servir aquesta darrera recorda reinicialitzar l'adreça MAC).
  3. Comprova que el servidor té accés a fora i a dins i que funciona el DNS correctament (fent pings a dominis).
  4. Configura un client per xarxa interna i que utilitzi el Proxy que acabem d'instal·lar (hauràs de configurar el navegador pel port 3128).

Comprova que pots navegar amb el browser. Si et prohibeix l'accés, configura el Squid tal i com segueix:

  1. Accedeix a la interfície de configuració del Webmin amb
    https://<ip_del_proxy>:10000
  2. Vés a Access Control i Proxy restrictions.
  3. Edita la regla "Deny all" i canvia-la per "Allow all".

Configuració de les ACLs (Access Control Lists)

Una de les utilitats més importants del Proxy és prohibir l'accés a la web. Es pot restringir per IP o, més típicament, per URLs.

Per prohibir una determinada URL:

  1. Ves a la interfície d'administració del Squid a través del Webmin
  2. Crea una ACL de tipus URL_regexp anomenada "bad_URLs". Posa-hi algun domini a prohibir, com per exemple www.youtube.com
  3. Vés al menú "Proxy restrictions" i crea una restricció Deny a la ACL que hem creat (bad_URLs).
  4. Mou la restricció per sobre del Allow all que hem configurat abans.
  5. Aplica els canvis.
  6. Comprova que no et deixa accedir a la llista.


Configuració del Proxy en mode transparent

La idea de posar el proxy en mode transparent és que no calgui configurar els browsers dels clients amb el port particular del Squid. Hauriem de poder configurar la xarxa utilitzant el servidor com a gateway, a l'igual que vam fer amb el servidor NAT. No obstant, volem les funcionalitats actives del proxy, com el filtratge i la caché.

La idea bàsica és muntar un Squid i redirigir el trànsit del port 80 (port web per defecte) i el port 53 (DNS) al port 3128, que és el del Squid.

Així que els passos seran bàsicament:

  1. Configurem un servidor Linux amb 2 interfícies, similar al Servidor NAT però sense activar les redireccions de nivell 3 (iptables).
    Configurar un servidor NAT Linux. No configurarem un servidor NAT perquè llavors el client es podria "saltar" el proxy. La pràctica, això sí, sería més fàcil perquè no caldria redirigir el port 53 del DNS.
  2. Instal·lar el Squid.
  3. Configurar el Squid:
    • Permetre l'accés a tots els usuaris del Squid (veure apartats anteriors).
    • Activar restriccions (típicament per URL).
    • Posar el port 3128 en mode "transparent". Anem a Webmin -> Ports and Networking i al port 3128 afegim a "Port Options" la directiva "transparent" (sense cometes).
    • Gravem i reiniciem el servei.
  4. Configurar la redirecció del port 80 al 3128: (assumum eth0 cap al router i eth1 xarxa interna)
    • Afegir la següent comanda al /etc/rc.local:
      iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    També podem executar l'anterior comanda amb sudo directament sobre la shell per provar si va. Si ens funciona, la podem incorporar al rc.local.
  5. Tal com està no funcionarà, a no ser que activem el servei DNS mitjançant el NAT. Cal activar el port 53 UDP del servidor (servei DNS).
    • Afegir les següents directives al servidor:
      iptables -t nat -A POSTROUTING -p tcp --dport 53 -o eth0 -j MASQUERADE
      (en principi aquest no cal)
      iptables -t nat -A POSTROUTING -p udp --dport 53 -o eth0 -j MASQUERADE
      echo 1 > /proc/sys/net/ipv4/ip_forward
    • És possible (per comprovar) que també es pugui fer redirigint el trànsit del port 53 al 3128:
      iptables -t nat -A PREROUTING -i eth1 -p udp --dport 53 -j REDIRECT --to-port 3128
    • Testeja que des del client podem resoldre el DNS (fent un ping -que no contestarà però sí resoldrà- i/o un nslookup). Inclou la comprovació a l'informe.
  6. Configurem els clients per utilitzar el nostre servidor com a "gateway" (treiem la configuració de proxy dels browsers.
    • Comprovem que podem navegar i que les restriccions del Squid funcionen.

Links

Aquí s'explica tot des de l'arxiu de configuració:

http://www.freesoftwaremagazine.com/articles/web_blocking_squid

Aquí he trobat la comanda correcta per redirigir el trànsit del port 80 al 3128 en Ubuntu:

http://www.lesismore.co.za/squid3.html