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)

Squid Proxy

Web Proxy (Squid Cache)

  • Squid és 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 proveïx de sistemes de filtratge (és pot fer amb add-ons).
  • Se li poden incorporar Sdd-ons (SquirdGuard, Calamaris, ufdbGuard)

Web caching

  • "Cachear" és guardar pàgines web en una memòria d'un sistema més proper a l'usuari final.
    • 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 son 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.
  • Apache permet implementar aquesta funcionalitat amb un mòdul.

Avantatges e Inconvenients

Avantatges

  • Millorar velocitat.
  • Millor control de l'accés a recursos.
• Llistes ACL per controlar l'accés a Internet.
• Permet filtrar a nivell d'aplicació (urls, continguts, horaris d'accés, etc.)

Inconvenients

  • S'envaeix la privacitat dels clients del proxy (es registra molta informació personal).
  • La cache pot ser un greu problema per a pàgines dinàmiques.
  • Si s'utilitza directament és força laboriós i complicat de configurar

Instal·lació

Per tal d'instal·lar el programari utilitzarem la següent comanda amb el terminal:

$ sudo apt-get install squid3
[email protected]:~$ sudo apt-get install squid3
[sudo] password for rafel: 
S'està llegint la llista de paquets… Fet 0%
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat… Fet%
Els paquets següents s'han instaŀlat automàticament i ja no són necessaris:
  browser-plugin-gnash libmusicbrainz4-3 menu-xdg ekiga language-pack-zh-hans language-pack-kde-ca-base python-gnome2 gnuchess-book kde-l10n-ca gtali glchess
  libclutter-gst-1.0-0 gnome-video-effects gnome-games cheese gdebi language-pack-kde-ca quadrapassel language-pack-kde-en gnobots2 liferea-data cheese-common
  libboost-program-options1.46.1 lightsoff libcheese3 language-pack-kde-zh-hans python-pyorbit gdebi-core libclutter-gtk-1.0-0 language-pack-kde-en-base
  kde-l10n-engb gnibbles gedit-plugins libboost-thread1.46.1 libpt2.10.2 swell-foop gdm gnome-dictionary kde-l10n-zhcn gnotski gnome-backgrounds
  gnome-search-tool libboost-signals1.46.1 libcluttergesture-0.0.2-0 libunique-1.0-0 libgdict-common iagno glines gnome-icon-theme-extras gir1.2-gucharmap-2.90
  libboost-iostreams1.46.1 libmx-1.0-2 libopal3.10.2 fonts-cantarell liferea gnash gnotravex libcheese-gtk21 gnect language-pack-zh-hans-base libgdict-1.0-6
  python-wnck hamster-applet gnuchess gnash-common libclutter-imcontext-0.1-0 language-pack-kde-zh-hans-base dconf-tools sound-juicer
Empreu «apt-get autoremove» per a suprimir-los.
S'instaŀlaran els següents paquets extres:
  squid-langpack squid3-common
Paquets suggerits:
  squidclient squid-cgi
S'instaŀlaran els paquets NOUS següents:
  squid-langpack squid3 squid3-common
0 actualitzats, 3 nous a instaŀlar, 0 a suprimir i 0 no actualitzats.
S'ha d'obtenir 1952 kB d'arxius.
Després d'aquesta operació s'empraran 6481 kB d'espai en disc addicional.
Voleu continuar [S/n]? s
Bai:1 http://es.archive.ubuntu.com/ubuntu/ precise/main squid-langpack all 20111114-1 [307 kB]
Bai:2 http://es.archive.ubuntu.com/ubuntu/ precise-updates/main squid3-common all 3.1.19-1ubuntu3.12.04.1 [122 kB]
Bai:3 http://es.archive.ubuntu.com/ubuntu/ precise-updates/main squid3 i386 3.1.19-1ubuntu3.12.04.1 [1523 kB]
S'ha baixat 1952 kB en 0s (11,6 MB/s)
Selecting previously unselected package squid-langpack.
(S'està llegint la base de dades… hi ha 351607 fitxers i directoris instaŀlats actualment.)
S'està desempaquetant squid-langpack (de …/squid-langpack_20111114-1_all.deb)…
Selecting previously unselected package squid3-common.
S'està desempaquetant squid3-common (de …/squid3-common_3.1.19-1ubuntu3.12.04.1_all.deb)…
Selecting previously unselected package squid3.
S'està desempaquetant squid3 (de …/squid3_3.1.19-1ubuntu3.12.04.1_i386.deb)…
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 squid-langpack (20111114-1)…
S'està configurant squid3-common (3.1.19-1ubuntu3.12.04.1)…
S'està configurant squid3 (3.1.19-1ubuntu3.12.04.1)…
Creating Squid HTTP proxy 3.x spool directory structure
2013/01/08 20:41:43| Creating Swap Directories
squid3 start/running, process 9108

Esbrinem el port que utilitza amb la següent comanda:

$ nmap localhost
[email protected]:~$ nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2013-01-08 20:48 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00039s latency).
Not shown: 993 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
23/tcp   open  telnet
80/tcp   open  http
631/tcp  open  ipp
3128/tcp open  squid-http
3306/tcp open  mysql
5432/tcp open  postgresql

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

Recompilació del Paquet

Una vegada instal·lat el programari recompilem el 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

Una vegada recompilat el paquet squid, editarem l'arxiu squid3-3.1.19/debian/rules i afegirem les següents línies (en negreta).

[email protected]:/usr/src/squid3-3.1.19/debian$ gedit rules.
#! /usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk
include /usr/share/dpkg/buildflags.mk
 
INSTALLDIR := $(CURDIR)/debian/tmp
datadir=/usr/share/squid3 

DEB_DH_INSTALL_SOURCEDIR := $(INSTALLDIR)
DEB_INSTALL_DOCS_squid3-common := CONTRIBUTORS CREDITS QUICKSTART RELEASENOTES.html \
						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,POP3,getpwnam,squid_radius_auth,multi-domain-NTLM" \
		--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_group,wbinfo_group" \
		--enable-arp-acl \
		--enable-esi \
		--enable-zph-qos \
		--enable-snmp \
		--enable-useragent-log \
		--enable-wccpv2 \
		--disable-translation \
		--with-logdir=/var/log/squid3 \
		--with-pidfile=/var/run/squid3.pid \
		--with-filedescriptors=65536 \
		--with-large-files \
		--with-default-user=proxy

DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null)
 
ifeq ($(DEB_HOST_ARCH_OS), kfreebsd)
		DEB_CONFIGURE_EXTRA_FLAGS += --enable-kqueue
else
		DEB_CONFIGURE_EXTRA_FLAGS += --enable-linux-netfilter
endif

DEB_MAKE_CLEAN_TARGET = distclean


install/squid3::
	install -m 755 -g root -d $(INSTALLDIR)/usr/lib/cgi-bin
	mv $(INSTALLDIR)/etc/squid3/squid.conf.documented $(INSTALLDIR)/etc/squid3/squid.conf
	mv $(INSTALLDIR)/usr/lib/squid3/cachemgr.cgi $(INSTALLDIR)/usr/lib/cgi-bin/cachemgr.cgi
	mv $(INSTALLDIR)/usr/sbin/squid $(INSTALLDIR)/usr/sbin/squid3
	mv $(INSTALLDIR)/usr/share/man/man8/squid.8 $(INSTALLDIR)/usr/share/man/man8/squid3.8
	mv $(INSTALLDIR)/usr/share/man/man8/pam_auth.8 $(INSTALLDIR)/usr/share/man/man8/squid3_pam_auth.8
	mv $(INSTALLDIR)/usr/share/man/man8/squid_ldap_auth.8 $(INSTALLDIR)/usr/share/man/man8/squid3_ldap_auth.8
	mv $(INSTALLDIR)/usr/share/man/man8/squid_ldap_group.8 $(INSTALLDIR)/usr/share/man/man8/squid3_ldap_group.8
	mv $(INSTALLDIR)/usr/share/man/man8/squid_session.8 $(INSTALLDIR)/usr/share/man/man8/squid3_session.8
	mv $(INSTALLDIR)/usr/share/man/man8/squid_unix_group.8 $(INSTALLDIR)/usr/share/man/man8/squid3_unix_group.8
	mv $(INSTALLDIR)/usr/share/man/man8/ncsa_auth.8 $(INSTALLDIR)/usr/share/man/man8/squid3_ncsa_auth.8
	mv $(INSTALLDIR)/usr/share/man/man8/squid_db_auth.8 $(INSTALLDIR)/usr/share/man/man8/squid3_db_auth.8
	mv $(INSTALLDIR)/usr/share/man/man8/squid_radius_auth.8 $(INSTALLDIR)/usr/share/man/man8/squid3_radius_auth.8
	install -m 755 -g root -d $(INSTALLDIR)/etc/init.d
	install -m 755 -g root -d $(INSTALLDIR)/etc/init
	install -m 755 -g root -d $(INSTALLDIR)/etc/logrotate.d
	install -m 755 -g root -d $(INSTALLDIR)/etc/resolvconf
	install -m 755 -g root -d $(INSTALLDIR)/etc/resolvconf/update-libc.d
	install -m 755 -g root -d $(INSTALLDIR)/etc/ufw/applications.d
	install -m 755 -g root debian/squid3.rc $(INSTALLDIR)/etc/init.d/squid3
	install -m 644 -g root debian/squid3.upstart $(INSTALLDIR)/etc/init/squid3.conf
	install -m 755 -g root debian/squid3.resolvconf $(INSTALLDIR)/etc/resolvconf/update-libc.d/squid3
	install -m 644 -g root debian/squid3.logrotate $(INSTALLDIR)/etc/logrotate.d/squid3
	install -m 644 -g root debian/squid3.ufw.profile $(INSTALLDIR)/etc/ufw/applications.d/squid3
	install -m 755 -g root -d debian/squid3/var/log
	install -m 755 -g root -d debian/squid3/var/spool
	install -m 755 -g root -d debian/squid3/var/run
	install -m 750 -o proxy -g proxy -d debian/squid3/var/log/squid3
	install -m 750 -o proxy -g proxy -d debian/squid3/var/spool/squid3
   	install -m 755 -g root -d $(INSTALLDIR)/usr/share/man/man1
  
 clean::
	# nothing to do


Construïm el paquet: (triga una estona..)

$ sudo apt-get -b source squid3

El procés crearà diferents paquets debian. Per veure de quins paquets és tracta:

$ ls *deb -->Mostra tots els paquets debian
[email protected]:/usr/src/squid3-3.1.19/debian$ ls *deb
squid_3.1.19-1ubuntu3.12.04.1_i386.deb         squid3-dbg_3.1.19-1ubuntu3.12.04.1_i386.deb   squid-common_3.1.19-1ubuntu3.12.04.1_all.deb
squid3_3.1.19-1ubuntu3.12.04.1_i386.deb        squid-cgi_3.1.19-1ubuntu3.12.04.1_i386.deb
squid3-common_3.1.19-1ubuntu3.12.04.1_all.deb  squidclient_3.1.19-1ubuntu3.12.04.1_i386.deb

Instal·lem tots els paquets creats anteriorment:

$ sudo dpkg -i squid*.deb
[email protected]:/usr/src/squid3-3.1.19/debian$ sudo dpkg -i squid*.deb
Selecting previously unselected package squid.
(S'està llegint la base de dades… hi ha 356226 fitxers i directoris instaŀlats actualment.)
S'està desempaquetant squid (de squid_3.1.19-1ubuntu3.12.04.1_i386.deb)…
S'està preparant per a reemplaçar squid3 3.1.19-1ubuntu3.12.04.1 (fent servir squid3_3.1.19-1ubuntu3.12.04.1_i386.deb)…
squid3 stop/waiting
S'està desempaquetant el reemplaçament de squid3…
S'està preparant per a reemplaçar squid3-common 3.1.19-1ubuntu3.12.04.1 (fent servir squid3-common_3.1.19-1ubuntu3.12.04.1_all.deb)…
S'està desempaquetant el reemplaçament de squid3-common…
Selecting previously unselected package squid3-dbg.
S'està desempaquetant squid3-dbg (de squid3-dbg_3.1.19-1ubuntu3.12.04.1_i386.deb)…
Selecting previously unselected package squid-cgi.
S'està desempaquetant squid-cgi (de squid-cgi_3.1.19-1ubuntu3.12.04.1_i386.deb)…
Selecting previously unselected package squidclient.
S'està desempaquetant squidclient (de squidclient_3.1.19-1ubuntu3.12.04.1_i386.deb)…
Selecting previously unselected package squid-common.
S'està desempaquetant squid-common (de squid-common_3.1.19-1ubuntu3.12.04.1_all.deb)…
S'està configurant squid3-common (3.1.19-1ubuntu3.12.04.1)…
S'està configurant squid-cgi (3.1.19-1ubuntu3.12.04.1)…
S'està configurant squidclient (3.1.19-1ubuntu3.12.04.1)…
S'està configurant squid-common (3.1.19-1ubuntu3.12.04.1)…
S'està configurant squid3 (3.1.19-1ubuntu3.12.04.1)…
Creating Squid HTTP proxy 3.x spool directory structure
2013/01/08 21:43:50| Creating Swap Directories
squid3 start/running, process 15564
S'estan processant els activadors per a ufw…
S'estan processant els activadors per a ureadahead…
S'estan processant els activadors per a man-db…
S'està configurant squid3-dbg (3.1.19-1ubuntu3.12.04.1)…
S'està configurant squid (3.1.19-1ubuntu3.12.04.1)…


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

$ squid3 -v | grep agent