De Week

Verbeteringen aan open source software

Waarom vragen om nieuwe bevoegdheden als de oude wellicht volstaan?
DOSSIER: Doe-het-zelf

Open source software, waarbij de voor mensen leesbare broncode vrij beschikbaar is, biedt veel voordelen boven closed source software. Zo kan de code door andere programmeurs worden gecontroleerd op beveiligingsproblemen en kunnen zij relatief eenvoudig aanpassingen maken. Wij gebruiken dan ook zoveel mogelijk open source software. De mogelijkheid om “onder de motorkap” te kijken is mooi, maar dit betekent niet dat privacy- en beveiligingsproblemen verleden tijd zijn.

Onze systeembeheerder weet hoe computers en het internet in elkaar zitten. In deze serie geeft hij praktische tips die jij kunt gebruiken om het leven beter te maken. Niet elke blogpost zal voor iedereen begrijpelijk of handig zijn, kijk daarom in het categorie-overzicht om te zien of er iets voor jou tussen staat. We hopen dat je er iets aan hebt!

Open source biedt veel, maar geen garanties
Vrijwel alle open source ontwikkeling gebeurt vandaag de dag in Git. Git is een versiebeheersysteem dat oorspronkelijk is ontwikkeld door Linus Torvalds om met duizenden vrijwilligers aan zijn Linuxkernel te kunnen werken. Het biedt ontwikkelaars de mogelijkheid gelijktijdig en zelfs offline aan dezelfde code te werken, om op een later moment te synchroniseren met een centrale server. De beheerder van zo’n project kan strenge toegangscontroles instellen om ongeautoriseerde wijzigingen te voorkomen en elke verandering wordt doorgaans gecontroleerd door meerdere vertrouwde ontwikkelaars en de beheerder zelf. Hierdoor is het lastig om achterdeurtjes in de code te smokkelen. Dit systeem werkt dan ook vrij aardig.

Als de controle niet voldoende blijkt te zijn of als het project privacy en beveiliging niet zo hoog in het vaandel heeft staan, kan het misgaan. En als het misgaat en je lijdt hierdoor schade, is het niet altijd zo eenvoudig om de ontwikkelaars aansprakelijk te houden. Vaak sluiten ze in hun licentie alle aansprakelijkheid uit (dit doen veel leveranciers van closed sourced software trouwens ook) en is niet altijd even duidelijk wie je precies kan aanspreken. Het is daarom altijd aan te raden om zorgvuldige keuzes met betrekking tot software te maken.

Ons software-verlanglijstje
We hanteren een strikt beleid voor alle door ons gebruikte software:

  • We gebruiken zoveel mogelijk vrije software, zoals omschreven in de Free Software Definition.
  • De software moet zo min mogelijk gegevens van de gebruiker verwerken.
  • De software mag nooit persoonsgegevens lekken, zoals gebeurt bij het inladen van lettertypen, afbeeldingen of scripts van andere websites.
  • Er moeten tijdig beveiligingsupdates uitgegeven worden.
  • Ontwikkeling van eigen software vindt plaats op onze GitLab-server.

Vaak blijkt zelfs populaire open source software niet helemaal aan deze eisen te voldoen. Daarom maken we in zulke gevallen een fork (kopie) van de code op onze GitLab-server, passen we wat dingen aan totdat we wel tevreden zijn en rollen het dan pas uit naar de productie-omgeving. Een voorbeeld is Discourse, een populair open source forum met uitgebreide moderatiemogelijkheden. Je kent het misschien van het forum van het Privacy Café. Voor automatische moderatie is het echter wel nodig dat Discourse IP-adressen en informatie over browsers (fingerprints) opslaat. Deze informatie willen we liever niet opslaan, omdat moderatie van berichten van ons niet automatisch hoeft te gebeuren. Bovendien bleek Discourse deze gegevens ook te verzamelen van bezoekers die geen berichten plaatsten. Wij hebben de automatische verzameling van deze gegevens natuurlijk uitgeschakeld. Als je nu een openbaar Discourse-forum beheert zonder dat je maatregelen hebt genomen om te voorkomen dat IP-adressen en browserfingerprints van bezoekers worden opgeslagen, dan moet je ervoor zorgen dat er een geldige wettelijke grondslag is om deze persoonsgegevens te mogen verwerken en moet je aan de overige vereisten van de Wet bescherming persoonsgegevens (vanaf 25 mei 2018 de Europese Privacyverordening) voldoen.

Verbeteringen aan Discourse
Om Discourse geen gegevens van bezoekers te laten verzamelen, hebben we de configuratie van de ingebouwde NGINX webserver aangepast. Dat kan door de optie “access_log” op “off” te zetten, zoals we hier hebben gedaan. Omdat Discourse gebruik maakt van de virtualisatiesoftware Docker moet ook de Dockerfile met instructies voor het bouwen van Discourse worden aangepast. Het enige wat daarvoor nodig is, is het wijzigen van de locatie waar alle code beschikbaar is. Die hebben wij nu naar onze eigen GitLab-server laten verwijzen. Na het installeren van Docker gebruikten we de aangepaste Dockerfile om Discourse met onze eigen aanpassingen te bouwen. Het voordeel hiervan is dat het eenvoudig is om te upgraden terwijl onze eigen aanpassingen blijven bestaan. Discourse kan nu niet meer IP-adressen en fingerprints verwerken. Dat maakt moderatie wat lastiger, maar komt de privacy van de bezoekers ten goede.

Code bijdragen
Af en toe vinden we foutjes in open source software en helpen we deze foutjes op te lossen, zoals we deden met Framadate. Ook schrijven we af en toe met hulp van vrijwilligers eigen software, zie bijvoorbeeld de Internetvrijheid Toolbox, Newspeak en de Privacy Inzage Machine.

  1. Coen Jacobs

    Niets dan hulde voor dit soort wijzigingen aan bijvoorbeeld Discourse natuurlijk, maar levert dat niet heel veel extra werk op? Bijvoorbeeld nieuwe versies van Discourse zullen ook weer (om even in Git termen te blijven) van de upstream gehaald moeten worden en verwerkt in jullie fork. Is het niet de moeite waard om dit als optie of eventuele uitbreiding op Discourse te ontwikkelen (als dat al mogelijk is, ik spreek vanuit beperkte Discourse kennis)?

    • Imre Jonk

      Hoi Coen, dat valt mee hoor. We hebben alleen een commit gedaan met onze wijzigingen en mergen deze bij een update met de code op de productieserver. Het updatescript van Discourse doet de rest. Je kunt deze wijziging ook doen door de NGINX configuratie aan te passen en de Docker container opnieuw te starten.

  2. Jasper van Weerd

    Zetten jullie ook modules terug naar bijvoorbeeld de Discord pool? Ofterwijl, kunnen anderen ook genieten van jullie moderaties?

    • Imre Jonk

      Hoi Jasper, de kleine aanpassing die wij hebben gedaan zit automatische moderatie in de weg, dat één van de kernfuncties is die Discourse zo promoot op haar website: https://www.discourse.org/about/. Onze aanpassing zal dus waarschijnlijk nooit in de officiële broncode terecht komen. Een iets uitgebreidere aanpassing die het mogelijk maakt om vanuit het administratiepaneel logging uit te schakelen is wel een optie. Helaas liggen onze prioriteiten elders.
      Mocht je onze aanpassing willen toepassen op je eigen Discourse server, dan kun je deze commit mergen met je lokale repository. Je kunt ook de NGINX configuratie in de Docker container aanpassen en de container opnieuw starten, maar bij die methode moet je oppassen dat je wijziging bij een update niet verloren gaat.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd.

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

Help mee en steun ons

Door mijn bijdrage ondersteun ik Bits of Freedom, dat kan maandelijks of eenmalig.