[[Vorlage(Archiviert, )]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Editor: Einen Editor öffnen] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [http://www.squidguard.org/ squidGuard] {en} ist ein Web-Filter, der in Verbindung mit dem Web-Cache-Proxy [:Squid:] über den Redirector-Mechanismus eingesetzt werden kann. Dabei ist squidGuard kein echter Inhaltsfilter (engl. Contentfilter). Er prüft lediglich URLs und Zugriffsbedingungen. Die URLs lassen sich in Klassen unterteilen, die unterschiedlich behandelt werden können. Anwendungsbeispiele: * Sperren des Internetzugangs in Abhängigkeit von Uhrzeit und Rechner * Werbe-Filter * Verhinderung des Zugriffs bestimmter Benutzer auf bestimmte Webseiten * Zensieren von Webinhalten = Installation = Für den Einsatz von squidGuard ist es zwingend erforderlich, dass [:Squid:] bereits erfolgreich installiert und konfiguriert wurde. Falls man bei geblockten Seiten eine etwas aussagekräftigere Fehlerseite bieten möchte als ein nacktes "404" ("Seite wurde nicht gefunden"), benötigt man zusätzlich einen installierten Webserver (wie [:Apache:] oder [:lighttpd:]), der so konfiguriert ist, dass er CGI-Skripte ausführt. Des weiteren muss man sich Gedanken um eine solide Firewall machen. Soll squidGuard nicht authorisierten Benutzern nur eingeschränkten Zugang zum Internet gewähren, so müssen Verbindungen in das Internet unterbunden werden und ein Zugang darf nur über den Proxy möglich sein. squidGuard kann nun direkt aus den Paketquellen von Ubuntu installiert [1] werden. {{{#!vorlage Paketinstallation squidguard, universe }}} = Konfiguration = Bevor squidGuard aktiv werden kann, müssen noch einige Dinge konfiguriert und installiert werden: * Squid muss so eingerichtet werden, dass Anfragen über squidGuard geleitet werden * eine Blacklist muss installiert werden und * squidGuard selbst muss konfiguriert werden == Squid umleiten == Squid selber muss so konfiguriert werden, dass Anfragen über squidGuard gelenkt werden. Dazu muss in der Konfigurationsdatei '''/etc/squid/squid.conf''' von Squid der Redirect gesetzt werden, indem man einfach die Zeilen {{{# TAG: redirect_program redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf }}} an das Ende dieser Datei schreibt [2]. Bei Ubuntu 12.04 muss das Einbinden in der Konfigurationsdatei '''/etc/squid3/squid.conf''' von Squid3 geschehen: {{{ # Tag: url_rewrite_program url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf url_rewrite_children 2 }}} == Blacklist installieren == Nun muss man entweder eine Blacklist selbst erstellen oder eine existierende nutzen. Die Ersteller von squidGuard pflegen mit der [http://www.shallalist.de/ Shalla's Blacklists] {en} eine Blacklist mit über einer Million Einträgen. Im Folgenden wird diese Blacklist auch benutzt. Dazu lädt man die Blackliste von hier ([http://squidguard.shalla.de/Downloads/shallalist.tar.gz Direktlink]) auf z.B. den Desktop herunter. Nun muss diese Liste nach '''/var/lib/squidguard/db''' entpackt und die Rechte korrekt gesetzt werden [3]: {{{#!vorlage Befehl sudo tar -xzf ~/Desktop/shallalist.tar.gz -C /var/lib/squidguard/db sudo chown proxy:proxy /var/lib/squidguard/db -R }}} squidGuard läuft unter derselben Benutzerkennung ''"proxy"'' wie Squid selber. == Fehlerseite == squidGuard kann bei einem unerlaubten Zugriff anstatt der gewünschten Webseite eine Fehlerseite präsentieren. Dies kann eine einfache '''.html'''-Datei sein, die auf einem Webserver liegt, oder man benutzt ein kleines '''.cgi'''-Skript, das zusätzliche Informationen anzeigen kann. Im Paket von squidGuard liegt eine Beispieldatei, die man mittels: {{{#!vorlage Befehl sudo cp /usr/share/doc/squidguard/examples/squidGuard.cgi.gz /usr/lib/cgi-bin sudo gunzip /usr/lib/cgi-bin/squidGuard.cgi.gz sudo chmod +x /usr/lib/cgi-bin/squidGuard.cgi }}} an die richtige Stelle kopiert. Ist die Datei kopiert, so sollte man die neue Datei '''/usr/lib/cgi-bin/squidGuard.cgi''' an die eigenen Wünsche anpassen. Normalerweise reicht es aus, '''$proxy''' und '''$proxymaster''' im Abschnitt ''CONFIGURABLE OPTIONS'' entsprechend zu ändern, da diese Informationen auf der Fehlerseite eingetragen werden. == Konfigurieren == Abschließend muss nun squidGuard selbst konfiguriert werden. Ähnlich wie bei Squid gibt es eine Konfigurationsdatei, die individuell angepasst werden muss. Man findet sie unter '''/etc/squid/squidGuard.conf'''. Als Ausgangsbasis soll das folgende Beispiel gelten. === Pfade === Im Kopf der '''squidGuard.conf''' werden die Pfade zur Blacklist und zum Fehlerprotokoll (Logdatei) definiert. Üblicherweise kann dieser Teil übernommen werden. {{{##### # Konfigurationsdatei /etc/squid/squidGuard.conf für squidGuard ##### dbhome /var/lib/squidguard/db logdir /var/log/squid }}} === Ziele === Anschließend müssend die Ziele, die geblockt werden sollen, definiert werden. Die ''"Shalla's Blacklists"'' kennt einige [http://squidguard.shalla.de/cgi-bin/stat.cgi Kategorien] {en} , die bei Bedarf auch einzeln geblockt werden können. Im Beispiel sollen Werbung (''"adv"''), Chats (''"chat"'') und Webseiten mit pornographischem Material (''"porn"'') gefiltert werden. Man sieht, dass die Optionen hinter ''"domainlist"'' und ''"urllist"'' nichts anderes sind als die relativen Pfade ab '''/var/lib/squidguard/db'''. Das heißt, man kann auch eigene Blocklisten erstellen. Es müssen nur die Pfade korrekt angegeben werden. {{{##### # Zu filternde Kategorien ##### dest adv { domainlist BL/adv/domains urllist BL/adv/urls } dest chat { domainlist BL/chat/domains urllist BL/chat/urls } dest porn { domainlist BL/porn/domains urllist BL/porn/urls } }}} === Quellen === Eine Untergliederung in Gruppen macht nur Sinn, wenn sich Benutzer gegenüber des Proxy-Servers [:Squid:authentifizieren] müssen. Ist der Proxy korrekt eingerichtet, so kann man Gruppen definieren. Im Beispiel werden drei Gruppen festgelegt, die später unterschiedliche Rechte bekommen werden. {{{##### # Gruppendefinitionen ##### src super { user root } src eltern { user mama papa } src kinder { user tim tom } }}} === Zeitregeln === Optional lassen sich noch Zeiträume definieren, in denen z.B. eine Gruppe nur eingeschränkten Internetzugang haben soll. Im Beispiel wird der Zeitraum ''"tagsueber"'' bestimmt. Dieser soll z.B. im familiären Umfeld den Zugang zum Internet auf vernünftige Zeiten beschränken. {{{##### # Zeitregeln # m=mon, t=tue(di), w=wed(mi), h=thu(do), f=fri(fr), a=sat(sam), s=sun(so) ##### time tagsueber { weekly mtwh 07:00 - 21:30 weekly fa 07:00 - 23:00 weekly s 07:00 - 22:00 } }}} === Zugriffsbedingungen (ACLs) === Schließlich folgt mit den Zugriffsbedingungen der wichtigste Teil. In diesen werden je nach Gruppe unterschiedliche Filter gesetzt * ''"super"'': darf jederzeit alles sehen - keine Filterung * ''"eltern"'': es wird nur Werbung gefiltert * ''"kinder"'': diese Gruppe bekommt nur ''"tagsueber"'' Zugriff. Zusätzlich werden die Ziele ''"chat"'' und ''"porn"'' gefiltert . {{{##### # Zugriffsbedingungen (ACLs) ##### acl { super { pass all } eltern { pass !in-addr !adv all } kinder within tagsueber { pass !in-addr !adv !chat !porn all } else { pass none redirect http://localhost/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientuser=%i&srcclass=%s&targetclass=%t&url=%u } default { pass none redirect http://localhost/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientuser=%i&srcclass=%s&targetclass=%t&url=%u } } }}} An dieser Stelle kann man sehr viel einstellen. Um das volle Potential von squidGuard nutzen zu können, bedarf es des genauen Studiums der Dokumentation. == Generieren == Ist die '''squidguard.conf''' vollständig angepasst, muss nur noch die Datenbank aufgebaut werden. Diese Datenbank enthält die Einträge der Blockliste in optimierter Form. Dadurch wird die Leistung des Filters verbessert. Dies lässt sich in einem Terminal-Fenster mit dem Befehl: {{{#!vorlage Befehl sudo -u proxy squidGuard -C all }}} veranlassen. Allerdings dauert dies je nach Blockliste und der Geschwindigkeit des Rechners eine Weile - ein langsamerer Rechner kann mit dieser Aktion über eine Stunde beschäftigt sein. Den Fortschritt des Aufbaus der Datenbank kann man in der Logdatei '''/var/log/squid/squidGuard.log''' beobachten: {{{2007-02-05 19:57:00 [13729] init domainlist /var/lib/squidguard/db/BL/adv/domains 2007-02-05 19:57:01 [13729] create new dbfile /var/lib/squidguard/db/BL/adv/domains.db 2007-02-05 19:57:01 [13729] init urllist /var/lib/squidguard/db/BL/adv/urls 2007-02-05 19:57:01 [13729] create new dbfile /var/lib/squidguard/db/BL/adv/urls.db ... 2007-02-05 19:57:01 [13729] squidGuard 1.2.0 started (1170701820.550) 2007-02-05 19:57:01 [13729] db update done }}} == Konfiguration einlesen == Schließlich muss Squid selber noch seine Konfigurationsdatei neu einlesen: {{{#!vorlage Befehl sudo /etc/init.d/squid reload }}} Danach sollten die Filter aktiv sein. = Links = * [http://www.squidguard.org/ Projektseite] {en} * [launchpad:perseusguard:PerseusGuard] {en} - Ubuntu-basierende Proxy-Distribution * [http://www.pro-linux.de/NB3/artikel/2/1171/squidguard.html SquidGuard] {de} - Artikel auf Pro-linux.de, 08/2001 # tag: Internet, Server