Mit aktuellen Firmwaren gibt es - aus mir zur Zeit unbekannten Gründen - Probleme mit dem configure Kommando. Obwohl die Berkeley-DB (libdb) von ipkg installiert ist, wirft configure immer einen Fehler und beschwert sich über eine nicht passende libdb Version. Auch mit der libdb der Firmware geht es leider nicht. So wie es ausschaut lässt sich daher squidguard nicht mehr so bauen wie mit alten Firmwaren.
With the most recent firmware there are currently problems compiling squidguard. Although libdb is in place from ipkg the configure command complains about missing libdb. Even the libdb version shipped with the firmware does not allow to compile the squidguard. So it looks like squidguard cannot be build anymore.
— Tobi 2012/06/18 10:41
squidGuard ist ein Aufsatz für die Proxy Software squid. Es ermöglicht relativ einfach eigene Regeln in den Ablauf von squid einzubauen (z.B. Blacklists von IP/Domains)
Leider gibt es squidGuard nicht als ipkg Paket in der Paketverwaltung. Daher muss man die benötigten Dateien aus den Quellen selber kompilieren. Das hört sich erstmal schwierig an, ist es aber nicht wirklich
Damit man auf der DS überhaupt Quellen kompilieren kann muss man erst die benötigten Pakete via ipkg installieren. Benötigt werden folgende Pakete
Bei meiner DS107+ musste ich gcc anstelle der crosstool-native nehmen, da letzteres gar nicht vorhanden war
$ ipkg update $ ipkg install gcc $ ipkg install optware-devel $ ipkg install libdb
Auf der Homepage des Projekts gibt es die Quellen (http://www.squidguard.org/Downloads/squidGuard-1.4.tar.gz). Diese Datei muss man herunterladen und entpacken
$ cd /opt/etc $ wget http://www.squidguard.org/Downloads/squidGuard-1.4.tar.gz $ gzip -d ./squidGuard-1.4.tar.gz $ tar xfv ./squidGuard-1.4.tar
Zum Kompilieren der Quellen wechselt man erst in das Verzeichnis wo die Sourcen entpackt wurden (z.B. /opt/etc/squidGuard-1.4)
$ cd ../squidGuard-1.4 $ ./configure --prefix=/opt --with-db-inc=/opt/include --with-db-lib=/opt/lib --sysconfdir=/opt/etc/squidGuard $ make $ make install
und schon liegen die Binaries in /opt/bin/squidGuard und die Config files in /opt/etc/squidGuard/
Die Konfiguration von squidGuard gestaltet sich relativ einfach.
In dieser Datei werden die Kategorien und Zugriffsregeln erstellt. Wichtig ist, dass
dbhome /opt/etc/squidGuard/db logdir /opt/etc/squidGuard/log
korrekt gesetzt sind
Damit squidGuard die Kategorien erkennen kann muss man ihm diese erst bekannt machen
dest ads { domainlist ads/domains urllist ads/urls }
erstellt eine Kategorie Namens ads. Unter /opt/etc/squidGuard/db/ads müssen sich die beiden Dateien domains und urls befinden. Diese stellen die Blacklist für die Kategorie ads dar. Unter http://www.squidguard.org/blacklists.html gibt es einige Links zu Anbietern solcher Listen, wobei ich persönlich Shalla Secure Services verwendet habe.
Auf angelegte Kategorien kann man dann in den Zugriffsregeln referenzieren
acl { default { pass !ads all redirect http://localhost/block.html?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u } }
$ cd /opt/etc/squidGuard/db $ wget http://www.shallalist.de/Downloads/shallalist.tar.gz $ gzip -d blacklist.tar.gz $ tar xfv blacklist.tar
$ squidGuard -C all $ chown -R nobody /opt/etc/squidGuard/*
Es ist wichtig, dass die db Files dem User gehören unter dem squidGuard läuft und das ist auf der DS nobody.
Zum schnellen Funktionstest kann man folgenden Befehl benutzen
echo "http://DOMAIN.TLD CLIENT_IP/ - - GET" | squidGuard -c /opt/etc/squidGuard/squidGuard.conf
Wobei DOMAIN.TLD eine Domain sein sollte die auf der Blacklist steht und CLIENT_IP die IP Adresse eures Clients. Wenn alles geklappt hat, dann sollte euch als Antwort die Redirect URL angezeigt werden.
Damit squid auch weiss, dass es den squidGuard verwenden soll, muss man noch einige Einträge in die squid.conf vornehmen
redirect_program /opt/bin/squidGuard redirect_children 2
Die children definieren wieviele Subprozesse beim Start initialisiert werden sollen. In diesem Falle werden also zwei squidGuard-Instanzen beim Start von squid aktiviert.
$ ps | grep squid # 2497 root 492 S /opt/sbin/squid -f /opt/etc/squid/squid.conf # 2499 nobody 25536 S (squid) -f /opt/etc/squid/squid.conf # 2510 nobody 3588 S (squidGuard) # 2511 nobody 3184 S (squidGuard) # 2512 nobody 612 S (ncsa_auth) /opt/etc/squid/etc/passwd # 2513 nobody 304 S (ncsa_auth) /opt/etc/squid/etc/passwd
Bei mir werden zusätzlich noch zwei Instanzen für die Authentifizierung mit ncsa_auth gestartet.