Squid

De OpenWikiBSD
Aller à : navigation, rechercher

Sous FreeBSD

Ceinture et bretelles, un snapshot ne mange pas de pain.

 zfs snapshot -r zroot@PreInstallSquid

Maj système

 pkg update
 pkg upgrade

install paquet (on verra les modules plus tard)

 pkg install  squid
echo "squid_enable=YES" >> /etc/rc.conf

Mon pool ZFS tourne à 400Mo/s, ça devrait suffire pour un cache pour une poignée de machines..

zfs create /path/squid
mv /var/squid/cache /path/squid

Ajout et modifs dans /usr/local/etc/squid/squid.conf cache_dir ufs /path/squid/cache 100 16 256 coredump_dir /path/squid/cache visible_hostname squid

On crée la structure du cache

squid -z

On vérifie la config

squid -f /usr/local/etc/squid/squid.conf -k parse

On démarre squid

/usr/local/etc/rc.d/squid start

On surveille le tout avec Splunk

 /opt/splunkforwarder/bin/splunk  add monitor /var/log/squid/access.log 


Sous OpenBSD

pkg_add squid-2.7.STABLE9
 NOTES ON OpenBSD POST-INSTALLATION OF SQUID 2.7

The local (OpenBSD) differences are:
configuration files are in		/etc/squid
sample configuration files are in	/usr/local/share/examples/squid
error message files are in		/usr/local/share/squid/errors
sample error message files are in	/usr/local/share/examples/squid/errors
icons are in 				/usr/local/share/squid/icons
sample icons are in			/usr/local/share/examples/squid/icons
the cache is in 			/var/squid/cache
logs are stored in 			/var/squid/logs
the ugid squid runs as is		_squid:_squid


 echo "
    if [ -x /usr/local/sbin/squid ]; then
	echo -n ' squid';	/usr/local/sbin/squid
    fi
 " >> /etc/rc.local
squid -z

/usr/local/sbin/squid


Analyse des logs

Les accès au travers de squid

/var/log/squid/access.log

  • TCP_MEM_HIT : le fichier était en cache.
  • TCP_TUNNEL : Le fichier était transmis dans une connection TLS, donc pas d'analyse (voir Interception SSL)
  • TCP_MISS  :  : le fichier n'était pas en cache, il a été téléchargé


| L'ensemble des tags

Lors d'un blocage squidGuard

Ajoutez le mot clé log suivi du fichier dans le répertoire qui va bien. En cas d'absence squidGuard le créera tout seul

dest porn {

       domainlist porn/domains
       urllist porn/urls
       log pornaccesses

}

Le fichier peut être le même pour toute les catégories

SquidGuard

Parce que cacher c'est bien, filtrer, c'est mieux..

FreeBSD

pkg install squidGuard

Ajouter

redirect_children 5
redirect_program /usr/local/bin/squidGuard -c /usr/local/etc/squid/squidGuard.conf
url_rewrite_program /usr/local/bin/squidGuard
url_rewrite_access  allow localhost

à /usr/local/etc/squid/squid.conf

pkg install wget
wget http://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz
tar -xzf blacklists.tar.gz
mkdir /var/db/squidGuard
cp -R blacklists/* /var/db/squidGuard/

Modifier /usr/local/etc/squid/squidGuard.conf

dbhome /var/db/squidGuard/
logdir /var/log/squidGuard    
 
chmod g+w /var/log/squidGuard/squidGuard.log
chmod g+x /var/log/squid*
chmod -R g+wx /var/db/squidGuard/*
chown -R squid.squid /var/db/squidGuard/
chown  squid.squid /var/db/squidGuard/
chown -R  squid:squid /var/db/squidGuard/
chown -R  squid:squid /var/log/squid*
chown -R  squid:squid /usr/local/etc/squid/squidGuard.conf

chmod 644 /usr/local/etc/squid/squidGuard.conf

chmod -R 640 /var/db/squidGuard/
chmod -R g+w /var/db/squidGuard 
chmod -R 644 /var/log/squid*
chmod 755 /var/log/squid



squidGuard -d -b -P -c /usr/local/etc/squid/squidGuard.conf -C all

-d Debug -b Progress Bar -P No Emergency mode


Debug

SquidGuard est un p'tit gars sensible; à la moindre contrariété :

Going into emergency mode

et là, c'est le drame, il laisse tout passer...

  • squidGuard: ACL destination agressive is not defined in configfile /usr/local/etc/squid/squidGuard.conf

Vous avez (au mieux ) une typo sur la catégorie aggressive

  • /var/db/squidGuard/adult/domains: Permission denied

Il faut que squidGuard puisse lire, écrire le fichier/répertoire

  • WARNING: All 5/5 redirector processes are busy.
 5 pending requests queued
Consider increasing the number of redirector processes in your config file.

C'est assez explicite, la valeur par défaut dans squid.conf

Filtrage Horaire

[1] [www.squidguard.org/Doc/examples.html]

Whitelisting

Ajouter à squidGuard.conf :

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

Puis dans l'ACL, ajoutez le mot clé whitelist en premier :

Client {
               rewrite search_engine
               pass whitelist cleaning !malware sexual_education !adult !....}

Ensuite :

mkdir /var/db/squidGuard/whitelist
touch /var/db/squidGuard/whitelist/domains
touch /var/db/squidGuard/whitelist/urls
chown -R squid:squid /var/db/squidGuard/whitelist/
chmod -R 770 /var/db/squidGuard/whitelist/

Et ajouter les sites à autoriser.

echo "deezer.fr" >> /var/db/squidGuard/whitelist/domains 

Puis relancer la recompil des bases squidGuard

chown -R squid:squid /var/db/squidGuard/whitelist/
chmod 770 /var/db/squidGuard/whitelist/*

L'avantage sur la modif du fichier équivalent (audio-video/domains), c'est que cette manip résiste à une maj des bases.

Puis reconstruisez seuelment la base whitelist :

/usr/local/bin/squidGuard -d -b -P  -c /usr/local/etc/squid/squidGuard.conf  -C whitelist/domains
/usr/local/etc/rc.d/squid restart

Page d'interdiction

OpenBSD

pkg_add squidGuard
mkdir -p /var/squidguard
chown -R _squid._squid /var/squidguard
chmod -R 775 /var/squidguard

/usr/local/bin/squidGuard -C all &
tail -f /var/squidguard/squidGuard.log

est très utile  :

2010-02-04 23:46:45 [3080] New setting: dbhome: /var/squidguard/db
2010-02-04 23:46:45 [3080] New setting: logdir: /var/squidguard/log
2010-02-04 23:46:45 [3080] init domainlist /var/squidguard/db/adult/domains
2010-02-04 23:46:56 [18850] New setting: dbhome: /var/squidguard/db
2010-02-04 23:46:56 [18850] New setting: logdir: /var/squidguard/log
2010-02-04 23:46:56 [18850] init domainlist /var/squidguard/db/adult/domains

2010-02-04 23:56:57 [18850] init urllist /var/squidguard/db/adult/urls
2010-02-04 23:56:58 [18850] init expressionlist /var/squidguard/db/adult/expressions
.
.
2010-02-04 23:57:04 [18850] init urllist /var/squidguard/db/malware/urls
2010-02-04 23:57:04 [18850] init domainlist /var/squidguard/db/malware/domains
2010-02-04 23:57:15 [18850] init domainlist /var/squidguard/db/press/domains
2010-02-04 23:57:15 [18850] syntax error in configfile /etc/squidguard/squidguard.conf line 271
2010-02-04 23:57:15 [18850] going into emergency mode


La compilation des bases est TRES longue la première fois. De plus cette compilation est effectuée par tous les processus squidguard lancés.. Il est donc nécessaire de ne lancer, pour la première fois qu'un seul redirect_children 1 dasn squid.conf.