IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

L'Squid és segurament el servidor proxy i cache web open source més famós (GNU General Public License).

Suporta diferents protocols però s'utilitza principalment per HTTP i FTP. Té suport parcial per SSL i TLS.

S'utilitza principalment per emmagatzemar pàgines web en cache i millorar la connexió a Internet.

No proveeïx de sistemes de filtratge (es pot fer amb add-ons).

Se li poden incorporar Add-ons (SquidGuard,Calamaris, ufdbGuard).

Instal·lació

Utilitzem la següent sentència des d'un terminal per instal·lar el programari.

$ sudo apt-get install squid3
[sudo] password for joel: 
S'està llegint la llista de paquets... Fet 
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat... Fet
Els paquets següents s'han instal·lat automàticament i ja no són necessaris:
  php-fpdf libphp-snoopy libaccess-bridge-java-jni mimetex
  libaccess-bridge-java libphp-pclzip wwwconfig-common smarty libjs-mootools
  libphp-magpierss libjs-yui php5-mcrypt javascript-common dbconfig-common
Empreu «apt-get autoremove» per a suprimir-los.
S'instal·laran els següents paquets extres:
  squid-langpack squid3-common
Paquets suggerits:
  squidclient squid-cgi resolvconf
S'instal·laran els paquets NOUS següents:
  squid-langpack squid3 squid3-common
0 actualitzats, 3 nous a instal·lar, 0 a suprimir i 4 no actualitzats.
Es necessita obtenir 1766 kB d'arxius.
Després d'aquesta operació s'empraran 10,3 MB d'espai en disc addicional.
Voleu continuar [S/n]? s
AVÍS: No es poden autenticar els següents paquets!
  squid-langpack squid3-common squid3
Voleu instal·lar aquests paquets sense verificar-los [s/N]? s
Bai:1 http://es.archive.ubuntu.com/ubuntu/ natty/main squid-langpack all 20110214-1 [235 kB]
Bai:2 http://es.archive.ubuntu.com/ubuntu/ natty-updates/universe squid3-common all 3.1.11-1ubuntu0.1 [118 kB]
Bai:3 http://es.archive.ubuntu.com/ubuntu/ natty-updates/universe squid3 i386 3.1.11-1ubuntu0.1 [1413 kB]
1766 kB baixats en 0s (10,4 MB/s)
S'està seleccionant el paquet squid-langpack prèviament no seleccionat.
(S'està llegint la base de dades… hi ha 359109 fitxers i directoris instaŀlats actualment.)
S'està desempaquetant squid-langpack (de …/squid-langpack_20110214-1_all.deb)…
S'està seleccionant el paquet squid3-common prèviament no seleccionat.
S'està desempaquetant squid3-common (de …/squid3-common_3.1.11-1ubuntu0.1_all.deb)…
S'està seleccionant el paquet squid3 prèviament no seleccionat.
S'està desempaquetant squid3 (de …/squid3_3.1.11-1ubuntu0.1_i386.deb)…
S'estan processant els activadors per a man-db…
S'estan processant els activadors per a ureadahead…
ureadahead will be reprofiled on next reboot
S'estan processant els activadors per a ufw…
S'està configurant squid-langpack (20110214-1)…
S'està configurant squid3-common (3.1.11-1ubuntu0.1)…
S'està configurant squid3 (3.1.11-1ubuntu0.1)…
Creating Squid HTTP proxy 3.x spool directory structure
2013/01/08 18:14:27| Creating Swap Directories
 * Restarting Squid HTTP Proxy 3.x squid3                                        
 * Creating Squid HTTP Proxy 3.x cache structure
2013/01/08 18:14:30| Creating Swap Directories
                                                                        [ OK ]

Comprovem el port que utilitza:

$ nmap localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2013-01-08 18:17 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00062s latency).
Not shown: 991 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
23/tcp   open  telnet
80/tcp   open  http
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
631/tcp  open  ipp
3128/tcp open  squid-http
3306/tcp open  mysql
6000/tcp open  X11  

Nmap done: 1 IP address (1 host up) scanned in 0.14 seconds

Recompilació del paquet

$ cd /usr/src
$ sudo apt-get install dpkg-dev apache2 squid-langpack
$ sudo apt-get build-dep squid3 squid-langpack squid-cgi
$ sudo apt-get source squid3

Editem l'arxiu squid3-3.1.11/debian/rules i afegim les línies en negreta:

#! /usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk
include /usr/share/cdbs/1/rules/dpatch.mk

INSTALLDIR := $(CURDIR)/debian/tmp
datadir=/usr/share/squid3

DEB_DH_INSTALL_SOURCEDIR := $(INSTALLDIR)
DEB_INSTALL_DOCS_squid3-common := CONTRIBUTORS CREDITS QUICKSTART RELEASENOTES.
                                                SPONSORS

DEB_CONFIGURE_EXTRA_FLAGS := --datadir=/usr/share/squid3 \
                --sysconfdir=/etc/squid3 \
                --mandir=/usr/share/man \
                --with-cppunit-basedir=/usr \
                --enable-inline \
                --enable-async-io=8 \
                --enable-storeio="ufs,aufs,diskd" \   
                --enable-removal-policies="lru,heap" \
                --enable-delay-pools \  
                --enable-cache-digests \
                --enable-underscores \  
                --enable-icap-client \  
                --enable-follow-x-forwarded-for \
                --enable-auth="basic,digest,ntlm,negotiate" \
                --enable-basic-auth-helpers="LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,DB,
                --enable-ntlm-auth-helpers="smb_lm," \
                --enable-digest-auth-helpers="ldap,password" \
                --enable-negotiate-auth-helpers="squid_kerb_auth" \
                --enable-external-acl-helpers="ip_user,ldap_group,session,unix_
                --enable-arp-acl \
                --enable-esi \
                --enable-zph-qos \
                --enable-snmp \   
                --enable-useragent-log \
                --disable-translation \ 
                --with-logdir=/var/log/squid3 \
                --with-pidfile=/var/run/squid3.pid \
                --with-filedescriptors=65536 \
                --with-large-files \
                --with-default-user=proxy

Ara construim el paquet:

$ sudo apt-get -b source squid3

El procés crearà diferents paquets debian:

$ ls *deb
squid3_3.1.11-1ubuntu0.1_i386.deb        squid-cgi_3.1.11-1ubuntu0.1_i386.deb
squid3-common_3.1.11-1ubuntu0.1_all.deb  squidclient_3.1.11-1ubuntu0.1_i386.deb
squid3-dbg_3.1.11-1ubuntu0.1_i386.deb

Instal·lem el paquet nou:

$ sudo dpkg -i squid*.deb
(S'està llegint la base de dades… hi ha 362003 fitxers i directoris instaŀlats actualment.)
S'està preparant per a reemplaçar squid3 3.1.11-1ubuntu0.1 (fent servir squid3_3.1.11-1ubuntu0.1_i386.deb)…
S'està desempaquetant el reemplaçament de squid3…
S'està preparant per a reemplaçar squid3-common 3.1.11-1ubuntu0.1 (fent servir squid3-common_3.1.11-1ubuntu0.1_all.deb)…
S'està desempaquetant el reemplaçament de squid3-common…
S'està seleccionant el paquet squid3-dbg prèviament no seleccionat.
S'està desempaquetant squid3-dbg (de squid3-dbg_3.1.11-1ubuntu0.1_i386.deb)…
S'està seleccionant el paquet squid-cgi prèviament no seleccionat.
S'està desempaquetant squid-cgi (de squid-cgi_3.1.11-1ubuntu0.1_i386.deb)…
S'està seleccionant el paquet squidclient prèviament no seleccionat.
S'està desempaquetant squidclient (de squidclient_3.1.11-1ubuntu0.1_i386.deb)…
S'està configurant squid3-common (3.1.11-1ubuntu0.1)…
S'està configurant squid-cgi (3.1.11-1ubuntu0.1)…
S'està configurant squidclient (3.1.11-1ubuntu0.1)…
S'està configurant squid3 (3.1.11-1ubuntu0.1)…
S'està instaŀlant una versió nova del fitxer de configuració /etc/squid3/squid.conf…
Creating Squid HTTP proxy 3.x spool directory structure
2013/01/08 19:04:21| Squid is already running!  Process ID 7295
 * Restarting Squid HTTP Proxy 3.x squid3                                        
 * Waiting...                                                                       
 * ...                                                                           
 * ...                                                                           
 * ...                                                                           
 * ...                                                                           
 * ...                                                                           
 * ...                                                                   [ OK ] 
 * Creating Squid HTTP Proxy 3.x cache structure
2013/01/08 19:04:53| Creating Swap Directories
                                                                         [ OK ]
S'estan processant els activadors per a ureadahead…
S'estan processant els activadors per a ufw…
S'estan processant els activadors per a man-db…
S'està configurant squid3-dbg (3.1.11-1ubuntu0.1)…

Comprovem que el paquet que acabem d'instal·lar té activat useragent:

$ squid3 -v | grep agent
'--enable-esi' '--enable-zph-qos' '--enable-snmp'  '--enable-useragent-log'  '--disable-translation' '--with-logdir=/var/log/squid3'

A continuació marquem el paquet com a hold per que no s'actualitzin els paquets creant l'script hold_squid.sh. Afegim el següent:

#!/bin/bash
sudo aptitude hold squid3 squid-cgi squid3-cgi squid3-common squid3-dbg squidclient
sudo aptitude update
sudo aptitude safe-upgrade
sudo bash -c "echo squid3 hold | dpkg --set-selections"
sudo bash -c "echo squid3-cgi hold | dpkg --set-selections"
sudo bash -c "echo squid-cgi hold | dpkg --set-selections"
sudo bash -c "echo squid3-common hold | dpkg --set-selections"
sudo bash -c "echo squid3-dbg hold | dpkg --set-selections"
sudo bash -c "echo squidclient hold | dpkg --set-selections"
sudo apt-get update
sudo apt-get upgrade

Sqqquidddjoel.png

Donem permisos d'execució a l'script:

$ sudo chmod +x hold_squid.sh 

L'executem:

$ ./hold_squid.sh

Fitxer de configuració

El fitxer de configuració principal es troba a /etc/squid3/squid.conf.

Podem eliminar les línies de comentaris amb la comanda:

$ cat squid.conf | grep -v '^#\|^$\|^;'
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

Modificar el fitxer de configuració

Fem una còpia del fitxer original i esborrem els comentaris d'aquest:

$ cd /etc/squid3
$ sudo cp squid.conf squid.conf.copia
$ sudo bash -c "cat squid.conf | grep -i -v '^#\|^$\|^;' >  squid.conf.backup"
$ sudo cp squid.conf.backup squid.conf