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)

Squidguard és un redirector d'SQuid que permet filtrar pàgines web segons certs criteris predefinits (per exemple segons la URL o segons el contingut de la pàgina)

Redirectors

Formats d'entrada dels redirectors d'Squid

Squidguard com qualsevol altre redirector d'Squid segueix el següent format d'entrada:

 URL IP_CLIENT - [HTTP]]_METHOD

Per exemple:

http://foo.com/ 127.0.0.1 - GET

Si retorna una línia en blanc és que no s'aplica cap filtratge amb aquestes condicions. En canvi si hi ha restriccions:

http://www.facebook.com/ 10.10.10.10 - GET
2010-09-08 06:18:38 [6508] Request(default/custom-blocked/-) http://www.facebook.com/ 10.10.10.10/- - GET
302:http://www.iesebre.com/normes/normesUsAules.html 10.10.10.10/- - GET

Està blocat per les normes custom-blocked i s'envia una redirecció a les normes del centre.


Instal·lació

$ sudo apt-get install squidguard

Fitxers instal·lats

Els fitxers instal·lats són:

$ dpkg -L squidguard
 /.
/etc
/etc/logrotate.d
/etc/logrotate.d/squidguard
/etc/squid
/etc/squid/squidGuard.conf
/var
/var/log
/var/log/squid
/var/lib
/var/lib/squidguard
/var/lib/squidguard/squidGuardRobot
/var/lib/squidguard/db
/usr
/usr/share
/usr/share/doc
/usr/share/doc/squidguard
/usr/share/doc/squidguard/README.LDAP.gz
/usr/share/doc/squidguard/examples
/usr/share/doc/squidguard/examples/squidGuard-simple.cgi.gz
/usr/share/doc/squidguard/examples/squidGuard-simple-de.cgi.gz
/usr/share/doc/squidguard/examples/squidGuardRobot.gz
/usr/share/doc/squidguard/examples/sample.conf 
/usr/share/doc/squidguard/examples/squidGuardRobot.in.gz
/usr/share/doc/squidguard/examples/squidGuard.cgi.gz
/usr/share/doc/squidguard/examples/RobotUserAgent.pm
/usr/share/doc/squidguard/copyright
/usr/share/doc/squidguard/NEWS.Debian.gz
/usr/share/doc/squidguard/ANNOUNCE.gz
/usr/share/doc/squidguard/CONFIGURATION.gz
/usr/share/doc/squidguard/README
/usr/share/doc/squidguard/changelog.Debian.gz
/usr/share/doc/squidguard/README.Debian
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/update-squidguard.1.gz
/usr/share/man/man1/hostbyname.1.gz
/usr/share/man/man1/sgclean.1.gz
/usr/share/man/man1/squidGuard.1.gz
/usr/sbin
/usr/sbin/update-squidguard
/usr/bin
/usr/bin/sgclean
/usr/bin/squidGuard
/usr/bin/hostbyname

Comandes

/usr/sbin/update-squidguard

Permet actualitzar els fitxers binaris

$ sudo update-squidguard
Double checking directory and file permissions...done!
Re-building SquidGuard db files...done!

Vegeu també:

 Inicialitzar les llistes de control d'accés. Compilació

Segons el manual:

$ man update-squidguard
update-squidguard(1)                                                                                                                                                               update-squidguard(1)

NAME
      update-squidguard - Squidguard Update script.

DESCRIPTION
      This  script  performs  a database rebuild for any blacklists listed in the default Squidguard config file.  (/etc/squid/squidGuard.conf) After rebuilding the databases it will reload Squid so
      that it will make use of the updated lists.

SEE ALSO
      squidGuard(1), squid(1),

Debian/GNU Linux

/usr/bin/sgclean

/usr/bin/squidGuard

Aquest és l'executable principal, és l'aplicació que fa de redirector d'Squid i redirecciona si s'escau les URL demanades pels clients d'Squid.

Tot i que també es pot executar directament com una aplicació sola, se sol executar des de Squid. Consulteu:

 Activació d'SquidGuard a Squid

Com podeu veure normalment s'executen múltiples instàncies a l'hora de l'aplicació per tal de poder donar servei a múltiples clients simultanis:

$ ps aux | grep squidGuard
sergi    11996  0.0  0.0   7632   936 pts/0    S+   06:26   0:00 grep --color=auto squidGuard
proxy    21056  0.0  0.7  44940 36556 ?        S    Aug20   0:01 (squidGuard) -c /etc/squid/squidGuard.conf
proxy    21060  0.0  0.6  44012 35416 ?        S    Aug20   0:00 (squidGuard) -c /etc/squid/squidGuard.conf
proxy    21061  0.0  0.6  44012 35416 ?        S    Aug20   0:00 (squidGuard) -c /etc/squid/squidGuard.conf
proxy    21062  0.0  0.6  44012 35412 ?        S    Aug20   0:00 (squidGuard) -c /etc/squid/squidGuard.conf
proxy    21064  0.0  0.6  44012 35416 ?        S    Aug20   0:00 (squidGuard) -c /etc/squid/squidGuard.conf
proxy    21065  0.0  0.6  44008 35412 ?        S    Aug20   0:00 (squidGuard) -c /etc/squid/squidGuard.conf
proxy    21067  0.0  0.6  44016 35420 ?        S    Aug20   0:00 (squidGuard) -c /etc/squid/squidGuard.conf
...

Per a provar el redirector sense afectar a un squid en execució es pot executar manualment. Vegeu l'apartat:

Executar manualment squidGuard per comprovar el funcionament

I també llegiu:

 Formats d'entrada dels redirectors Squid

Per tal de saber quin és el format d'entrada.

Executar manualment squidGuard per comprovar el funcionament

Abans d'executar Squid podeu provar manual squidGuard:

$ sudo update-squidguard
$ sudo su proxy
# /usr/bin/squidGuard -c /etc/squid/squidGuard.conf -d

NOTA: Si no poseu el paràmetre -d, en molts sistemes no us mostrarà cap mena d'informació

Cada cop que canvieu les llistes negres o blanques, cal que executeu el compilador per tal de crear els fitxers binaris (extensió .db) a partir dels fitxers de text. Això és així per tal que Squid funcioni més ràpidament (és més ràpid treballar amb fitxers binaris que amb fitxers de text, consulteu Squidguard#Inicialitzar_les_llistes):

$ squidGuard -C all -d

El programa s'ha de quedar en execució (si no és així aleshores teniu algun error encara que no us digui res). Els errors els podreu consultar al fitxer de log:

$ sudo tail -f /var/log/squid/squidGuard.log
2010-09-08 06:10:09 [6483] syntax error in configfile /etc/squid/squidGuard.conf line 17

NOTA: Si squidguard no pot escriure al fitxer de log aleshores els errors apareixeran per la sortida estàndard. També podeu utilitzar l'opció -d per tal que els errors apareguin directament per la sortida estàndard:

Vegem un exemple d'error:

$ sudo su proxy
# /usr/bin/squidGuard -c /etc/squid/squidGuard.conf -d     
2010-09-08 06:12:27 [6505] syntax error in configfile /etc/squid/squidGuard.conf line 17

Com podeu veure si teniu un error us donarà la línia on hi ha l'error. Si tot funciona correctament ha d'aparèixer ja sigui al fitxer de log o per la sortida estàndard el següent:

# /usr/bin/squidGuard -c /etc/squid/squidGuard.conf -d     
2010-09-08 06:14:37 [6507] init domainlist /var/ipcop/urlfilter/blacklists/ads/domains
2010-09-08 06:14:37 [6507] loading dbfile /var/ipcop/urlfilter/blacklists/ads/domains.db
2010-09-08 06:14:37 [6507] init urllist /var/ipcop/urlfilter/blacklists/ads/urls
2010-09-08 06:14:37 [6507] loading dbfile /var/ipcop/urlfilter/blacklists/ads/urls.db
..
2010-09-08 06:14:38 [6507] squidGuard ready for requests (1283919278.001)

Per comprovar les normes, el format d'entrada és:

URL IP_CLIENT - [HTTP]]_METHOD

Per exemple:

http://foo.com/ 127.0.0.1 - GET

Retorna una línia en blanc per què no hi ha cap filtratge amb aquestes condicions. En canvi:

http://www.facebook.com/ 10.10.10.10 - GET
2010-09-08 06:18:38 [6508] Request(default/custom-blocked/-) http://www.facebook.com/ 10.10.10.10/- - GET
302:http://www.iesebre.com/normes/normesUsAules.html 10.10.10.10/- - GET

Està blocat per les normes custom-blocked a la acl default i s'envia una redirecció a les normes del centre.

/usr/bin/hostbyname

És un executable que permet obtenir a partir del nom de màquina la seva IP:

$ /usr/bin/hostbyname
www.google.com
www.google.com
74.125.230.243
74.125.230.244
74.125.230.240
74.125.230.241
74.125.230.242

Inicialitzar les llistes. Compilació

SquidGuard per tal de tenir un rendiment més eficient, converteix les llistes blanques o negres de URLs a un format binari.

Per convertir/actualitzar els fitxers binaris a partir de les modificacions realitzades als fitxers de text executeu:

$ sudo update-squidguard
Double checking directory and file permissions...done!
Re-building SquidGuard db files...done!

O també podeu utilitzar per tal de convertir-les de fitxers de txt a fitxers db:

$ sudo su proxy
# squidGuard -C all -d
# squidGuard -u

NOTA: És fa el su per tal d'assegurar que els fitxers es crearan com a fitxers propietat de l'usuari proxy. L'opció -d es per tal que us mostri com va la "compilació"

Tant els fitxers de text com els fitxers binaris se solen guardar a:

/var/lib/squidguard/db

Tot i que es pot configurar el path al fitxers de configuració squidguard.conf.

Els fitxers tenen l'extensió *.db i es en format binari Berkeley DB:

# file /var/lib/squidguard/db/porn/domains.db 
/var/lib/squidguard/db/porn/domains.db: Berkeley DB (Btree, version 9, native byte-order)

Observeu que l'estructura de dades és un arbre B.

Configuració

Fitxers de configuració. /etc/squid/squidGuard.conf

El fitxer:

/etc/squid/squidGuard.conf

és el fitxer principal de configuració d'squidGuard.

El fitxer original a Ubuntu 9.10:

$ cat /etc/squid/squidGuard.conf 
#
# CONFIG FILE FOR SQUIDGUARD
#

dbhome /var/lib/squidguard/db
logdir /var/log/squid

#
# TIME RULES:
# abbrev for weekdays: 
# s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat 

time workhours {  
	weekly mtwhf 08:00 - 16:30
	date *-*-01  08:00 - 16:30
}

#
# REWRITE RULES:
#  

#rew dmz {
#	s@://admin/@://admin.foo.bar.no/@i
#	s@://foo.bar.no/@://www.foo.bar.no/@i
#}

#
# SOURCE ADDRESSES:
#

#src admin {
#	ip		1.2.3.4 1.2.3.5
#	user		root foo bar
#	within 		workhours
#}

#src foo-clients {
#	ip		172.16.2.32-172.16.2.100 172.16.2.100 172.16.2.200
#}

#src bar-clients {
#	ip		172.16.4.0/26
#}

#
# DESTINATION CLASSES:
#

dest good {
}

dest local {
} 
 
#dest adult {
#	domainlist	adult/domains
#	urllist		adult/urls
#	expressionlist	adult/expressions
#	redirect 	http://admin.foo.bar.no/cgi-bin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u
#}
 

acl {
#	admin {
#		pass	 any
#	}

#	foo-clients within workhours {
#		pass	 good !in-addr !adult any
#	} else {
# 		pass any
#	} 

#	bar-clients {
#		pass	local none
#	}

	default {
		pass	 local none
#		rewrite	 dmz
#		redirect http://admin.foo.bar.no/cgi-bin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u 
	}
}

Per consultar la configuració sense comentaris:

$ cat /etc/squid/squidGuard.conf | grep -v '^#\|^$\|^;'
dbhome /var/lib/squidguard/db
logdir /var/log/squid
time workhours {
	weekly mtwhf 08:00 - 16:30
	date *-*-01  08:00 - 16:30
}
dest good {
}
dest local {
}
acl {
	default {
		pass	 local none
	}
}

On:

dbhome /var/lib/squidguard/db
logdir /var/log/squid
  • dbhome: és la carpeta on es trobaran les llistes negres (blacklist) i les llistes blanques (whitelist). Tots els camins a fitxers epecificats són relatius a aquesta carpeta.
  • logdir: on es guarden els fitxers de log

El blog més important és acl. L'exemple per defecte no és gaire representatiu, imagineu una configuració com la següent:

#
# CONFIG FILE FOR SQUIDGUARD
# 

dbhome /usr/local/squidGuard/db
logdir /usr/local/squidGuard/logs 

dest porn {
        domainlist porn/domains
        urllist porn/urls
        }  

acl {
        default {
                pass !porn all
                redirect http://localhost/block.html
        }
}

Al bloc acl només hi ha default i on:

pass !porn all

Impedeix la destinació porn i deixa passar tota la resta. després és obligatori especificar una URL amb la pàgina que es mostrarà al intentar accedir a una pàgina bloquejada:

                 redirect http://localhost/block.html

Les llistes (siguin negres o blanques) es defineixen amb dest:

 dest porn {
        domainlist porn/domains
        urllist porn/urls
        }  

L'únic que la fa blanca o negra és si la posem amb ! o sense ! a la directiva pass. Les dest poden tenir:

  • domainlist: Llistes de dominis, és a dir noms de màquina o adreces IP, no es poden posar URL (no és vid http://www.porn.com ni www.porn.com/anal)
  • urllist: Aquí es posen URLs. No cal posar el http://
  • expressionlist: Es poden utilitzar expressions regulars per prohibir pàgines amb certs textos.

Activació d'SquidGuard. Configuració d'Squid

Al fitxer de configuració d'Squid (/etc/squid3/squid.conf):

redirect_program 

És recomanable però a més posar

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 8
redirector_bypass on

On el número de processos potser s'ha d'augmentar si teniu molts clients i l'opció:

redirector_bypass on

És per evitar que Squid deixi de funcionar si pel que sigui SquidGuard falla.

Un altre paràmetre important és:

redirector_access

Cal tenir en compte que totes les peticions sense excepció que arribin a Squid s'enviaran al redirector. Amb redirector acces podeu indicar quines peticions s'enviaran o no s'enviaran al redirector.

Imagineu per exemple que no voleu enviar al redirector les peticions que provinguin de cert user-agent, com per exemple, un antivirus.

#Avira
acl avira browser AntiVir-NGUpd
redirector_access deny avira

Com el user agent d'Avira inclou la cadena de caràcters "AntiVir-NGUpd", les peticions que provinguin d'aquest antivirus no passaran per SquidGuard.

Vegeu també

Avira

Exemples de configuració

Configuració pas a pas

Aneu a la carpeta on hi ha el fitxer de configuració original i feu una còpia:

$ cd /etc/squid
$ sudo cp squidGuard.conf squidGuard.conf.orig

Editeu el fitxer, borreu-lo tot (amb joe podeu borrar línies amb Ctrl-y) i afegiu:

$ sudo joe squidGuard.conf

dbhome /var/lib/squidguard/db
logdir /var/log/squid
dest porn {
        domainlist porn/domains
        urllist porn/urls
        }  
acl {
        default {
                pass !porn all
                redirect http://localhost/block.html
        }
}

Si no teniu encara instal·leu una Apache amb LAMP:

$ sudo tasksel

Escolliu LAMP

A la carpeta /var/www creeu el fitxer block.html:

$ cd /var/www
$ sudo joe block.html

Poseu un codi HTML qualsevol, de fet per simplificació podeu posar el text:

Pàgina prohibida

Ara cal crear els fitxers:

porn/domains
porn/urls

Aneu a /var/lib/squidguard/db:

$ sudo -i
# cd /var/lib/squidguard/db
# mkdir porn
# joe domains

Afegiu:

spankwire.com    
sex.com    
$ joe urls

Afegiu

www.sexofree.org/fotoscaseras/

Per a llistes grans cal optimitzar convertint les llistes de text en fitxers binaris:

# squidGuard -C all -d
# squidGuard -u

NOTA: Si el fitxer de configuració no està al lloc habitual cal indicar-lo amb -c PATH

Ara a la carpeta /var/lib/squidguard/db/porn:

# ls /var/lib/squidguard/db/porn
domains  domains.db  urls  urls~  urls.db

Hi ha els fitxers *.db en format binari (Berkeley DB):

#  file /var/lib/squidguard/db/porn/domains.db 
/var/lib/squidguard/db/porn/domains.db: Berkeley DB (Btree, version 9, native byte-order)

Sortiu de sudo -i

$ exit

Configureu Squid per tal d'utilitzar squidguard. Afegiu a squid.conf:

$ sudo joe /etc/squid3/squid.conf

Afegiu:

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

Ara cal repassar tots els permisos. A Ubuntu l'usuari és proxy:

$ sudo chown proxy:proxy /etc/squid/squidGuard.conf
$ sudo chown -R proxy:proxy /var/lib/squidguard/db
$ sudo chown -R proxy:proxy /var/log/squid/

Abans d'executar Squid podeu provar manual squidGuard:

$ sudo su proxy
$ /usr/bin/squidGuard -c /etc/squid/squidGuard.conf -d

NOTA: Si no poseu el paràmetre -d, en mols sistemes no us mostrarà cap mena d'informació

Cada cop que canvieu les llistes negres o blanques, cal que executeu el compilador per tal de crear els fitxers binaris (extensió .db) a partir dels fitxers de text. Això és així per tal que Squid funcioni més ràpidament (és més ràpid treballar amb fitxers binaris que amb fitxers de text, consulteu Squidguard#Inicialitzar_les_llistes):

$ squidGuard -C all -d

El programa s'ha de quedar en execució (si no és així aleshores teniu algun error encara que no us digui res). Els errors els podreu consultar al fitxer de log:

$ tail -f /var/log/squid/squidGuard.log
2010-09-08 06:10:09 [6483] syntax error in configfile /etc/squid/squidGuard.conf line 17

NOTA: Si squidguard no pot escriure al fitxer de log aleshores els errors apareixeran per la sortida estàndard. També podeu utilitzar l'opció -d per tal que els errors apareguin directament per la sortida estàndard:

Vegem un exemple d'error:

$ sudo su proxy
# /usr/bin/squidGuard -c /etc/squid/squidGuard.conf -d     
2010-09-08 06:12:27 [6505] syntax error in configfile /etc/squid/squidGuard.conf line 17

Com podeu veure si teniu un error us donarà la línia on hi ha l'error. Si tot funciona correctament ha d'aparèixer ja sigui al fitxer de log o per la sortida estàndard el següent:

# /usr/bin/squidGuard -c /etc/squid/squidGuard.conf -d     
2010-09-08 06:14:37 [6507] init domainlist /var/ipcop/urlfilter/blacklists/ads/domains
2010-09-08 06:14:37 [6507] loading dbfile /var/ipcop/urlfilter/blacklists/ads/domains.db
2010-09-08 06:14:37 [6507] init urllist /var/ipcop/urlfilter/blacklists/ads/urls
2010-09-08 06:14:37 [6507] loading dbfile /var/ipcop/urlfilter/blacklists/ads/urls.db
..
2010-09-08 06:14:38 [6507] squidGuard ready for requests (1283919278.001)

Per comprovar les normes, el format d'entrada és:

URL IP_CLIENT - [HTTP]]_METHOD

Per exemple:

http://foo.com/ 127.0.0.1 - GET

Retorna una línia en blanc per què no hi ha cap filtratge amb aquestes condicions. En canvi:

http://www.facebook.com/ 10.10.10.10 - GET
2010-09-08 06:18:38 [6508] Request(default/custom-blocked/-) http://www.facebook.com/ 10.10.10.10/- - GET
302:http://www.iesebre.com/normes/normesUsAules.html 10.10.10.10/- - GET

Està blocat per les normes custom-blocked a la acl default i s'envia una redirecció a les normes del centre.

Per acabar, apliqueu els canvis a Squid, tornant a carregar-lo:

$ sudo /etc/init.d/squid3 reload

Configuració pas a pas 2

Vegeu:

Configuració per a un Institut

El primer que cal fer es instal·lar squidGuard:

$ sudo apt-get install squidguard

Per configurar la base de dades de pàgines permeses, comencem amb una base de dades preconfigurada, als següents passos ens baixem la base de dades, i la instal·lem amb els permisos adequats a les carpetes on espera tenir les base s de dades per defecte squidGuard:

$ cd && mkdir squidguard && cd squidguard
$ wget http://acacha.org/~sergi/Squid/squidguard/blacklists.tar.gz
$ tar xvzf blacklists.tar.gz 
$ cd blacklists
$ sudo mv * /var/lib/squidguard/db
$ sudo chown -R proxy:proxy /var/lib/squidguard/db

Ara preparem el fitxer de log /var/log/squid/squidguard.log (no us preocupeu si falla alguna comanda):

$ sudo mkdir /var/log/squid
$ sudo touch /var/log/squid/squidguard.log
$ sudo touch /var/log/squid/urlfilter.log
$ sudo chown -R proxy:proxy /var/log/squid/squidguard.log
$ sudo chown -R proxy:proxy /var/log/squid/urlfilter.log

Ara anem a configurar squidGuard:

$ cd /etc/squid
$ sudo cp squidGuard.conf squidGuard.conf.original

Ara obtenir una plantilla:

$ sudo wget -N http://acacha.org/~sergi/Squid/squidguard/squidGuard1.conf
$ sudo cp squidGuard1.conf squidGuard.conf

Adapteu la plantilla:

  • Cal adaptar la llista acl unfiltered per posar les IPS que no es filtraran mai (per exemple la del director ;-))
  • Cal definir les Aules del centre si voleu poder obrir temporalment el proxy per a una aula concreta. Per això cal saber les adreces IP de totes les màquines de l'aula
  • Cal aconseguir la imatge 1x1.gif i instal·lar-la al servidor web
  • Canvieu la URL de les pàgines blocades. Consulteu OpenFPnet/Mosaic/Formació/Execució/Servidor_web._www#P.C3.A0gina_de_normes_del_centre
  • Podeu bloquejar més o menys pàgines web segons la categoria posant o treient el signe a la secció default del final del fitxer!

Ara proveu el funcionament d'squidGuard seguint els passos de:

SquidGuard#Executar_manualment_squidGuard_per_comprovar_el_funcionament

Un cop el redirector funcioni el que cal fer es modificar la configuració d'Squid:

$ sudo joe /etc/squid3/squid.conf

Afegiu les línies:

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 50

o:

...
#Avira
acl avira browser AntiVir-NGUpd
...
redirector_access deny avira
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 50

NOTA: El segons cas defineix un exemple d'user-agent, és a dir un "navegador" (a l'exemple l'ativirus Avira) al qual no se li aplica squidGuard

IMPORTANT: Comproveu que 50 redirectors no us consumeixen tota la RAM amb l'ordre top. Si us consumeix tota la RAM poseu menys redirectors o instal·leu més RAM

Un exemple amb més backlists

dest adv {
        domainlist      adv/domains
        urllist         adv/urls
}
dest porn {
        domainlist      porn/domains
        urllist         porn/urls
}
dest warez {
        domainlist      warez/domains
        urllist         warez/urls
}

acl {
       default {
               pass    !adv !porn !warez all
               redirect http://localhost/block.html
               }
}

Exemple de whitelist

dest white {
        domainlist      white/domains
        urllist         white/urls
} 

acl {
        default {
                pass    white !adv !porn !warez all
                redirect http://localhost/block.html
                }
}

No permetre adreces IP

acl {
       default {
               pass !in-addr all
               redirect http://localhost/block.html
       }
}

Bloquejar només a hores específiques

time afterwork {
  weekly   * 17:00-24:00            # After work
  weekly   fridays 16:00-17:00      # On friday we close earlier
  date   *.01.01                    # New Year's Day
  date   *.12.24 12:00-24:00        # Christmas Eve
  date   2006.04.14-2006.04.17      # Easter 2006
  date   2006.05.01                 # Maifeiertag
}

acl {
       all within afterwork {
               pass all
       }
       else {
               pass    !adv !porn !warez all
       }
       default {
               pass    none
               redirect http://localhost/block.html
               }
}

Indicar algunes IP d'origen sense bloquejos

src admins {
        ip      192.168.2.0-192.168.2.255
       ip      172.16.12.0/255.255.255.0
       ip      10.5.3.1/28
}

o

src admins {
        iplist      adminlist
}

I el fitxer adminlist:

192.168.2.0-192.168.2.255
172.16.12.0/255.255.255.0
10.5.3.1/28

Mostrar pel fitxer de log els accessos no permesos

dest porn {
       domainlist porn/domains
       urllist porn/urls
       log pornaccesses
}

Configuració a l'INS de l'Ebre

# cat /etc/squid/squidGuard.conf
logdir /var/log/squidGuard
dbhome /var/lib/squidGuard/db
dest dolentes {
  domainlist dolentes/domains
  expressionlist dolentes/expressions
  urllist dolentes/urls
}
dest bones {
  domainlist bones/domains
}
acl {
  default {
    pass bones !dolentes all
    redirect http://127.0.0.1/prohibit.html
  }

}

Fitxers de log

/var/log/squid/squidguard.log

Aquest fitxer no el genera l'instal·lador?!

Cal quadrar la configuració del fitxer squidguard.conf amb la ubicació del fitxer:

logdir /var/log/squid

També cal que els permisos siguin els adequats (l'usuari proxy, que és l'usuari amb que s'executa squid, ha de tenir permisos d'escriptura)

$ ls -la /var/log/squid/squidGuard.log
-rw-r--r-- 1 proxy proxy 685 ago 21 05:49 /var/log/squid/squidGuard.log

logrotate. /etc/logrotate.d/squidguard

$ cat /etc/logrotate.d/squidguard
#
#	Logrotate fragment for squidguard.
#
/var/log/squid/*Guard*.log {
	weekly
	rotate 9
	compress
	delaycompress
	missingok
	notifempty
	create 644 proxy proxy
} 

Com podeu veure els fitxers de log d'squid són rotats semanalment i es guarden fins a 9 còpies.

Vegeu també logrotate

Enllaços i llistes de pàgines a prohibir

TODO

The SquidGuard redirector folks have links to some lists.

Bill Stearns maintains the sa-blacklist of known spammers. By blocking the spammer web sites in squid, users can no longer use up bandwidth downloading spam images and html. Even more importantly, they can no longer send out requests for things like scripts and gifs that have a unique identifer attached, showing that they opened the email and making their addresses more valuable to the spammer.

The SleezeBall site has a list of patterns that you can download.

Llista pròpia

IMPORTANT: Un cop instal·lada la llista pròpia cal canviar la URL de la redirecció a la que s'envien les pàgines no permeses i també el gif transparent al que s'envien les pàgines d'anuncis!:

$ sudo -s
# mkdir -p /var/ipcop/urlfilter
# cd /var/ipcop/urlfilter
# wget http://acacha.org/~sergi/Squid/squidguard/blacklists.tar.gz
# tar xvzf blacklists.tar.gz
# chown -R proxy:proxy /var/ipcop/urlfilter/blacklists/
# chown proxy:proxy /etc/squid/squidGuard.conf
# mkdir /var/log/squidGuard
# chown -R proxy:proxy /var/log/squidGuard
# cd /etc/squid/
# wget -N http://acacha.org/~sergi/Squid/squidguard/squidGuard.conf

Editeu el fitxer /etc/squid/squidGuard.conf:

$ sudo joe /etc/squid/squidGuard.conf

I adaptar el fitxer a les vostres necessitats, per exemple modificar la URL que es mostrà en cas d'accedir a una pàgina no permesa, les IPS no filtrades, llista de servidors als quals no se'ls filtra continguts, etc:

logdir /var/log/squidGuard
dbhome /var/ipcop/urlfilter/blacklists

rewrite rew-rule-1 {
    # rewrite safesearch
    s@(.*\Wgoogle\.\w+/(webhp|search|imghp|images|grphp|groups|frghp|froogle)\?)(.*)(\bsafe=\w+)(.*)@\1\3safe=strict\5@i
    s@(.*\Wgoogle\.\w+/(webhp|search|imghp|images|grphp|groups|frghp|froogle)\?)(.*)@\1safe=strict\&\3@i
    s@(.*\Wsearch\.yahoo\.\w+/search\W)(.*)(\bvm=\w+)(.*)@\1\2vm=r\4@i
    s@(.*\Wsearch\.yahoo\.\w+/search\W.*)@\1\&vm=r@i
    s@(.*\Walltheweb\.com/customize\?)(.*)(\bcopt_offensive=\w+)(.*)@\1\2copt_offensive=on\4@i
}
 
rewrite rew-rule-2 {
    # rewrite nothing
}  
src unfiltered { 
#    ip 192.168.2.2 192.168.3.2 192.168.4.2 192.168.5.2 192.168.6.2 192.168.7.2 192.168.8.2 192.168.12.0/24
} 
src servidors {
     ip 192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9 192.168.1.10
}

dest ads {
    domainlist     ads/domains
    urllist        ads/urls
    redirect       1x1.gif
    logfile        urlfilter.log
}

dest adv {
    domainlist     adv/domains
    urllist        adv/urls
    redirect       1x1.gif
    logfile        urlfilter.log
}

dest aggressive {
    domainlist     aggressive/domains
    urllist        aggressive/urls
    logfile        urlfilter.log
}

dest alcohol {
    domainlist     alcohol/domains
    urllist        alcohol/urls
    logfile        urlfilter.log
} 
dest audio-video {
    domainlist     audio-video/domains
    urllist        audio-video/urls
    logfile        urlfilter.log
}

dest automobile_bikes {
    domainlist     automobile/bikes/domains
    urllist        automobile/bikes/urls
    logfile        urlfilter.log
}

dest automobile_boats {
    domainlist     automobile/boats/domains
    urllist        automobile/boats/urls
    logfile        urlfilter.log
} 

dest automobile_cars {
    domainlist     automobile/cars/domains
    urllist        automobile/cars/urls
    logfile        urlfilter.log
}
  
dest automobile_planes {
    domainlist     automobile/planes/domains
    urllist        automobile/planes/urls   
    logfile        urlfilter.log
}
 
dest chat {
    domainlist     chat/domains
    urllist        chat/urls   
    logfile        urlfilter.log
}
 
dest costtraps {
    domainlist     costtraps/domains
    urllist        costtraps/urls   
    logfile        urlfilter.log    
}
 
dest dating {
    domainlist     dating/domains
    urllist        dating/urls   
    logfile        urlfilter.log 
}
 
dest downloads {
    domainlist     downloads/domains
    urllist        downloads/urls   
    logfile        urlfilter.log    
}
 
dest drugs {
    domainlist     drugs/domains
    urllist        drugs/urls   
    logfile        urlfilter.log
}
 
dest dynamic {
    domainlist     dynamic/domains
    urllist        dynamic/urls   
    logfile        urlfilter.log  
}
 
dest education_schools {
    domainlist     education/schools/domains
    urllist        education/schools/urls   
    logfile        urlfilter.log
}
 
dest finance_banking {
    domainlist     finance/banking/domains
    urllist        finance/banking/urls   
    logfile        urlfilter.log
}
 
dest finance_insurance {
    domainlist     finance/insurance/domains
    urllist        finance/insurance/urls   
    logfile        urlfilter.log
}
 
dest finance_moneylending {
    domainlist     finance/moneylending/domains
    urllist        finance/moneylending/urls   
    logfile        urlfilter.log
}
 
dest finance_other {
    domainlist     finance/other/domains
     urllist        finance/other/urls   
     logfile        urlfilter.log
 }
 
 dest finance_realestate {
    domainlist     finance/realestate/domains
    urllist        finance/realestate/urls   
    logfile        urlfilter.log
}
 
dest fortunetelling {
    domainlist     fortunetelling/domains
    urllist        fortunetelling/urls   
    logfile        urlfilter.log
}
 
dest forum {
    domainlist     forum/domains
    urllist        forum/urls   
    logfile        urlfilter.log
}
 
dest gamble {
    domainlist     gamble/domains
    urllist        gamble/urls   
    logfile        urlfilter.log
}
 
dest gambling {
   domainlist     gambling/domains
   urllist        gambling/urls   
   logfile        urlfilter.log
}
 
dest government {
    domainlist     government/domains
    urllist        government/urls   
    logfile        urlfilter.log  
}
 
dest hacking {
    domainlist     hacking/domains
    urllist        hacking/urls   
    logfile        urlfilter.log
}
 
dest hobby_cooking {
    domainlist     hobby/cooking/domains
    urllist        hobby/cooking/urls   
    logfile        urlfilter.log
}
 
dest hobby_games {
    domainlist     hobby/games/domains
    urllist        hobby/games/urls   
    logfile        urlfilter.log   
}
 
dest hobby_games-misc {
    domainlist     hobby/games-misc/domains
    urllist        hobby/games-misc/urls   
    logfile        urlfilter.log
}
 
dest hobby_games-online {
    domainlist     hobby/games-online/domains
    urllist        hobby/games-online/urls   
    logfile        urlfilter.log
}
 
dest hobby_gardening {
    domainlist     hobby/gardening/domains
    urllist        hobby/gardening/urls   
    logfile        urlfilter.log
}

...


acl {
   unfiltered {
       pass all
       rewrite rew-rule-2
   }

   servidors {
       pass all
       rewrite rew-rule-2
   } 


   default { 
       pass custom-allowed !in-addr !ads !adv !aggressive !audio-video !automobile_bikes !automobile_boats !automobile_cars !automobile_planes !chat !dating !drugs  
!finance_banking !finance_insurance !finance_realestate !gamble !gambling !hacking !hobby_cooking !hobby_games !hobby
        rewrite rew-rule-1
#        redirect http://www.iescopernic.com/normes/normesUsAules.html
        redirect 302:http://192.168.1.5/normes/normesUsAules.html
#        redirect http://192.168.111.23/normes/normesUsAules.html
#         redirect 302:http://www.iesebre.com/normes/normesUsAules.html 
    }
}

NOTA: La llista de pàgines restringides és força Heavy i inclou pàgines com hotmail (necessari per tallar el messenger), youtube o facebook

Us caldrà preparar la carpeta dels logs d'SquidGuard:

$ sudo mkdir -p /var/log/squidGuard/
$ sudo chown proxy:proxy /var/log/squidGuard/
$ sudo /etc/init.d/squid3 reload 

Afegiu les línies:

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 50
redirector_bypass on

Al fitxer:

# sudo joe /etc/squid3/squid.conf

Ara torneu a iniciar el servidor:

# /etc/init.d/squid3 reload
* Reloading Squid HTTP Proxy 3.0 configuration files
  ...done.

Shalla Secure

Es pot obtenir una llista de la URL:

$ wget http://www.shallalist.de/Downloads/shallalist.tar.gz

IPCOP

$ cat /var/ipcop/urlfilter/autoupdate/autoupdate.urls 
Shalla Secure Services,http://www.shallalist.de/Downloads/shallalist.tar.gz
MESD,http://squidguard.mesd.k12.or.us/blacklists.tgz
Univ. Toulouse,ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz

Troubleshooting

Com provar squidGuard sense executar Squid?

$ sudo su proxy
$ /usr/bin/squidGuard -c /etc/squid/squidGuard.conf -d
2010-09-08 06:04:28 [6470] /usr/bin/squidGuard: can't write to logfile /var/log/squid/squidGuard.log
2010-09-08 06:04:28 [6470] syntax error in configfile /etc/squid/squidGuard.conf line 17

Veureu com us mostra els possibles errors i errors de sintaxi. Podeu provar a més si filtra correctament:

Consider increasing the number of url_rewriter processes to at least 18 in your config file.

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 20

Consulteu:

IPCOP#Augmentar_el_nombre_de_processos_de_URL_filter

Bloca pàgines SSL amb Proxy no transparent però no mostra pàgina de normes

Amb HTTPS no es pot redireccionar una petició denegada per normes d'SquidGuard. Per exemple, amb squidGuard hem filtrat

facebook.com

Recordeu que si la configuració del proxy és transparent no es podrà accedir a:

http://www.facebook.com

Però si a:

https://www.facebook.com

Si els clients estan tots configurats per utilitzar un Proxy de forma no transparent, aleshores si es filtra https://www.facebook.com.

El problema és que si tenim configurat squidGuard amb una pàgina de redirecció:

$ sudo joe /etc/squid/squidGuard.conf
acl {
     ...

    default {
       pass custom-allowed !in-addr !ads !adv !aggressive !audio-video !automobile_bikes !automobile_boats !automobile_cars !automobile_planes ...
       rewrite rew-rule-1
       redirect http://www.iesebre.com/normes/normesUsAules.html
   }
}

Si la pàgina:

http://www.iesebre.com/normes/normesUsAules.html

És d'un servidor diferent al servidor on està el proxy, simplement no es mostrarà (al client li dirà que no es pot trobar

https://www.facebook.com).

La pàgina amb el missatge de blocatge ha d'estar al mateix servidor del Proxy.

A

http://www.mail-archive.com/squid-users@squid-cache.org/msg58433.html

Es comenta que si a squid.conf és posa:

sslproxy_flags DONT_VERIFY_PEER

Funciona la redirecció. Però a mi no em funciona

$ sudo /etc/init.d/squid3 restart
* Restarting Squid HTTP Proxy 3.0 squid3      
2010/04/28 18:59:52|  cache_cf.cc(346) squid.conf:58 unrecognized: 'sslproxy_flags'

Però crec que és per què la versió de Debian/Ubuntu d'Squid dels repositoris no esta compilat per suportar ssl (--enable-ssl):

$ squid3 -v | grep ssl

No retorna res.

Es pot provar de recompilar Squid.

--acacha 17:45, 28 abr 2010 (UTC) Sí, recompilant amb suport per a ssl aleshores no dona l'error però no fa la redirecció  
correctament.

Cal utilitzar:

$ sudo joe /etc/squid/squidGuard.conf
 acl {
       ...
 
     default {
        pass custom-allowed !in-addr !ads !adv !aggressive !audio-video !automobile_bikes !automobile_boats !automobile_cars !automobile_planes ...
        rewrite rew-rule-1
        redirect 302:http://www.iesebre.com/normes/normesUsAules.html
    }
 }



http://www.visolve.com/squid/squid26/network.php#sslproxy_flags

Vegeu també