|
So konfiguriert man den verbreiteten Open Source Proxy "Squid" als anonymen Proxy:
Logging anonymisieren
Das ist relativ einfach, wenn man es weiss (und eine einigermaßen
aktuelle squid-Version, d.h. ab 2.5, verwendet), es genügt eine Zeile
in der Konfigurationsdatei (überlicherweise squid.conf, meist in /etc
oder /etc/squid, evtl. aber auch z.B. in /usr/local/etc): client_netmask 255.255.255.0
z.B. wenn man ein Subnetz 192.168.0.x oder 172.20.20.x für die
zu schützenden IPs persönlich zuordenbarer clients verwendet. Das
Ergebnis im Log: die letzte Stelle, die für die Zuordnung alleine
maßgeblich ist, wird für alle clients auf 0 gesetzt, d.h. anonymisiert.
Anmerkung 1: angenommen, die privaten clients befinden sich
z.B. in 192.168.0.n, d.h. haben Adressen von 192.168.0.1 bis
192.168.0.255 o.ä., und man hat weitere Adressen wie z.B. 192.168.1.x
o.ä. in der DMZ, in der i.a. nur von admins updates via proxy
eingespielt werden, dann beschränkt obige Anonymisierung gezielt nur
die schützenswerten Adressen, man kann durchaus noch sehen, ob in der
DMZ irgendwelchen nicht von den Admins gewünschten http-Kommunikationen
laufen (z.B. XSS auf Webservern o.ä.).
Anmerkung 2: die Versionen bis 2.4, die sich genauso
konfigurieren lassen, hatten ein (eher geringes) information leak in
Bezug auf Logging zusätzlicher Informationen in Extra-Logs (z.B. die
oft durchaus interessanten user agents, gibt dies doch ein Bild von der
Nutzung diverser Browser). Dort wurden nämlich die IPs nicht maskiert!
Zwar werden die timestamps im normalen und z.B. agent log
unterschiedlich geschrieben und bei mehreren Usern zur gleichen Zeit
ist so auch keine Zuordnung möglich, was aber bei einzelnen Usern doch
die Anonymisierung aufhebt.
Informationsleck zu besuchten Seiten abdichten
Mindestens ebenso unerwünscht wie das interne Default-IP-Logging ist
die Zurückverfolgbarkeit von besuchten Websites aus auf ursprüngliche,
interne IP-Adressen von (von dort gesehen) "hinter" dem Proxy.
Das lässt sich ab squid V2.5 (bis V2.4 hieß die Direktive
anonymize_headers mit etwas verkürzter Syntax) so in der obigen
Konfigurationsdatei erreichen:
visible_hostname proxy.example.com
wenn proxy der hostname und example.com der (interne oder auch
nicht) DNS-Eintrag des Proxy Servers ist. Außerdem sind folgende Regeln
für den Header Zugriff erforderlich bzw. empfehlenswert:
header_access X-Forwarded-For deny all
header_access Via deny all
verbieten IP-Informationen im Header, aus denen Rückschlüsse über die beteiligten internen IPs möglich sind.
header_access From deny all
header_access Server deny all
header_access WWW-Authenticate deny all
header_access Link deny all
unterbinden weitere information leaks: in verschiedenen Abfragen
ergänzt squid nämlich sonst weitere interne IP Adressen im Header, z.B.
für links etc. Das braucht die besuchte Seite nicht zu wissen und wird
daher ebenfalls unterdrückt.
Wer möchte kann noch eine Agent Anonymisierung einbauen, die
verhindert, dass die Site den konkreten Browsertyp ermitteln kann (nur
http, vor JS sei hier ausdrücklich gewarnt! s.u.), vor
Kollateralschäden bei MSIE only sites sowie evtl. fehlerhafter
ECMAscript ("JavaScript" oder JS) Ausführung aufgrund der evtl. falsch
gestellten Browserweiche sei aber ausdrücklich gewarnt (von der
Verwendung des MSIE ist ohnehin aufgrund seiner klaffenden
Sicherheitslöcher dringend abzuraten):
header_replace User-agent Mozilla 5./0 (compatible) Opera or Gecko
ist z.B. eine nicht existierende, sozusagen den kleinsten
gemeinsamen Nenner der Gecko-basierten Browser (Firefox,
SeaMonkey/Mozilla etc.) sowie von Opera bildende Agent Maske. Sie wirkt
aber nur, wenn zusätzlich (vgl.o.) die Regel
header_access User-agent deny all
angegeben wird!
Anmerkung 1: es gibt nicht nur aus Sicherheitsgründen
(overflows/exploits bzw. XSS=cross site scripting) den Zwang,
Internetbrowser aktuell zu halten, teils sind es ebenfalls
Informationslecks zu besuchten Seiten, die mit solchen Updates behoben
werden! Außerdem empfiehlt sich stets die default-Abschaltung von
Cookies, JavaScript und IFrames, die oft neben Sicherheitslöchern auch
unerwünschte Informationen abfragen lassen, was in Opera sehr einfach
möglich ist, indem sich diese gezielt auf bestimmten,
vertrauenswürdigen Seiten wieder einschalten lassen, obwohl es generell
für alle anderen aktiviert bleibt. Bei Firefox sind dazu Add-ons nötig.
Auch Flash Inhalte sind hier gefährlich, denn sie können ebenfalls JS
(2) ausführen! (Flashblock für Firefox ist hier sinnvoll, evtl. in
Opera den plugin gar nicht erst installieren)
Anmerkung 2: auch wenn man squid so sorgfältig als anonymen
Proxy konfiguriert hat, hängt der Grad der Anonymität nicht
unwesentlich von der Zahl der Nutzer ab — mehr Nutzer zur selben Zeit
sind hier besser, haben aber natürlich andererseits einen negativen
Effekt auf die Latenz und Übertragungsrate pro User. Zum Nulltarif ist
dies eben nicht zu haben.
Quelle |