Translation(s): English - Italiano

(!) ?Discussion

This page is about setting a rudimental web filtering system with squidGuard and blacklists

Rudimentary squidGuard Filtering

We recently had a complaint in our in our school about not-existing internet filters. So I setup squidGuard. It took me about 2 hours from learning that squidGuard exists, to having it working in a very basic way. For more advanced things see the bottom of the page.

"Note: The listings within this wiki have been worked out using a Sarge Tjener."


Become root, then:

apt-get install squidguard


download a basic blacklist from:

copy that blacklist to the squid directory with:

cp blacklist.tgz /var/lib/squidguard/db/

change directory to the squidGuard database directory:

cd /var/lib/squidguard/db

untar the blacklists with:

tar xvzf blacklists.tgz

Write your config file at:


a sample squid.conf for the blacklist above can be found in SquidGuardConf

Give the squidGuard database the appropriate ownership:

chown proxy:proxy -R /var/lib/squidguard/db/*

and permissions (all files 644, all directories 755):

find /var/lib/squidguard/db -type f | xargs chmod 644
find /var/lib/squidguard/db -type d | xargs chmod 755

Initialize the database:

sudo -u proxy squidGuard -C all

If you look into the directories holding the files domains and urls you see that additional files have been created: domains.db and urls.db.

If you have no sudo you need to change owner again.

Tell squid to use squidGuard (arm squid), so add the following line:

url_rewrite_program /usr/bin/squidGuard

to the squid config file at


Create message that is returned for blocked URLs


I used BlockHtml, which is a nice red&black page with a link to

Restart squid:

squid -k reconfigure

Verifying the installation

Well the easiest way is to visit some nasty site and check to see if it is blocked, also check some good sites to see if they are let through. The squidGuard website also has a nice way of checking if it works at : verifying squidGuard

For debian-edu you can use the following command:

echo " / - - GET" | squidGuard -d 

If you change the blacklists

You will need to update the Squid Guard database with:

sudo -u proxy squidGuard -C all

And then reconfigure squid with:

squid -k reconfigure


Comments about this page

Please add you comments here with wiki Name, thanks.

Automatic Updates

Save the following script as /root/bin/


cd $TARGET || exit

# only run if squidGuard is active!
[ "`ps auxw | grep squid[G]uard`" ] || exit

rsync -az $TARGET

for DIR in `ls $TARGET`
        if [ -f $DIR/domains.include ]
                cat $DIR/domains $DIR/domains.include | sort | uniq > $DIR/domains.$TMP
                mv -f $DIR/domains.$TMP $DIR/domains
        if [ -f $DIR/urls.include ]
                cat $DIR/urls $DIR/urls.include | sort | uniq > $DIR/urls.$TMP
                mv -f $DIR/urls.$TMP $DIR/urls

/usr/bin/squidGuard -c /etc/squid/squidGuard.conf  -C all
# /usr/sbin/squidGuard -c /etc/squid/squidGuard.conf  -u

chown -R proxy:proxy $TARGET
chown -R proxy:proxy /var/log/squid/squidGuard.log

sleep 5s

/usr/bin/killall -HUP squid

and register it in root's crontab

sudo crontab -e

add the following line:

00 5 * * * sh /root/bin/