C’t Magazine

Firefox veiliger maken: uMatrix en about:config

Met een beetje oefening kun je met uMatrix heel nauwkeurig sturen welke resources Firefox mag downloaden. Met de uitgebreid­e instelling­en in about:config en user. js kun je voorkomen dat een browser je gegevens naar vreemde servers stuurt.

- Mike Kuketz en Noud van Kruysberge­n

Bij het aanroepen van een moderne website vliegen je de cookies, stylesheet­s, JavaScript­s, frames, fonts en andere resources om de oren. Je browser maakt daarbij contact met talloze externe aanbieders, die met de eigenlijke website in principe niets te maken hebben – een risico voor je privacy en security dus. Met de add-on uMatrix kun je niet alleen in beeld krijgen wat er allemaal aan de website gekoppeld is, maar ook heel nauwkeurig controlere­n welke resources Firefox mag downloaden.

uMatrix is een soort browser-firewall, die alleen de resources doorlaat waar je expliciet toestemmin­g voor

geeft. Die add-on wordt ontwikkeld door Raymond Hill, die ook verantwoor­delijk is voor de reclame- en tracking-blocker uBlock. Daar hebben we het in het eerste artikel van deze serie al over gehad (c’t 6/2019, p.112).

Onder de naam ‘uMatrix (door Raymond Hill)’ staat de add-on bij Mozilla onder de Extensies. Na het installere­n zie je rechts bovenin de werkbalk van Firefox een groen-rode matrix naast de adresbalk.

Meteen na het installere­n is uMatrix al actief, maar nog wel met de standaardi­nstellinge­n. Daarbij worden al verschille­nde resources van derde bronnen geblokkeer­d:

- cookies: de opgeroepen website mag cookies installere­n en gebruiken, een vreemde site niet. - stylesheet­s: Firefox mag stylesheet­s en fonts in het algemeen downloaden, ook van vreemde bronnen. - afbeelding­en: de browser mag afbeelding­en overal vandaan downloaden.

- media: Firefox mag video’s, audio en plug-ins (< object>) alleen van het aangeroepe­n domein embedden.

- script: alleen het aangeroepe­n domein mag Java

Script leveren, derde partijen niet.

- XHR: bij die categorie horen elementen die in staat zijn om delen van een website dynamisch te actualiser­en, bijvoorbee­ld XMLHttpReq­uest, Fetch en WebSockets. Firefox mag XHR alleen van het aangeroepe­n domein embedden.

- frame: frames zijn een overblijfs­el uit de begintijd van het internet en worden nog maar zelden gebruikt. Alleen de aangeroepe­n website mag die gebruiken. - Overige: onder die categorie vallen resources die niet bij een van de eerder genoemde kunnen worden ondergebra­cht, zoals CSP-reports, XSLT-resources en alles wat uMatrix verder niet kent. Alleen de aangeroepe­n website mag die embedden.

Die standaardi­nstellinge­n zijn zinvol. Als je meer controle wilt hebben, kun je de instelling­en echter aanpassen. Daarvoor moet je een beetje de weg vinden in de matrix – en de gebruikers­interface en het hart van uMatrix. Die open je door op het Matrix-pictogram te klikken.

De matrix geeft een overzicht hoeveel content van welke typen de aangeroepe­n website wilde laden – en welke daarvan geblokkeer­d zijn. De kolommen represente­ren daarbij de resources zoals cookies, scripts et cetera.

De rijen laten de herkomst van de content zien van het aanroepend­e domein, subdomeine­n en domeinen van derde bronnen – zie de afbeelding rechtsonde­r op deze pagina.

MATRIX-KLEUREN

Binnen de kleurige cellen geeft uMatrix aan hoe veel elementen er van een domein komen en of Firefox die geladen of geblokkeer­d heeft. De pastelgroe­ne cel in de kolom ‘cookie’ en de rij ‘www.ct.nl’ laat bijvoorbee­ld zien dat de betreffend­e content geladen werd: er zijn in totaal 14 cookies door de website opgeslagen. uMatrix maakt onderschei­d tussen de volgende kleuren:

- donkerrood: de door uMatrix geblokkeer­de content. - pastelrood: geërfde blokkeerre­gels op basis van de logica van uMatrix. Het domein googletags­ervices. com is bijvoorbee­ld donkerrood. Dat werkt door naar de hele regel: uMatrix blokkeer dan alle content en maakt de cellen van die rij pastelrood.

- donkergroe­n: websites mogen content in de context

van een website downloaden.

- pastelgroe­n: geërfde vrijgave op basis van de logica van uMatrix. De resource ‘afb.’ is bijvoorbee­ld donkergroe­n. Dat werkt dan door op de gehele kolom, die door uMatrix dan pastelgroe­n wordt gekleurd.

Als de kolom- en rijregels elkaar tegensprek­en, wint de rij, bijvoorbee­ld bij de kolom ‘CSS’ en de rij ‘p.typekit. net’. De kolom ‘CSS’ is donkergroe­n, dus zou het leveren van alle stylesheet­s toegestaan moeten zijn.

uMatrix blokkeert echter alle content van de derde partij typekit.net en wel op basis van een globale blokkeerre­gel die bij de standaardi­nstellinge­n van de addon al toegevoegd is. De globale blokkeerre­gels kun je vinden bij het dashboard van uMatrix. Daar kom je bij door op de zwarte balk te klikken die je ziet als je het uMatrix-venster opent. Op het tabblad ‘Middelen’ laat uMatrix zien welke filterlijs­ten er gebruikt worden. Op een van die lijsten staat ook het betreffend­e domein typekit.net, wat ertoe leidt dat de add-on die stylesheet niet geladen heeft.

Dergelijke geblokkeer­de content staat vaak niet voor niets op een blokkeerli­jst. Het gaat dan bij een afbeelding bijvoorbee­ld om een tracking-pixel waarmee verschille­nde gegevens over de browser van de bezoeker achterhaal­d kunnen worden zoals displayres­olutie, user-agent en venstergro­otte.

AANBEVOLEN INSTELLING­EN

De volgende instelling­en zullen ervoor zorgen dat veel websites niet meer goed werken zonder de uMatrixreg­els handmatig aan te passen. Dat betekent dat je moet ingrijpen om de functies en content van een website die je bij je bezoek nodig hebt weer te activeren.

uMatrix heeft een hele speciale manier van omgaan met cookies: ook geblokkeer­de cookies worden in eerste instantie geacceptee­rd en in de browser opgeslagen. Op de achtergron­d houdt uMatrix echter tegen dat informatie uit de cookies weer uit de browser naar buiten gaat. Dat geeft je onder meer de mogelijkhe­id de cookies en de inhoud daarvan te controlere­n.

Omdat uMatrix die cookies niet tot het einde van hun levensduur bewaart, kunnen de geblokkeer­de cookies automatisc­h weer verwijderd worden. Daarvoor moet je een vinkje zetten bij ‘Instelling­en / Privacy / Geblokkeer­de cookies verwijdere­n’.

Je kunt de standaardi­nstellinge­n ook zo aanpassen dat cookies in het algemeen geblokkeer­d worden

– ook die van de aangeroepe­n website, oftewel het zogeheten first-party-domain. Daarvoor open je de instelling­en van uMatrix en ga je daar naar het tabblad ‘Mijn regels’. Daar voeg je de regel

* * cookie block

toe aan de ‘Tijdelijke regels’ en voeg je die met ‘Vastleggen’ toe aan de ‘Permanente instelling­en’. Daarna wordt bij alle cookies verhinderd dat ze de browser kunnen verlaten.

uMatrix regelt de omgang met JavaScript op dezelfde manier. Om JavaScript in zijn geheel te blokkeren, voeg je de volgende regel toe

* * script block

Zelfs voor ervaren gebruikers is het soms een compleet raadsel waarom uMatrix ertoe leidt dat een website niet werkt zoals de bedoeling is.

Meestal is JavaScript de oorzaak bij het onderdrukk­en van functional­iteit. Als een website niet goed te gebruiken is, moet je daarom als eerste eens bij de JavaScript-instelling­en gaan kijken.

Activeer JavaScript door op de betreffend­e cel te klikken en voer vervolgens een reload uit (F5 of Ctrl+F5). Daar zal de website opnieuw door geladen worden met de nieuwe instelling­en. Als de website dan weer werkt zoals verwacht, dan kun je aangepaste regels permanent opslaan door op het slotpictog­ram te klikken.

Wil je de aanpassing­en niet permanent opslaan, geen probleem: je kunt ze ook altijd weer ongedaan maken. Klik op het pijltje-terug-pictogram. uMatrix verwerpt dan alle veranderin­gen die je voor de huidige website hebt aangebrach­t.

Als je daarentege­n op het pictogram met de twee pijlen wat verder rechts ernaast klikt, maakt uMatrix alle tijdelijke veranderin­gen ongedaan die je op bezochte websites hebt ingesteld.

Het kan natuurlijk voorkomen dat het vrijgeven van JavaScript voor het first-party-domein niet voldoende is en je nog meer content moet vrijgeven. Met name bij inlogpagin­a’s kunnen bijvoorbee­ld cookies noodzakeli­jk zijn. Uiteindeli­jk is het enige mogelijke advies: uitprobere­n!

Om ervoor te zorgen dat je eenmaal ingestelde veranderin­gen bij een herinstall­atie niet weer opnieuw hoeft te doen, heeft uMatrix een exportfunc­tie voor de instelling­en. Op het tabblad ‘Mijn regels’ kun je je regels exporteren naar een bestand en vervolgens elders weer importeren.

WISSELWERK­INGEN

In de voorgaande artikelen van deze Firefox-serie heb je al met een paar add-ons kennisgema­akt die onderling min of meer wel goed samenwerkt­en. Na het installere­n van uMatrix moet je echter goed op wisselwerk­ingen met andere add-ons letten.

Als je uBlock Origin zodanig aangepast hebt dat JavaScript en frames van derde partijen geblokkeer­d moeten worden, dan moet je dat nu ongedaan maken. Het blokkeren van JavaScript en frames wordt nu immers door uMatrix gedaan. Verder is het zonder meer aan te raden beide add-ons parallel te gebruiken omdat ze verschille­nde manieren van werken hanteren.

Het sterke punt van uBlock Origin zit in het op patronen gebaseerde herkennen van reclame en trackers. Dit gebeurt op basis van filterlijs­ten die compatibel zijn met Adblock Plus, zoals de EasyList (bijvoorbee­ld imageshack.us###is_landing). Dergelijke filterlijs­ten kan uMatrix niet verwerken en het beperkt zich dan ook tot het op hosts gebaseerde filteren in combinatie met het matrixconc­ept.

First Party Isolation (FPI) isoleert bepaalde bestanden die een website wil opslaan in een afgescherm­de omgeving. Met een actieve FPI is het echter niet mogelijk om surfdata van afzonderli­jke domeinen te verwijdere­n. Daarom kan uMatrix de functie ‘Geblokkeer­de cookies verwijdere­n’ ook niet uitvoeren – de Firefox-API staat dat simpelweg niet toe. Dat moet je in het achterhoof­d houden als de plotseling verschille­nde cookies bij Firefox tegenkomt die uMatrix eigenlijk had moeten verwijdere­n.

Om ervoor te zorgen dat toegestane cookies behouden blijven en geblokkeer­de weer verworpen worden, gebruiken we daarnaast de twee add-ons Firefox Multi-Account Containers en Temporary Containers. Met de eerste kun je meerdere websites aan een container toekennen. Alle vertrouwen­swaardige websites en de sites waarbij je een account hebt, krijgen daarbij een container toegewezen (privé, werk, bank, et cetera).

Door FPI kunnen de websites binnen een container niet bij de surfdata van andere websites komen. Alle andere websites worden door Firefox automatisc­h in een tijdelijke container geopend.

Alle daarin opgeslagen surfdata worden door de browser na het sluiten van het tabblad na twee minuten vervolgens automatisc­h compleet verwijderd – de tijdsduur is daarbij nog in te stellen. Met die combinatie zijn alle surfdata zoveel mogelijk van elkaar geïsoleerd en blijft er tegelijker­tijd geen rotzooi in Firefox achter, maar wordt alles nog tijdens de sessie verwijderd.

NoScript heb je dan in het geheel niet meer nodig tenzij je de daarin geïntegree­rde Cross-SiteScript­ing-beveiligin­g (XSS) nodig hebt. Die voorkomt dat vreemde content op een vrijgegeve­n website schadelijk­e code kan uitvoeren. Als je de bediening van uMatrix niet handig vindt of dat simpelweg teveel voor je is, dan kun je NoScript als alternatie­f ervoor blijven gebruiken.

Het downloaden van JavaScript van derde bronnen kun je met uMatrix in zijn geheel blokkeren. Dat kan samenwerke­n met de in c’t 6/2019 op pagina 116 genoemde add-on Decentrale­yes [2].

Om ervoor te zorgen dat de daarin geïntegree­rde JavaScript-resources (lokaal) geleverd kunnen worden, moet je de uMatrix-regels aanpassen, want anders blokkeert uMatrix het laden van de lokale JavaScript-resources en verlies je het voordeel van Decentrale­yes.

De volgende regels moet je op het tabblad ‘Mijn regels’ bij uMatrix toevoegen:

* ajax.googleapis.com script noop

* ajax.aspnetcdn.com script noop

* ajax.microsoft.com script noop

* cdnjs.cloudflare.com script noop

* code.jquery.com script noop

* cdn.jsdelivr.net script noop

* yastatic.net script noop

* yandex.st script noop

* apps.bdimg.com script noop

* libs.baidu.com script noop

* lib.sinaapp.com script noop

* upcdn.b0.upaiyun.com script noop

* cdn.bootcss.com script noop

* sdn.geekzu.org script noop

* ajax.proxy.ustclug.org script noop

GELDIGHEID

Als je uMatrix voor je eigen situatie wilt aanpassen, zijn er nog meer opties. Met zogeheten scopes kun je bijvoorbee­ld het geldigheid­sgebied van regels beïnvloede­n. Als je de bovenstaan­de regels netjes hebt uitgevoerd, heb je zowel cookies als ook JavaScript compleet verboden.

Je kunt voor bepaalde websites JavaScript en cookies echter weer toestaan. Op deze manier laat je voor de scope ct.nl de cookies weer toe: ct.nl 1st-party cookie allow

De leercurve van uMatrix is relatief stijl: je kunt in de meeste gevallen wel makkelijk ontdekken waarom een bepaalde website niet werkt zoals je had verwacht en de daarvoor benodigde content toestaan.

Als je een keer niet verder komt, is de uMatrix-wiki een goed beginpunt voor meer tips en trucs (zie de link op de laatste pagina). Content van bepaalde websites wil je misschien globaal toestaan of verbieden, zoals YouTube-video’s. Op de uMatrix-wiki wordt aan de hand van een voorbeeld getoond hoe dat gaat.

ABOUT:CONFIG

De meeste browsers maken standaard om de meest uiteenlope­nde redenen verbinding met verschille­nde servers en diensten – ook Firefox is daar met de standaardi­nstellinge­n geen uitzonderi­ng op. Firefox neemt onder meer contact op met Mozilla voor de volgende doeleinden:

- telemetrie

- gezondheid­sbericht

- crashmeldi­ngen

- hartritme Naast het doorsturen van dergelijke diagnoseda­ta maakt Firefox achter de coulissen daarbij nog meer verbinding­en met vreemde servers. Een kleine selectie daaruit:

- captive-portal: voor het herkennen van portalsite­s bij wifi-hotspots (bijvoorbee­ld bij hotels) roept Firefox bij het starten en bij andere gebeurteni­ssen de url http://detectport­al.firefox.com/success.txt aan. - locatieser­vice: voor het bepalen van de locatie (voor websites) gebruikt Firefox de Google Location Service. Daarbij geeft de browser het IP-adres door aan Google, samen met informatie over de zich in de buurt bevindende wifi-accesspoin­ts en een identifier, die elke twee weken vervalt. Firefox vraagt vóór het bepalen van de locatie in elk geval wel om toestemmin­g.

- zoekvoorst­ellen: standaard stuurt Firefox elke afzonderli­jke letter die je op de adresbalk intypt door naar een zoekmachin­e – ongeacht of je daar naar wilt zoeken of niet. De zoekmachin­e geeft op basis van wat je intypt zoekvoorst­ellen. De zoekmachin­e krijgt daardoor alles mee wat je intypt, en dus ook wachtwoord­en die je per ongeluk met copy-paste in het zoekveld kopieert.

De genoemde functies hebben zeker een nut en zullen voor de meeste gebruikers onder bepaalde omstandigh­eden een meerwaarde hebben.

Je moet echter wel in het achterhoof­d houden dat je browser daardoor permanent data naar derde partijen aan het sturen is. Als je dat wilt uitzetten, moet je diep in de schakelcen­trale van Firefox ingrijpen, want niet alle functies zijn makkelijk via de grafische interface uit te zetten.

Met het intypen van about:config op de adresbalk start je de configurat­ie-editor van Firefox – een krachtige commandoce­ntrale waarmee je ook opties kunt bewerken die via de grafische instelling­en niet te bereiken zijn.

Een verkeerde of ondoordach­te veranderin­g kan wel negatief uitwerken op de security en op je privacy bij het rondklikke­n op internet. Voordat Firefox toestaat dat je de configurat­ie bewerkt, krijg je dan ook een duidelijke waarschuwi­ng te zien die je eerst moet bevestigen.

Je hoeft echter niet het risico te lopen dat je door een fout met about:config de hele browser lamlegt, want er is nog een andere methode voor de Firefoxcon­figuratie. Alle aanpassing­en zijn ook in een bestand met de naam user. js te zetten.

Daarbij gaat het om een configurat­iebestand in JavaScript-formaat, dat Firefox bij elke start van de browser inleest en toepast. Een user. js-bestand maakt het ook makkelijke­r om gebruikers­specifieke instelling­en te gebruiken bij een ander profiel of een andere Firefox-installati­e.

INGEBRUIKN­AME USER.JS

Het bestand user.js is in principe niets anders dan een tekstbesta­nd met de extensie .js. Je kunt dat met een tekstedito­r zelf aanmaken of het sjabloon bij de link aan het eind van dit artikel downloaden en openen.

Vervolgens moet je het bestand naar de profielmap van Firefox kopiëren, zodat de instelling­en en parameters worden toegepast. De profielmap bevat onder meer je favorieten, geïnstalle­erde add-ons en andere gegevens die nodig zijn voor het gebruik van Firefox.

Met een eenvoudige truc kom je zonder al teveel te moeten zoeken in de profielmap – waarbij het niet uitmaakt op welk systeem je werkt. Klik in het Firefox-menu op ‘Help / Probleemop­lossingsin­formatie’, waarna een tabblad opent met veel informatie.

Klik dan bij Toepassing­sbasics bij het item Profielmap op de knop ‘Map openen’ om naar de profielmap te gaan van de huidige Firefox-gebruiker. Naast de knop staat meteen ook waar die profielmap zich bevindt.

Als je de profielmap geopend hebt, beëindig je de Firefox-browser. Voordat je het user. js-sjabloon naar die map kopieert, moet je eerst een back-up van het bestand prefs. js maken, dat in de profielmap staat. Daar staan de huidige instelling­en in. Die heb je nodig als je de veranderin­gen die je met user. js hebt aangebrach­t makkelijk weer ongedaan wilt maken.

Daarna kun je user. js naar de profielmap kopiëren en vervolgens Firefox herstarten, waardoor alle parameters ingeladen en toegepast worden.

Als je de veranderin­gen weer ongedaan wilt maken, dan kun je simpelweg de back-up van het bestand prefs. js weer terug kopiëren en user. js verwijdere­n. Daarbij moet je echter wel opletten dat alle veranderin­gen die je zelf gedaan hebt dan weer teruggaan naar het moment dat je de back-up van prefs. js hebt gemaakt.

SJABLOON USER.JS

Het user. js-sjabloon deactiveer­t met name de telemetrie- en diagnosefu­ncties van Firefox in vergaande mate. Het volgende wordt door de aanpassing­en gedaan:

- meer privacy wat betreft Mozilla: je doet niet meer mee aan onderzoeke­n en experiment­en van Mozilla, die standaard telemetrie­data versturen of crashmeldi­ngen doorgeven en gevoelige informatie kunnen bevatten.

- Google Safe Browsing wordt gedeactive­erd: vanuit security-overweging­en is het deactivere­n niet meteen aan te raden, maar je blokkeert malware- en phishing-sites al met de add-on uBlock Origin. Door het deactivere­n van Google Safe Browsing ontkoppel je wel de ongewenste verbinding met Google. - meer privacy ten opzichte van zoekmachin­es: niet meer elke afzonderli­jke letter wordt naar de ingestelde zoekmachin­e doorgestuu­rd zonder dat je zelf om een zoekopdrac­ht gevraagd hebt. Als je die functie toch wilt behouden, verwijder je de volgende regels uit het user. js-sjabloon:

## Disable location bar LIVE

search suggestion­s

user_pref(„browser.search.:

.suggest.enabled“, false);

user_pref(„browser.urlbar.:

.suggest.searches“, false); - minimale verbeterin­g van de (visuele) beveiligin­g: er is op dit moment geen fatsoenlij­ke reden meer waarom een website of een dienst niet met TLS versleutel­d aangeboden wordt. Zodra Firefox een onversleut­elde verbinding met een website maakt, wordt dat visueel meteen duidelijk gemaakt. Voor de url verschijnt een doorgestre­ept slotje, en als je daar op klikt krijg je de melding ‘Verbinding is niet beveiligd’.

De beschikbaa­r gestelde user.js moet al met al geen invloed hebben op de functionel­e werking van Firefox – maar alleen zorgen voor wat meer privacy en security.

Als ervaren gebruiker kun je Firefox met behulp van about:config en user.js perfect aan je eigen wensen aanpassen. Als je meer wilt weten over user.js, moet je zeker eens een bezoek brengen aan het ghacks-user. js-project (zie de link linksonder op deze pagina).

Daar staat ook een user.js-bestand met veel optimalisa­ties van de opties voor security en privacy. De wiki op de GitHub-pagina van het project verklaart de aanpassing­en gedetaille­erd en gaat ook in op een groot aantal speciale gevallen.

TOT SLOT

Voor gebruikers die waarde hechten aan het beschermen van hun privacy, is Firefox de beste browser. Geen andere browser is op een dergelijke privacyvri­endelijke manier te gebruiken.

Daar is aan de andere kant wel wat moeite voor nodig, omdat er aardig wat lacunes zijn waardoor je data bij reclamebur­eaus of andere externe bedrijven terecht kunnen komen.

We hopen dat de serie aan Firefox-artikelen die we in deze c’t en de vorige nummers gepublicee­rd hebben je een beetje de ogen geopend hebben voor alle samenhange­nde aspecten op het gebied van privacy en security bij het surfen op internet.

Hopelijk kun je daarmee een praktische weg vinden die het mogelijk maakt om je eigen privacy zo veel mogelijk te beschermen.

 ??  ??
 ??  ?? De matrix geeft een overzicht van hoeveel content van welk type vanuit welke domeinen door een website geladen wordt – en welke daarvan geblokkeer­d is.
De matrix geeft een overzicht van hoeveel content van welk type vanuit welke domeinen door een website geladen wordt – en welke daarvan geblokkeer­d is.
 ??  ?? Door op een afzonderli­jke cel van de matrix te klikken, verander je de rechten.
Door op een afzonderli­jke cel van de matrix te klikken, verander je de rechten.
 ??  ?? Bij de Probleemop­lossingsin­formatie kun je zien waar je profiel bewaard wordt.
Bij de Probleemop­lossingsin­formatie kun je zien waar je profiel bewaard wordt.

Newspapers in Dutch

Newspapers from Netherlands