Diferència entre revisions de la pàgina «Squid proxy per GNU/Linux»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
 
(Hi ha 11 revisions intermèdies del mateix usuari que no es mostren)
Línia 6: Línia 6:
 
  $ sudo apt-get install squid
 
  $ sudo apt-get install squid
  
#Després instal·larem el WEBMIN ja que els arxius de configuració son complicats. Us recomano el servidor zeus.ova ja que ja té els paquets preparats pel Webmin.
+
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:
 +
#Instal·la el WEBMIN com hem indicat abans.
 
#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).
 
#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).
 
#Comprova que el servidor té accés a fora i a dins i que funciona el DNS correctament (fent pings a dominis).
 
#Comprova que el servidor té accés a fora i a dins i que funciona el DNS correctament (fent pings a dominis).
Línia 31: Línia 37:
 
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 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 servidor NAT amb el Squid i redirigir el trànsit del port 80 (port web per defecte) al port 3128, que és el del Squid.
+
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:
 
Així que els passos seran bàsicament:
# Configurar un [http://www.cacauet.org/alumnes/index.php/Servidor_NAT_Linux servidor NAT Linux].
+
# Configurem un servidor Linux amb 2 interfícies, similar al Servidor NAT però sense activar les redireccions de nivell 3 (iptables).
 +
#: <strike>Configurar un [http://www.cacauet.org/alumnes/index.php/Servidor_NAT_Linux servidor NAT Linux].</strike> ''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.''
 
# Instal·lar el Squid.
 
# Instal·lar el Squid.
 
# Configurar el Squid:
 
# Configurar el Squid:
Línia 41: Línia 48:
 
#*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).
 
#*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.
 
#*Gravem i reiniciem el servei.
# Configurar la redirecció del port 80 al 3128:
+
# 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:<pre>iptables -t nat -A PREROUTING -i eth1 -p tcp -dport 80 -j REDIRECT --to-port 3128
+
#* Afegir la següent comanda al '''/etc/rc.local''':<pre>iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128</pre>
#*: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.
+
#: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.
 +
# 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:
 +
#*:<strike><pre>iptables -t nat -A POSTROUTING -p tcp --dport 53 -o eth0 -j MASQUERADE</pre></strike> (en principi aquest no cal)
 +
#*:<pre>iptables -t nat -A POSTROUTING -p udp --dport 53 -o eth0 -j MASQUERADE</pre>
 +
#*:<pre>echo 1 > /proc/sys/net/ipv4/ip_forward</pre>
 +
#* És possible (per comprovar) que també es pugui fer redirigint el trànsit del port 53 al 3128:<pre>iptables -t nat -A PREROUTING -i eth1 -p udp --dport 53 -j REDIRECT --to-port 3128</pre>
 +
#* 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.
 
# Configurem els clients per utilitzar el nostre servidor com a "gateway" (treiem la configuració de ''proxy'' dels ''browsers''.
 
# 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 ==
 
== Links ==
Línia 50: Línia 65:
  
 
http://www.freesoftwaremagazine.com/articles/web_blocking_squid
 
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

Revisió de 06:33, 22 maig 2015

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[modifica]

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)[modifica]

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[modifica]

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[modifica]

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