Archiv/squidGuard

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Einen Editor öffnen

  3. Ein Terminal öffnen

Inhaltsverzeichnis
  1. Installation
  2. Konfiguration
    1. Squid umleiten
    2. Blacklist installieren
    3. Fehlerseite
    4. Konfigurieren
      1. Pfade
      2. Ziele
      3. Quellen
      4. Zeitregeln
      5. Zugriffsbedingungen (ACLs)
    5. Generieren
    6. Konfiguration einlesen
  3. Links

squidGuard 🇬🇧 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:

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.

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install squidguard 

sudo aptitude install squidguard 

Konfiguration

Bevor squidGuard aktiv werden kann, müssen noch einige Dinge konfiguriert und installiert 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 Shalla's Blacklists 🇬🇧 eine Blacklist mit über einer Million Einträgen. Im Folgenden wird diese Blacklist auch benutzt.

Dazu lädt man die Blackliste von hier (Direktlink) auf z.B. den Desktop herunter. Nun muss diese Liste nach /var/lib/squidguard/db entpackt und die Rechte korrekt gesetzt werden [3]:

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:

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 Kategorien 🇬🇧 , 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 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:

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:

sudo /etc/init.d/squid reload 

Danach sollten die Filter aktiv sein.