Benutzer-Werkzeuge

Webseiten-Werkzeuge


Writing /srv/www/htdocs/udo/singollo.de/linux.singollo.de/public_html/data/cache/0/0cfeb1b2b2cb2b94a4652f92b9af4ee3.metadata failed
squidguard

squidGuard einsetzen

Ich habe mich mal mit squidGuard auseinander gesetzt, da ich ein paar Seiten hatte, die ich unbedingt sperren wollte.

squidGuard

An sich ist squidGuard ziemlich einfach einzustellen. Die Grundkonfiguration ist ziemlich simpel. Weiterführende Infos sind auf der Homepage von squidGuard zu finden.

#
# CONFIG FILE FOR SQUIDGUARD
#

dbhome /var/lib/squidGuard/db
logdir /var/log/squidGuard

#
# DESTINATION CLASSES:
#

dest good {
}

dest local {
        domainlist      local/domains
        urllist         local/urls
        expressionlist  local/expressions
}
acl {
        default {
                pass     !local good all any
                redirect http://foo.bar/cgi-bin/squidGuard-simple-de.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
        }
}

Anstelle von squidGuard-simple-de.cgi lässt sich auch squidGuard.cgi nutzen.

squid

In squid v3 und höher wird squidGuard mit folgender Zeile in squid.conf aktiviert:

url_rewrite_program /usr/sbin/squidGuard -c /etc/squid/squidGuard.conf

Sollte squid unerkannt im Netz laufen, so empfiehlt es sich, ihn als transparenten Proxy einzusetzen.

http_port 3128 transparent

Desweiteren muss in der Firewall noch ein Port-Redirect durchgeführt werden.

iptables -t nat -A PREROUTING -i eth+ -p tcp --dport 80 -j DNAT --to 127.0.0.1:3128 # proxy

Blacklist bearbeiten

Ich nutze anstelle der frei verfügbaren Blacklisten (http://www.squidguard.org/blacklists.html) meine eigene. Die Konfiguration ist auch hier sehr einfach gehalten. In der Domainliste wird pro Zeile eine Domain eingetragen, wobei ein foo.bar als *.foo.bar interpretiert wird. Da die Blacklisten in unregelmässigen Abständen aktualisiert werden, wäre hier eine Überwachung der Listen sinnvoll und bei Bedarf squid/squidGuard davon in Kenntnis zu setzen. Dafür habe ich folgendes Script geschrieben, das mittels md5-Checksummen prüft, ob sich eine der Listen geändert hat. Wird eine Änderung erkannt, so wird die Datenbank von squidGuard aktualisiert und squid neu geladen.

#!/bin/sh
 
DBHOME=`grep "dbhome" /etc/squid/squidGuard.conf|cut -d" " -f 2`
BL=`egrep "(domainlist|urllist|expressionlist)" /etc/squid/squidGuard.conf | grep -v "^#" | sed 's/^[ \t]*//;s/[ \t]*$//;s/[ \t]\+/ /g' | cut -d" " -f 2  | tr "\n" " "`
 
NEW=`/bin/false`
 
for blacklist in $BL
do
        for file in `ls "$DBHOME/$blacklist"`
        do
                if [ ! -f "$file.md5" ]; then
                        md5sum "$file" >"$file.md5"
                else
                        if [ ! -z $(md5sum --status -c "$file.md5") ]; then 
                                $NEW=`/bin/true`
                        fi
                fi
        done
done
 
if [ $NEW ]; then 
        /usr/sbin/squidGuard -d -b -C all -c /etc/squid/squidGuard.conf
        /etc/init.d/squid reload
        exit 1 
else
        test "$1" != "-q" && echo "$0: nothing to do."
        exit 0
fi

Das ganze läuft dann über einen cronjob z.B. alle 30 Minuten.

*/30 * * * * /usr/local/bin/squidguard.sh -q

Anmerkung

Den Speicherort der Konfigurationsdateien sind fest vorgegeben. Für den Proxy wird der Host localhost und Port 3128 angenommen. Alle Daten sind entsprechend an die eigenen Gegebenheiten anzupassen.

squidguard.txt · Zuletzt geändert: 07.10.2012 18:31 (Externe Bearbeitung)