Servidors Proxy: Squid

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Introducció. Teoria

Squid és un web proxy cache server (servidor intermediari) d'altes característiques, que proporciona serveis de proxy i de cache per al protocol Hyper Text Transport Protocol (HTTP), File Transfer Protocol (FTP), i altres protocols de xarxa populars. Squid pot implementar caching i proxying de peticions SSL (Secure Sockets Layer) i lookups de DNS (Domain Name Server), i fer caching de tipus transparent. Squid suporta una àmplia varietat de protocols de caching, com ara el Internet Cache Protocol (ICP), el Hyper Text Caching Protocol (HTCP), el Cache Array Routing Protocol (CARP), i el Web Cache Coordination Protocol (WCCP) .

Hem de distingir entre la funcionalitat de Proxy i la funcionalitat de Caché.

Instal.lació i configuració

$ sudo apt-get install squid

Squid es configura editant les directives que conté el fitxer de configuració /etc/squid3/squid.conf. Abans de fer proves canviant directives del fitxer de configuració, anem a fer una còpia de seguretat del fitxer original:

$ sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.original
$ sudo chmod a-w /etc/squid3/squid.conf.original

El port per defecte amb què treballa el Squid és el port 3128 (buscar-lo en el fitxer de configuració):

http_port 3128

Nota: Si hi ha un error de sintaxi en el fitxer de configuració dóna un error del tipus: El servidor intermediari està rebutjant les connexions. Molt de compte en introduir errors de sintaxi.

Squid com a proxy

La primera prova que hem de fer quan instal.lem un servidor proxy és escollir una màquina client (una màquina d'un company), i que aquest client pugui sortir a Internet a través del servidor Proxy. El servidor proxy Squid està instal.lat en una màquina amb IP (192.168.1.130, exemple del professor, no és la correcta en el A35). Anem a connectar-nos des d'una màquina client (192.168.1.128) a Internet a través del servidor proxy que estem configurant.

De moment no fem cap canvi i configurem el client per configurar-nos a un servidor proxy on encara no hem fet cap canvi.

Per configurar Mozilla Firefox per tal de què es connecti a un servidor Intermediari (servidor proxy) es fa de la següent manera (per a altres navegadors web ho faràs de manera similar):

Editar > Preferències > Avançat > pestanya Xarxa > Connexió (configurar com el firefox es connecta a Internet). Paràmetres: Hi ha vàries possibilitats. Escollirem Configuració manual del servidor intermediari.

servidor intermediari d'HTTP: 192.168.1.130. Port: 3128 (aquí posaràs les dades correctes segons en quina xarxa estiguis i a quin servidor proxy et vulguis connectar). Fixa't que de moment estem parlant de servidor intermediari d'HTTP (també podries tenir un servidor proxy de FTP i altres serveix en altres IP's diferents).

No cal reiniciar el firefox. Si et connectes a http://www.google.com, has deixat de tenir connexió a Internet, doncs ara falta configurar el servidor proxy correctament. La IP de la màquina client amb què estem fent les proves és, per exemple, 192.168.1.128.

Ara hem de configurar el servidor proxy correctament per tal de què el client sí pugui connectar-se a Internet.

Com es fa? Cercar el següent tros de codi i afegim la última línia:

#  TAG: visible_hostname
#       If you want to present a special hostname in error messages, etc,
#       define this.  Otherwise, the return value of gethostname()
#       will be used. If you have multiple caches in a cluster and
#       get errors about IP-forwarding you must set them to have individual
#       names with this setting.
#
#Default:
# none   
visible_hostname professor

aprox. línia 478

acl xarxa_local src 192.168.1.0/24

i en el cas de l'A35 ficarem:

acl aula_35 src 192.168.10.0/24

On es fa això? (el fitxer de configuració és molt llarg i té molta verbositat...)

#  TAG: acl
#       Defining an Access List
#
#    Every access list definition must begin with an aclname and acltype,
...
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#afegim aquesta línia
acl xarxa_local src 192.168.1.0/24
...

Aleshores, afegim a dalt de tot de la secció http_access del teu fitxer /etc/squid3/squid.conf: (aprox. línia 796)

http_access allow xarxa_local

o bé

http_access allow aula_35

Com es fa això?

#  TAG: http_access
#       Allowing or Denying access based on defined access lists
#
#       Access to the HTTP port:
#       http_access allow|deny [!]aclname ...
...
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# ************************************
#afegir aquesta línia:
http_access allow xarxa_local
# ************************************ 
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all

Fixem-nos bé on he afegit la línia. Això és important perquè més avall tenim, al final de tot, http_access deny all, que és el motiu pel qual quan acabem d'instal.lar Squid no podem navegar per Internet. Recordem que l'ordre de les regles importa. sempre que canviem el fitxer de configuració hem de reiniciar el servei del Squid:

$ sudo restart squid
squid start/running, process 12144

o bé

$ sudo /etc/init.d/squid3 restart


NOTA i AVÍS: treballant amb el proxy hauràs de tenir molt de compte amb la cahce del Firefox. D'altra banda, no queda clar, després de realitzar canvis en el fitxer de configuració o en la definició del proxy al Firefox, quan s'ha de reiniciar el Firefox.

Operar en horari d'oficina

Squid té moltes possibilitats quant a control d'accés. Per exemple, podem fer que els serveis de proxy de Squid només siguin efectius en horari d'oficina. Podem donar servei d'accés a Internet en horari d'oficina entre les 9:00AM i les 5:00PM, de dilluns a divendres:

Al final de la secció ACL pots afegir el següent, com has fet prèviament:

acl xarxa_local src 192.168.1.0/24
acl xarxa_local_hora time M T W T F 9:00-11:22:00

Aquí posaràs una hora de finalització propera a l'actual de manera que ho pots comprovar ràpidament si funciona.

Aleshores, afegeix a dalt de tot de la secció http_access, en la mateixa línia que has editat abans:

http_access allow xarxa_local xarxa_local_hora

Funciona correctament. Quan hem passat l'hora estipulada i accedim a una cerca de Google apareix:

ERROR
The requested URL could not be retrieved
The following error was encountered while trying to retrieve the URL: http://www.google.es/search?
    Access Denied.
Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.
Your cache administrator is webmaster.
Generated Mon, 27 Feb 2012 12:23:23 GMT by professor (squid/2.7.STABLE7)

Nota important: les dues directives anteriors van en la mateixa línia. No és correcta la següent configuració:

http_access allow xarxa_local
http_access allow xarxa_local_hora

El registre

aprox. línia 2306 del fitxer de configuració

# LOGFILE OPTIONS
# -----------------------------------------------------------------------------

#  TAG: logformat
#       Usage:
#
#       logformat <name> <format specification>
...

#  TAG: access_log
#       These files log client request activities. Has a line every HTTP or
#       ICP request. The format is:
#       access_log <filepath> [<logformat name> [acl acl ...]]
#       access_log none [acl acl ...]]
...
access_log /var/log/squid3/access.log squid

En principi està comentat. Però no hi ha problema, és el valor per defecte.

Per defecte, no es registren els logs. Per tal de poder registrar els logs, anem a la línia aprox. 2553:

#  TAG: log_access      allow|deny acl acl...
#       This options allows you to control which requests gets logged
#       to access.log (see access_log directive). Requests denied for
#       logging will also not be accounted for in performance counters.

#Default:
# none   
log_access allow meva_ip

I si ens connectem a amazon.com, podem veure com l'activitat ha quedat registrada:

...
1394477952.570    242 192.168.7.150 TCP_MISS/204 336 GET http://fls-na.amazon.com/1/batch/1/OE/ATVPDKIKX0DER:177-9004673-0050864:05VZKABNA6PZNSGA10PY:www.amazon.com$cel=j:%7B%22k%22%3A%22mso%22%2C%22n%22%3A%22page%20module%22%2C%22t%22%3A1972%7D:1972,j:%7B%22k%22%3A%22mrg%22%2C%22n%22%3A%22viewport%20module%22%2C%22t%22%3A1972%7D:1972&uedata=s:%2Fuedata%2Fnvp%2Funsticky%2F177-9004673-0050864%2FGateway%2Fntpoffrw%3Fld%26v%3D33%26id%3D05VZKABNA6PZNSGA10PY%26ctb%3D1%26sc0%3DcsmCELLSvpm%26bb0%3D1972%26pc0%3D1972%26ld0%3D1972%26t0%3D1394477952287%26pty%3DGateway%26spty%3Dgateway-three-column%26pti%3D507846:1972 - DIRECT/205.251.243.158 -
...


Per exemple, en aquesta mostra del fitxer de log es pot veure com quan hem arribat a les 13h22min el servidor Squid denega el servei de proxy:

...
1330345333.020    187 192.168.1.128 TCP_REFRESH_HIT/304 307 GET http://ssl.gstatic.com/gb/images/b_8d5afc09.png - DIRECT/209.85.143.120 -
1330345333.169     92 192.168.1.128 TCP_MISS/304 317 GET http://www.google.es/images/experiments/p1/p1sprite.png - DIRECT/173.194.34.248 -
1330345333.223    140 192.168.1.128 TCP_MISS/304 312 GET http://www.google.es/extern_chrome/e7be2ef410dd2208.js - DIRECT/173.194.34.248 -
1330345333.434    348 192.168.1.128 TCP_MISS/200 13631 GET http://www.google.es/search? - DIRECT/173.194.34.248 application/json
1330345333.614      0 192.168.1.128 TCP_NEGATIVE_HIT/204 303 GET http://clients1.google.es/generate_204 - NONE/- text/html
1330345333.709     94 192.168.1.128 TCP_MISS/304 307 GET http://www.gstatic.com/inputtools/images/tia.png - DIRECT/209.85.143.120 -
1330345333.754     91 192.168.1.128 TCP_MISS/304 317 GET http://www.google.es/images/swxa.gif - DIRECT/173.194.34.248 -
1330345381.976      0 192.168.1.128 TCP_DENIED/403 1559 POST http://safebrowsing.clients.google.com/safebrowsing/downloads? - NONE/- text/
1330345390.888      0 192.168.1.128 TCP_DENIED/403 1485 GET http://www.google.es/url? - NONE/- text/html
1330345390.916      0 192.168.1.128 TCP_DENIED/403 1485 GET http://www.google.es/url? - NONE/- text/html
1330345394.264      0 192.168.1.128 TCP_DENIED/403 1485 GET http://www.google.es/url? - NONE/- text/html
1330345394.530      0 192.168.1.128 TCP_DENIED/403 1485 GET http://www.google.es/url? - NONE/- text/html
...

Per tant, amb els logs del servidor proxy podem veure què fan i per on naveguen els clients.

Per tal d'interpretar el format del log, hem de fixar-nos en les següents línies:

#  TAG: logformat
...
#logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<A %mt
...

#  TAG: access_log
...
#Default:
# access_log /var/log/squid3/access.log squid
...

Tenim definit el fitxer de log /var/log/squid3/access.log amb el format squid:

%ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<A %mt

i per interpretar-lo hem de mirar l'explicació en el fitxer de configuració.

Filtrar continguts

Nota: veure també més avall: Servidors_Proxy:_Squid#Aclaratori_filtratge

Hauràs d'implementar els següents casos:

Solució de dues maneres:

acl webs_denied dstdomain "/home/joan/webs_denied"
http_access2 deny xarxa35 webs_denied 
acl webs_denied2 url_regex "/home/joan/webs_denied2"
http_access allow xarxa_35 !webs_denied2

El fitxer /home/joan/webs_denied conté:

http://www.youtube.com
http://www.twitter.com

i el fitxer /home/joan/webs_denied2 conté

www.joanillo.org
pelis
sex

No ha estat fàcil trobar la solució, doncs pot dependre de la versió de Squid que estigui instal.lada:

$ squid -v
Squid Cache: Version 2.7.STABLE7

La versió 2.7 no és molt nova, i conté la directiva http_access2 (utilitzant http_access no funciona)

nota curs 2012-2013:

$ squid3 -v
Squid Cache: Version 3.1.19

L'avantatge d'utilitzar url_regex és que es poden utilitzar expressions regulars, i això vol dir que quan en el Google cerco per sex estic fent una cerca que conté l'expressió sex:

http://www.google.es/search?hl=ca&q=sex&oq=sexe&aq=f&aqi=g10

i gràcies a l'expressió regular (que admet diferents opcions, caràcters comodins,...) aquesta cerca queda capada.

En el webmin (veure més avall) la configuració queda):

ACL:

...
xarxa_local 	Client Address 	192.168.1.0/24
xarxa_35 	Client Address 	192.168.10.0/24
webs_denied 	Web Server Hostname 	From file /home/joan/webs_denied
webs_denied2 	URL Regexp 	From file /home/joan/webs_denied2
...

Proxy restrictions:

Deny 	xarxa_35 webs_denied2 	
Allow 	xarxa_35 !webs_denied 	
Deny 	xarxa_local webs_denied2 	
Allow 	xarxa_local !webs_denied 	
Deny 	all

Recordem que l'ordre de les regles definides importa:

the order of your other ACLs matters. note that squid acl's are read top down and when a match is found,
processing stops. so if your black listed sites are finding a match (which allows them through)
then your urlpath_regex will not be used.

Això vol dir que si fico Allow xarxa_local abans de Deny xarxa_local webs_denied2, aquest últim filtre mai es produirà.

Caching. Squid com a Cache

A caching proxy server accelerates service requests by retrieving content saved from a previous request made by the same client or even other clients. Caching proxies keep local copies of frequently requested resources, allowing large organizations to significantly reduce their upstream bandwidth usage and costs, while significantly increasing performance. Most ISPs and large businesses have a caching proxy. Caching proxies were the first kind of proxy server.

Some poorly-implemented caching proxies have had downsides (e.g., an inability to use user authentication). Some problems are described in RFC 3143 (Known HTTP Proxy/Caching Problems).

Another important use of the proxy server is to reduce the hardware cost. An organization may have many systems on the same network or under control of a single server, prohibiting the possibility of an individual connection to the Internet for each system. In such a case, the individual systems can be connected to one proxy server, and the proxy server connected to the main server. An example of a software caching proxy is Squid.

En el fitxer de configuració podem veure quin és el directori per defecte per a Cache:

$ ls /var/spool/squid3/

També podem utilitzar directives del fitxer de configuració que afecten a la manera com emmagatzamem url's i objectes a la cache. Per exemple, a vegades ens pot interessar que una URL no estigui sotmesa a cache: (http://wiki.squid-cache.org/SquidFaq/OperatingSquid)

acl XYZZY url_regex ^http://www.i.suck.com/foo.html$
cache deny XYZZY

I aquest exemple evita de fer cache entre les 8AM i les 11AM:

acl Morning time 08:00-11:00
cache deny Morning

Per veure els elements més grossos que tenim emmagatzemats a la cache podem utilitzar la informació del fitxer acces.log:

$ sudo sort -r -n +4 -5 /var/log/squid/access.log | awk '{print $5, $7}' | head -25

760147 http://3.bp.blogspot.com/-TvYqJWGbkN8/TZhHBQU2aFI/AAAAAAAAAEY/8U2CRHLfJM8/s1600/Papilio+machaon-PAPALLONA+REI.jpg
261780 http://www.google.es/search?
261778 http://www.google.es/search?
240332 http://2.bp.blogspot.com/-ftkpiyA41BI/TZORCWozqmI/AAAAAAAAAEA/ZCfs778wElI/s320/camuflatge+1.png
240326 http://2.bp.blogspot.com/-ftkpiyA41BI/TZORCWozqmI/AAAAAAAAAEA/ZCfs778wElI/s320/camuflatge+1.png
...

Ens mostra els 25 fitxers més grossos, entre els quals tenim algunes imatges a què hem accedit des de Google Images

Com funciona la cache: accedint a papallona.jpg

A Google Images accedima a imatges de papallones: Accedim a la papallona

per primer cop, i actualitzem (F5) el navegador dues vegades.

$ sudo joe /var/log/squid3/access.log
...
1330347932.075    235 192.168.1.128 TCP_MISS/200 1505 GET http://www.santjoandelerm.com/papallones.htm - DIRECT/81.88.48.79 text/html
1330347932.715    875 192.168.1.128 TCP_MISS/200 146223 GET http://www.santjoandelerm.com/papallones/papallona.jpg - DIRECT/81.88.48.79 image/jpeg
1330347932.989    896 192.168.1.128 TCP_MISS/200 168444 GET http://www.santjoandelerm.com/papallones/mariposa.jpg - DIRECT/81.88.48.79 image/jpeg
1330347933.410   1322 192.168.1.128 TCP_MISS/200 188051 GET http://www.santjoandelerm.com/papallones/graellsa.jpg - DIRECT/81.88.48.79 image/jpeg
1330347933.441   1353 192.168.1.128 TCP_MISS/200 170017 GET http://www.santjoandelerm.com/papallones/butterfly.jpg - DIRECT/81.88.48.79 image/jpeg
1330347933.452   1365 192.168.1.128 TCP_MISS/200 150354 GET http://www.santjoandelerm.com/papallones/farfalle.jpg - DIRECT/81.88.48.79 image/jpeg
1330347933.758    234 192.168.1.128 TCP_MISS/204 369 GET http://www.google.com/gen_204? - DIRECT/173.194.34.240 text/html
1330347947.041    122 192.168.1.128 TCP_MISS/204 369 GET http://www.google.es/gen_204? - DIRECT/173.194.34.248 text/html
1330347974.529    188 192.168.1.128 TCP_REFRESH_HIT/304 266 GET http://www.santjoandelerm.com/papallones/papallona.jpg - DIRECT/81.88.48.79 -
1330347975.444     88 192.168.1.128 TCP_REFRESH_HIT/304 266 GET http://www.santjoandelerm.com/papallones/papallona.jpg - DIRECT/81.88.48.79 -

Veiem com la primera vegada que accedim a papallona.jpg és del tipus TCP_MISS, que vol dir que no es troba a la cache i que es baixa de l'origen (81.88.48.79), i que quan actualitzem és un TCP_REFRESH_HIT (HIT en aquest cas vol dir que l'ha trobat a la cache, que l'ha encertat)

Clar que he fet un refresh del navegador. Donat que el Mozilla Firefox també té una cache interna, ara faig una altra prova:

  1. Esborro la cache interna del Firefox.
  2. Tanco el Firefox i el torno a obrir;
  3. vaig a la url de la imatge de la papallona. Ara el que s'obté és:
1330348625.008    617 192.168.1.128 TCP_HIT/200 146231 GET http://www.santjoandelerm.com/papallones/papallona.jpg - NONE/- image/jpeg

Per tant, hem vist tres tipus de cache: TCP_MISS, TCP_HIT, TCP_REFRESH_HIT

Anem a veure com s'emmagatzema informació que serà utilitzada per tal de què els clients naveguin per internet més ràpid. Com a sudo

$ ls -R /var/spool/squid/ > carp1 

naveguem per Internet

$ ls -R /var/spool/squid/ > carp2

I ara podem veure la diferència entre les dues carpetes

$ diff carp1 carp2
278a279,281
> 00000000
> 00000001
> 00000002
280a284,285
> 00000005
...

tot i que no podem interpretar aquesta informació perquè està tot en binari, queda clar que s'ha modificat el contingut de /var/spool/squid/, i això vol dir que s'han afegit objectes a la cache.

Modificar la pàgina d'error

En el fitxer de configuració canviem en per ca (o es):

#error_directory /usr/share/squid/errors/en
error_directory /usr/share/squid/errors/ca

En aquest directori hi ha tota una sèrie de fitxers que en podem modificar el format HTML (el fitxer de denegació d'accés és ERR_ACCESS_DENIED). Podem canviar, a més de la informació que es mostra per defecte, el disseny i/o l'estructura.

Per exemple, si volem posar una fotografia, s'ha de copiar el fitxer de la fotografia a /usr/share/squid/icons, i en el fitxer /usr/share/squid/mine.conf hem de dir que aquesta foto forma part de les fotografies del Squid.

Després modifiquem el fitxer ERR_ACCESS_DENIED afegint-hi la línia de la fotografia . Per ex,

<img src="http://localhost:3128/squid-internal-static/icons/stop.jpg">

Eines gràfiques: webmin

sudo apt-get install perl5 libnet-ssleay-perl

download: http://www.webmin.com/download.html

Debian package suitable for Debian, Ubuntu or other derived Linux

$ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.580_all.deb
$ sudo dpkg -i webmin_1.580_all.deb
...
S'està desempaquetant webmin (de webmin_1.580_all.deb) ...
dpkg: problemes de dependències impedeixen la configuració de webmin:
 webmin depèn de libauthen-pam-perl; tot i així:
  El paquet libauthen-pam-perl no està instal·lat.
 webmin depèn de libio-pty-perl; tot i així:
  El paquet libio-pty-perl no està instal·lat.
 webmin depèn de apt-show-versions; tot i així:
  El paquet apt-show-versions no està instal·lat.

Per resoldre els problemes de dependències:

$ sudo apt-get -f install
...
S'està configurant webmin (1.580) ...
Webmin install complete. You can now login to https://joan-laptop:10000/
as root with your root password, or as any user who can use sudo
to run commands as root

Fixem-nos que hem utilitzat el paquet deb de webmin, i per tant (al contrari de l'enllaç que es segueix), s'ha configurat valors per defecte.

Ja podem accedir a webmin. Fixem-nos que no és una aplicació Apache:

Anem a l'apartat Serveis, i veiem que l'apartat Squid Proxy Server ja està en funcionament. Si no estigués en funcionament, l'hauríem de descarregar:

Per trobar el pluguin per a squid:
*http://www.webmin.com/standard.html

Squid Proxy Server: squid.wbm.gz
Configure Squid options, ACLs, caching parameters and proxy users.
*http://download.webmin.com/download/modules/squid.wbm.gz

En aquest moment ja podem fer tot el que estàvem fent de configuració del proxy de forma gràfica. Anem repassant els diferents items que hi ha en la configuració del proxy, i podem veure com es corresponen al que estàvem veien en el fitxer de configuració del Squid.

Per exemple, veiem en l'apartat Access Control (amb la icona del candau):

La següent configuració val és vàlida per a la xarxa 35 (192.168.10.X) i per a una xarxa local domèstica (192.168.1.X, proves del professor).

Allow 	localhost 	
Deny 	xarxa_35 !webs_denied2 	
Allow 	xarxa_35 !webs_denied 	
Deny 	xarxa_local webs_denied2 	
Allow 	xarxa_local !webs_denied 	
Deny 	all

Amb

Deny 	xarxa_local webs_denied2

evitem fer cerques al Google de determinades paraules clau. Amb

Allow 	xarxa_local !webs_denied

bloquegem determinades pàgines web. L'ordre entre aquestes dues línies també importa.

Recordem que hi ha el botó Apply Configuration que equival a reiniciar el servei de Squid, necessari per tal que s'apliquin els canvis que hem fet.

Aclaratori filtratge

Com funcionen les expressions regulars i el filtratge?

Anem a considerar: http://server.example.com/some/path/to/an/object

Anem a considerar un exemple de cada per tal de capar continguts que volem denegar.

IMPORTANT: per tal que els tres exemples funcionin, webs_denied3 ha d'estar a sobre de Allow xarxa_local, i Deny All ha de ser l'últim.

	Deny 	webs_denied3 	
	Allow 	xarxa_local 	
	Deny 	all

1) volem capar totes les url que continguin en algun lloc porn. Utilitzarem url_regex

acl webs_denied3 url_regex .*porn.*
http_access deny webs_denied3

per exemple:

però curiosament no capa (que és la primera vegada que fem una cerca en el google sobre porn. Deu ser que és https...)

però sí que capa:

2) volem capar totes les url que continguin en algun lloc porn, Utilitzant urlpath_regex (urlpath_regex matches against /some/path/to/an/object)

acl webs_denied3 urlpath_regex .*porn.*
http_access deny webs_denied3

les url de google search que contenen porn sí que queden capades, igual que abans.

3) volem capar totes les url que continguin en el nom de domini porn, utilitzant dstdom_regex (dstdom_regex matches against server.example.com )

acl webs_denied3 dstdom_regex .*porn.*
http_access deny webs_denied3

En aquests casos hem utilitzat l'expressió regular .*porn.* però en aquest cas senzillament equival a porn. S'ha ficat així perquè aquí val ficar expressions regulars tan complicades com vulguem.

NOTA:

quan fico www.google.es em redirigeix a https://www.google.es/

i això fa que no funcioni. Però hi ha alumnes que no els redirigeix

això té a veure amb la configuració de seguretat del teu perfil de Google. Com es canvia?

Google users who notice automatic redirects can prevent this from happening in the search settings. To do that they need to click on the options icon in the upper right corner of the screen (next to the profile name) and select Search Settings from the context menu that opens up.

They then need to scroll down until they find the Secure Connection setting.

Aquesta opció que afecta al perfil de Google sembla ser que només es pot canviar en el Chrome, no en el Firefox.

Això és important perquè en la configuració original hi ha regles que permeten el https, i fa que certs filtres que vull que afectin al google (com ara porn) no funciona.

Bloquejar cerques per a marcianitos. Problema amb https

Volem bloquejar les cerques per a Google de marcianitos:

acl deny_marcianitos url_regex .*marcianitos.*
...
http_access deny deny_marcianitos

En fer una cerca a Google ens trobem vàries causístiques:

Funciona, com era d'esperar:

No funciona per les majúscules, fàcil de solucionar si haguéssim utilitzat l'opció -i (url_regex -i):

No funciona per culpa de https:

El problema del https no és fàcil de solucionar. És fàcil capar url's concretes com ara Facebook,... però capar els resultats de cerques per marcianitos i que continguin https d'entrada no es pot, segons s'explica en aquests enllaços:

Squid doesn't see the URL when using HTTPS (only the host name and port number).

És a dir, per una url encriptada doncs això, està encriptada, i el proxy transparent no s'entera.

Limitar l'ample de banda: delay pool

Com és lògic pel que hem vist, aquesta opció la podem fer tant editant el fitxer de configuració com amb l'entorn gràfic webmin.

Podem definir diferents regles (pool number), i aquestes regles poden estar adreçades a tota la xarxa (aggregate), als individus o a una xarxa. Podem limitar l'ample de banda (bytes/sec), o el número de bytes descarregat.

Comprova el seu funcionament. Només cal que el teu company surti a Internet a través del teu proxy i que intenti descarregar un fitxer que superi el límit de descàrrega.

Per exemple, la regla que afegim per fer la prova és:

2. aggregate and individual
Individual limit (for classes 2 and 3):  10 Kb/sec, 1MB
Afegir el acl xarxa_35 per a aquest pool (allow)

Hi ha 3 classes a Squid 2.0:

Per especificar els paràmetres del delay pool:

delay_parameters id rate/size [ rate/size [rate/size]] 

Es defineixen tres rate/size:

NOTA: Les mides s'especifiquen en Bytes tant el rate com el size. Cal tenir en compte que les mides d'ample de banda són normalment en bps, bits per segon i per tant cal fer la conversió. 

Exemple de conversió:

Si tenim un valor de 76800, estem indicant els Bytes/s. Per passar a Kbps:

76800*8/1024=600Kbps

En una línia ADSL teòrica de 6Mbps, passant un test ADSL:

Download Speed: 2215 kbps (276.9 KB/sec transfer rate)
Upload Speed: 494 kbps (61.8 KB/sec transfer rate)

Utilitat diff

diff és una utilitat que fan servir els administradors de sistema i que et pot ser sovint últil.

NAME
       diff - compare files line by line

SYNOPSIS
       diff [OPTION]... FILES

DESCRIPTION
       Compare files line by line.

Si treballem directament amb el webmin, és interessant saber què toca el webmin en el fitxer de configuració. Per saber-ho fer una còpia del fitxer de configuració squid.conf, fem les modificacions, i apliquem diff per saber quines línies ha tocat el webmin del nostre fitxer de configuració.

$ sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.1
(apliquem els canvis)
$ sudo diff /etc/squid3/squid.conf /etc/squid3/squid.conf.1
3537c3537
< delay_pools 1
---
> delay_pools 0
3580d3579
< delay_access 1 allow xarxa_35
3605d3603
< delay_class 1 2
3638d3635
< delay_parameters 1 -1/-1 1250/1000000

S'ha de saber interpretar la sortida de diff'. Els números fan referència a la línia d'inserció o de supressió. En aquest cas amb el símbol < tenim les línies que s'han afegit:

Altres

Utilitzar un servidor Proxy per mirar iPlayer de la BBC:

Entrega

Recorda la normativa per entregar les pràctiques al Moodle: ASIX-M11-SAD#Normativa_d.27entrega_de_les_pr.C3.A0ctiques_al_Moodle.

Entregaràs al Moodle les captures de pantalla necessàries i suficients per demostrar la realització de la pràctica, així com el fitxer LLEGEIX-ME.txt amb les teves notes.



creat per Joan Quintana Compte, març 2012

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines