Bescherm uw privacy met Privoxy

>Index <

Let op: Privoxy voor OS/2 heeft moeite met SMP kernels



Wie op het internet surft, bezoekt aldoor sites zonder het te weten. Sites die tellers herbergen en uw surfgedrag volgen. En sites die u ongevraagd "klik hier" surfadvies geven. U klikt op het een, maar krijgt tevens het ander. Bijvoorbeeld een popup van een sex site die u niet wenst. Door die ongevraagde links lopen uw privacy en reputatie gevaar.

Wie onder Mozilla op een willekeurige webpagina naar View / Page Info / Privacy / Scripts kijkt, ziet vaak javascripts die naar naar andere servers verwijzen. Als u zo'n URL selecteert en op Policy klikt, zou u misschien iets te weten kunnen komen over het privacy beleid van de niet bewust door u opgevraagde URLs. Als het goed is, maar dat komt zelden voor, verschijnt er een URL met het privacy beleid.

Zo geeft http://www.doubleclick.com/us/about_doubleclick/privacy/ DoubleClicks privacy statement. Ik ga die nu niet vertalen. Maar zaken die DoubleClick niet zegt te doen geven wel een indruk van wat er allemaal mogelijk is. Doubleclick belooft uw gebruikersnaam, adres, email adres en telefoonnummer niet te gebruiken "to deliver Internet ads" Maar wel de gegevens van uw browser en "Web surfing to determine which ads to show your browser". Maar wat bedoelen ze daarmee? Even verderop hebben ze het over de opt-out optie van de "DoubleClick ad-serving cookie, so that no unique information or number is associated with your computer's browser if you choose."

Ik kan nog verder doorgaan, maar dat "if you choose" is het punt waar het om draait. Als een website een gespecialiseerde derde partij inschakelt om uw surfgedrag te volgen en om uw gegevens op te slaan dan gebeurt dat stiekem op de achtergrond, zonder dat u beseft dat dit gebeurt. Pas als u ze op het spoor komt, vertellen ze u dat u er niet aan mee hoeft te doen. Maar dan is het kwaad al geschied.

De Internet Junkbuster

Vele jaren was de Internet Junkbuster (IJB) van "Anonymous Coders" en de Junkbusters Corporation de standaard op het gebied privacybescherming op het internet. De Internet Junkbuster was ontworpen om het volgen van uw surfgedrag tegen te gaan. Hiertoe nestelde de Junkbuster proxy zich tussen browser en webserver in om de opgevraagde HTML de "junk" te filteren. Door het weren van de banners en cookies van volgdiensten (tracking services) kon u niet alleen sneller surfen, maar namen ook uw veiligheid en privacy toe.

De insteek van de zich als consumenten organisatie opwerpende Junkbusters Corporation (www.junkbusters.com) was openheid tegenover het heimelijke gedoe van commerciële webgiganten. De IJB server was niet van een GUI afhankelijk. Er kwamen Internet Junkbusters voor vrijwel alle besturingssystemen. OS/2 versies gebruikten de EMX bibliotheek. De Linux ports kwamen van de Duitser Stefan Waldherr. Actuele filter scripts werden door slimme IJB gebruikers ("Anonymous Coders") opgesteld en konden op het web worden gevonden.

In de loop der tijd kreeg de Internet Junkbuster steeds geraffineerdere filters om banner scripts toe te staan, te manipuleren dan wel te weren. Maar net als de spammers deden commerciële webontwikkelaars hun best om privacy regels te ontlopen. Botte webmasters stelden het onveilige Javascript domweg verplicht. Wie Netscape's of Microsofts versie van het javascript uitzette kreeg een vermanende waarschuwing en/of onbruikbare opmaak voor de kiezen, zodat hij niet verder kon.

Nu bestond de kunst van het Junkbuster Proxy filter erin dat het de in de HTML verstopte links naar tellers, popups en en banners onschadelijk maakte, maar de browser toch doorgang verlenen kon. Door de java scripts online te vertalen surfde de Junkbuster proxy door de mazen van de scripting wetten heen. En dat is iets dat u met het afwisselend aan- of uitzetten van Java script niet kunt doen. Want dan wordt het een alles of niets gebeuren. Daarnaast kon de Junkbuster de informatie die uw browser aan de webserver verzond aanpassen, zodat de browser zich bijvoorbeeld als User-Agent Nutscrape/1.0 (CP/M; 8-bit) kon aanmelden. Of als een recente IE versie om toch maar door te mogen gaan.

User-Agent Nutscrape/1.0 (CP/M; 8-bit)

Wat is de zin hiervan? Webprogrammeurs vragen de browsergegevens op om u "de juiste" HTML en scripts te versturen. Maar als uw browser zich vrolijk aanmeldt met: "dit ben ik en dat staat er op mijn besturingssysteem", dan weet ook een scriptkiddie of virus hoe hij zijn kunstjes kan vertonen.

Omdat uw software altijd veiligheidsgaten kent is het wijs om zo min mogelijk informatie prijs te geven. Veel beveilingslekken vallen immers in de categorie "kritisch"; wat erop neer komt dat ze iedereen toegang tot uw computer kunnen verschaffen. Met zo'n gat fungeert uw complete besturingssysteem (!) als een plugin van de browser. Scanners van hackers en wormen gaan naar die gaten op zoek. Zo'n lek wordt dan uw achilleshiel. Uw PC wordt een uitvalsbasis voor illegale activiteit.

Terecht sommeert Microsoft u dan om onmiddellijk te patchen. Sommigen doen dit, maar velen niet. Velen vertrouwen blindelings op firewalls en virusscanners waarvan ze de handleiding niet eens kennen. Bijgevolg klikken ze Yes als een worm op de deur klopt. Anderen klagen dat Windows na iedere patch langzamer wordt.

Op http://privacy.net/analyze/ kunt u nagaan wat uw browser en besturingssysteem zoal doorgeven. Vooral java script (js) geeft veel informatie door. Onder Mozilla kunt u het Javascript nog uitzetten, terwijl de Java en Flash blijven lopen. Maar onder Windows met zijn Universal Scripting Host worden zelfs Java "zandbak" applicaties aan onveilige scripttalen gekoppeld.

Het Sourceforge project Privoxy

Door de vercommercialisering van het web ontstond steeds meer behoefte aan technieken om het gedrag van webbrowsers te beïnvloeden. De webserver leveranciers Netscape en Microsoft beconcurreerden elkaar op features, waarbij hun financiële belang in de servermarkt zwaarder woog dan de privacy van de bladerende consument. De XML standaarden ontwikkelden zich stormachtig en chaotisch. Sneller dan een webmaster kon bijbenen. Netscape en Junkbusters Corporation legden het loodje.

De laatste versie van de Internet Junkbuster (versie 2.0.2) werd in 1998 onder de GPL uitgebracht. Als eerste bracht Stefan Waldherr een verbeterde versie uit. Deze versie verving banners door een minigif en weerde pop-up vensters. Met de hulp van anderen konden regelmatig patches verschijnen. Maar omdat het Junkbuster project te groot werd, besloot Waldherr het naar de open source hoster Sourceforge te verhuizen. Hier kunnen groepen mensen op een gestructureerde manier aan open source projecten werken. Het stond bekend als het Internet Junkbuster SWA (IJBSWA) project, waarbij SWA op Stefan Waldherr slaat. In augustus 2002 werd de Internet Junkbuster 3.0 tot de privacy-enhancing proxy Privoxy omgedoopt.

HTTP en MIME

Het internet bestaat uit allerlei computers en besturingssystemen. Van 7 bits "legacy" systemen tot supercomputers. Maar omdat vrijwel ieder besturingssysteem met US ASCII kon omgaan, werd de informatie bij voorkeur als 7 of 8 bits US ASCII uitgewisseld. Vandaar de op tekst gebaseerde protocollen als email, telnet en news.

Voor de uitwisseling van binaire bestanden werd het File Transfer Protocol (FTP) gebruikt. Daarnaast konden via het Multipurpose Internet Mail Extensions (MIME) protocol (1982) binaire en niet US ASCII tekstbestanden per email verzonden worden. Ze werden via een "omgekeerde" base 64 compressie in 7 of 8 bits US ASCII omgezet en als MIME aanhangsels verzonden. Aan de hand van MIME hoofden kon een base64 decoder ze weer in hun originele (binaire) staat herstellen.

--qmhxnjp
Content-Type: audio/x-midi; name=Log.mp3.scr
Content-Transfer-Encoding: base64
Content-ID: <duwq>

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQ etc

Hier gaat het trouwens niet om een MP3 audiobestand, maar om een Yaha worm.

Het World Wide Web (WWW) zoals dat wij dat nu kennen kwam begin jaren negentig op. Het was gebaseerd op HyperText. Dit is de term die Ted Nelson lanceerde voor "non-sequential writing"; oftewel teksten die over meerdere lokaties verdeeld zijn (1965). In een van begin tot eind te lezen boek zou u bij [Zie pag 333 over Ted Nelson] naar pagina 333 moeten bladeren, maar met hypertekst kan dat met een muisklik of een Return. Pagina 333 verwijst dan naar een bladwijzer (bookmark) in een bestand. En op het WWW kan dat bestand overal ter wereld zijn. Nu is het vanzelfsprekend, maar toen was het een jongensdroom.

In 1989 had Tim Berners-Lee van het Zwitserse European Laboratory for Particle Physics (CERN) een visie van een grafische browser die de teksten en plaatjes van overal ter wereld in een klap kon samenvoegen (parsing) in een grafische omgeving. Hij stelde voor om de email standaard MIME ook voor deze hypertext browsers te gebruiken. Via een statusloos protocol zou de ongebonden browser vrij van de ene naar de andere lokatie moeten kunnen springen.

Hiertoe ontwierp hij voor het CERN het hypertext GUI protocol, dat als eerste in Steve Jobs NeXT OS (1991) gedemonstreerd werd. Later zou het als Hypertext Transfer Protocol (HTTP) bekend staan. Via de in de Hypertext Markup Language (HTML) gedefinieerde opmaakregels konden de bestanden op de juiste plaats worden weergegeven. De op de Universiteit van Illinois (telnet, Eudora) voor het National Center for Supercomputing Applications (NCSA) ontwikkelde Mosaic webbrowser (1993) werd de killer applicatie van de jaren negentig. Marc Andreessens Mosaic-Killer "Mozilla" (later "Netscape" geheten) en MS Internet Explorer waren op Mosaics techniek gebaseerd.

De in de HTML genoemde bestanden worden aan de hand van hun MIME (sub)typen (bijv. image/png) herkend (RFC 2045). Bij een volledige HTTP aanvraag wordt dit expliciet aangegeven. Bij een onvolledige HTTP aanvraag biedt de bestandsextensie enig houvast. Maar niet ieder tekst.doc is van het type application/msword. Vandaar dat een webserver ook het MIME type kan doorgeven.

HTTP proxies werken met tekststromen

Een HTPP proxy is zowel een HTTP client als een server. De proxy bedient de webclients door namens hen gegevens bij webservers op te halen. Omdat de proxy als HTPP client slechts gegevens opvraagt, hoeft hij zelf geen grafische eigenschappen te hebben. De weergave van de in de tekststromen verstopte MIME typen is een taak van de browser en zijn plug-ins.

Webserver <=HTTP=> Proxy (filter) <=aangepaste HTTP=> Webclients (aangepaste weergave).

Maar omdat het bij HTML om 7 bits ASCII tekstbestanden gaat, kan de proxy de inhoud "on the fly" bewerken. Voor binaire bestanden is dat lastig (vereist veel rekenkracht en OCR software), maar het veranderen van een javascript of tag is een koud kunstje.

Netwerkadresvertaling en interfaces

Omdat HTTP via TCP/IP verzonden wordt is de enige voorwaarde voor de goede werking van een proxy dat er een doorgaande "route" tussen de webserver en de proxy en uw browser en het IP adres van uw proxy op het lokale netwerk bestaat. Maar uw browser hoeft niets van de door de proxy gebruikte internet IP adressen te weten. De proxy regelt de naamresolutie. En dat kan ook vanaf localhost of een privaat adres als 192.168.1.1.

De proxy vraagt namens de browser bestanden bij webservers op. De hostnaam in de URL wordt door de proxy vertaald in een geldig IP adres. Hiertoe moet de proxy toegang tot uw DNS hebben. Maar alleen de proxy. Het staat u vrij om voor uw LAN een DNS server (of het hostbestand) te gebruiken die alleen lokale adressen kent, als u maar in de proxy de DNS IP adressen van uw Internet Service Provider (ISP) opgeeft.

Hij analyseert de HTTP verzoeken (van wie komt het, voor wie is het bestemd, is daar toestemming voor gegeven) en past op zijn minst de IP adressen aan de lokale situatie aan (netwerkadresvertaling). Zo zal een proxy die op poort 8118 naar HTTP verzoeken van browsers op het 192.168.1. netwerk luistert, het FROM: localhost in de HTTP aanvraag veranderen in uw publieke internetadres. En omgekeerd zal de proxy het TO: (uw publieke IP adres) in de van de server ontvangen berichten terugvertalen naar het veilige LAN adres van uw browser.

Standaard luistert de Privoxy alleen naar poort 8118 op uw eigen computer: listen-address localhost:8118. Hiermee kan de proxy alleen webclients bedienen die op dezelfde computer draaien. De "localhost" interface is geschikt voor gebruikers met en zonder netwerkaart. Het maakt niet uit welke IP toegangsmethode (ADSL, modem, ethernet) u gebruikt. Via het TCP/IP notebook worden de localhost en ethernetkaartinterface interface ingesteld. Maar een proxy zal ook met een PPP of SLIP dial-up account werken.

Door er "listen-address 192.168.1.5:8118" van te maken luistert Privoxy naar HTTP verzoeken op poort 8118 op 192.168.1.5 netwerkaart. Iedere LAN gebruiker die de 192.168.1.5 netwerkkaart (interface) via TCP/IP kan benaderen, kan dan via de proxy browsen. En in alle gevallen (met een geldige internetverbinding) zal de default localhost op poort 8118 voldoen.

webservers <=> proxy (OS/2) <=> webclients (Windows).

Een proxy kan als firewall fungeren bij LAN gebruikers die wel over een TCP/IP netwerkverbinding beschikken, maar niet over een default route of DNS . De centrale netwerk gebruikers kunnen dan onderling netwerkspelletjes spelen en via de proxy browsen, maar ze missen een directe verbinding met het internet. Mochten ze per abuis een Trojaans paard of virus installeren, dan zal die hoogstens het lokale netwerk rechtstreeks kunnen infecteren. Maar via een HTTP proxy de controle van de PC overnemen is onmogelijk. Om die reden zullen de niet via de HTTP proxy door te sluizen protocollen als FTP het ook niet doen. Gelukkig kunnen RealPlayer en veel online internet updates kunnen wel met HTTP proxies werken..

Bedenk echter wel dat de computer die de proxy draait, zich wel in de gevarenzone kan bevinden. Want de proxy heeft natuurlijk wel toegang tot de DNS en een default route (naar het internet) nodig. Dus is het wijs om de proxy te beschermen. Hoe gaat dat?

1). Door alleen naar lokale adressen te luisteren, zal de proxy HTTP verzoeken vanaf het internet negeren. Op het internet zal hij alleen als HTTP client optreden.

2). Iemand die uw poorten scant, kan van de OS/2 TCP/IP stack nog wel berichten ontvangen. In dit geval dat de server op poort 8118 niet reageert. Een hacker weet dan dat u iets te verbergen hebt, maar kan er (nog) niet bij. Maar hij zou een mailtje met virus naar uw IP adres kunnen sturen.

3). Om uw PC helemaal te verbergen (Stealth) moet u een packet filter firewall installeren. Denk hierbij aan de Injoy, een hardware router-firewall of aan de 32 bits TCP/IP OS/2 firewall.

4). Schakelt het packet filter (Injoy , router) al netwerkadresvertaling in, dan moet u bedenken dat LAN clients met een default route ook buiten de proxy om het internet kunnen bereiken. Dit zal vooral het geval zijn als u ze via een DHCP server aan die gegevens komen. Om hen te dwingen de proxy te gebruiken geeft u ze een vast IP adres en schakelt hun default route en DNS handmatig uit. En dan weet u bovendien wie wat doet.

Filters en toegangscontrolelijsten

Door de netwerkadresvertaling verandert de proxy tekststromen die tussen webservers en webclients lopen. Maar daarnaast kan een proxy ook de inhoud van de HTML veranderen. Zo zal Privoxy's SwA filter de in de HTML bestanden verstopte TAGS doorzoeken naar ongewenste banners en tellers. Onder Mozilla ziet u ze terug in de tabbladen van View / Page Info.

Dergelijke verwijzingen worden eruit gehaald en door onopvallende blokjes en foutmeldingen vervangen:

Privoxy blocked http://ad.nl.doubleclick.net/...
See why or go there anyway.

Door op "See Why" te klikken, legt de webinterface van Privoxy u zijn ingewikkelde filterregels uit en met op "Go there anyway" gaat u op eigen risico door.

In dit geval werd een banner op webwereld onderschept. Ik heb de proxy uitgezet om de geblokkeerde banner te tonen. Opvallend is de opmerking dat HCC leden/abonnees minder betalen. Blijkbaar heeft ad.nl.doubleclick.net al opgemerkt dat ik via hccnet.nl surf. Ze past haar reclame hierop aan. Op zich is daar niets mis mee, maar ik vroeg niet om die exclusieve reclameboodschap. En al helemaal niet als ze tot stand komen via databases waar ik geen zeggenschap over heb. En dat is nu net wat Privoxy (u moet hem wel aanzetten) weert.

Installatie van privoxy

Ik kan u hier veel meer over vertellen, maar het is veel leuker om er zelf mee aan de slag te gaan. Gelukkig is Privoxy snel en gemakkelijk te installeren. Voor OS/2 zijn er Warpin pakketten, voor Linux rpm's en voor Windows exe installers. Bij de OS/2 installatie wordt een reflectie van privoxy in de startup folder geplaatst. Maar een opdrachtregel is startup.cmd is ook goed.

Mozilla en uw andere browsers stelt u op de proxy in (default is localhost). Mozilla stelt u met Edit / Preferences /Advanced /Proxy onder HTTP op localhost 8118 in. Netscape met Bewerken /Voorkeuren /Geavanceerd /Proxy's. Om te zien wat de proxy doet, kunt u het Privoxy venster openen. Met Mozilla's Preferences Toolbar hebt u nog meer controle.

Voor gebruik op het netwerk moet u de listen en het permit-access adresssen in het bestand config aanpassen.

# listen-address localhost:8118
listen-address 192.168.1.5:8118
permit-access  192.168.1.0/24

Daarnaast zou ik de enable-remote-toggle op 0 (uit) zetten: als hij aan staat (1) kan een gebruiker via http://config.privoxy.org Privoxy's filter uitzetten. Hetzelfde geldt voor de optie om het filter op afstand te passen. Zet die op een niet vertrouwd netwerk liever uit.

enable-remote-toggle 0
enable-edit-actions 0

Privoxy houdt een logbestand bij. Maar zal met onderstaande instelling slechts naar de console schrijven. Dat is net mode co132,50 wel zo leuk.

# logfile logfile

Privoxy valt ook met de caching proxies Squid of SmartCache te gebruiken. In scache.cnf stelt u privoxy als "parent" in:

http_proxy localhost 8118

Hiermee gaan de binnenkomende tekststromen eerst door het privoxy filter, voordat ze in de cache opgeslagen kunnen worden. Voor Squid is het wat ingewikkelder. Zie de link naar mijn homepage.

Privoxy's webinterface

Als alles werkt kunt u op Privoxy's webinterface (http://config.privoxy.org) nagaan wat Privoxy doet.

Onder "View the request headers" kunt u nagaan wat uw browser (en proxies) standaard doorgeven en onder "View & change the current configuration" de user configuratie aanpassen. Maar voordat u dat doet moet u eerst weten of u dat wilt.

Daarom kunt u onder "Look up which actions apply to a URL and why" testen welke filtersregels op een site losgelaten zijn. Een + voor de regel staat voor aan en een - staat voor uit. Door op het item te klikken komt u in de online help. Zo bevat het default.filter standaard een item: +filter{nimda}, want niemand wil een nimda virus. Maar hide-user-agent staat standaard uit (-). Dit vanwege het feit dat veel websites hun opmaak hierop afstemmen. Veel popups worden +filter{popups} voorkomen, maar het brute kill-popups staat standaard uit. De reden is dat veel winkels en banken popup vensters gebruiken en "killing only the unwanted pop-ups would require artificial intelligence in Privoxy".

De keus om de User agent soms te faken (sommige sites houden niet van Mozilla) en pop-ups en Java-script tijdelijk helemaal uit te zetten kunt u dus beter zelf maken. Hiervoor biedt Mozilla's Preferences Toolbar een prettige interface die uitstekend met Privoxy te gebruiken is.



Ted Nelson and Xanadu

Privoxy Home page

Project Page for Privoxy on SourceForge

Alles over uw privoxy configuratie

Junkbusters homepage

Squid onder OS/2

Mozilla Preferences Toolbar

Oops! proxy server homesite : een multitreaded caching proxy met OS/2 binaries (Hobbes).

http://privacy.net/analyze

De Privacy statement van Doubleclick



>Index <

>

>