Wenn ich ehrlich bin: ich bin immer wieder überrascht, wie nervig das Internet doch ist, muß man es denn ungefiltert verwenden.
Und das ist auch der Grund, weshalb ich mich für die serverbasierte Lösung entschieden habe: das No-Script-Plugin für Firefox macht einen ähnlichen Job, aber es hat aus meiner Sicht zwei Nachteile:
- Es ist ein Firefox-Plugin — andere Browser haben nichts davon.
- Es muß konkret auf einem Rechner installiert und das Regelwerk erweitert werden; ich nutze über die Woche aber drei verschiedene Rechner regelmäßig.
Zur Erklärung versuche ich nachfolgend aufzuzeigen, wie der Abruf der Webseite heise.de bei mir funktioniert:
- Der Browser ist derart konfiguriert, daß er einen Proxy verwendet (Adresse des Servers, Port 3128).
- Ich rufe heise.de in diesem Browser auf.
- Der verbindet sich auf Port 3128 auf den Server (squid caching proxy).
- squid gibt die Anfrage weiter an Port 8118 (privoxy filtering proxy) filtert sie seinen Regeln entsprechend.
- squid speichert Daten im Cache, seiner Konfiguration entsprechend, bzw. liefert aus seinem Cache, was er schon drin hat.
Die Installation von squid und privoxy erfolgt auf einem Ubuntu-System ganz regulär über apt-get install; ich gehe an dieser Stelle lediglich auf die Konfigurationsdetails ein.
/etc/squid3/squid.conf
cache_peer 127.0.0.1 parent 8118 7 no-query
http_port 3128
cache_mgr meine@mailadres.se
cache_effective_user proxy
cache_effective_group proxy
error_directory /usr/share/squid3/errors/de
auth_param basic program /usr/lib/squid3/pam_auth
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl allowed-users proxy_auth "/etc/squid3/allowed_users"
acl x-type req_mime_type -i ^application/vnd.google.safebrowsing-chunk$
acl x-type req_mime_type -i application/vnd.google.safebrowsing-chunk
http_access deny x-type
request_header_access From deny all
request_header_access Referer deny all
request_header_access Server deny all
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access User-Agent deny all
request_header_access WWW-Authenticate deny all
request_header_access Link deny all
http_access allow localhost
http_access allow allowed-users
http_access deny all
request_header_access User-Agent deny all
header_replace User-Agent Gozilla/4711.0815 (CP/M; 11-bit; 42 KByte)
cache_access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
cache_store_log /var/log/squid3/store.log
/etc/squid3/allowed_users
In der Datei steht schlicht eine Liste von Usern, die das System nutzen dürfen; geregelt wird der Zugriff dann über /etc/pam.d/squid. Kann selbstredend auch weggelassen werden, doch dann sollte der Zugang zum Proxy auf andere Arten reglementiert werden (VPN-Netz o.ä.). Man möchte ja nicht den Traffic anderer Leute über den eigenen Server schleusen, oder?
/etc/privoxy/config
user-manual /usr/share/doc/privoxy/user-manual
confdir /etc/privoxy
logdir /var/log/privoxy
actionsfile standard
actionsfile global
actionsfile default
actionsfile user
filterfile default.filter
logfile logfile
debug 1
debug 128
debug 4096
debug 8192
listen-address 127.0.0.1:8118
toggle 1
enable-remote-toggle 1
enable-remote-http-toggle 1
enable-edit-actions 1
buffer-limit 4096
forwarded-connect-retries 0
/etc/privoxy/user
Das ist der eigentlich umständliche Teil der Sache: hier geht es darum, das Regelwerk um eigene Regeln zu erweitern. Meine Vorgehensweise hierzu:
- Das Regelwerk des No-Script-Plugins exportieren und entsprechend aufbereiten.
- Diese Regeln schonmal in die Konfiguration aufnehmen.
- Dann das Debug-Fenster von No-Script aktivieren; hier sieht man sehr deutlich, was pro Seite geblockt wird – und was nicht!
- Anhand dessen läßt sich das Regelwerk nun sehr fein anpassen.
Bei mir sieht das beispielsweise so aus:
{+block{Various domains as known adservers} +handle-as-image}
.adcell.de
.adform.net
Ich habe die Einträge alphabetisch durchsortiert, um nicht den Überblick zu verlieren; Ihr müßt verstehen, daß ich Euch das vollständige Regelwerk nicht zur Verfügung stellen kann, aber sich ein eigenes Regelwerk zusammenzustellen ist reine Fleißarbeit — und glaubt mir, es lohnt sich. So sind es oftmals die g**gl*-*n*lyt*cs-Server, die sehr lange Antwortzeiten haben und die den Seitenaufbau massiv ausbremsen — auf diese Art hat man die theoretische Möglichkeit, das zu umgehen.
Die Nachteile
Auch die Nachteile einer solchen Lösung sollen nicht verschwiegen werden.
So verschleiert man natürlich überhaupt nichts, wenn man sich als User-Agent Gozilla/4711.0815 (CP/M; 11-bit; 42 KByte) ausgibt — im Gegenteil, das macht es nur leichter, ein Bewegungsprofil zu erstellen ;) Will man den Header also ersetzen, dann sollte man sich für einen 08/15-String entscheiden.
Weiter gibt es Seiten, bei denen es erwünscht ist, massenhaft kleine Bildchen zu sehen — so beispielsweise die fotocommunity.de, bei der die Thumbnails auf den Übersichtsseiten weggeblockt wurden; Abhilfe schafft hier eine Ausnahmeregel. Ausnahmeregeln habe ich in den ersten vier Betriebswochen definiert und hernach nie wieder anrühren müssen. Beispiel:
{ -filter{banners-by-size} }
.fotocommunity.de
Manche Webseiten sind auch einfach zu klug: Vimeo beispielsweise hat mich nach den ersten drei Requests einfach geblockt.
Allerdings habe ich immer zwei Browser installiert, und in meinem Fall ist es der Safari, der nicht auf die Verwendung der Proxies konfiguriert ist; sollte ich eine Seite also wirklich nicht betrachten können, kann ich sie theoretisch immer im Ausweich-Browser öffnen — wenn ich das wirklich will. Will ich aber eigentlich nie — hat immer einen Grund, weshalb sie nicht angezeigt wird (manchmal genügt ein Blick auf die Adresse).
Zur Verdeutlichung: zur Anonymisierung ist das Setup in dieser Form nicht gedacht; denn die Requests kommen ja dann fortwährend von der Server-IP (die in der Regel statisch ist) und nicht mehr von Eurem DSL-Anschluß (dessen IP sich ja zumindest theoretisch regelmäßig ändert).
So, nun viel Spaß beim Selberbasteln. Und berichtet mal, ob’s funktioniert hat! :D


Facebook
Twitter
Google
Email
RSS
Ich sehe bei einem Heimnetzwerk keine Vorteile einer Proxylösung, wenngleich sie durchaus sexy ist. Squid hatte ich kurzfristig erworgen, um eine ‘erzieherische’ Maßnahme umzusetzen, es wurde mir aber zuviel Arbeit und irgendwie habe ich den filtering.proxy nicht anständig zum Laufen bekommen, also habe ich es gelassen.
Mein Setup: Ein Firefox-Profil auf meine 4 Rechner/Umgebungen kopiert und Lesezeichen/Passwörter mit eigenen externen Server synchronisiert. NoSpcript und Adblock verbergen aus dem Stand nahezu 95% allen Werbemülls. Was ist an einem Firefox-Plugin per-se auszusetzen?
Ah so, ja ich bin neu hier, zum einen hat mich das rebhuhn hier hin verleitet und einen weiblichen SysAdmin trifft man nicht alle Tage (no offense).
Hallo Rüdiger,
dann mal herzlich willkommen auf dem Tagebuch der localwurst! — schön, daß das rebhuhn Dich hierher gelotst hat :-)
Zu Deinen Fragen: ich suche eigentlich immer nach serverbasierten Lösungen, da ich, wie gesagt, regelmäßig an drei verschiedenen Rechnern (und Standorten) arbeite. Desweiteren suche ich nach Lösungen, die möglichst frei stehen — im konkreten Fall also möglichst browserunabhängig sind, und das ist die Lösung mit Firefox-Plugins nun nicht.
Ich gehe bei meinen Überlegungen nicht (mehr) von Heimnetzwerken aus; es macht Spaß, die Möglichkeiten der »erzieherischen Maßnahmen« auszutesten. Und ich gebe Dir völlig recht, daß ein solches Setup für dem Heimanwender Overkill ist, aber man lernt doch auch eine Menge dabei (ging mir jedenfalls so).
Hey :)
Ich wünsche dir einen guten Rutsch ins neue Jahr. Lass es krachen und sitz nicht zu lange vor dem Rechner an Silvester :P Also das was du in diesem Artikel geschrieben hast, sind für mich bömische Dörfer ^^ Respekt, dass du dich damit so gut auskennt :P
Der Lerneffekt ist sicher erheblich und wer weiß wozu man das brauchen kann.
OT: Du kennst Dich nicht zufällig mit einem Upgrade Apache 1.3.41 auf 2.2.27 auf Debian Lenny aus, PHP 5 und MYSQL 5 laufen schon, leider noch ein olles Confixx 3 auch. Meine Lernkurve lutscht gerade ziemlich, ob diverser Zickereien die der Apache 2 nach dem Upgrade bereitet, weil er die httpd.conf moniert, ich solle diverse mods entfernen und und und. *grmpf* Ach was labere ich Dich damit voll, ich muss/will es ja selbst lernen.
Alles Gute fürs neue Jahr.
[hab' nur in die kommentare gelinst, weil ich mich damit überhaupt nicht!! auskenne, und schoon wird über mich geredet ;)... ]
@Swen: Vielen Dank für die guten Wünsche! Und schön, daß Du Dir die Artikel sogar dann anschaust, wenn Du sie nicht verstehst :D
@ruediger: Confixx klingt ja irgendwie nach »altem 1&1-Server« — da hatte ich nur am Rande mit zu tun. mods entfernen geht ja an sich über a2dismod, und was er an der httpd.conf anmeckert… nunja… da müßte ich nun die Fehlermeldungen kennen :) Wenn man apache2 als Paket installiert, ist die Konfig ja inzwischen aufgesplittet (httpd.conf, ports.conf, apache2.conf,...). Und: Dir auch viel Glück im neuen Jahr!
@rebhuhn: Hehe, ja, man muß Augen und Ohren überall haben… :D
@localwurst
nope, kein 1&1 aber schon seit 4 Jahren in Betrieb (aktuelle uptime 192 days) :) Ich sag ja, da wartet Arbeit auf mich. Danke für die Hinweise und alles Gute für 2011.
@rebhuhn
erwischt? :) Alles Gute auch Dir.
OT: Warum verschwindet meine Mail-Adresse nach dem kommentieren, Name und WebSite bleiben?
@ruediger: die Mailadresse sehe ich nur im Backend; wenn ich die auf dem Blog anzeigen lassen würde, würden die Spam-Bots dieser Welt sich ja freuen!
@localwurst
OT: nein, ja klar, sorry für die unpräzise Frage. Der Name und die URL landen in einem separaten Cookie, die Mail-Adresse nicht. Beim nächsten Besuch fehlt diese also, nur der Name und die URL stehen wieder. Ungewöhnlich, deswegen die Frage/der Hinweis. +klugscheissmode_off+