SquidGuard

De Cliss XXI
Sauter à la navigation Sauter à la recherche

Installation

Compilation (Debian 5.0 Lenny):

cd /usr/src/
wget http://www.squidguard.org/Downloads/squidGuard-1.4.tar.gz
tar xzf squidGuard-1.4.tar.gz
cd squidGuard-1.4
apt-get install build-essential
apt-get install libdb-dev 
./configure --with-squiduser=proxy
make
make install

Création des répertoires:

mkdir -p /var/lib/squidguard/db/
mkdir -p /var/log/squidguard/
chown proxy: /var/log/squidguard/

Rotation des logs:

cat <<EOF > /etc/logrotate.d/squidguard
/var/log/squidguard/*.log {
  daily
  compress
  delaycompress
  rotate 10
  nocreate
}
EOF

La liste noire

On récupère celle de Toulouse quotidiennement:

cat <<EOF > /etc/cron.daily/liste_noire_de_toulouse
#!/bin/bash
# Refresh DB
rsync -aq rsync://ftp.univ-tlse1.fr/blacklist/ /var/lib/squidguard/db/blacklist/
# Cf. http://www.squidguard.org/Doc/configure.html
squidGuard -C all
chown -R proxy: /var/lib/squidguard/db/blacklist/
EOF
chmod 755 /etc/cron.daily/liste_noire_de_toulouse

Configuration

Dans /usr/local/squidGuard/squidGuard.conf:

dbhome /var/lib/squidguard/db/blacklist/dest
logdir /var/log/squidguard

Pour créer le fichier de configuration, on peut s'appuyer sur les scripts suivants:

  • Déclaration des listes:
cd /var/lib/squidguard/db/blacklist/dest/
ls */usage | xargs grep -l black | xargs -n1 dirname | (
    while read list; do
	echo "dest $list {"
	if [ -f "$list/domains" ]; then
	    echo "  domainlist $list/domains"
	fi
	if [ -f "$list/urls" ]; then
	    echo "  urllist $list/urls"
	fi
	if [ -f "$list/expressions" ]; then
	    echo "  expressionlist $list/expressions"
	fi
	echo "}"
    done
)
  • Références dans le block default:
echo $(ls */usage | xargs grep -l black | xargs -n1 dirname | while read list; do echo '!'$list; done)

Ce qui nous donne par exemple:

#
# CONFIG FILE FOR SQUIDGUARD
#

dbhome /var/lib/squidguard/db/blacklist/dest
logdir /var/log/squidguard

#
# DESTINATION CLASSES:
#

dest adult {
  domainlist adult/domains
  urllist adult/urls
  expressionlist adult/expressions
}
dest agressif {
  domainlist agressif/domains
  urllist agressif/urls
}
dest astrology {
  domainlist astrology/domains
  urllist astrology/urls
}
dest audio-video {
  domainlist audio-video/domains
  urllist audio-video/urls
}
dest blog {
  domainlist blog/domains
  urllist blog/urls
}
dest celebrity {
  domainlist celebrity/domains
  urllist celebrity/urls
}
dest dangerous_material {
  domainlist dangerous_material/domains
  urllist dangerous_material/urls
}
dest dating {
  domainlist dating/domains
  urllist dating/urls
}
dest drogue {
  domainlist drogue/domains
  urllist drogue/urls
}
dest filehosting {
  domainlist filehosting/domains
  urllist filehosting/urls
}
dest financial {
  domainlist financial/domains
}
dest forums {
  domainlist forums/domains
  urllist forums/urls
  expressionlist forums/expressions
}
dest gambling {
  domainlist gambling/domains
  urllist gambling/urls
}
dest games {
  domainlist games/domains
  urllist games/urls
}
dest hacking {
  domainlist hacking/domains
  urllist hacking/urls
}
dest malware {
  domainlist malware/domains
  urllist malware/urls
  expressionlist malware/expressions
}
dest manga {
  domainlist manga/domains
  urllist manga/urls
}
dest marketingware {
  domainlist marketingware/domains
  urllist marketingware/urls
}
dest mixed_adult {
  domainlist mixed_adult/domains
  urllist mixed_adult/urls
}
dest mobile-phone {
  domainlist mobile-phone/domains
  urllist mobile-phone/urls
}
dest phishing {
  domainlist phishing/domains
  urllist phishing/urls
}
dest publicite {
  domainlist publicite/domains
  urllist publicite/urls
  expressionlist publicite/expressions
}
dest radio {
  domainlist radio/domains
  urllist radio/urls
}
dest reaffected {
  domainlist reaffected/domains
  urllist reaffected/urls
}
dest redirector {
  domainlist redirector/domains
  urllist redirector/urls
  expressionlist redirector/expressions
}
dest sect {
  domainlist sect/domains
  urllist sect/urls
}
dest shopping {
  domainlist shopping/domains
  urllist shopping/urls
}
dest strict_redirector {
  domainlist strict_redirector/domains
  urllist strict_redirector/urls
  expressionlist strict_redirector/expressions
}
dest strong_redirector {
  domainlist strong_redirector/domains
  urllist strong_redirector/urls
  expressionlist strong_redirector/expressions
}
dest tricheur {
  domainlist tricheur/domains
  urllist tricheur/urls
}
dest warez {
  domainlist warez/domains
  urllist warez/urls
  expressionlist warez/expressions
}
dest webmail {
  domainlist webmail/domains
  urllist webmail/urls
}

acl {
	default {
		pass !adult !agressif !astrology !audio-video !blog !celebrity !dangerous_material !dating !drogue !filehosting !financial !forums !gambling !games !hacking !malware !manga !marketingware !mixed_adult !mobile-phone !phishing !publicite !radio !reaffected !redirector !sect !shopping !strict_redirector !strong_redirector !tricheur !warez !webmail all
		redirect http://192.168.1.1/bloque.html
	}
}

Squid

apt-get install squid3

Dans /etc/squid3/squid.conf (modifiez/décommentez les lignes correspondantes dans la configuration par défaut):

acl localnet src 10.0.0.0/8                                                                     
http_access allow localnet
url_rewrite_program /usr/local/bin/squidGuard -c /usr/local/squidGuard/squidGuard.conf

Configuration proxy transparent:

http_port 3128 transparent

Dans iptables:

iptables -t nat -A PREROUTING -i eth-local -p tcp --dport 80 -j REDIRECT --to-port 3128

Page d'erreur

On pourra installer un petit serveur web sur lequel rediriger les requêtes en cas de page bloquée:

apt-get install lighttpd

Dans /var/www/bloque.html:

<meta http-equiv="content-type" value="text/html;charset=UTF-8" />
Cette page est bloquée.

Dans /usr/local/squidGuard/squidGuard.conf:

acl {
  defaut {
    ...
   redirect http://192.168.1.1/bloque.html


Liens