ubuntuusers.de

Neueste Artikel

23. Oktober 2020

Neulich ist mir ein Fehler beim Update von Ubuntu 16.04 auf Ubuntu 20.04 im LVM aufgefallen. Und zwar wurde eine Meldung angezeigt, die auf alte PV (Physical Volume) Header in einer VG (Volume Group) anspielt.

Ich hatte zum Thema LVM vor langer Zeit mal einen Artikel verfasst, falls es jemanden interessiert.

Der Fehler lässt sich mit dem Befehl vchck, welcher die Konsistenz von VGs prüft, nachstellen:

sudo vgck
  WARNING: PV /dev/sda2 in VG derVolumeGroupName is using an old PV header, modify the VG to update.
  WARNING: PV /dev/sda5 in VG derVolumeGroupName is using an old PV header, modify the VG to update.


Mit dem gleichen Tool lässt sich der Fehler beheben und zwar mit der Option updatemetadata, laut man pages kann er folgendes:

Update VG metadata to correct problems.  If VG metadata was updated while a PV was missing, and the PV reappears with an old version of metadata, then this option (or any other command that writes metadata) will update the metadata on the previously missing PV.

 Der LVM Fehler sollte nach dem Ausführen von vgck zusammen mit updatemetadata nicht mehr auftauchen.

 sudo vgck --updatemetadata derVolumeGroupName

 

22. Oktober 2020

Das herausstechende Merkmal des neuesten Ubuntu-Releases 20.10 (»Groovy Gorilla«) ist das Hintergrundbild: cool, mutig und ein wenig gruselig. Persönlich wollte ich das nicht jeden Morgen sehen, bevor alle meine Fenster den Desktop zukleistern. Andere sind sicherlich begeistert …

Der »Groovy Gorilla« im Desktop-Hintergrund

Davon abgesehen gibt es natürlich auch ein paar technische Neuerungen:

  • Während der Installation besteht die Möglichkeit, Ubuntu in ein Active Directory zu integrieren.
  • Ubuntu verwendet nun nftables als Firewall-Backend. (Viele andere Distributionen haben diesen Schritt schon früher vollzogen.) Aus Anwendersicht ändert sich dadurch nicht allzu viel: Das vertraute Kommando iptables kann dank einer Kompatibilitätsschicht weiterhin verwendet werden. Auch der Ubuntu-spezifische Firewall ufw funktioniert unverändert.

  • Diverse Software-Pakete wurden auf die gerade aktuelle Version aktualisiert (siehe die nachfolgende Versionsnummernübersicht).

  • Mit dem Gnome-Update gehen einige neue Funktionen einher: Besonders praktisch ist die Anzeige eines QR-Codes beim Einrichten eines WLAN-Hotspots. Das ermöglicht es, Smartphones ohne umständliche Eingabe des Passworts in das WLAN zu integrieren. Bei manchen Notebooks können Sie jetzt den Fingersensor für den Login verwenden. Außerdem lassen sich die Icons in der App-Übersicht nun wie auf einem iPad bequem in Gruppen ordnen. (Ich starte nur ganz selten Apps aus dieser Ansicht — insofern hält sich der Nutzen für mich in Grenzen.)

Bei meinen Tests hat sich Ubuntu 20.10 vollkommen unauffällig (und somit fehlerfrei) verhalten. Aktuell werde ich auf meinem Haupt-Notebook dennoch Ubuntu 20.04 LTS belassen. Wirklich zwingende Upgrade-Argumente habe ich keine gefunden. Am ehesten ist Ubuntu 20.10 interessant, wenn Sie ganz neue Hardware einsetzen und daher auf einen möglichst aktuellen Kernel angewiesen sind.

Versionsnummern

Basis             Desktop             Programmierung   Server
---------------   ------------------  --------------   --------------
Kernel      5.8   Gnome        3.38   bash       5.0   Apache     2.4
glibc      2.32   Firefox        81   gcc       10.2   CUPS       2.3
X-Server   1.20   Gimp         2.10   Java        11   MySQL      8.0
Wayland    1.18   LibreOffice   7.0   PHP        7.4   OpenSSH    8.3
Mesa       20.2   Thunderbird    78   Python     3.8   qemu/KVM   5.0
Systemd     246                                        Postfix    3.5
NetworkMan 1.26                                       Samba     4.12
GRUB       2.04 

Ubuntu am Raspberry Pi

In der Vergangenheit gab es schon diverse Ubuntu-Derivate, die für den Raspberry Pi optimiert wurden. Neu ist diesmal, dass die Vollversion von Ubuntu samt Gnome Desktop auf dem Raspberry Pi installiert werden kann. Das setzt allerdings nicht nur das aktuelle Modell 4B voraus, sondern auch eine Variante mit 4 oder 8 GB RAM. In meiner an sich reichhaltigen Raspberry-Pi-Kollektion fehlt ein so großzügig ausgestatteter Raspberry Pi aktuell leider, weswegen ich keine Tests durchführen konnte.

Quellen / Links / Andere Tests

2020 ist das Jahr der Videokonferenz. Dienstreisen und Meetings wurden in den virtuellen Raum verlegt. Dabei spielt natürlich zunehmend die Frage eine Rolle, wer diesen Raum kontrolliert und über die Sicherheit entscheidet. Der Primus Zoom war deshalb im Frühjahr heftiger Kritik ausgesetzt. Nun hat es Big Blue Button erwischt.

Die Kritik im Frühjahr an Zoom war heftig. Proprietär, unsicher, mangelhafter Respekt vor Datenschutz - die Vorwürfe waren mannigfaltig und vor allem die Open Source Community blies hier heftig mit ins Horn. Teilweise auch ungerechtfertigt, denn verschlüsselte Gruppenvideotelefonie bot bis dahin niemand an. Aber man hatte ja Jitsi Meet und Big Blue Button, für die man fleißig die Werbetrommel rührte.

Das ist natürlich nicht falsch. Digitale Souveränität kann es nicht geben, wenn vom Ministerium bis zur kleinen Firma alle von der Kommunikationslösung einiger weniger vorwiegend US-amerikanischer Firmen abhängig sind. Die funktionalen Defizite und Probleme in der Stabilität, insbesondere bei vielen Teilnehmern, wurden zwar von manchen etwas leichtfertig unter den Tisch gekehrt, aber im Grunde genommen können wir dankbar sein, dass es diese Projekte gibt.

Der Golem-Bericht zeigt halt nun, dass diese kleinen Projekte nicht unbedingt professioneller auf das Thema Sicherheit und Datenschutz reagieren als die ach so bösen IT-Konzerne. Die Liste der Vorwürfe reicht von Intransparenz, verschleppten Sicherheitsfixes und üblen Designentscheidungen bei Themen wie Videoaufzeichnung und Stummschaltung. Bei Zoom & Co wäre die erregungsfreudige Internet-Öffentlichkeit vermutlich schon durch die Decke gegangen.

Das ist meiner Meinung nach aber nicht mal das Hauptproblem. Die Sicherheitsprobleme bei BBB sind mal wieder symptomatisch für die Probleme viel genutzter Open Source Projekte. Ein kleines Team entwickelt und zukunftsversprechende Software und leistet im Rahmen ihrer Möglichkeiten großartige Arbeit. Zahllose kleine, aber auch sehr viele große Anbieter greifen dann auf die Software zurück - und geben dann in der Regel nichts zurück. Die Gründe hierfür sind mannigfaltig. Zwei Hauptprobleme seien aber angesprochen. Open Source ist bei vielen eben doch oft Freibier und die Finanzierung der meist spendenbasiert agierenden Projekte für die öffentliche Hand schwierig. Eine öffentliche Einrichtung darf schlicht nicht an Projekte spenden.

Ein Teufelskreis, von dem letztlich nur die proprietären Dienstanbieter profitieren.


Bilder:

Einleitungs- und Beitragsbild von Mudassar Iqbal via Pixabay 

"

21. Oktober 2020

Die MZLA Technologies Corporation hat mit Thunderbird 78.4 ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 78.4

Mit dem Update auf Thunderbird 78.4 nimmt Thunderbird automatisch eine Umwandlung von bestehenden Yahoo- und AOL-Konten auf die mittlerweile bei diesen Diensten verpflichtende Authentifizierung via OAuth2 vor.

Darüber hinaus wurden weitere MailExtension-Schnittstellen implementiert sowie diverse Fehler-Korrekturen vorgenommen und Sicherheitslücken geschlossen. Eine vollständige Liste der Änderungen gibt es in den Release Notes (engl.).

Der Beitrag Thunderbird 78.4 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

Besucht man heute eine durchschnittliche Website, so werden unzählige Skripte und Tracker nachgeladen. Dadurch können die Webseitenbetreiber, Google, Facebook, usw. Daten über mich sammeln und meinen Streifzug durch die Weiten des Internets verfolgen. Zum Glück muss man sich diesem Treiben nicht ergeben und es gibt viele sinnvolle Erweiterungen z.B. für den Browser (uBlock Origin, uMatrix, etc.). Diese Lösungen haben den Nachteil, dass ich sie auf jedem Gerät und für jeden Browser einzeln installieren muss. Deshalb möchte ich heute vorstellen, wie man Werbung und unerwünschte Inhalte mit pfSense und pfBlockerNG netzwerkweit filtern kann. Das ist z.B. sinnvoll in einem Heim- oder Schulnetzwerk.

pfBlockerNG installieren

Zuerst loggen wir uns in pfSense ein und öffnen den Package Manager. Dort wählen wir pfBlockerNG-devel unter „Available Packages“ aus:

pfBlockerNG installieren

Mit „Install“ können wir das Paket installieren. PfSense lädt nun das pfBlockerNG Paket herunter und fügt es der Firewall hinzu.

pfblockerng installation fertig

pfBlockerNG Ersteinrichtung

Als nächsten werden wir pfBlockerNG konfigurieren. Dazu gehen wir zu Firewall  → pfBlockerNG.

pfblockerNG Menü

Es begrüßt und ein Assistent, der uns bei der Einrichtung von pfBlockerNG helfen wird. Mit „Next“ geht es weiter.

pfBlockerNG Assistent Seite 1

Auf der nächsten Seite wird erklärt, welche Dinge nun eingerichtet werden:

  • Es wird ein Standard-Setup für Anfänger mit pfBlockerNG eingerichtet.
  • Falls man vorher schon einmal pfBlockerNG installiert hatte, werden alle Einstellungen gelöscht.
  • Zwei Komponenten werden installiert:
    • IP: Firewall-Regeln für die WAN-Schnittstelle, um die schlimmsten bekannten Angreifer zu sperren.
    • DNSBL: Werbung und andere bekannte bösartige Domains werden geblockt.

Mit „Next“ geht es wieder weiter.

pfBlockernNG Assistent Seite 2

Im nächsten Schritt müssen wir die eingehende Schnittstelle (WAN) und ausgehende Schnittstelle (LAN) auswählen. Wenn man mehrere interne Schnittstellen hat, kann man alle diejenigen auswählen für die man pfBlockerNG einrichten will. Möchte man z.B. das Gäste-WLAN filtern, aber nicht das WLAN für die Lehrkräfte, kann man hier die entsprechenden Schnittstellen aus bzw. abwählen.

pfBlockerNG Schnittstellen

Als nächstes müssen wir eine sogenannte VIP-Adresse festlegen. Auf dieser läuft der Webserver von pfBlockerNG und sollte unter keinen Umständen eine IP aus einem verwendeten Netzwerk sein! Wenn das LAN-Netz z.B. 192.168.1.1/24 ist, sollte die VIP-Adresse nicht in diesem Bereich liegen. Hier in unserem Beispiel lassen wir die Adresse bei 10.10.10.1. Die Ports muss man i.d.R. nicht ändern.

pfBlockerNG VIP Adresse

Das Setup ist nun fertig und wir können den Assistenten mit einem Klick auf „Finish“ beenden.

pfBlockerNG Setup Ende

Danach öffnet sich die pfBlockerNG Updateseite und es werden automatisch alle aktivierten Blocklisten heruntergeladen und aktiviert.

pfBlockerNG einrichten

Wir haben nun ein fertig eingerichtetes pfBlockerNG Setup, dass unerwünschte Werbung und bösartige Domains und Webseiten blockiert. pfBlockerNG ist aber ein sehr mächtiges & flexibles Werkzeug. Deshalb möchte ich gern ein paar Einstellungen hervorheben.

Wichtig: Damit geänderte Einstellungen auch wirksam werden (egal, ob DNSBL oder IP), müssen wir unter Update → Reload → All → Run ausführen, damit die (geänderten) Listen heruntergeladen und aktiviert werden.
pfblockerng update

IP

Im IP Reiter, empfehle ich folgende Einstellungen:

  • Floating Rules → Enable. Wenn man nur eine interne Schnittstelle hat, kann man es auch deaktiviert lassen. Bei vielen Schnittstellen (z.B. in einem Schulnetzwerk), macht es Sinn, diesen Punkt zu aktivieren, damit die Firewallregeln übersichtlicher bleiben.
  • Kill States → Enable. Wenn pfBlockerNG die Blocklisten aktualisiert, werden alle aktiven Verbindungen zu IPs in den Listen zurückgesetzt.pfblockerNG IP Einstellungen

GeoIP Blocking

Möchte man Zugriffe aus bestimmten Regionen der Erde verbieten, muss man sich zuallererst einen kostenloses Konto bei MaxMind erstellen. Daraufhin erhält man einen Lizenzschlüssel, den man unter IP → MaxMind GeoIP Configuration eintragen. Danach muss man einmal unter Update → Reload → IP die GeoIP Datenbanken herunterladen.

pfblocker geoip

Nun können wir unter IP → GeoIP die gewünschten Kontinente oder Top-Spammer auswählen. Dazu klicken wir auf den kleinen Stift rechts und wählen dann in der Liste alle Einträge aus. Unten wählen wir noch „Deny Both“ (List Action). Top Spammer

Hinweis zu „Deny Inbound“ und „Deny Outbound“: „Deny Inbound“ bedeutet, dass die IPs für alle eingehenden Verbindungen geblockt werden. Wenn man z.B. einen Webserver betreibt und man möchte bestimmte Länder blocken, dann kann man das mit „Deny Inbound“ machen. „Deny Outbound“ gilt für alle ausgehenden Verbindungen, d.h. ich kann mich von einem Rechner im Netzwerk nicht zu dieser IP verbinden. Hier muss man aufpassen! Wenn ich z.B. alle IPs Nordamerikas mit „Deny outbound“ sperre, kann ich ab sofort keine Webseiten mehr erreichen, die auf diesem Kontinent gehostet sind!

DNSBL / Feeds

pfBlockerNG blockt neben IPs auch Domains. Es findet also keine Man-in-the-Middle-Attacke statt, um Inhalte zu filtern, sondern es wird einfach in eine lange Liste geschaut, ob eine Domain erlaubt ist oder nicht (funktioniert auch mit HTTPS). Unter Feeds können wir einstellen, welche Listen aktiv genutzt werden sollen. Es gibt dabei Feeds für IP Blocklisten, als auch für DNSBL, also Blocklisten für DNS / Domains.

Alle aktivierten Feeds haben einen Haken am Ende der Zeile. Wenn wir nun einen noch nicht aktiven Feed hinzufügen wollen, klicken wir einfach auf das „+“:

Feed hinzufügen

Es öffnet sich eine Seite auf der wir Details zu dem Feed einstellen können. Folgende Felder sind wichtig:

  • State: ON
  • Action: Unbound
  • Update Frequency: Once a day

Feed Details

Manchmal möchte man einen Feed hinzufügen, der nicht in der Liste ist (z.B. einzelne Feeds von Steven Black). Dazu gehen wir zu DNSBL → DNSBL Groups und klicken unten auf „Add“:

Feed hinzufügen

Auf der nächsten Seite geben wir der DNSBL Gruppe einen Namen und fügen und DNSBL Source Definitions unseren Feed (oder mehrere) hinzu.

  • Name: StevenBlack
  • State: ON
  • Source: https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling/hosts
  • Header / Label: Glückspiel
  • Action: Unbound
  • Update Frequency: Once a day

Mit „Save“ schließen wir den Vorgang ab.

Custom Feed

Whitelists

Wenn eine Domain nicht geblockt werden soll, muss man sie unter DNSBL → DNSBL Whitelist in die Whiteliste aufnehmen. Wenn man einen Punkt („.“) vor den Domainnamen setzt, werden auch alle Subdomains freigeschaltet, sonst nur genau die (Sub)Domain, die man eingetragen hat.

DNSBL whitelist

SafeSearch

Unter DNSBL → DNSBL SafeSearch kann man SafeSearch für die bekanntesten Suchmaschinen einstellen. Weiterhin können wir auch noch DNS over HTTPS von Firefox blockieren sowie Beschränkungen für Youtube einstellen.

DNSBL SafeSearch

pfSense als DNS Server erzwingen

Damit auch alle Anfragen in unserem Netzwerk durch pfBlockerNG gefiltert werden, müssen wir verhindern, dass jemand im Netzwerk einen anderen DNS-Server als den DNS-Server von pfSense verwendet. Dazu erstellen wir 2 Regeln für die LAN-Schnittstelle (mehr Details hier):

DNS Regel

Fazit

pfBlockerNG ist ein tolles Open Source Projekt. Es hilft Werbung, unerwünschte Inhalte und ganze Netzbereiche zu filtern. Egal ob IPs oder DNS-Blocklisten – mit pfBlockerNG kann man beides verwalten und so konfigurieren, wie man es für sein Netzwerk haben möchte. Es gibt aber auch Alternativen für pfBlockerNG, z.B. pi-hole, welches sich gut auf einem Raspberry Pi oder in einer VM bzw. Container installieren lässt. Unter Strich bleibt, dass ein werbefreies Netzwerk möglich ist!

Nutzt du pfBlockerNG oder pi-hole in deinem (Schul)Netzwerk?

 

Kommentar hinzufügen

Der Beitrag pfBlockerNG – Werbung und unerwünschte Inhalte filtern erschien zuerst auf .:zefanjas:..

20. Oktober 2020

Mozilla hat Firefox 82 für Windows, Apple macOS und Linux veröffentlicht. Dieser Artikel fasst die wichtigsten Neuerungen zusammen – wie immer auf diesem Blog weit ausführlicher als auf anderen Websites.

Download Mozilla Firefox für Microsoft Windows, Apple macOS und Linux

Performance-Verbesserungen

Mozilla hat die Geschwindigkeit in mehreren Bereichen verbessert. Websites, welche ein Flexbox-Layout nutzen, sollen 20 Prozent schneller als zuvor laden. Das Wiederherstellen einer Sitzung soll im Mittel 17 Prozent schneller sein als zuvor. Und für Nutzer von Windows soll das Öffnen von neuen Fenstern zehn Prozent schneller als bisher sein.

Ebenfalls Nutzer von Windows profitieren von der Nutzung von DirectComposition für das Hardware-Decoding von Videos, was zu einer verbesserten CPU- und GPU-Nutzung führt und dies wiederum zu einer verbesserten Akkulaufzeit.

PDF-Ebenen ein- und ausblenden

Mit der vorherigen Version Firefox 81 hatte Mozilla zahlreiche Verbesserungen des PDF-Betrachters implementiert, darunter ein neues Design, die Möglichkeit, PDF-Formulare auszufüllen, sowie die Unterstützung von Ebenen. Mit Firefox 82 ist es nun auch möglich, einzelne Ebenen gezielt ein- und auszublenden.

Firefox 82

Vorschau: Hinzufügen beliebiger Suchmaschinen

Firefox ermöglicht bereits das Hinzufügen von Suchmaschinen entweder über den OpenSearch-Standard, falls von der jeweiligen Website implementiert, via WebExtension oder Unternehmensrichtlinie. In Zukunft wird es eine weitere Möglichkeit geben, beliebige Suchmaschinen zu Firefox hinzufügen zu können. Dieses Feature befindet sich noch in Entwicklung und kann bereits vorab getestet werden, indem über about:config der Schalter browser.urlbar.update2.engineAliasRefresh als neuer Boolean-Schalter mit dem Wert true angelegt wird.

Suchmaschine hinzufügen in Firefox 82

Suchmaschine hinzufügen in Firefox 82

Weitere Informationen zu dieser Neuerung gibt es in einem gesonderten Artikel.

Verbesserungen der Webplattform

Die MediaSession API erlaubt es Webentwicklern, Media-Benachrichtigungen des Betriebssystems anzupassen. Außerdem kann der Browser über die Schnittstelle auf die Media-Tasten von Tastaturen, Headsets etc. reagieren, so dass darüber Website-Funktionen genutzt werden können, ohne dass die Website im Vordergrund sein muss.

Das CSS Pseudo-Element ::file-selector-button erlaubt die visuelle Anpassung des Durchsuchen-Buttons von Upload-Feldern.

Eine Verhaltensänderung von window.name sorgt dafür, dass diese Eigenschaft nicht länger als XSS-Schwachstelle ausgenutzt werden kann.

Ausführliche Informationen zu Verbesserungen der Webplattform in Firefox 82 finden sich in den MDN web docs sowie auf hacks.mozilla.org.

Sonstige Neuerungen in Firefox 82

Die Schaltfläche zum Starten des Bild-in-Bild-Modus für Videos wurde optisch überarbeitet und besser positioniert. Für Nutzer von Apple macOS gibt es nun auch einen Tastatur-Kurzbefehl, um diesen Modus zu starten.

Die Entwicklerwerkzeuge können jetzt serverseitige Events im Netzwerkanalyse-Werkzeug anzeigen.

Firefox 82
(Screenshot-Quelle: hacks.mozilla.org)

Für Nutzer der englischsprachigen Version von Firefox gibt es beim Speichern von Seiten in Pocket nun direkt Vorschläge für weitere Artikel.

Auch wurde in Firefox 82 WebRender wieder für weitere Nutzer ausgerollt. Genauer gesagt wurde die minimal erforderliche Treiber-Version für Intel-GPUs erneut gesenkt, außerdem wird WebRender nun auch für Nutzer älterer Versionen von Windows 10 ausgeliefert.

Die Darstellung von Trennlinien in Kontextmenüs unter macOS Big Sur wurde korrigiert.

Beim Toolbar-Button für den Firefox Account gibt es unter „Tab an Gerät senden“ jetzt auch einen Menüeintrag, um zur Verwaltung aller verbundenen Geräte zu gelangen.

Für Entwickler von WebExtensions erwähnenswert ist, dass die Cookie-Berechtigung nicht länger erforderlich ist, um die cookieStoreId eines Tabs zu erhalten, was es nun möglich macht, sogenannte Tab-Umgebungen ohne zusätzliche Berechtigung nur dafür zu erkennen.

Beim Download von WebExtensions von anderen Seiten als addons.mozilla.org warnt Firefox, dass man sicherstellen soll, dass man der Website vertraut, bevor man fortfährt. Für Erweiterungen, welche Teil von Mozillas Programm empfohlener Erweiterungen sind, entfällt diese Warnung ab Firefox 82.

Natürlich kam auch in Firefox 82 die Unterstützung weiterer Unternehmensrichtlinien dazu. Auch Verbesserungen der Barrierefreiheit sowie diverse Fehlerbehebungen und Korrekturen unter der Haube kamen wie immer dazu.

Geschlossene Sicherheitslücken

Wie immer hat Mozilla auch in Firefox 82 wieder mehrere Sicherheitslücken geschlossen. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 82 daher für alle Nutzer dringend empfohlen.

Der Beitrag Mozilla veröffentlicht Firefox 82 – die Neuerungen erschien zuerst auf soeren-hentzschel.at.

19. Oktober 2020

Die neue Version der Datenbanksoftware ist bereits einige Tage verfügbar.

Wer sich mit den Neuerungen beschäftigen möchte, der kann gerne in die Release Notes schauen oder sich diese Video zu Gemüte führen.

 

Hier soll es heute um das Update auf die neueste Version unter Ubuntu, Mint und Co gehen.

An dieser Prozedur hat sich seit den letzten Releases nicht wirklich etwas geändert, dennoch kann es nicht schaden, den Vorgang noch einmal durchzuspielen.

postgres_logo

Installation und Update auf PostgreSQL 13 unter Ubuntu

# Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Update the package lists:
sudo apt-get update

# Install the latest version of PostgreSQL.
sudo apt-get -y install postgresql-13

# Sicherung erstellen
sudo su postgres
pg_dumpall > Sicherung
exit

#Vorhandene Cluster anzeigen
pg_lsclusters

#Neues Cluster anhalten
sudo pg_dropcluster --stop 13 main

#Vorhandenes Cluster aktualisieren
sudo pg_upgradecluster 12 main

postgresql13

Nun kanns die neue Version getestet werden, sollte alles korrekt sein, kann das alte Cluster entfernt werden

sudo pg_dropcluster 11 main
sudo pg_dropcluster 12 main

 

18. Oktober 2020

Die MZLA Technologies Corporation hat mit Thunderbird 78.3.3 ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 78.3.3

Mit dem Update auf Thunderbird 78.3.3 nehmen die Entwickler von Thunderbird einmal mehr Verbesserungen an der OpenPGP-Unterstützunug vor. Außerdem wurde behoben, dass Termine im Kalender keinen Titel erforderten.

Der Beitrag Thunderbird 78.3.3 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

17. Oktober 2020

Mit dem Problem, Image-Dateien virtueller Maschinen platzsparend zu speichern, habe ich mich schon vor einigen Jahren in diesem Blog beschäftigt. Aber man lernt nie aus, weswegen ich Ihnen hier eine Variante der damals präsentierten Techniken sowie ein neues Verfahren vorstellen möchte :-)

Variante 1: Möglichst kleine Backups von Images im laufenden Betrieb erstellen

Ausgangspunkt ist eine laufende virtuelle Maschine, deren Image-Datei sich in einem Dateisystem in einem Logical Volume befindet. Damit Sie die Image-Datei überhaupt im laufenden Betrieb sichern können, brauchen Sie einen LVM-Snapshot. Damit frieren Sie den Zustand der Image-Datei während des Backups ein. (Diese Vorgehensweise ist gut, aber nicht perfekt. Zum Zeitpunkt des Backups offene Dateioperationen können dadurch verloren gehen. Genaugenommen müssten Sie das Image zusammen mit dem Zustand der virtuellen Maschine speichern, was ich der Einfachheit halber aber nicht mache. In der Praxis funktioniert das Image-Backup in der Regel gut genug. Wenn im Rahmen des Backups zwei, drei offene Datenbanktransaktionen oder die letzten Einträge in einer Logging-Datei verloren gehen, kann ich damit leben.)

Die folgenden Zeilen zeigen ein bash-Script, das auf dem KVM-Host ausgeführt wird. Das Script richtet einen Snapshot ein, erzeugt eine lokale, komprimierte Image-Backup-Datei und löst den Snapshot wieder auf. Gegebenenfalls können Sie das Image jetzt noch verschlüsseln und per FTP/scp/aws/etc. irgendwohin hochladen.

#!/bin/bash -e
# Beispiel für Backup-Script am KVM-Host
img=myimage.qcow2
bak=/local-backup-directory
# bisheriges Backup löschen
rm -f $bak/$img

# evt. noch vorhandenen alten Snapshot auflösen
if [ "$(mount | grep /lvmsnap)"  ]; then
  umount /lvmsnap
fi
if [ "$(lvscan | grep snap)"  ]; then
  lvremove -f /dev/vg1/snap
fi

# neuen Snapshot erzeugen und mounten
lvcreate -s -L 2G -n snap /dev/vg1/vms
mount /dev/vg1/snap /lvmsnap

# lokale Backup-Datei erzeugen und mit lz4 komprimieren,
# ohne die ganze IO-Kapazität zu blockieren
ionice -c 3 cat /lvmsnap/$img  | lz4 - -c > $bak/$img.lz4

# Snapshot wieder auflösen
umount /lvmsnap
lvremove -f /dev/vg1/snap

Angenommen, die Image-Datei sieht eine maximale Größe von 50 GB vor, tatsächlich werden aber aktuell nur rund 25 GB genutzt: In diesem Fall wird die Backup-Datei des Images größer ausfallen als notwendig, weil das Dateisystem mit der Zeit voller ungenutzter Blöcke ist, die aktuell keinen Dateien zugeordnet sind. Abhilfe schafft in solchen Fällen, in der virtuellen Maschine (nicht am KVM-Host) mit dd vorübergehend eine möglichst große Datei voller Nullen zu erzeugen und diese dann wieder zu löschen. Das Ergebnis: Die bisher ungenützten Blöcke sind jetzt mit Nullen vollgeschrieben und lassen sich durch das obige Backup-Script sehr effizient komprimieren.

Nun fördert das vorübergehende Vollschreiben des ganzen Dateisystems zwar die Komprimierbarkeit der Image-Datei, führt aber zu einem zersplitterten Dateisystem. ext4-Entwickler Theodore Ts’o ist deswegen kein Freund dieser Technik. Noch ein Nachteil: Wenn die Image-Datei vorher sparse war, ist sie es danach nicht mehr. Gerade bei lange laufenden virtuellen Maschinen ist die Image-Datei früher oder später aber sowieso nicht mehr sparse.

Ich habe mich diesbezüglich zu einem Kompromiss entschieden. Das folgende Script erzeugt eine Datei aus lauter Nullen, die 90% des freien Speicherplatz füllt. Dieses Script wird in meiner virtuellen Maschine einmal monatlich aufgerufen (Link in /etc/cron.monthly), also nur recht selten.

#!/bin/bash
# 90% der ungenutzten Blöcke des Dateisystems mit Nullen überschreiben
# läuft in der virtuellen Maschine
#
# df / liefert freie 1k-Blöcke
# grep filtert die richtige Zeile heraus
# awk -F bildet Spalten, $4 extrahiert die vierte Spalte
# 1k-Blöcke * 0.0009 ergibt 90% 1M-Blöcke
cnt=$(df / | grep ' /' | awk  -F' ' '{print int($4*0.0009)}')
dd if=/dev/zero of=/zero bs=1M count=$cnt
sync
rm /zero

Variante 2: Image-Dateien schrumpfen (virt-sparsify)

Ganz anders sieht die Lage aus, wenn Sie zum Verkleiner des Images bzw. zur Durchführung des Backups die virtuelle Maschine herunterfahren können. In diesem Fall können Sie das großartige, mir bis vor kurzem aber unbekannte Kommando virt-sparsify ausführen. Unter Ubuntu befindet sich das Kommando im Paket libguestfs-tools.

Standardmäßig liest virt-sparsify eine Image-Datei, löscht den Inhalt von dort enthaltene Swap-Partitionen, berücksichtigt bei Dateisystemen nur die tatsächlich aktiven Blöcke und erzeugt schließlich eine neue Image-Datei, die so klein wie möglich und außerdem sparse ist. Grandios!

# setzt voraus, dass die virtuelle Maschine heruntergefahren wurde!
virt-sparsify image.qcow2 sparse-image.qcow2

Wenn Sie virt-sparsify vertrauen, können Sie die Datei auch direkt überschreiben:

virt-sparsify --in-place image.qcow2

Beachten Sie, dass virt-sparsify relativ viel Platz im temporären Verzeichnis erfordert (im ungünstigsten Fall 2x die Maximalgröße der Image-Datei).

Quellen

Werfen Sie insbesondere einen Blick auf den StackExchange-Beitrag, wo einige weitere Techniken mit diversen Vor- und Nachteilen beschrieben werden. Ich habe auch mit fstrim experimentiert, aber leider ohne Erfolg.

14. Oktober 2020

Ca. alle vier Jahre wiederholt sich das gleiche Spiel: Ich bestelle einen neuen Root-Server, installiere dort die aktuelle Version von Ubuntu Server LTS und richte das Virtualisierungssystem KVM ein. Sobald dieses läuft, migriere ich meine virtuellen Maschinen, zu denen unter anderem der Server für kofler.info zählt, auf den neuen Host. Die Down-Time beträgt in der Regel weniger als eine Stunde und ergibt sich durch den Zeitraum für die Aktualisierung der DNS-Einträge.

Mit dem Betrieb eines eigenen Virtualisierungssystem entspreche ich nicht ganz dem Cloud-Zeitgeist. Natürlich gibt es unzählige Hoster (an erster Stelle natürlich Amazon), die mir virtuelle Maschinen für den Betrieb von Linux-Installationen anbieten. Die Verwendung eines »echten« (sprich: altmodischen) Root-Servers kann allerdings eine Menge Geld sparen, bringt mehr Flexibilität mit sich und hält mein KVM-Know-how einigermaßen aktuell :-)

Dieser Artikel fasst die wichtigsten Details zur Konfiguration des KVM-Hosts (Ubuntu) sowie von virtuellen Maschinen (Ubuntu sowie RHEL/CentOS/Oracle) zusammen. Beachten Sie, dass einige Details der Netzwerkkonfiguration providerspezifisch sind und für Hetzner gelten.

Warum alle vier Jahre ein Server-Wechsel, werden Sie vielleicht fragen. Im Wesentlichen gibt es zwei Gründe:

  • Der eine ist der LTS-Zeitraum von Ubuntu (fünf Jahre). Ein LTS-Update des Servers im laufenden Betrieb ist mir suspekt. Allzu oft geht dabei etwas schief; dann muss ich sofort und unter Stress nach einer Lösung suchen, weil sich das einmal gestartete/durchgeführte Update nicht mehr rückgängig machen lässt. Bis das Problem dann gelöst ist, habe ich womöglich eine Downtime von mehreren Stunden oder gar Tagen. Deswegen lasse ich eine einmal installierte LTS-Version einfach weiterlaufen (natürlich mit allen »normalen« Updates), so lange der Server aktiv ist.
  • Der zweite Grund ist die Lebensdauer von Hardware: Nach vier Jahren ununterbrochenen Einsatz steigt nicht nur bei herkömmlichen Festplatten die Fehlerwahrscheinlichkeit, sondern auch bei SSDs und anderen Komponenten. Ich mag nicht warten, bis es wirklich Ausfälle gibt, und steige lieber rechtzeitig auf neue Hardware um.

Server-Hardware

Ich habe mich diesmal erstmalig für einen Server mit AMD-Prozessor entschieden (Details siehe hier):

  • AMD Ryzen 5 3600
  • 2 x 512 GB SSD
  • 64 GB RAM

Für die virtuellen Maschinen habe ich zusätzlich einige IPv4-Adressen bestellt. (Für IPv6 ist ein ganzes /64-Subnetz inkludiert, das reicht aus. Aber leider ist IPv6 noch nicht so verbreitet, dass man auf IPv4 verzichten kann. Und es ist zweifelhaft, ob es je soweit kommen wird.)

Ubuntu-Host

Die Ubuntu-Installation habe ich mit dem Hetzner-Script installimage durchgeführt (Dokumentation). Dieses Werkzeug führt eine Minimalinstallation mit einigen Hetzner-spezifischen (Netzwerk-)Einstellungen durch. Das Script erlaubt eine relativ einfache Disk-Konfiguration. In meinem Fall habe ich beide SSDs mit RAID-1 verbunden. 120 GB sind für das Root-Dateisystem reserviert, der Rest per LVM für ein zweites Dateisystem mit den Images der virtuellen Maschinen. Als Dateisystem verwende ich in beiden Fällen ext4. (LVM ist mir vor allem wegen der Snapshot-Funktion wichtig. Damit kann ich in einem Backup-Script die Image-Dateien in einem Snapshot einfrieren und konsistent sichern, ohne den Betrieb der virtuellen Maschinen zu unterbrechen.)

lsblk

NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
nvme1n1       259:0    0   477G  0 disk  
├─nvme1n1p1   259:2    0   120G  0 part  
│ └─md0         9:0    0   120G  0 raid1 /
└─nvme1n1p2   259:3    0   357G  0 part  
  └─md127       9:127  0 356.8G  0 raid1 
    └─vg1-vms 253:0    0   320G  0 lvm   /var/lib/libvirt/images/lvm
nvme0n1       259:4    0   477G  0 disk  
├─nvme0n1p1   259:6    0   120G  0 part  
│ └─md0         9:0    0   120G  0 raid1 /
└─nvme0n1p2   259:7    0   357G  0 part  
  └─md127       9:127  0 356.8G  0 raid1 
    └─vg1-vms 253:0    0   320G  0 lvm   /var/lib/libvirt/images/lvm


Sobald der Ubuntu Server als solches läuft und via SSH erreichbar ist, folgt die Basisabsicherung: Neuen Benutzer mit sudo-Rechten einrichten, root-Login per Passwort sperren (installimage richtet entgegen der Ubuntu-Gepflogenheiten einen aktiven root-Account ein), unattended-upgrades installieren und konfigurieren, Kernel-Live-Patches aktivieren (canonical-livepatch), fail2ban zur SSH-Absicherung installieren etc.

Der nächste Schritt ist die Installation von QEMU/KVM samt der libvirt-Bibliotheken:

apt install qemu-kvm libvirt-daemon-system libvirt-clients qemu-utils bridge-utils dnsmasq virt-top

Damit die libvirt-Werkzeuge von einem gewöhnlichen Account (nicht root) genutzt werden können, muss dieser Nutzer den Gruppen kvm und libvirt hinzugefügt werden:

usermod -a -G kvm <username>
usermod -a -G libvirt <username>

Damit sind alle Voraussetzungen erfüllt, um virtuellen Maschinen einzurichten und auszuführen. Ich verwende dazu in der Regel die grafische Benutzeroberfläche virt-manager, die auf meinem Notebook zuhause läuft. Die Verbindung zum KVM-Host erfolgt via SSH.

Die virtuellen Maschinen können aus der Ferne über den virt-manager eingerichtet und administriert werden.

Netzwerkkonfiguration am Host

Noch offen ist die Netzwerkkonfiguration am Host: Standardmäßig erhalten neue virtuellen Maschinen eine private IP-Adresse via NAT. Die virtuellen Maschinen haben damit Internetzugang, sind aber von außen nicht zugänglich. Für den Server-Betrieb nicht ideal …

Ab jetzt wird es Hetzner-spezifisch: Mit jedem Server erhalten Sie ein riesiges eigenes IPv6-Netz, aber nur eine IPv4-Adresse. Zusätzlich können Sie bis zu 6 Einzel-IPv4-Adressessen oder ein ganzes IPv4-Subnetz mieten. IPv4-Adressen sind ein knappes Gut und daher ziemlich teuer. Ich habe aktuell nur drei Einzel-IPv4-Adressen, was für meine Zwecke reicht.

Nun geht es darum, am Host entweder eine Bridge oder Routing einzurichten, um die virtuellen Maschinen mit dem Host zu verbinden. Ich habe mich für die einfachere und besser dokumentierte Bridge-Variante entschieden.

Ausgangspunkt ist die vorgegebene Konfiguration des neuen Servers, hier in der Netplan-Syntax von Ubuntu. a.b.c.d bzw. x:y:z sind Teile der von Hetzner zugewiesenen IPv4- oder IPv6-Adressen. a.b.c.e ist die Gateway-Adresse für IPv4.

# Datei /etc/netplan/01-netcfg.yaml auf dem KVM-Host
# vorgegeben durch das installimage-Script von Hetzner
network:
  version: 2
  renderer: networkd
  ethernets:
    enp35s0:
      addresses:
        # a.b.c.d: dem Server zugewiesene IPv4-Adresse
        # x.y.z: Teil des des dem Server zugewiesenen IPv6-Adressblocks
        - a.b.c.d/32
        - 2a01:x:y:z::2/64
      routes:
        - on-link: true
          to: 0.0.0.0/0
          # a.b.c.e: vorgegebene IPv4-Gateway-Adresse
          via: a.b.c.e
      gateway6: fe80::1
      nameservers:
        addresses:
          - 213.133.100.100
          - 213.133.99.99
          - 213.133.98.98
          - 2a01:4f8:0:1::add:1010
          - 2a01:4f8:0:1::add:9999
          - 2a01:4f8:0:1::add:9898

In meinem Fall gibt es außerdem drei weitere IPv4-Adressen a.b.c.f, a.b.c.g und a.b.c.h, zu denen ich über eine Bridge Punkt-zu-Punkt-Verbindungen mit den virtuellen Maschinen herstellen möchte. IPv6 soll natürlich auch an die virtuellen Maschinen weitergegeben werden, was aber wesentlich einfacher ist. (Es sind dabei weder Punkt-zu-Punkt-Verbindungen noch spezielle Routing-Regeln erforderlich; der IP-Verkehr erfolgt ja innerhalb des IPv6-Adressbereichs.)

Nun geht es darum, die obige Konfiguration für die Schnittstelle enp35s0 in eine Netzwerkbrücke umzubauen. Nahezu alle Einstellungen, die bisher für enp35s0 galten, werden für die Brücke br0 übernommen. Entscheidend ist, dass Sie der Brücke mit macaddress dieselbe MAC-Adresse zuweisen, die auch die Netzwerkschnittstelle des Servers hat (in diesem Beispiel also enp35s0). Die MAC-Adresse können Sie mit dem Kommando ip a feststellen. (Wenn macaddress fehlt, entscheidet sich Netplan für eine zufällige MAC-Adresse. Hetzner mag das gar nicht.)

Bevor Sie die Netplan-Konfigurationsdatei verändern, sollten Sie unbedingt ein Backup der ursprünglichen Datei erstellen. (Verwenden Sie dabei eine andere Dateikennung als .yaml!)

# geänderte Datei /etc/netplan/01-netcfg.yaml auf dem KVM-Host
network:
  version: 2
  renderer: networkd
  ethernets:
    enp35s0:
      dhcp4: no
      dhcp6: no
  bridges:
    br0:
      # muss mit der MAC-Adresse der Netzwerkschnittstelle
      # übereinstimmen!
      macaddress: aa:bb:cc:dd:ee:ff
      # die Netzwerkbrücke soll zur Schnittstelle `enp35s0 führen        
      interfaces:
        - enp35s0
      # vorgegebene IPv4- und IPv6-Adresse für den Server
      addresses:
        - a.b.c.d/32
        - 2a01:x.y.z::2/64
      routes:
        # IPv4-Routing zu den virtuellen Maschinen
        - to:      a.b.c.f
          scope:   link
        - to:      a.b.c.g
          scope:   link
        - to:      a.b.c.h
          scope:   link
        # vorgegebenes IPv4-Gateway (wie in der Ausgangskonfiguration)
        - to:      0.0.0.0/0
          via:     a.b.c.d.e
          on-link: true
      # vorgegebenes IPv6-Gateway
      gateway6: fe80::1
      nameservers:
        addresses:
          # Nameserver-Adressen von Hetzner
          - 213.133.100.100
          - 213.133.99.99
          - 213.133.98.98
          - 2a01:4f8:0:1::add:1010
          - 2a01:4f8:0:1::add:9999
          - 2a01:4f8:0:1::add:9898

Die geänderte Netzwerkkonfiguration kann mit netplan try ausprobiert bzw. mit netplan apply unmittelbar aktiviert werden. Aber Vorsicht: Wenn Ihnen ein Fehler unterläuft, verlieren Sie den SSH-Zugang zu Ihrem Server! Dann müssen Sie den Rechner über die Weboberfläche mit einem Rescue-Image neu starten, sich mit den SSH-Daten des Rescue-Images anmelden, das Dateisystem Ihres Servers manuell einbinden und die Konfigurationsdatei korrigieren. Das ist ziemlich mühsam …

Wenn alles klappt, läuft der Server mit der neuen Konfiguration unverändert. Der lokale Netzwerkverkehr geht jetzt eben über die Brücke br0, sonst hat sich für den Host nichts geändert.

Zu guter Letzt muss noch IP-Forwarding aktiviert werden, damit nicht nur die IP-Pakete des Hosts weitergeleitet werden, sondern auch die der virtuellen Maschinen . Dazu führen Sie die folgenden Änderungen in /etc/sysctl.conf durch:

# am Ende von /etc/sysctl.conf
...
# Forwarding für IPv4 und IPv6
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

Mit sysctl -p (oder einem Neustart) werden die neuen Einstellungen wirksam.

Konfiguration der virtuellen Maschine (Ubuntu)

Beim Einrichten einer neuen virtuellen Maschine bzw. bei der Veränderung einer schon vorhandenen VM können Sie nun im virt-manager die Netzwerkschnittstelle br0 auswählen.

Im »virt-manager« kann der Netzwerkadapter nun mit der Brücke »br0« verbunden werden.

Wenn Sie die XML-Beschreibung der virtuellen Maschine direkt ändern, können Sie sich bei den Einstellungen des virtuellen Netzwerkadapters (NICs) an diesem Muster orientieren:

<interface type="bridge">
  <mac address="52:54:00:aa:bb:cc"/>
  <source bridge="br0"/>
  <target dev="vnet1"/>
  <model type="virtio"/>
  <alias name="net0"/>
  <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>

Die Konfiguration des virtuellen NICs ist aber erst die halbe Miete. Jetzt müssen Sie die virtuelle Maschine starten und dort die Netzwerkkonfiguration durchführen. Beachten Sie, dass Sie dabei vorerst keinen SSH-Zugang haben! Sie müssen also die VNC-Funktion des Virtualisierungssystem verwenden.

Eine zum obigen Host passende Konfiguration für eine virtuelle Maschine unter Ubuntu sieht wie folgt aus. Beachten Sie drei Dinge:

  • Die gewünschten IPv4- und IPv6-Adressen müssen statisch eingestellt werden.
  • IPv4-Verkehr fließt über eine Punkt-zu-Punkt-Verbindung zum KVM-Host.
  • IPv6-Verkehr verwendet den KVM-Host als Gateway.
# /etc/netplan/01-config.yaml in einer virtuellen Maschine (Ubuntu)
network:
  version: 2
  ethernets:
    eth0:
      # IPv4- und IPv6-Adresse der virtuellen Maschine
      addresses:
        - a.b.c.f/32
        - "2a01:x:y:z::4/64"
      # IPv4: Punkt-zu-Punkt-Verbindung zur IPv4-Adresse des KVM-Hosts
      routes:
        - to:      0.0.0.0/0
          via:     168.119.33.119
          on-link: true
      # IPv6-Gateway: IPv6-Adresse des KVM-Hosts
      gateway6: "2a01:x:y:z::2"
      nameservers:
        addresses:
          - 213.133.100.100
          - 213.133.99.99
          - 213.133.98.98
          - "2a01:4f8:0:1::add:1010"
          - "2a01:4f8:0:1::add:9999"
          - "2a01:4f8:0:1::add:9898"

Sofern Sie keine YAML-Syntaxfehler gemacht haben, sollte mit netplan apply eine funktionierende IPv4- und IPv6-Verbindung ins Internet bestehen. Zum Testen verwenden Sie z.B. ping -4 google.de und ping -6 google.de.

Konfiguration der virtuellen Maschine (CentOS/Oracle/RHEL 8)

Das Einrichten einer neuen VM erfolgt unabhängig davon, ob darin Ubuntu, CentOS oder ein anderes Betriebssystem ausgeführt werden soll. Die Unterschiede ergeben sich erst bei der Netzwerkkonfiguration in der virtuellen Maschine. Wenn dabei CentOS 8 oder Oracle Linux 8 oder RHEL 8 zum Einsatz kommt, befinden sich die Konfigurationsdateien im Verzeichnis /etc/sysconfig/network-scripts. Trotz der Red-Hat-spezifischen Syntax werden die Dateien seit Version 8 durch den NetworkManager verarbeitet. (Für die Kompatiblität ist das Plugin ifcfg-rh zuständig.)

Die folgenden Zeilen zeigen eine statische Konfiguration für die IPv4-Adresse a.b.c.g und die IPv6-Adresse IPV6ADDR=2a01:x:y:z::5. Beachten Sie, dass der zweite Teil des Dateinamens mit dem Namen der Netzwerkschnittstelle (hier enp1s0) übereinstimmen muss!

# Datei /etc/sysconfig/network-scripts/ifcfg-enp1s0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="enp1s0"
DEVICE="enp1s0"
ONBOOT="yes"

# IPv4-Adresse und -Gateway
IPADDR="a.b.c.g"
PREFIX="24"
GATEWAY="a.b.c.d"

# IPv6-Adresse und -Gateway
IPV6ADDR=2a01:x.y.z::5
IPV6_DEFAULTGW=fe80::1
IPV6INIT="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
IPV6_PRIVACY="no"

# DNS-Adressen Hetzner
DNS1="213.133.100.100"
DNS2="213.133.99.99"
DNS3="213.133.98.98"
DNS4="2a01:4f8:0:1::add:1010"
DNS5="2a01:4f8:0:1::add:9999"
DNS6="2a01:4f8:0:1::add:9898"

MAC-Ärger

Grundsätzlich sollte jetzt alles funktionieren: Die virtuellen Maschinen können mit dem Internet kommunizieren und sind von außen auch sichtbar. Das lässt sich rasch mit ein paar ping-Kommandos überprüfen.

Die auf dem Host-Rechner eingerichtete Netzwerkbrücke hat allerdings einen gravierenden Nachteil: Sie belässt die in den IP-Paketen enthaltenen MAC-Adressen der virtuellen Maschinen.

Im Hetzner-internen Netzwerk ist man damit unglücklich. Ausgehende Pakete dürfen ausschließlich bekannte, den vermieteten Servern zugewiesenen MAC-Adressen haben. Ist das nicht der Fall, bekommen Sie als Hetzner-Kunde relativ rasch eine Mail, in der Sie samt Deadline gebeten werden, nur die zugewiesenen MAC-Adressen zu verwenden. Andernfalls droht eine Sperre des Servers.

So weit so unerfreulich. Hetzner schlägt in seinen Dokumentationsseiten zwei Lösungswege vor:

  • Ein Ansatz besteht darin, anstelle einer Netzwerkbrücke ein Routing-Setup zu verwenden. Das Routing führt dazu, dass die MAC-Adressen der virtuellen Maschinen durch die des Hosts ersetzt werden. Allerdings fehlt nicht nur auf den Hetzner-Seiten eine konkrete Anleitung, wie ein derartiges Setup mit Ubuntus Netplan aussehen könnte; ich habe auch bei einer stundenlangen Recherche im Internet kein entsprechendes Beispiel gefunden.
  • Alternativ besteht die Möglichkeit, in den Hetzner-Administrationsseiten für Einzel-IPs eine MAC-Adresse anzufordern. Das kostet nur einen Mausklick. Anschließend müssen Sie bei der Konfiguration der virtuellen Maschinen die anfangs zufällige MAC-Adresse des virtuellen Netzwerkadapters durch die von Hetzer gewünschte MAC ersetzen. Am einfachsten gelingt das in der XML-Ansicht der NIC-Einstellungen, nachdem Sie im virt-manager zuvor mit Bearbeiten / Einstellungen das Verändern von XML-Dateien ausdrücklich erlaubt haben.

MAC-Adresse des virtuellen Netzwerkadapters in »virt-manager« einstellen

Da ich bei der Bridge-Konfiguration bleiben wollte, habe ich mich für den zweiten Lösungsansatz entschieden. Die Konfiguration ist einfach. Die neue MAC wird nach einem Reboot der virtuellen Maschine wirksam. Alleine: Nach erfolgreicher Konfiguration (ip addr in der virtuellen Maschine zeigt die gewünschte MAC an, und auch tcpdump am Host liefert Pakete mit dieser MAC) ist kein IPv4-Verkehr mehr möglich. (IPv6 funktioniert weiter.) Die von Hetzer vorgeschlagene Konfiguration führt somit zumindest bei meinem Setup direkt in die Sackgasse. (Die gleichen Probleme hatte ich in der Vergangenheit schon bei einem anderen KVM-Host, auf dem eine ältere Ubuntu-Version ohne Netplan lief.)

Ich habe den Hetzner-Support kontaktiert, aber die Antwort war kurz und nichtssagend. (Hallo, Hetzner, ihr wart in der Vergangenheit deutlich besser …) Nach zwei Tagen Fehlersuche habe ich aufgegeben und die mit der Zusatz-IP-Adresse verbundene MAC-Adresse wieder freigegeben (deaktiviert). Zu diesem Zeitpunkt war ich kurz davor, den neuen Server wieder zu kündigen und mich nach einem anderen Provider umzusehen.

Auf einen neuen, durchaus originellen Lösungsansatz hat mich schließlich ein umfangreicher Blog-Artikel von Dirk Hillbrecht gebracht. Es schlägt (in einem zugegebenermaßen ganz anderen Setup) vor, die MAC-Adressen aller weitergeleiteten Pakete mit dem mir bisher unbekannten Kommando ebtables einfach zu überschreiben. Dazu reicht das folgende, winzige Script (wobei Sie natürlich aa:bb:... durch die MAC-Adresse Ihres Hosts ersetzen müssen):

#!/bin/bash
# Datei /etc/rc.local auf dem Host-System
ebtables -t nat -A POSTROUTING -j snat --to-src aa:bb:cc:dd:ee:ff 
exit 0

Die Datei muss mit chmod +x ausführbar gemacht werden und wird dann beim Start des Rechners einmalig ausgeführt. ebtables (das gleichnamige Paket muss vorher installiert werden) ist ein Gegenstück zum Firewall-Werkzeug iptables. Es arbeitet allerdings nicht auf IP-Paketebene, sondern auf Ethernet-Ebene. Das vereinfacht manche Aufgaben erheblich.

  • -t nat -A POSTROUTING fügt eine Regel in die vordefinierte Tabelle für NAT POSTROUTING hinzu.
  • -j snat --to-source <mac> bewirkt, dass die Quell-MAC aller Ethernet-Pakete, die diese Tabelle durchlaufen, neu eingestellt wird.

Um zu überprüfen, ob alles funktioniert, können Sie mit tcpdump alle Pakete ansehen, die die Netzwerkschnittstelle des Hosts durchlaufen. Mit Filterregeln können Sie die Fülle der Ausgaben reduzieren und gezielt nach Paketen für eine bestimmte IP-Adresse (z.B. die einer Ihrer virtuellen Maschinen) suchen:

tcpdump  -e -n -i enp35s0  "host a.b.c.f"

Ich gebe zu, dass mir das MAC-Rewriting ein wenig wie ein Hack nach der Holzhammermethode erscheint. Andererseits: Das Setup ist einfach, und es hat bisher keine unerwünschten Nebenwirkungen ausgelöst. Die virtuellen Maschinen können auch direkt miteinander kommunizieren.

Quellen

Zur MAC-Problematik:

13. Oktober 2020

Mozilla hat Firefox 81.0.2 für Windows, Apple macOS sowie Linux veröffentlicht und behebt damit einen Fehler im Tracking-Schutz.

Download Mozilla Firefox für Microsoft Windows, Apple macOS und Linux

Mozilla hat Firefox 81.0.2 veröffentlicht und behebt damit genau ein Problem. Ein Fehler im Schutz vor Aktivitätenverfolgung verursachte bei strenger Konfiguration (kein Standard), dass Benutzer auf Twitter nur eine Fehlerseite sahen.

Der Beitrag Mozilla veröffentlicht Firefox 81.0.2 erschien zuerst auf soeren-hentzschel.at.

12. Oktober 2020

Die MZLA Technologies Corporation hat mit Thunderbird 78.3.2 ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 78.3.2

Mit dem Update auf Thunderbird 78.3.2 nehmen die Entwickler von Thunderbird mehrere Verbesserungen und Fehlerkorrekturen vor. So wird Thunderbird unter anderem nicht mehr automatisch Updates installieren, wenn die Einstellungen geöffnet werden. Auch gab es wieder Verbesserungen der OpenPGP-Unterstützung und mehr. Eine vollständige Liste der Änderungen gibt es in den Release Notes (engl.).

Der Beitrag Thunderbird 78.3.2 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

Auch JWM kann nicht alles, aber erstaunlich viel – und bleibt dabei flott und übersichtlich. Wenn man etwas Zeit mitbringt, sich in die Konfiguration einzufuchsen, erhält man mit minimalen Mitteln eine mächtige Linuxoberfläche.


JWM mit zwei Panels

Gnome ist klasse, KDE ist super – aber reine Fenstermanager haben nichts von ihrem Reiz verloren: schnell, individuell und hochflexibel kann man sich damit eine effiziente Linux-Arbeitsumgebung selbst zusammenstellen. Wer jedoch glaubt, mit Openbox, Fluxbox & Co. schon alles Relevante ausprobiert zu haben, der irrt. Und auch als langjähriger Linuxnutzer ist man immer wieder überrascht, was da noch alles für Perlen schlummern. Der Fenstermanager „JWM“ ist so ein Kandidat. Wenn er irgendwo erwähnt oder gezeigt wird, wirkt er immer wie eine Art Basis-WM, gemacht für den rudimentären (Not-)Betrieb für ganz schwachbrüstige Rechner. Welch ein Irrtum. Zwar setzen viele Distributionen für PCs mit geringer Hardwareausstattung (etwa Puppy Linux, Damn Small Linux oder Vector Linux Light Edition) bevorzugt auf JWM als Standardoberfläche, doch auch auf moderneren Systemen macht JWM eine ausgezeichnete Figur.

Merkmale

Funktional steckt er sogar manch anderen Fenstermanager in die Tasche und bietet ein paar Konzepte, die es in dieser Form bei den Mitbewerbern nicht gibt. Als Beispiel sind hier die Snap-Funktion zu nennen, bei der Fenster angepasst auf Bildschirmbereiche oder den gesamten Monitor vergrößert werden können, indem man die Fenster an einen Rand des Bildschirms zieht.


Ein anderer Farbverlauf auf der nächsten Arbeitsfläche. Auch weitere Bilder wären möglich

Ein Alleinstellungsmerkmal ist das Darstellen von verschiedenen Hintergrundbildern pro Desktop. Während andere Fenstermanager mit Bordmitteln gar kein Hintergrundbild erlauben und man dafür die Autostartfunktion plus Extraprogramm nutzt, kann lässt sich bei JWM bei Bedarf sogar ein Desktopbild pro Arbeitsfläche angeben. Das automatische Starten von Programmen auf verschiedene Arbeitsflächen ist auch möglich – oder das Wechseln der Arbeitsflächen mit dem Mausrad. Bei Betrieb mehrerer Monitore kann ein Panel über alle Bildschirme reichen.

Eine weitere Besonderheit ist, dass man die gesamte Konfiguration über eine einzige Textdatei steuert. Andere verbreitete Fenstermanager haben ihre Einstellungen meist auf mehrere Dateien verteilt. Bei JWM ist es unerheblich, ob man ein Menü, Panel, den Autostart, Arbeitsflächen- oder Fensterverhalten ändern will, man bleibt dazu immer in derselben Datei.

Die Panels

Im Gegensatz zu etwa Openbox bietet JWM die Möglichkeit, mit Bordmitteln ein Panel anzulegen (bei JWM „Tray“ genannt). Anders als bei IceWM und Fluxbox ist es aber nicht in der Grundkonfiguration vorhanden, man muss es sich selbst einrichten. Dafür sind dann auch mehrere Panels möglich. Klassische Taskleisten mit Menüs, Programmstartern, Benachrichtigungsfeld und Uhrzeit lassen sich damit ebenso bauen wie Pseudo-„Docks“ zum Starten von Anwendungen.


JWM mit einer anderen Panel-Konfiguration

Die Taskliste gruppiert auf Wunsch die geöffneten Fenster einer Anwendung und kann entweder nur die Fenster der gerade aktiven Arbeitsfläche oder die Fenster von allen Arbeitsflächen gemeinsam anzeigen. Dabei verhält sich die Taskleiste wie ein Dock: Klickt man auf eine Programmgruppe in der Taskleiste, werden die jeweiligen Fenster alle gemeinsam wieder in den Vordergrund geholt, es öffnet sich kein Menü, wo man erst auswählen muss. JWM ist damit wohl der einzige Fenstermanager, der so etwas wie Dock-Funktionalität in eine Taskleiste integriert. Panels können permanent sichtbar sein oder lassen sich standardmäßig ausblenden und werden nur bei Berührung der Bildschirmkante sichtbar.

Beschränkungen

Intelligentes Ausblenden der Panels, also das Ausweichen vor aktiven Fenstern, ist nicht möglich. Außer in einem Panel erhält man auch keine Taskliste, man kann sich auf keinem alternativen Weg über geöffnete Fenster informieren. Die bekannte Tastenkombination Alt+Tab wechselt ebenfalls direkt zwischen den Fenstern durch, ohne eine Auswahlliste anzuzeigen. Fenster lassen sich nicht mit der Maus auf eine andere Arbeitsfläche ziehen, das funktioniert jedoch per Tastenkürzel.


Mögliches Menü bei Mausklick auf den Desktop

Auch Theming funktioniert mit JWM nur rudimentär und rein mit Bordmitteln – den Fensterdekos lassen sich nicht ohne Weiteres Graphiken überstülpen, optische Anpassungen funktionieren ebenfalls über die globale Konfigurationsdatei. Auf den bekannten „Eycandy“-Seiten taucht JWM daher gar nicht auf. Die Fensterdekorationen kennen dabei nur 2 Grundstile: flach oder klobig. Farblich und in der Größe kann man sie jedoch beliebig verändern. JWM unterstützt Transparenz in Panels, Menüs und Fenstern, jedoch muss dazu ein Compositing-Manager wie Compton laufen.

JWM einrichten

Die Konfigurationsdatei wird mit XML geschrieben, was sie ein wenig unübersichtlich macht. Dafür sind auf diese Weise schnell einzelne Anpassungen und Erweiterungen der jeweiligen Funktion möglich. Die Datei wird einfach als .jwmrc im Home-Verzeichnis angelegt. Anhand einer Beispielkonfiguration aus der Dokumentation kann man sich gut an der Einrichtung entlanghangeln. Manches ist selbsterklärend, doch ganz so intuitiv wie manche Kollegen ist JWM nicht. Um alle Funktionen auszureizen, kommt man am Studium der Konfigurationsanleitung nicht vorbei.

Eine Umsteiger-Falle lauert bei den Menüs, die z. B. per Mausklick auf dem Desktop erscheinen sollen. Diese müssen durchnummeriert werden – und die Ziffern stehen dann gleichzeitig auch für die gewünschte Mausfunktion: Die 1 für die linke, die 2 für die mittlere und die 3 für die rechte Maustaste. Das macht die Verwaltung auf der anderen Seite hochflexibel: jeder Mausklick auf dem Desktop kann je nach Taste ein unterschiedliches Menü hervorzaubern. Der Clou liegt ebenso darin, dass man diese Menüs dann wahlweise auch per Tastenkürzel oder über einen Panel-Button aufrufen kann, ohne die Menüs noch einmal neu anlegen zu müssen.

Fazit

Auf den ersten Blick wirkt JWM in der Tat schlichter als andere Fenstermanager, doch bei genauerem Hinsehen entfaltet er ein erstaunliches Potential und bringt einige Funktionen mit, die man sonst nur von ausgewachsenen Desktopumgebungen kennt. Dadurch ergibt sich der Eindruck eines sehr flexiblen und schnellen Systems. Das klassisch-schlichte Erscheinungsbild ergibt einen professionellen Eindruck und wirkt mit Transparenzen sehr elegant.

10. Oktober 2020

Heute stelle ich euch mein aktuelles Projekt vor: eine Programmiersprache, die das imperative Programmiersprachenparadigma um logische Aspekte ergänzt, um durch logische Schlussfolgerung weniger Code schreiben zu müssen.

→ Schnellzugriffe für diesen Artikel: Arbeitspapier (engl., PDF), GitHub-Repository

Programmierung ist heutzutage ein extrem wichtiges Werkzeug geworden. Dabei hat sich in den vergangenen Jahren der Fokus geändert: war der „portable Assembler“ namens C in den 1970ern noch dafür da, Abstraktion für verschiedene Plattformen zu ermöglichen, geht es heutzutage eher darum, Funktionalität so zusammenzustecken, dass das resultierende Programm den Anforderungen genügt. Bis heute ist allerdings der imperative Ansatz derjenige, der unangefochten die Programmierlandschaft beherrscht. Dabei spezifiziert der Programmierer Schritt für Schritt den Lösungsweg, den der Computer dann ausführt.

Ein Blick in die Geschichte

Es ergeben sich allerdings einige Probleme, die früher keine größere Aufmerksamkeit benötigten, heute allerdings die Arbeit erheblich erschweren: so konnte man es sich in den 1980ern leisten, die komplette Codebase selber zu entwickeln. Ken Thompson formulierte dabei das Credo „You can't trust code that you did not totally create yourself.“ Dieser Satz gilt heute eigentlich nach wie vor, da importierter Code auf dem gleichen Level wie die eigene Software agiert.

Nun gibt es verschiedene Programmiersprachen, die auch verschiedene Zwecke erfüllen: während das zuvor erwähnte C auf der Low-Level-Ebene unterwegs ist, gibt es Sprachen wie Python, die immer weiter abstrahieren.

Diese Abstraktion nimmt allerdings keineswegs ein Ende und das macht die Sache besonders interessant. Denn eigentlich befinden wir uns bei den imperativen bzw. prozedularen Sprachen auf Stufe 3 von insgesamt 5. Auf den tieferen Stufen haben wir Maschinencode oder Assemblersprachen, auf deren darüberliegenden Stufen liegen SQL, die Unix Shell und R (4GL) sowie Mercury und OPS5 (5GL). Während die Sprachen der 4. Generation noch den meisten geläufig sind, werden sicherlich die wenigsten von Mercury o.ä. gehört haben.

Ziel dieser Abstraktion ist es übrigens, dem Computer nur noch das Problem zu beschreiben und diesen dann den Lösungsweg ermitteln zu lassen.

Als ich davon vor einigen Jahren gehört habe, hat es mich nicht mehr losgelassen. Und so überlege ich seit einigen Jahren, wie man neben C, C++, Rust und Python eine Möglichkeit nutzen kann, abstrakt Programme zusammenzustellen, die dann vom Computer zusammengeschweißt werden (und zwar ohne dynamische Typisierung). Eben wie die klassische Unix-Philosophie, die sich in den Code hineinzieht.

Vor einigen Monaten hat sich abgezeichnet, dass sich die Idee am besten in einer (vorerst experimentellen) Programmiersprache umsetzen lässt.

XKCD 2309: X, License: CC BY-NC 2.5

xkcd 2309: X, License: CC BY-NC 2.5

Was aber ist nun die Besonderheit der Sprache? Die oben eingeführten Sprachen der fünften Generation sind sehr funktional, deklarativ – und vielen unhandlich. Man ist zu sehr an die imperative Arbeitsweise gewöhnt, um sie komplett auszutauschen. Trotzdem blieb bei mir der Aspekt, die imperative Arbeitsweise durch logische Programmierung zu erweitern, irgendwie hängen. Ausschlaggebend hierfür war das Semantic Web, das in den 2000ern besonders Konjunktur hatte. Aber auch Wikidata fasziniert mich mit der Art und Weise, wie Informationen formalisiert werden können, um anschließend Wissen daraus ableiten zu können. So ist es heute schon möglich, die Mondphase am Geburtstag von John von Neumann abzufragen, ohne einen genauen Algorithmus hierfür spezifzieren zu müssen. Ehrlich gesagt finde ich das extrem spannend und überlege, wie sich das sinnvoll in der Programmierung einsetzen lässt. Denn für obiges Szenario müssen wir nicht einmal auf maschinelles Lernen zurückgreifen, sondern können uns an einem regelbasierten System bedienen, das in formalen Umgebungen besonders hilfreich ist.

Um was es geht

Dafür habe ich nebenbei begonnen, die Ontology-assisted Experimal Programming Language, kurz OXPL, in eine Grammatik zu gießen.

Die OXPL geht dabei auf einen Ausflug in die Welt der Ontologien: bei diesen geht es grob gesagt darum, Wissen dem Computer zugänglich zu machen, damit dieser dies Verarbeiten kann. Teilweise wird dies schon heute umgesetzt, wenn wir uns Klassenhierarchien in z.B. Java anschauen.

Ich möchte nur einmal kurz die Schlüsselaspekte umreißen: beginnen wir mit dem „Hello world“.

fn main() {
    println("hello, world");
}

So weit, so unspektualär. Wie wir sehen, sind wir allerdings auf dem Gebiet der imperativen Programmierung unterwegs - und das ist ein entscheidender Aspekt: man kann sie jederzeit als Fallback nutzen. Wagen wir aber nun den Sprung ins kalte Wasser: der folgende Codeblock implementiert einmal eine Addition: zwei Summanden werden abgefragt, das Ergebnis wird ausgegeben.

instance Summand1: integer {
    std::fetchesFrom <std::io::stdin>.
    <std::io::stdin> std::io::prompts "Summand 1: ".
}

instance Summand2: integer {
    std::fetchesFrom <std::io::stdin>.
    <std::io::stdin> std::io::prompts "Summand 2: ".
}

instance Sum: std::math::sum {
    std::math::sum::hasSummand <Summand1>.
    std::math::sum::hasSummand <Summand2>.
}

fn main() {
    println("The sum is " + string::from(Sum));
}

Hier sehen wir das charakteristische Merkmal der Sprache: das Programm ist bis auf die main-Funktion lediglich eine Beschreibung zweier Summanden sowie einer Summe. Die Tripel (Subjekt - Prädikat - Objekt - Punkt) formulieren explizit die Beziehungen und Anforderungen untereinander. Nun soll der Interpreter bzw. Compiler im nächsten Schritt über Regeln sowie viele Informationen ableiten, dass eine imperative Ausführung möglich und eine Executable entsteht. Auch wenn man mit Python dieses Vorhaben in einer Zeile lösen könnte, würde das obige Beispiel rein konstruktiv bereits die Summanden als Ganzzahlen erkennen, sodass Bugs wie eine Summe "11" bei den Summanden 1 und 1 vermieden werden.

Ein weiterer Aspekt: Sicherheit. Der Super-Gau unter importierten Bibliotheken sind unerwartete, bösartige Seiteneffekte. Wie wäre es, wenn jegliche Kommunikation nach außen hin erlaubt werden muss? Dann fällt besonders auf, wenn eine Calculator-Bibliothek auf einmal Festplatten- und Netzwerkzugriff möchte. Für das Ausgabebeispiel würde das Ganze so aussehen:

allows(this, std::io::print, main).     

fn main() {
    println("hello, world!");
}

OXPL wird dieses Permissionsystem von Anfang an implementieren, sodass spätere Nachbesserungen wie die libseccomp im Normalfall by-design nicht mehr notwendig ist.

Was ich bereits habe

Ich habe bereits angefangen, als Sideproject an der ontology toolchain (ontc) zu entwickeln. Das wird die Referenzimplementierung sein. Sie ist in C geschrieben und steht bereits auf GitHub zur Verfügung.

Mit

sudo apt install build-essential git bison flex
git clone https://github.com/v-gar/ontc.git
make

kann die Anwendung gebaut werden. Die Executable ontc liegt dann im Buildverzeichnis. Nun kann eine Datei helloworld (eine Dateiendung habe ich noch nicht festgelegt) erstellt werden, die das obige Hello world enthält. Das Ausführen ist mitteils ./build/ontc run helloworld möglich. Um die Ontologie zu testen, habe ich folgendes Beispiel:

fn hey() {
    println("Hey!");
}

fn main() {
    println("Hello world!");
}

<main> isPreceededBy <hey>.

Dieses Beispiel zeigt, dass über diese Tripel auch Einfluss auf den Programmablauf genommen werden kann, sofern (wie im Beispiel) der Interpreter bestimmte Prädikate berücksichtigt.

Ein Anfang

Diese beiden Beispiele sind Teil des Proof-of-Concepts dieses Projekts. Großartig mehr ist noch nicht möglich. Zwei Dinge sind für die Sprache entscheidend: gute Entwicklungswerkzeuge und eine vielfältige, hochqualitative Standardbibliothek. Die Standardbibliothek gibt, ähnlich wie bei schema.org, den Rahmen und definiert, wie üblicherweise Prädikate aufgebaut sind, wie mit dem Compiler interagiert werden kann, etc. Die ontc soll dabei mit gemeinsamer Codebase als Toolchain dienen und einen Interpreter, Debugger und Analyzer beherbergen, um schnell gute Programme zu schreiben.

Wer gerne mehr zu meinem Projekt lesen möchte, kann sich mein Arbeitspapier (PDF) hierzu anschauen.

Da dieses Vorhaben unmöglich in absehbarer Zeit alleine umsetzbar ist, suche ich nach Mitstreitern, die sich an diesem Projekt beteiligen wollen. Ihr könnt euch hierzu unter meiner Kontaktadresse melden!

9. Oktober 2020

Seit vielen Jahren setzen wir stark auf Open Source Anwendungen in unserer Schule – auf dem Server, aber auch auf den Computern und Laptops. Vor allem im Serverbereich ist Open Source Software weit verbreitet und es gibt viele tolle Softwareprojekte, die sich wunderbar in einer Schule einsetzen lassen. Heute möchte ich deshalb meine 5 Favoriten vorstellen.

Koha

koha

Koha ist ein integriertes Bibliothekssystem. Es wird weltweit in öffentlichen, Schul- und anderen Bibliotheken eingesetzt. Auch wir haben vor ca. 5 Jahren unsere Bibliothek auf diese Software umgestellt. Koha bringt sehr viele Features mit und ist flexibel in der Konfiguration. Der Einstieg ist, wenn man nicht gerade vom Fach ist, etwas steil, aber man wird dafür mit einem tollen System belohnt. Wer mehr über Koha und den Einsatz in Schulen erfahren möchte, sollte sich diese kleine Blog-Post Serie anschauen.

xcp-ng / LXD

xcp-ng

Mein nächster Favorit betrifft die Serverinfrastruktur. Wer eigene Server in der Schule betreibt, muss sich mit der Frage beschäftigen, welchen Hypervisor er einsetzen will. Die Auswahl ist groß und man kann zwischen einigen Open Source Optionen wählen. Wir haben uns vor Jahren für xcp-ng entschieden (aus XenServer hervorgegangen). Dazu setzen wir XenOrchestra ein, um die Server zu verwalten. Mit xcp-ng verwalten wir unsere virtuellen Maschinen.

Die meisten unserer (Web)Anwendungen laufen aber in Linuxcontainern. Dafür verwenden wir LXD – ein Container-Hypervisor. LXD bringt mit lxc einen sehr einfach zu bedienende Anwendung mit, um Container zu erstellen, Backups zu erstellen, usw. Der große Vorteil von Linuxcontainern ist für mich, dass ich sie genauso wie eine virtuelle Maschine verwalten, konfigurieren und administrieren kann. Dafür sind sie wesentlich ressourcensparender als eine VM. Seit dem 4.0 Release kann man sogar „richtige“ VMs mit LXD erstellen und verwalten!

pfSense

pfsense

Für mich ist pfSense eines der besten Open Source Firewall Systeme. PfSense kann man einfach installieren und benutzen und läuft seit Jahren sehr stabil in unserem Netzwerk. Mit pfBlockerNG hat man zusätzlich ein sehr mächtiges Werkzeug, um Werbung, Malwareseiten u.v.a. aus dem Netzwerk fernzuhalten (Webfilter auf DNS Basis).

linuxmuster.net

linuxmuster.net

Über linuxmuster.net habe ich schon oft in diesem Blog geschrieben. Linuxmuster.net ist eine Open Source Schulserverlösung, mit der man Benutzer (Lehrkräfte, Schüler/innen) und Schulcomputer einfach verwalten kann. LINBO, ein Werkzeug von linuxmuster.net, ist für mich eines der wichtigsten Features, denn damit kann ich alle Schulcomputer mit nur einem Image verwalten, auch wenn sie unterschiedliche Konfigurationen haben.

Nextcloud

nextcloud

Nextcloud darf in dieser Liste nicht fehlen. Gerade in den letzten Monaten sind eine Menge neuer Features dazugekommen, die auch im Schulumfeld sehr nützlich sind. Nextcloud ist dabei weit mehr, als nur eine gemeinsame Dateiablage. Durch die vielen Erweiterungen kann man Nextcloud sehr an die individuellen Bedürfnisse anpassen. Egal ob Online Office Suite, Videokonferenz oder einfach nur ein gemeinsamer Kalender – vieles ist mit Nextcloud möglich.

Bonus: Zammad

zammad

Noch eine kleine Bonusempfehlung am Ende: Zammad. In den letzten Jahren haben wir verschiedene Service Desk / Helpdesk Anwendungen ausprobiert. Letztendlich sind wir bei Zammad gelandet und es gefällt uns sehr gut. Wie auch alle anderen Empfehlungen hier, bringt es viele nette Features mit. Es lässt sich gut in die bestehende Infrastruktur integrieren und man kann über viele verschiedene Kanäle Tickets erstellen (Soziale Netzwerke, eMail, Chat, …).

Fazit

Die Liste hier könnte man noch beliebig erweitern. Gerade für den Infrastrukturbereich gibt es eine große Menge an Open Source Anwendungen. Allein diese Liste spricht für sich: https://github.com/awesome-selfhosted/awesome-selfhosted. Moodle oder Mahara sollten eigentlich auch noch mit aufgenommen werden, aber damit haben wir bisher kaum Erfahrung sammeln können.

Welche Open Source Anwendungen gehören zu deinen Favoriten, die in keiner Schule fehlen sollten?

3 Kommentare

Der Beitrag Die 5 besten Open Source Anwendungen für eine Schule erschien zuerst auf .:zefanjas:..

4. Oktober 2020

Digitalisierung ist seit Jahren in aller Munde. Die Pandemie hat aus Schlagworten in Sonntagsreden dann endlich Taten folgen lassen. Wieder einmal geht es dabei um die Herausforderung, quelloffene und freie Lösungen zu etablieren und nicht blind der Marketing-Maschinerie der großen IT-Konzerne zu folgen.

Vom Bildungssektor über die staatliche Verwaltung - Digitalisierung ist endlich in der Gegenwart angekommen. Nicht mehr nur als Übertragung analoger Arbeitsschritte in digitale Pendants - vom Papier zum Computer gewissermaßen - sondern durch Nutzung der Chancen und Möglichkeiten solcher Veränderungen. Homoffice, Homeschooling und hybride Modelle machen es endgültig notwendig. Der Versuch vieler Behörden, den Publikumsverkehr zu reduzieren, kommt da noch hinzu.

Bei der Umsetzung der Digitalisierung sollten quelloffene und freie Lösungen im Fokus stehen. Die Forderung ist oft zu hören, wird offensiv von entsprechenden Interessenvertretungen propagiert und ist absolut legitim. Wenn der Staat selbst etwas entwickelt / entwickeln lässt, sollte das ebenso der Allgemeinheit zur Verfügung gestellt werden, wie auch Open Source bei gleichwertigen Angeboten immer bevorzugt werden sollte. Die Art und Weise, wie der Staat hier beispielsweise die deutsche Corona Tracing App transparent und offen entwickeln ließ, ist absolut vorbildlich. Das ist nicht das einzige Leuchtturmprojekt, sondern der Einsatz von Nextcloud durch den Bund fällt ebenfalls in diese Kategorie. Denn hier wird nicht nur auf quelloffene Software zurückgegriffen, sondern die maßgebliche Entwicklerfirma mit einem Auftrag bedacht und dadurch langfristig in der Weiterentwicklung unterstützt. Die Berücksichtigung von Open Source Angeboten und Bevorzugung solcher Lösungen bei Ausschreibungen ist leider immer noch keine Selbstverständlichkeit und das kann nicht oft genug kritisiert werden. Entsprechende Initiativen wie in Schleswig-Holstein oder nun auch wieder München sind daher begrüßenswert. Diese Grundsätze sind in Fachkreisen eigentlich eine Selbstverständlichkeit und mir sind keine validen Gegenargumente bekannt.

Nur sollte man dabei nicht über das Ziel hinaus schießen. Bei Gleichwertigkeit die quelloffene Lösung bevorzugen und gleichzeitig langfristig an einer Ablösung der proprietären Software zu arbeiten, ist absolut richtig. Gleichsam ist die Abhängigkeit der Regierung von einem einzigen IT-Konzern hochgradig bedenklich. Problematisch wird es, wenn Open Source Lösungen in allen Bereich als absolut gleichwertig propagiert werden. In einigen Bereichen ist es das sicherlich richtig, in anderen eher nicht. Da muss ganz stark auf die Anforderungen und Möglichkeiten schauen. Realistisch ist daher eher ein Mischbetrieb, denn eine reine OSS-Umgebung.

Hier läuft man Gefahr, die Fehler der Linux Community von circa 2005 zu wiederholen. Damals kursierten Nachrichten, nach denen Linux vermeintlich etabliert sei oder Behörden angeblich verstärkt auf Open Source setzen würden. Der Sprung auf die Firmen-Desktops stünde gar kurz bevor. Dahinter stand der Stolz auf die Entwicklungserfolge bei Linux, aber wir kennen die Geschichte - es war mehr Hoffnung, denn Realität. In der realen Welt war Linux halt noch nicht so weit und viele Pilotprojekte scheiterten. Spektakulär waren dabei Wienux und LiMux, die beide bezeichnenderweise 2005/2006 an den Start gingen. Diese Misserfolge könnte man zwar als unvermeidbar verbuchen, aber es ging auch viel Vertrauen verloren. Durch die wahrgenommene Diskrepanz aus Versprechen und Realität und entsprechende Praxiserfahrungen verfestigte sich die Ansicht "Linux sei halt doch noch nicht reif für den Desktop" für viele Jahre.

Genau das gilt es zu vermeiden. Werbung für Open Source ist sinnvoll, gleichwertige Projekte zu empfehlen auch, die Forderung nach mehr Förderung ebenfalls verständlich und perspektivisch sinnvoll um Lücken zu schließen. Schwächen negieren oder weg zu diskutieren bringt aber nichts, denn die Anwender merken dies schnell. Plakativ formuliert: Zu behaupten XMPP könnte Teams & Co ersetzen hilft niemandem. Nextcloud könnte OneDrive ersetzen ist hingegen realistisch.


Bilder:

Einleitungs- und Beitragsbild von Megan_Rexazin via pixabay

"

2. Oktober 2020

Wenn Sie einmal an die Vorzüge von VSCode zu schätzen gelernt haben, möchten Sie diese auch dann nutzen, wenn Sie remote via SSH einen Server administrieren oder Code verfassen. VSCode läuft aber nur im Grafikmodus und kann daher nicht direkt in typischen Server-Installationen ausgeführt werden. Hier schlägt die Stunde von Editoren, die wie Vi oder Emacs im Textmodus laufen und daher auch in einer SSH-Session funktionieren …

Ich will Sie hier aber nicht von den Vorteilen alter Text-Modus-Editoren überzeugen, sondern Ihnen stattdessen die ausgesprochen praktische VSCode-Erweiterung Remote SSH vorstellen: Damit läuft VSCode weiterhin auf Ihrem lokalen Rechner. Via SSH können Sie nun die Dateien eines Remote-Verzeichnisses auflisten, bearbeiten, verändern und speichern — ganz so, als würden Sie lokale Dateien bearbeiten.

Installation und erste Tests

Zur Installation suchen Sie in der Extensions-Seite nach Remote SSH und klicken auf Install. Fertig!

Nun führen Sie mit <F1> Remote SSH: Add new ssh host aus und geben dann — ganz wie in einem Terminal — das Kommando ssh <user>@<hostname> ein. VSCode speichert die Daten in .ssh/config, stellt aber vorerst keine Verbindung her.

Der Verbindungsaufbau erfolgt mit <F1> Remote SSH: Connect to host oder über den grünen Remote-Bereich in der Statusleiste. VSCode greift beim Verbindungsaufbau auf das Linux-Kommando ssh zurück und wertet entsprechend auch die in .ssh gespeicherten Schlüssel aus. Die Angabe eines Passworts ist nur erforderlich, wenn es für die gewünschte Verbindung keine SSH-Schlüssel gibt oder wenn ein per Passwort abgesicherter Schlüssel erstmalig verwendet wird.

Nach dem erfolgreichen Verbindungsaufbau öffnet VSCode ein neues Fenster, wobei der grünen Bereich in der Statusbar klar macht, dass nicht lokale Daten bearbeitet werden. Von nun an funktioniert VSCode wie üblich: Sie wählen ein Verzeichnis aus, bearbeiten die darin enthaltenen Dateien, speichern Ihre Änderungen usw.

Mit VSCode Dateien bearbeiten, die sich auf einem anderen Rechner befinden. Beachten Sie den grünen Bereich der Statusleiste!

Ausgesprochen praktisch ist im Remote-Betrieb auch der Terminal-Bereich von VSCode (Menükommando Terminal/New Terminal). Auch das Terminal agiert remote, Sie führen darin also wie in einer SSH-Session Kommandos am Server aus.

Kein sudo

An seine Grenzen stößt VSCode, wenn Sie Systemdateien bearbeiten möchten (siehe auch dieses GitHub-Issue): Es gibt keine sudo vergleichbare Funktion. Somit erlaubt VSCode nur den Zugriff auf die Dateien, die auch ein SSH-Benutzer lesen darf.

Sofern Ihr Server einen SSH-root-Login erlaubt, ist es grundsätzlich denkbar, die SSH-Verbindung für VSCode mit root@<hostname> herzustellen. Wirklich glücklich macht diese Lösung aber nicht. VSCode kann sich zwar mehrere Verbindungen für einen Server merken (normaler Benutzer, root etc.), in der Statusleiste wird aber immer nur den Hostnamen anzeigt (aber nicht den Loginnamen). Wenn Sie VSCode mal als gewöhnlicher Benutzer und mal mit root-Login verwenden, geht schnell der Überblick verloren. Und ständig mit root-Rechten arbeiten will sowieso niemand.

Inotify-Fehlermeldung

VSCode überwacht die im geöffneten Remote-Verzeichnis befindlichen Dateien auf Änderungen. Wenn VSCode dabei einen inotify-Fehler anzeigt (siehe die entsprechende VSCode-Dokumentation), erhöhen Sie am besten das Limit der zu überwachenden Dateien. Dazu bauen Sie in die Datei /etc/sysctl.conf des Remote-Rechners die folgende Anweisung ein:

# Datei /etc/sysctl.conf
...
fs.inotify.max_user_watches=100000

Anstelle von 100000 können Sie natürlich einen anderen Wert wählen. Das Kommando sysctl -p aktiviert die Änderungen.

Sicherheitsbedenken

Bei aller Bequemlichkeit ist es mir persönlich ein wenig unheimlich, VSCode via SSH den Zugriff auf einen Server zu erlauben. Ich hege zwar kein ausgesprochenes Misstrauen gegenüber den VSCode-Entwicklern, aber als erste Schutzmaßnahme ist das Abschalten der Telemetriefunktionen sicher kein Fehler. Suchen Sie in den VSCode-Einstellungen nach telemetry und deaktivieren Sie die entsprechenden Optionen.

Selbst wenn VSCode an sich OK ist: Wer weiß schon, ob nicht irgendeine der typischerweise vielen installierten VSCode-Extensions bösartigen Code enthält und z.B. die via VSCode bearbeiteten Dateien auf Passwörter durchsucht und diese weiterleitet?

Grundsätzlich gilt dieser Vorbehalt natürlich für jeden Editor, ganz egal, ob »nur« lokale Dateien oder SSH-Verbindungen im Spiel sind. Fest steht aber, dass ein so leicht erweiterbarer Editor wie VSCode eine potenzielle Gefahrenquelle ist.

Quellen

Wie so viele andere Veranstaltungen in diesem Jahr findet auch der LinuxDay in Vorarlberg dieses Jahr ausschließlich online statt.

Die Linux User Group (LUG) Vorarlberg schickt sich an, die Veranstaltung erstmals im Cyberspace und auf Basis von Open Source Software auszurichten. Ich denke sowohl die Veranstalter, Vortragende und Teilnehmer sind auf diese Premiere gespannt.

Das diesjährige Vortragsprogramm bietet insgesamt 12 Vorträge. Diese verteilen sich auf zwei Blöcke mit jeweils sechs Vorträgen. Von mir ist in diesem Jahr auch wieder ein Beitrag dabei. Um 11:00 Uhr werde ich euch zwei kleine Projekte vorstellen, mit denen sich ein Spiegelserver und ein Patch-Management für Red Hat Enterprise Linux realisieren lassen.

Ich persönlich finde es sehr schade, dass diese und viele weitere Veranstaltungen dieser Art in diesem und vermutlich auch im nächsten Jahr ausschließlich im Cyberspace abgehalten werden können. Die Gründe dafür verstehe ich und kann die Entscheidung nachvollziehen. Doch geht das, was ich an diesen Veranstaltungen am meisten schätze, derzeit verloren.

Für mich stellt der Besuch des LinuxDay eine willkommene Abwechslung zum Alltag dar. Die Vorfreude beginnt bereits Tage vor der Anreise. Auf diesen Veranstaltungen treffe ich Gleichgesinnte in lockerer und ungezwungener Atmosphäre. Einige Menschen treffe ich tatsächlich ausschließlich am Rande dieser Veranstaltungen. Bei Kaffee, Mate und Bier lässt sich fachsimpeln, über aktuelle Entwicklungen diskutieren und man fühlt sich verstanden. Dies alles geht bei reinen Online-Konferenzen in meinen Augen verloren. Daher hoffe ich, dass möglichst bald ein Impfstoff gegen das Corona-Virus gefunden wird und wir uns vielleicht schon 2022 vor Ort wiedersehen können.

1. Oktober 2020

Mozilla hat Firefox 81.0.1 für Windows, Apple macOS sowie Linux veröffentlicht und behebt damit mehrere Probleme der Vorgängerversion.

Download Mozilla Firefox für Microsoft Windows, Apple macOS und Linux

Voraussichtlich mit Firefox 82 wird Mozilla eine neue Druck-Vorschau ausliefern. Im Zuge der dazugehörigen Plattform-Arbeiten kam es zu mehreren Fehlern in Firefox 81, welche Mozilla mit Firefox 81.0.1 aus der Welt schafft.

Außerdem hat Mozilla einen Fehler in Zusammenhang mit der IntersectionObserver-API behoben, welches in der virtuellen Lern-Plattform Blackboard fehlenden Inhalt verursachte.

Weiter wurde ein Skalierungsproblem behoben, welches ausschließlich Flash-Content auf Systemen mit HiDPI-Bildschirm und macOS als Betriebssystem aufgetreten ist.

Ein Problem in der Enterprise Policy Engine sorgte dafür, dass Unternehmensrichtlinien, welche Boolean-Einstellungen in about:config nach dem älteren Standard änderten, auf Windows nicht mehr funktionierten, falls über GPO umgesetzt.

Die Schaltfläche zur Verwendung der Bild-in-Bild-Funktion für Videos wurde fälschlicherweise auch auf der Wiedergabe-Seite von reinen Audio-Medien dargestellt.

Ein Problem wurde behoben, welches bei Verwendung bestimmter Add-ons, unter anderem Disconnect, einen starken Anstieg des Arbeitsspeichers verursachte.

Schließlich wurden noch mehrere potentielle Absturzursachen behoben.

Der Beitrag Mozilla veröffentlicht Firefox 81.0.1 erschien zuerst auf soeren-hentzschel.at.

28. September 2020

Die MZLA Technologies Corporation hat mit Thunderbird 78.3.1 ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 78.3.1

Mit dem planmäßigen Update auf Thunderbird 78.3.0 hat das Team der MZLA Technologies Corporation zahlreiche Korrekturen und Verbesserungen unter der Haube vorgenommen und Sicherheitslücken behoben. Eine vollständige Liste der Änderungen lässt sich in den Release Notes (engl.) nachlesen.

Die kurz nach Thunderbird 78.3.0 veröffentlichte Version Thunderbird 78.3.1 behebt eine mögliche Absturzursache, welche nach dem Update auf Thunderbird 78.3.0 auftreten konnte.

Der Beitrag Thunderbird 78.3.1 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

26. September 2020

Das relationale Datenbankmanagementsystem PostgreSQL ist in Version 13 veröffentlicht worden. Optimiert wurden der Speicherplatzverbrauch sowie die Performance.

PostgreSQL ermöglicht seit einem knappen viertel Jahrhundert bereits die Verwaltung relationaler Datenbanken und stellt eine Alternative zu MySQL oder ähnlichen RDMS dar. Seit 2017 wurde jedes Jahr im oder kurz vor dem Oktober ein neues Major-Release des stetig an Popularität gewinnenden Systems veröffentlicht. So hat auch dieses Jahr die PostgreSQL Global Development Group am 24. September 2020 eine neue Version veröffentlicht: PostgreSQL 13.

Der neuste Release ermöglicht eine bessere Verarbeitung großer Datenbanken, besonders bei der Administration und im Betrieb: PostgreSQL 13 kann besser mit duplizierten Daten in B-Tree Indizes umgehen, was Speicherplatzeinsparungen zur Folge hat. Dies betrifft viele Datenbanken, da B-Tree Indizes die Standardindizes im RDBMS sind.

Bessere Administration

Weitere Verbesserungen gibt es beim VACUUM-Befehl. Zur Erinnerung: PostgreSQL greift, ähnlich wie andere Datenbanken, auf die Multiversion Concurrency Control-Verfahrenstechnik zurück. Diese isoliert im Grunde alle Transaktionen voneinander. Wird nun ein Datensatz aktualisiert (UPDATE), so wird das nicht an zentraler Stelle gespeichert, da andere parallele Transaktionen gerade noch auf die alte Version zugreifen könnten. Aus Performancegründen ist das Aufräumen ein getrennter Vorgang, der manuell über VACUUM, quasi den Garbage Collector, angestoßen werden muss. Die gute Nachricht: ab der neuen Version 13 gibt es die Option PARALLEL, damit VACUUM Indizes parallel verarbeiten kann. Allerdings gilt diese Nebenläufigkeit nicht für VACUUM FULL.

Mit max_slot_wal_keep_size kann nun bestimmt werden, wie viele WAL-Segmente von den Replication Slots im pg_wal-Verzeichnis vorgehalten werden dürfen, um Out-of-memory-Probleme auf der Primärdatenbank zu verhindern.

In der konkreten Anwendungsentwicklung hilft nun datetime() für SQL/JSON, um z. B. ISO 8601-Strings in für PostgreSQL native Datentypen zu konvertieren. Eine UUIDv4 kann nun nativ über gen_random_uuid() generiert werden.

Darüber hinaus kann mit dem neuen Kommando pg_verifybackup die Integrität von pg_basebackup-Erzeugnissen überprüft werden.

Sicherheit

Auf der Sicherheitsebene führt PostgreSQL 13 das Konzept der vertraulichen Erweiterungen ein, um einfachen Datenbank-Benutzern die Möglichkeit zu geben, zuvor von Superusers als vertraulich deklarierte Erweiterungen selbst zu installieren.

Neu ist auch das (erzwungene) Channel-Binding für Verbindungen, besonders bei SCRAM-Authentifziuerng. postgres_fdw kann nun Zertifikate für die Authentifzierung verwenden und mit dem sslpassword-Parameter können nun auch passwortgeschützte TLS-Zertifikate genutzt werden.

Weiterführende Informationen

Die vollständige Liste der Änderungen ist wie immer in den Release Notes zu finden, weiterhin sind auch die deutsche Pressemitteilung und die Pressemitteilung zum vorausgegangenen Beta-Release lesenswert.

PostgreSQL 13 ist ab sofort zum Bauen verfügbar und wird demnächst in die ersten Distributionen Einzug halten. Wer schon jetzt Version 13 ausprobieren möchte, kann auch auf das Docker-Image postgres:13 zurückgreifen.

25. September 2020

Kali Linux kann schon seit geraumer Zeit mittels WSL unter Windows ausgeführt werden. Ganz neu ist die Möglichkeit, Kali Linux in Kombination mit WSL2 auch im Grafikmodus zu nutzen. Das dazu erforderliche Paket kali-win-kex (Kex steht für Kali Desktop Experience) setzt dabei auf das bewährte Protokoll VNC.

Voraussetzungen

  • Sie müssen WSL aktivieren (Windows Features).
  • Sie müssen eine aktuelle Version von Kali Linux für WSL installieren (kostenlos zu finden im Microsoft Playstore).
  • Sie müssen die Kali-Installation von WSL1 auf WSL2 umstellen:
> wsl --set-version kali-linux 2

> wsl --list --verbose

    NAME                   STATE           VERSION
  * Ubuntu                 Stopped         2
    kali-linux             Stopped         2
    ...

Installation von kali-win-kex

Damit Kali Linux unter WSL im Grafikmodus laufen kann, müssen Sie Kali Linux starten und dort kali-win-kex installieren. Da Kali Linux für WSL normalerweise keine Grafikprogrammen enthält, zieht apt install kali-win-kex die Installation unzähliger weiterer Pakete nach sich. Haben Sie ein wenig Geduld!

> wsl -d kali-linux
$ sudo apt update
$ sudo apt full-upgrade
$ sudo apt install kali-win-kex

Betrieb

Der erstmalige Start von Kali Linux ist nun denkbar einfach: Sie führen (ohne sudo!) das Kommando kex aus. Es richtet einen VNC-Server ein und fragt zuerst zweimal nach einem Passwort für die VNC-Verbindung. Optional können Sie ein weiteres Passwort für einen Read-Only-Betrieb einrichten (Sie sehen also Kali Linux, können es aber nicht steuern). Überspringen Sie diesen Punkt.

$ kex

  Password: *******
  Verify:   *******
  Would you like to enter a view-only password: n

Danach erscheint Kali Linux im Vollbildmodus. Auf den ersten Blick scheint es keine Möglichkeit zu geben, diesen wieder zu verlassen. Drücken Sie F8! Diese Funktionstaste führt in ein Kontextmenü des VNC-Viewers. Dort können Sie nicht nur die Option Full Screen deaktivieren, sondern das VNC-Fenster auch minimieren oder die Session ganz beenden (Exit viewer). Der Kali-Desktop passt sich übrigens automatisch an die Fenstergröße des VNC-Viewers (es handelt sich um TigerVNC) an.

Oben die WSL-Konsole, unten Kali Linux im Grafikmodus in einem Tiger-VNC-Fenster samt Menü (F8)

Hinweis: Verwenden Sie nicht das Abmelden-Menü des Kali-Desktops! Übrig bleibt dann ein schwarzer Bildschirm mit Maus. Der VNC-Viewer läuft weiter, aber es gibt keine Möglichkeit, sich wieder anzumelden. Sie müssen Kex mit kex kill beenden und dann neu starten. (Wenn Sie das nicht tun, führt jeder Versuch, eine neue VNC-Verbindung herzustellen, zum Fehler connection refused.)

Seamless Mode

kex ohne weitere Optionen startet Kali Linux in einem VNC-Fenster. Daneben stellt kex eine zweite Variante zur Wahl, den Seamless Mode. Diesen starten Sie im WSL-Fenster von Kali Linux mit der Option --sl:

$ kali --sl

Wichtig ist, dass Sie beim ersten Start des Seamless Mode eine Firewall-Ausnahmeregel für das Programm vcxsrv akzeptieren, und zwar sowohl für private als auch für öffentliche Netzwerke.

Erforderliche Firewall-Einstellungen für den »Seamless Mode«

In der Folge blendet Kali ein Panel am oberen Rand in den Windows Desktop ein. Dort können Sie Kali-Programme starten, die parallel zu Windows-Programmen in Fenstern auf dem gemeinsamen Windows Desktop erscheinen. (Ähnliche Funktionen bieten auch kommerzielle Virtualisierungssysteme wie VMware und Parallels.) Der Seamless Mode setzt allerdings voraus, dass sich die Windows Task-Leiste am unteren Bildschirmrand befindet. Ich ziehe es vor, die Task-Leiste am linken Rand zu platzieren — aber dann kommt es zu Überlappungen. Wenn man von dieser Kleinigkeit absieht, funktioniert der Seamless Mode verblüffend gut und ermöglicht wirklich ein nahtloses Nebeneinander von Kali Linux und Windows.

Oben das Kali-Panel mit Menü, links unten ein Kali-Terminal, rechts zwei Windows-Programme, unten die Windows-Taskleiste

Beachten Sie aber, dass unter Kali Linux für WSL anfangs sämtliche Hacking-Tools fehlen! Es handelt sich ja um eine Minimalinstallation. Entsprechend leer sieht das Kali-Startmenü aus. Wenn Sie keine Lust haben, jedes Hacking-Tool einzeln zu installieren, erhalten Sie mit dem folgenden Kommando ein gute Auswahl der wichtigsten Kommandos (Vorsicht, ca. 1200 Pakete, 5 GByte Platzbedarf!):

sudo apt install kali-linux-default

Einschränkungen

Die Desktop-Integration von Kali Linux funktioniert verblüffend gut und trotz VNC-Backend ohne spürbare Lags. Grandios!

Kex ändert freilich nichts daran, dass WSL2 hinsichtlich der Netzwerkverbindungen recht inflexibel ist. Kali Linux erhält unter WSL2 standardmäßig eine IP-Adresse in einem privaten Netzwerk (NAT, auf meinem Rechner 172.22.7.*), was die Hacking-Möglichkeiten im lokalen Netz stark limitiert. Es gibt im Internet Anleitungen, wie diese Beschränkung teilweise umgangen werden kann, aber eine echte Lösung habe ich nicht gefunden.

Für viele Aufgaben muss Kali Linux daher weiterhin in eine virtuelle Maschine mit Network Bridging oder auf einen physischen Rechner installiert werden. (Ziehen Sie für letztere Option auch den Raspberry Pi in Betracht!)

Quellen

WSL2 Networking:

23. September 2020

Mozilla hat Firefox 81 für Windows, Apple macOS und Linux veröffentlicht. Dieser Artikel fasst die wichtigsten Neuerungen zusammen – wie immer auf diesem Blog weit ausführlicher als auf anderen Websites.

Download Mozilla Firefox für Microsoft Windows, Apple macOS und Linux

Neues optionales Farbschema

Neben dem vorwiegend hellen Theme mit Akzent als Standard-Design und einem komplett hellen sowie einem komplett dunklen Theme wird Firefox standardmäßig bereits mit drei Design-Optionen ausgeliefert. Mit Firefox 81 kommt noch eine vierte Wahlmöglichkeit dazu.

Das neue Theme hört auf den Namen Firefox Alpenglow und ist besonders farbenfroh. Damit hebt es sich ganz bewusst von den drei anderen Themes ab. Dem Nutzer dürfte durch diesen Kontrast zu den anderen Firefox-Themes vor allem die vielfältigen Möglichkeiten der farblichen Anpassung vermittelt werden. Nutzer können über addons.mozilla.org aus tausenden weiteren Themes wählen.

Firefox Alpenglow

Firefox Alpenglow

PDF-Betrachter in neuem Design

In neuer Optik erstrahlt auch der PDF-Betrachter von Firefox. Während das alte Design sehr dunkel war und nicht der sonstigen Design-Sprache von Firefox entsprochen hatte, zeichnet sich das neue Design durch neue Icons, passend zum Photon-Stil von Firefox, größere Schaltflächen sowie dem Fehlen von Farbverläufen und Schattierungen aus, wodurch es nicht nur moderner wirkt, sondern durch eine reduzierte Größe auch schneller lädt. Außerdem gibt es nun sowohl ein dunkles als auch ein helles Farbschema, passend zu den unterschiedlichen Design-Optionen von Firefox.

Firefox 81

Firefox 81

Ausfüllen von PDF-Formularen

Aber nicht nur die Optik des PDF-Betrachters hat sich geändert. Während Mozillas PDF-Betrachter in der Vergangenheit wirklich als reiner Betrachter zu sehen war, ist es ab Firefox 81 auch möglich, PDF-Formulare, sofern es sich um AcroForm-Formulare handelt, auszufüllen und diese ausgefüllt zu speichern und zu drucken. Diese Neuerung wird in Kürze ausgerollt werden. Neugierige können das Feature bereits jetzt aktivieren, indem sie über about:config den Schalter pdfjs.renderInteractiveForms auf true setzen.

Firefox 81

Unterstützung von Ebenen in PDF-Dateien

Eine weitere große Verbesserung im Umgang mit PDF-Dateien ist die Unterstützung von Ebenen. Bisher hat Firefox keine Ebenen in PDF-Dateien unterstützt, was beim Betrachten von PDF-Dateien mit unsichtbar geschalteten Ebenen dafür sorgen konnte, dass Inhalte in PDF-Dateien angezeigt worden sind, welche in anderen PDF-Anwendungen nicht zu sehen waren.

Firefox 81 hält sich dabei an die Standard-Vorgaben des PDF-Dokuments, ab Firefox 82 wird es möglich sein, jede Ebene gezielt ein- und auszublenden.

Firefox 82

USA, Kanada: Speichern von Kreditkarteninformationen

Für Nutzer in den USA und in Kanada ist es nun möglich, Firefox Kreditkarteninformationen speichern zu lassen, was vor allem Nutzern entgegenkommt, welche häufiger im Web shoppen gehen. Diese Änderung wird schrittweise an die Nutzer ausgerollt.

Österreich, Schweiz, Belgien: Pocket-Empfehlungen

Für Nutzer in Deutschland zeigt die Firefox-Startseite bereits seit langer Zeit Empfehlungen von Pocket an, einem Dienst von Mozilla. Mit Firefox 81 aktiviert Mozilla dieses Feature auch für Nutzer der deutschen Firefox-Version in Österreich, der Schweiz sowie in Belgien.

Firefox 81

Verbesserungen der Entwicklerwerkzeuge

Im Barrierefreiheit-Werkzeug wurde das Tool zur Simulation von Sehschwächen (steht nur bei aktiviertem WebRender zur Verfügung) dahingehend überarbeitet, dass es die jeweiligen Einschränkungen genauer simuliert.

Im Editor-Modus der Konsole ist es jetzt möglich, Code-Teile für eine bessere Übersicht einzuklappen.

TypeScript-Dateien werden im Debugger-Panel zur schnelleren Identifikation mit einem entsprechenden Symbol gekennzeichnet. Ein Kontextmenü-Eintrag im Debugger erlaubt das Umbrechen langer Zeilen.

Verbesserungen der Webplattform

Das sandbox-Element des iFrame-Elemts unterstützt jetzt das allow-downloads-Token. Die Unterstützung für das nicht standardisierte mozallowfullscreen-Attribut in iFrames wurde entfernt. Stattdessen ist allow=“fullscreen“ zu nutzen.

Firefox unterstützt aus Kompatibilitätsgründen zu anderen Browsern jetzt auch die nicht standardisierte Form des Content-Disposition Headers ohne Anführungszeichen und mit Leerzeichen im Dateinamen.

Ausführliche Informationen zu Verbesserungen der Webplattform in Firefox 81 finden sich in den MDN web docs.

Sonstige Neuerungen in Firefox 81

Ab sofort ist es möglich, die Wiedergabe von Audio und Video auch über die Media-Tasten der Tastatur oder des Headsets zu steuern.

Der Bild-in-Bild-Modus erlaubt es, die Wiedergabe von Videos von der Website loszulösen und über andere Tabs und sogar Anwendungen zu legen. Die entsprechende Schaltfläche wird in Kürze ein neues Design erhalten.

Werden Lesezeichen aus einem anderen Browser importiert, zeigt Firefox nun standardmäßig die Lesezeichen-Symbolleiste an.

Ab sofort lassen sich heruntergeladene Dateien in den Formaten .xml, .svg sowie .webp direkt in Firefox öffnen.

Firefox unterstützt nun die hardwarebeschleunigte Wiedergabe von VP9-Videos auf macOS Big Sur.

Die Benachrichtigungsleisten von Firefox wurden optisch überarbeitet.

Firefox 81

Sind in Firefox für eine Website noch keine Zugangsdaten gespeichert, in einem anderen Browser jedoch schon und das Profil ist noch keine Woche alt, schlägt Firefox bei Fokussierung des Passwortfelds nun den Import der Zugangsdaten aus entsprechendem Browser vor.

Mozilla hat die Parameter für das Scrolling mit dem Mausrad angepasst, damit sich Firefox nicht langsamer als andere Browser wie Chrome oder Edge anfühlt. Für bestehende Nutzer sind die Änderungen dabei geringer als für neue Nutzer, um bestehende Nutzer schrittweise umzugewöhnen.

Auch wurde in Firefox 81 WebRender wieder für weitere Nutzer ausgerollt. Genauer gesagt wurde die minimal erforderliche Treiber-Version für Intel-GPUs erneut gesenkt, außerdem wird WebRender nun für Nutzer weiterer Intel-Grafikchips ausgeliefert.

Für Entwickler von WebExtensions gibt es bei Verwendung der menus.create()-API hilfreichere Fehlermeldungen. Außerdem gab es zwei Kompatibilitäts-Anpassungen der webNavigation-API, damit sich Firefox vergleichbar zu Google Chrome verhält. Die tabs.saveAsPDF()-API funktioniert jetzt auch auf macOS. Firefox-Nutzer sehen in den Einstellungen einen Hinweis, wenn eine Erweiterung die Einstellung zum Speichern von Zugangsdaten kontrolliert.

Natürlich kam auch in Firefox 81 die Unterstützung weiterer Unternehmensrichtlinien dazu.

Es wurde ein Fehler behoben, der für Nutzer von Sprachpaketen dafür sorgen konnte, dass die Sprache nach einem Firefox-Update auf Englisch zurückgesetzt worden ist.

Außerdem wurde die Barrierefreiheit nativer HTML5 Audio- und Video-Elemente verbessert.

Geschlossene Sicherheitslücken

Wie immer hat Mozilla auch in Firefox 81 wieder mehrere Sicherheitslücken geschlossen. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 81 daher für alle Nutzer dringend empfohlen.

Der Beitrag Mozilla veröffentlicht Firefox 81 – die Neuerungen erschien zuerst auf soeren-hentzschel.at.

Seit Anfang September 2020 gibt es ein EEPROM-Update für den Raspberry Pi 4, das eine von älteren Modellen bekannte Funktion endlich auf für die Version 4 implementiert: Das Booten von externen USB-Datenträgern. Damit können Sie Ihren Raspberry Pi 4 ohne die auf Dauer oft unzuverlässige SD-Karte betreiben.

Testaufbau: Raspberry Pi 4B mit einer älteren SATA-SSD, die über ein USB-Kabel angeschlossen ist

Vorbereitungsarbeiten

Um den USB-Bootprozess auszuprobieren, habe ich das neueste 32-Bit-Image von Raspberry Pi OS heruntergeladen und mit Etcher auf eine SD-Karte übertragen. Die erforderliche neueste Firmware ist in diesem Fall bereits inkludiert.

Wenn Sie eine ältere Raspberry-Pi-OS- bzw. Raspbian-Installation haben, müssen Sie sich selbst um alle Updates für das Betriebssystem, die Firmware und das EEPROM kümmern. Anschließend ist ein Reboot erforderlich.

sudo -s
apt update
apt full-upgrade
rpi-update
rpi-eeprom-update 

  BCM2711 detected
  Dedicated VL805 EEPROM detected
  BOOTLOADER: up-to-date
    CURRENT: Do Sep  3 12:11:43 UTC 2020 (1599135103)
    LATEST: Do Sep  3 12:11:43 UTC 2020 (1599135103)
  FW DIR: /lib/firmware/raspberrypi/bootloader/critical
  VL805: up-to-date
    CURRENT: 000138a1
    LATEST: 000138a1

Bei einer aktuellen Version des Raspberry Pi OS wird das EEPROM schon dahingehend vorkonfiguriert, sowohl die SD-Karte als auch allfällige USB-Datenträger als Bootmedium zu berücksichtigen. Bei älteren Installationen sollten Sie auch das kontrollieren. Dazu führen Sie sudo raspi-config aus und wählen die folgenden Menükommandos aus:

  • 3. Boot Options
  • B4 Boot Order
  • B1 USB BOOT
Aktivierung des USB-Boot-Modus mit raspi-config

Wichtig für den späteren Bootprozess ist, dass die Datei /boot/cmdline.txt keinen absoluten Pfad zur Boot-Partition enthält, sondern deren UUID (Parammeter root=PARTUUID=...). In meinem Fall sieht cmdline.txt so aus:

console=serial0,115200 console=tty1 root=PARTUUID=9e49548b-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

SD-Karte auf die Festplatte/SSD klonen

Damit Sie in Hinkunft vom USB-Datenträger booten können, müssen Sie den Inhalt der SD-Karte auf die mit dem Raspberry Pi verbundene Festplatte oder SSD kopieren. Am einfachsten geht das direkt im Raspberry Pi OS mit dem Programm Zubehör / SD-Card Copier. Beachten Sie, dass Sie dabei sämtliche Daten verlieren, die sich bisher auf dem USB-Datenträger befanden.

Anschließend fahren Sie den Raspberry Pi herunter, entfernen die SD-Karte, schalten den Pi wieder ein und hoffen, dass er nun den USB-Datenträger als Boot-Device akzeptiert.

Hinweis Der Raspberry Pi kann eine kleine USB-Disk (SSD oder 2,5-Zoll-Laufwerk) mit Strom versorgen. Dazu ist es aber wichtig, dass das Netzteil für den Raspberry Pi ausreichend stark ist! Verwenden Sie zumindest ein Netzteil mit 15 W! Andernfalls brauchen Sie für die USB-Disk ein eigenes Netzteil.

Raspberry-Pi-Image direkt auf die USB-Disk schreiben

Anstatt den Umweg über die SD-Karte zu nehmen, habe ich versucht, ein aktuelles Raspberry-Pi-OS-Image mit Etcher direkt auf die SSD zu schreiben. Die so initialisierte Disk habe ich an einen Raspberry Pi ohne SD-Karte angeschlossen — und siehe da, auch das funktioniert! Wenn Sie also nicht eine vorhandene Installation auf ein USB-Gerät übertragen, sondern eine Neuinstallation durchführen möchten, ist das der einfachste und schnellste Weg!

Hinweis Der Boot-Prozess setzt voraus, dass der Raspberry Pi ein aktuelles EEPROM hat. Sie müssen also auf jeden Fall vorweg mit rpi-eeprom-update sicherstellen, dass diese Voraussetzung erfüllt ist.

Praktische Erfahrungen

Die Hoffnung, dass der Boot-Prozess von einer SATA-SSD vielleicht schneller als von einer SD-Card erfolgen würde, haben sich nicht erfüllt. Der eigentliche Boot-Prozess geht zwar flott vor sich — aber es dauert ziemlich lange (fast eine halbe Minute), bis dieser startet. In der Wartezeit zeigt der Raspberry Pi eine Statusseite an. Warum die Erkennung der USB-Disk solange dauert, ist schwer zu verstehen.

Anstatt flott zu booten, zeigt der Raspberry Pi zuerst einmal eine Weile irgendwelche Statusinformationen an.

Ich habe für meine Tests eine ältere SSD mit 256 GByte verwendet. Nahezu der gesamte Platz steht nun im Root-Dateisystem zur Verfügung. Eindrucksvoll:

df -h -t ext4 -t vfat

Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root       229G    2,9G  217G    2% /
/dev/sda1       253M     54M  199M   22% /boot

Stark I/O-lastige Arbeiten, z.B. Updates, erfolgen nun spürbar schneller als mit einer SD-Karte. (Benchmark-Tests habe ich keine durchgeführt — aber sobald mir welche bekannt sind, werde ich hier einen Link angeben.)

Update: Stark abhängig vom USB/SATA-Controller

Ein Hinweis im Forum hat mich dazu gebracht, mein Setup mit einem zweiten USB/SATA-Controllern zu testen. Ergebnis:

  • Controller 1 (USB-3-Stecker für Labor-Setups, Aufschrift »GHB«, ID laut lsusb: 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge): der Raspberry Pi bootet erst nach ca. 30 Sekunden, läuft dann aber stabil
  • Controller 2 (Gehäuse für SATA-Disks, USB 3, Aufschrift »inateck«, ID laut lsusb: 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge): der Raspberry Pi bootet sofort, bleibt aber hängen :-( Das Grafiksystem wird manchmal erreicht, manchmal nicht. Das System ist nicht benutzbar.

Links mein SATA/USB-Controller 1, rechts Controller 2

Mit anderen Worten: Der USB-Bootprozess hängt stark vom verwendeten Adapter ab! Es ist ein Lotteriespiel, ob das Zusammenspiel überhaupt klappt. Ich denke, es gibt keinen schlimmeren Standard als USB3 …

Quellen

Referenz über funktionierende Adapter und Tipps, wie man nicht funktionierende Adapter zur Zusammenarbeit überredet (vielen Dank für alle diesbezüglichen Forum-Beiträge!):

Apple hat mit Safari 14 eine Art Tracking Pranger eingeführt (siehe: Radikale Transparenz gegen Tracking). Ein interessanter Ansatz um die allgegenwärtige Spionage im Netz für den Anwender praktisch greifbar zu machen. Die Ergebnisse sind wenig überraschend, prangern aber eine Firma besonders an.

Tracking ist eine Seuche des modernen Internets (siehe: Internet - Schutz vor Tracking und Anonymität). Ihre Ursache liegt letztlich in der Kostenlos-Kultur des Netzes. Weil Werbung die einzige wirklich gut funktionierende Einnahmequelle des Internets ist, versuchen alle beteiligten Akteure ihre Ausbeute zu steigern. Das geht nur, indem man immer mehr über den einzelnen Kunden erfährt. Nur zielgerichtete Werbung ist effiziente Werbung, denn letztlich soll Werbung Produkte verkaufen. Eine Werbung für ein Luxus-Auto ist bei einem Studenten ebenso fehl am Platz wie Babyprodukte bei einem Senior. Irgendwann haben alle beteiligten Akteure an diesem Markt beschlossen, dass der Kunde faktisch keine Rechte hat und man ihm hemmungslos nachspionieren kann.

Dabei ist zu beachten, dass die simple Erhebung von Statistiken kein Tracking ist. Wenn ein Webseitenbetreiber gerne mit den Serverlogs oder Matomo ein bisschen Datenauswertung betreibt, stellt das nur einen begrenzten Eingriff in die Privatsphäre dar. Der Betreiber kann dadurch nur die Bewegungen auf der einen Seite verfolgen und bei gesetzeskonformer Konfiguration keine Rückschlüsse auf die reale Person machen. Beim Tracking werden aber Daten von unzähligen Seiten zusammen geführt, was generalisierte Aussagen zulässt und - Anonymitätsversprechen hin oder her - Rückschlüsse auf die reale Person ermöglicht. Wirkliche Anonymisierung ist nämlich sehr kompliziert, muss ständig angepasst werden und bei beträchtlichen Datenmengen entsteht oft die Möglichkeit zur Deanonymisierung.

Um mal in den Blick zu nehmen, wer da so Daten erhebt, habe ich eine Woche lang mein Mehrbrowser-Konzept aufgehoben und nur mit Safari 14 gearbeitet. Das Ergebnis ist natürlich nur bedingt allgemeingültig. Erstens enthält es nur Tracker, die Apple auch als solche erkennt und zweitens basiert es auf meinem persönlichen Surfverhalten. Nachrichtenseiten aus Politik, Wirtschaft und Technik sind also überproportional vertreten, Social Media eher unterrepräsentiert. IoT-Geräte und mein Smartphone sind ebenfalls nicht in die Statistik eingeflossen. Das Ergebnis zeigt dennoch eine klare Tendenz.

Insgesamt bin ich beim surfen über 44 Tracking-Anbieter gestolpert, von denen mindestens einer auf 65 % meiner besuchten Seiten vertreten war. Die Tracking-Anbieter verteilen sich aber nicht gleichmäßig. 17 Tracking-Anbieter waren nur auf einer einzigen besuchten Seite vertreten, weitere 13 auf maximal 2 bis 3 Seiten. Lediglich 5 Tracking-Anbieter waren auf mehr als 10 Seiten vertreten: Google, Criteo, INFOnline, Amazon und Facebook.

Hierbei gibt es Schwerpunktbildungen. INFOnline könnte man als Tracker für die deutsche Medienwirtschaft bezeichnen. Die Erhebung erfolgt nahezu nur auf deutschen Onlinemedien. Hier aber von der Lokalzeitung über deutschlandweite Medien bis hin zu IT/Technikportalen. Die Amazon-Tracker finden sich "nur" auf Seiten mit Werbung für Produkte auf Amazon. Lediglich eine einzige Firma ist allerdings omnipräsent und verfügt über ein halbes Dutzend aktiver Tracker: Google

Google arbeitete in den vergangenen Tagen auf diesem System mit Google Tag Manager, DoubleClick, Google Tag Services, Google Analytics, Google Syndication und Google Ad Services. Viele Webseiten haben gleich mehrere Tracker von Google eingebunden, alleine der Google Tag Manager war aber auf einem Drittel der besuchten Seiten vertreten. Google sitzt also wie eine Spinne im Netz und erhebt Daten mit freundlicher Mithilfe zahlloser Webseitenbetreiber auf zweifelhafter rechtlicher Grundlage. Denn eine freiwillige und informierte Einwilligung habe ich nirgendwo erteilt. Dabei muss der Nutzer noch nicht einmal direkt einen Dienst von Google wie die Suchmaschine oder Youtube aufrufen.

Das Experiment brachte also im Grunde genommen nicht viel Neues zutage. Abgesehen davon, dass ich nicht vermutet hätte, so viele unterschiedliche Firmen in diesem Markt vorzufinden. Einige Webseiten - beispielsweise ein bekanntes deutsches IT-Blog - stellten sich zudem als so Tracker-verseucht heraus, dass sie aus meinen Bookmarks geflogen sind. Mit einem vielfältigeren Surfverhalten und der Einbeziehung von mehr internationalen Webseiten wäre hier vielleicht ein noch differenziertes Bild entstanden, allerdings wollte ich ja gezielt mein eigenes Surfverhalten überprüfen und mit welchen Trackern ich trotz sorgsam gesetzten Einwilligungen auf den besuchten Seiten konfrontiert werde.

Hier könnte diese kleine Geschichte über Tracking im Internet enden. Ein paar Sätze zum Phänomen Google müssen aber noch sein. Die meisten der oben gelisteten Anbieter kann ich meiden. INFOnline bietet nur Statistik-Dienstleistungen, ansonsten komme ich damit nicht in Kontakt. Natürlich reichern auch solche Firmen den Datenpool an und tragen ihren Teil zur Profilbildung bei, sie setzen aber einen aktiven Zukauf oder Verkauf von Daten voraus. Übrigens ein Hebel, an dem der Gesetzgeber dringend ansetzen müsste. Amazon und Facebook kann ich - mit etwas Mühe - aus dem Weg gehen. Google hingegen nicht und Google muss die Daten eigentlich nicht mal zukaufen, sondern erhebt sie alle selbst!

Ich stolpere nicht nur auf allen möglichen Seiten über Google-Tracker, selbst wenn ich meine IT-Systeme möglichst datenschutzfreundlich ausrichte, lauert überall der Suchgigant. Viele Anwender von Open Source Software haben ein gesteigertes Datenschutz-Bewusstsein und viele Projekte möchten genau dies bedienen (siehe z. B. KDE gibt sich Ziele: Privacy). Letztlich lauert hier aber überall Google. Sei es durch die Förderung der Projekte über den Google Summer of Code, als Hauptfinanzier von Mozilla oder über die omnipräsente Chromium-Engine, sowie die direkte Einbindung von Trackern auf den Distributions-Seiten (z. B. bei Ubuntu und Red Hat) und da ist das Phänomen Android mit all seinen Diensten noch komplett außen vor. Die enge Anbindung der Open Source-Welt an Google ist somit das genaue Gegenteil des Privatsphäre-Versprechens und beruht zumindest teilweise auf wirtschaftsfeindlichen Lizenzbedingungen freier Lizenzen. Nutze ich also einen Linux Desktop und ein Android Smartphone um meine technischen Systeme selbstbestimmt zu kontrollieren, hänge ich direkt und indirekt mehr von Google ab als bei Windows- und Apple-Produkten. Ein zumindest problematischer Wderspruch.

"