Scribble, scrabble und Notizen

Weblog von Tobias Diekershoff

Tool zum Verwalten von Friendica Blocklisten

Veröffentlicht am in Posts
Kurz-Link: https://pad.diekershoff.de/s/12

Es gibt so Dinge die brauchen unheimlich viel Zeit zur Umsetzung aus den unterschiedlichsten Gründen. Ich habe Gestern ein Python Script zur einfacheren Verwaltung von Server-Blocklisten geschrieben. Das gehört definitiv in diese Kategorie. Entstanden ist die Idee vor … drei? vier? Jahren in Gesprächen beim FRe;AK Stammtisch: Es müsste ein Werkzeug geben mit dem Admins von Instanzen die Blocklisten von vertrauenswürdigen Admins zusammen fassen um damit eine eigene Blockliste zu erzeugen.

Blocklisten im Fediverse

Im Fediverse können Admins die Kommunikation des eigenen Servers mit unerwünschten Servern komplett einstellen. Das widerspricht natürlich der utopischen Idee, dass das Fediverse ein großes harmonisches Netzwerk ist. Aber diese Annahme ist auch, sagen wir zumindest problematisch. Das Fediverse, wie das Internet, ist ein Abbild der menschlichen Gesellschaft und als solches beinhaltet es auch Aspekte mit denen man aus welchem Grund auch immer nichts zu tun haben möchte.

In meiner Erinnerung sind Blocklisten auf Serverebene im Fediverse wichtig geworden, als gab den Schritt ins Fediverse gemacht hat. Davor war es “ausreichend”, dass die Menschen im Fediverse auf persönlicher Ebene einzelne Accounts blocken konnten.

Wie man die Serverblocklisten einsetzen sollte ist ein kompliziertes Thema für sich selbst. Letztlich ist es die Entscheidung der Betreiber*innen von Instanzen im Fediverse und gehört mit zum Hausrecht der einzelnen Gemeinschaften.

Aber zurück zu dem neuen Werkzeug für Admins.

Brew Server Blocklists

Ist die Entscheidung einmal gefallen Blocklisten einzusetzen kommt damit das Problem einher, dass diese Listen kuratiert werden müssen. Es reicht nicht die Instanz auf blubb.example.com zu blockieren. Technisch ist es nicht sonderlich kompliziert eine neue Instanz auf bla.example.com einzurichten und dann von dort aus weiter zu trollen. Das Kuratieren der Listen kann ein äußerst zeitaufwändiger Akt werden. Gemeinschaftliche Anstrengungen wie [Achtung Allgemeine Triggerwarnung, der nachfolgende Link belastende Inhalte beinhalten] Fediblock helfen, aber es bleibt immer noch zeitintensiv.

Die Idee beim Stammtisch war nun, dass Instanzbetreibende Menschen irgendwann eine Idee dafür entwickeln welchen mit welchen anderen Instanzbetreibenden man ähnlich tickt was das Thema der Blockierung von Instanzen im Netzwerk angeht. Es wäre doch schön, wenn man da einfach die Listen austauschen könnte.

Eine kleine Zeitreise später ins Jahr 2022. Alle Instanzen von Friendica, die auf einer aktuellen Version der Software laufen veröffentlichen auf example.com/friendica zur Schaffung von Transparenz über den Eingriff ins Netzwerk die Liste der blockierten Server unter Angabe der Gründe für die Blockierung. Mit brewserverblocklist kann diese Liste (halb)automatisch von anderen Friendica Instanzen herunter geladen werden um sie zu einer Liste zu kombinieren. Die resultierende CSV Datei kann im Admin Panel im Moderationsbereich–oder mit dem console Tool von Friendica–einfach hochgeladen werden.

Nun ist es so, dass selbst wenn man im Großen und Ganzen mit der Meinung der Blocklisten übereinstimmt vielleicht nicht automatisch jeder Block übernommen werden sollte. Darum muss man den einzelnen Peers von denen die Listen bezogen werden Vertrauenslevel zuweisen. Das Vertrauen für die einzelnen Einträge in der kombinierten Blockliste werden aufsummiert. Liegt die Summe über einem definierbaren Sicherheitslevel, wird ein Eintrag automatisch übernommen, ansonsten erfragt das Werkzeug deine Meinung zu dem jeweiligen Eintrag.

Zu komplex in der Theorie?

Ein Beispiel

Ich habe selbst mal eine kleine Blockliste zusammen gestellt von denen ich absolut überzeugt bin, dass die gebraucht wird. Also trage ich in die Konfigurationsdatei einen Eintrag für meine Friendica Instanz ein.

[social.diekershoff.de]
trust = 100

Warum 100? Das ist die Grundeinstellung für das aufsummierte Vertrauenslevel das für einen Eintrag auf der Blockliste gebraucht wird.

Ich vertraue den sechs Menschen die regelmäßig zum FRe;AK Stammtisch kommen, das sie ihre Blocklisten ordentlich führen. Also füge ich für deren Instanzen Abschnitte in die Konfigurationsdatei hinzu und lege deren Vertrauenslevel auf 40.

Findet das Script einen neuen Eintrag auf den Blocklisten der anderen wird es mich fragen, ob ich diesen Eintrag übernehmen möchte. Es sei denn drei der sechs haben das schon getan (dann ist die Summe der Vertrauenslevel 40+40+40=120 und damit über dem geforderten Vertrauenslevel von 100) dann wird der Eintrag automatisch übernommen.

Fortgeschrittener Modus

  • Einige Instanzen im Fediverse veröffentlichen über die Mastodon kompatible API ihre Blocklisten. Diese Instanzen kann man auch anbinden. Allerdings muss für diese in der Konfiguration noch der Parameter type = mastodon angegeben werden.
  • Vertrauenslevel einer Blocklistenquelle können negativ sein. Nicht alle Peer verdienen das gleiche Vertrauen, man kann den Wert für den trust Eintrag frei wählen. Es muss nur eine Ganzzahl sein.
  • Das geforderte Vertrauenslevel ist frei definierbar und Niemand schreibt dir vor deiner eigenen Liste zu 100% zu vertrauen. Vielleicht willst du ja nur einen Vertrauenswert von 80 nehmen, dann muss im obigen Beispiel noch mindestens eine weitere Blockliste diesen Eintrag haben, damit er automatisch in der Liste verbleibt.
  • Wenn man nicht immer gefragt werden will ob ein Eintrag aufgenommen werden soll oder nicht, kann man mit den Parameter -y und -n den Automatikmodus aktivieren.
  • Um Knoten davor zu schützen auf der Blockliste zu landen, kann man sie in der Konfigurationsdatei absichern. Dafür wird ein Abschnitt [safe harbor] definiert der den Eintrag domains beinhaltet. Dieser enthält eine Komma separierte Liste der geschützten Domains.
[safe harbor]
domains = social.diekershoff.de,wichtig.example.com

Steht also bei mir in der Konfigurationsdatei. Selbst wenn das gesamte Fediverse meine Instanz blockieren sollte, wird sie nicht in meiner kombinierten Blockliste auftauchen.

Installation

Das Script ist ein Werkzeug für die Kommandozeile das in Python3 geschrieben ist. Es hat keine grafische Oberfläche, damit es auch ohne Probleme auf dem Server installiert und in einer SSH Sitzung verwendet werden kann.

Zur Installation und Verwaltung schlage ich vor, dass ihr pipx verwendet.

Die Installation erfolgt dann über

pipx install git+https://git.friendi.ca/tobias/brewserverblocklist.git

Aktualisierungen können mit

pipx upgrade git+https://git.friendi.ca/tobias/brewserverblocklist.git

durchgeführt werden.

Abschließend

Habt Spaß. Vertraut der Schwarmintelligenz nicht blind und auch dem Werkzeug nicht, ich gehe davon aus, dass es noch Fehler beinhaltet. Wenn ihr welche findet, lasst es mich wissen.

Tags: , , , , ,

Tobias Diekershoff
Interaktionen & Kommentare