Neueste Artikel

Nagios-Logo

Server Monitoring mit Nagios

Aus der Nagios Dokumentation: »Nagios® ist eine System- und Netzwerküberwachungsapplikation. Sie überwacht Hosts und Services, die Sie angeben, und alarmiert Sie, wenn sich die Dinge verschlechtern und wenn sie wieder besser werden.«

Features:

  • Überwachen von Netzwerkdiensten (SMTP, POP3, HTTP, NNTP, PING, etc.)
  • Überwachen von Host-Ressourcen (Prozessorauslastung, Diskbelegung, usw.)
  • Einfaches Plugin-Design, das es Benutzern erlaubt, schnell eigene Service-Prüfungen zu entwickeln
  • Parallel laufende Service-Prüfungen
  • Die Möglichkeit, Netzwerk-Host-Hierarchien mit Hilfe von „Eltern“-Hosts zu definieren, um die Erkennung von Hosts zu erlauben, die „down“ sind und die Unterscheidung zwischen Hosts, die „down“ bzw. unerreichbar sind.
  • Benachrichtigung von Kontakten, wenn Service- oder Host-Probleme auftreten bzw. gelöst werden (über e-Mail, Pager oder benutzerdefinierte Methoden)
  • Die Möglichkeit, Routinen zur Ereignisbehandlung (event handler) zu definieren, die bei Host- oder Service-Ereignissen ablaufen, um proaktive Problemlösungen zu erlauben
  • Automatische Rotation von Protokolldateien
  • Unterstützung, um redundante Überwachungs-Hosts zu implementieren
  • Optionales Web-Interface, um den aktuellen Netzwerkstatus, Benachrichtigungs- und Problemverläufe, Protokolldateien usw. anzusehen

Systemvoraussetzungen

Ein Linux mit maximal 2GB Hauptspeicher und wenigen GB Festplattenspeicher. Ich verwende ein Ubuntu 20.04 LTS in einer virtuellen Maschine die eine 50GB HDD bereitstellt. Wer keine Performencedaten speichert, kommt mit sehr viel weniger Platz aus. Selbst ein Raspberry Pi der zweiten Generation kann das bereitstellen! Die Anleitung sollte für alle Debian basierten Systeme funktionieren, einschließlich Raspberry Pi OS.

Installation

Zunächst sollten Repositories aktualisiert und ausstehende Updates eingespielt werden und anschließend die für dieses Vorhaben benötigte Software, von der Nagios und seine Komponenten abhängen bzw. die zur Erstellung benötigt wird.

sudo apt update && sudo apt upgrade -y
# Abhängigkeiten für Nagios core
sudo apt install -y autoconf gcc libc6 make wget unzip apache2 \
    php libapache2-mod-php7.4 libgd-dev
sudo apt install -y openssl libssl-dev
# Zusätzliche Abhängigkeiten für Plugins
sudo apt install -y libmcrypt-dev libssl-dev bc gawk dc \
    build-essential snmp libnet-snmp-perl gettext
# Zusätzliche Abhängigkeiten für NRPE
sudo apt install -y automake openssl
# Zusätzliche Abhängigkeiten für PNP4Nagios
sudo apt install -y rrdtool librrd-simple-perl php-gd php-xml

Ich installiere die Komponenten immer über mein Home Verzeichnis, so habe ich die letzte installierte Version vor Augen und weiß welches Update als nächstes ansteht. Hier bleibe ich aber beim Standard und dokumentiere nachfolgend die Installation über das /tmp Verzeichnis.

Nagios Core

Sourcen herunterladen (die aktuelle Version von Github)

cd /tmp
wget -O nagioscore.tar.gz https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.5.1/nagios-4.5.1.tar.gz
tar xzf nagioscore.tar.gz

Erstellen der Anwendung, Benutzer und Gruppe und Installation der Binaries

# Kompillieren
cd /tmp/nagioscore-nagios-4.5.1/
sudo ./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all
# Benutzer & Gruppe erstellen und zuweisen
sudo make install-groups-users
sudo usermod -a -G nagios www-data
# Binaries installieren
sudo make install
# Dienst installieren
sudo make install-daemoninit
# Kommandomodus installieren
sudo make install-commandmode
# Beispielkonfiguration installieren
sudo make install-config
# Webserver (apache2) Konfiguration installieren
sudo make install-webconf
sudo a2enmod rewrite
sudo a2enmod cgi
# ggf. Firewall konfigurieren
sudo ufw allow Apache
sudo ufw reload
# Web-Verzeichnis absichern
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
# Sollen weitere Benutzer Zugang erhalten, ohne -c
# sudo htpasswd /usr/local/nagios/etc/htpasswd.users nutzername

# Webserver neu starten
sudo systemctl restart apache2.service
# Nagios starten
sudo systemctl start nagios.service

Nagios Plugins

Sourcen herunterladen (die aktuelle Version von Github)

cd /tmp
wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/archive/release-2.4.6.tar.gz
tar zxf nagios-plugins.tar.gz

Erstellen und installieren

cd /tmp/nagios-plugins-release-2.4.6/
sudo ./tools/setup
sudo ./configure
sudo make
sudo make install

Dienst neu starten und überprüfen

sudo systemctl restart nagios.service
sudo systemctl status nagios.service

NRPE

Sourcen herunterladen (die aktuelle Version von Github)

cd /tmp
wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-4.1.0.tar.gz
tar xzf nrpe.tar.gz

Beim Erstellen muss zwischen 32 und 64 bit Versionen unterschieden werden! Für eine Installation auf einem Raspberry Pi ist die 32bit Version durchaus noch interessant.

cd /tmp/nrpe-nrpe-4.1.0/

# 32bit benötige ich nicht (auskommentiert)
# sudo ./configure --enable-command-args --with-ssl-lib=/usr/lib/i386-linux-gnu/
# sudo make all

# 64bit
sudo ./configure --enable-command-args --with-ssl-lib=/usr/lib/x86_64-linux-gnu/
sudo make all

# Benutzer und Gruppe erstellen
sudo make install-groups-users
# Binaries installieren
sudo make install
# Konfiguration erstellen
sudo make install-config

Auf den Dienst verzichte ich hier auf dem Nagios Host, Du kannst es aber in der Dokumentation nachlesen, wenn es interessiert.

UPNP4Nagios

Sourcen herunterladen (die  aktuelle Version von Github)

cd /tmp
wget -O pnp4nagios.tar.gz https://github.com/lingej/pnp4nagios/archive/0.6.26.tar.gz
tar xzf pnp4nagios.tar.gz

Erstellen und installieren

cd pnp4nagios-0.6.26
sudo ./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all
sudo make install
sudo make install-webconf
sudo make install-config
sudo make install-init
sudo systemctl start npcd.service
sudo systemctl restart apache2.service

Aufrufen und ausprobieren

Dein Nagios sollte jetzt funktionieren und Du kannst es über die folgende Adresse aufrufen:

http://IP-Deines-Servers/nagios

Benutzer: nagiosadmin

Passwort: das hast Du bei der Nagios Core Installation selbst erzeugt

Nagios überwacht mit der Beispielkonfiguration zunächst einmal lediglich sich selbst und eine Erklärung wie die verschiedenen Konfigdateien zusammenspielen würde hier zu weit führen. Du beginnst am Besten mit der /usr/local/nagios/etc/nagios.cfg und schaust Dir anschließend die Unterverzeichnisse an. Von besonderem Interesse ist natürlich die localhost.cfg…

Nach jeder (noch so kleinen) Änderung in einer der Dateien solltest Du die Konfiguration prüfen lassen und erst wenn die Prüfung klappt, den Nagios Dienst neu starten.

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
sudo systemctl restart nagios.service

Diskussionen und Anmerkungen

Gerne beantworte ich Fragen und diskutiere im Fediverse über diesen Artikel.

Virtualisierung

ESXi nach Proxmox migrieren

Nachdem Broadcom den Virtualisierugsspezialisten VMWare kaufte, wurde das Portfolio bereits umfassend umgekrempelt und viele Produkte sind lediglich noch im Abo erhältlich. Nur Lizenzen für Desktop-Virtualisierer gibt es noch zu kaufen, statt sie zu abonnieren. Zusätzlich wurden fast alle Verträge mit externen Vertrieben gekündigt, so das jetzt viele anwendende Firmen ihre Supportverträge überdenken müssen. Jetzt hat es auch den bisher kostenlos nutzbaren Hypervisor VMware ESXi getroffen, der nicht mehr angeboten wird.

ESXi ist eine abgespeckte Version von vSphere, lässt sich aber nicht mit dessen Client verwalten bis eine entsprechende Lizenz erworben und eingetragen wurde. Dieser Weg war bisher eine einfache Möglichkeit den Hypervisor in der eigenen Umgebung auszuprobieren und bei gefallen ohne Änderung in eine vSphere Umgebung umzuwandeln und die bereits erstellten virtuellen Maschinen weiterzuverwenden. Auch technikaffine Privatanwender haben gerne die kostenlose Option genutzt um Geld zu sparen oder sich im Selbststudium entsprechende Kenntnisse anzueignen, dürften aber eher nicht im Fokus des Herstellers stehen.

Als einer dieser privaten Nutzer, der ESXi auf einem gebraucht gekauften und aufgerüsteten Thin-Client im Einsatz hatte, lag es bei mir nahe die VMs auf einen anderen Hypervisor zu migrieren und da ich bereits ein Blech mit Proxmox einsetze, habe ich auch diese Maschine darauf migriert und kann das empfehlen, wenngleich die Umstellung nicht mit jeder VM ohne Probleme vonstatten geht. Besonders Windows VMs wehren sich mitunter ordentlich bei der Umstellung der benötigten Treiber. Wer wie ich, beide Systeme parallel betreiben kann, verliert aber nichts.

ESXi: exportieren der VMs

Es gibt unterschiedliche Möglichkeiten der Migration. Von der echten Kopie die selbst gemacht, heruntergeladen, konvertiert, auf das neue System hochgeladen und händisch eingebunden wird, bis zur Werkzeug unterstützten, halbautomatischen Migration die vom neuen System ausgeht. Ich habe mich für einen Mittelweg entschieden, der zunächst einmal nicht so aufwändig erscheint, wie alles von Hand zu erledigen und des Weiteren keine zusätzlichen Werkzeuge (von VMWare) auf dem Proxmox Server benötigt, die evtl. nicht mehr lange verfügbar sind und nach der Migration überflüssig werden. Beide Systeme unterstützen von Hause aus das OVF Format zum Austausch.

Die zu exportierende virtuelle Maschine sollte im Namen keine Leerzeichen haben und muss zunächst sauber heruntergefahren werden. Ist das erledigt, wird sie in der ESXi Weboberfläche markiert und dann über das Menü Actions der Punkt Export gewählt. Nun werden 2-3 Dateien automatisch in das Downloadverzeichnis des verwendeten Browsers heruntergeladen. Bitte geduldig bleiben, das kann bei großen Images eine Weile beanspruchen. Das war es auf der ESXi auch schon. Ich lasse die VM beendet, da ich die ja – wenn alles gut läuft – auf dem Proxmox wieder starten werde.

Proxmox: importieren der VMs

Leider bietet Proxmox keinen Weg über die Weboberfläche und zwingt uns auf die CLI auszuweichen. Daher habe ich die exportierten Dateien in ein neues Verzeichnis verschoben und spare mir so zwei Befehle beim Upload der Dateien mit SCP. Ich lege via SSH auf dem Proxmox im Homeverzeichnis von root ein entsprechendes Verzeichnis an und kann aus einer PowerShell mit einem Befehl alle drei Dateien hochladen:

scp C:\...\Downloads\Ordner\VMDateiname*.* root@proxmox:~/Ordner/

Zurück in die SSH Shell (hier root, funktioniert auch mit sudo) auf dem Proxmox kann nach Abschluss des SCP Uploads jetzt der Import erfolgen (außer es sollten sich doch Leerzeichen in den Dateinamen befinden, dann müssten die %20 Einträge in der Meta-Datei ersetzt werden).

cd ~/Ordner
qm importovf 100 VMDateiname.ovf storagename

Die 100 ist die erste freie Maschinen ID auf dem Proxmox und storagename ist der Name des Storage, der die virtuelle Maschine aufnehmen soll. Eine ausführliche Erläuterung der Optionen ist auf dem Wiki des Projektes zu finden. Dort ist auch das OVF-Tool von VMWare verlinkt, falls du eine andere Art bevorzugst oder das Image vorab konvertieren möchtest.

Kommentare beantworte ich gern im Fediverse (auf Mastodon).

VITURE One XR Glasses - Jet Black

Unboxed: VITURE One XR Videobrille

Produktauswahl

Angefixt durch einen Beitrag in der c’t 1/2024 S. 94 habe ich mich auf die Suche nach einschlägigen Tests zu Videobrillen gemacht. Es ist gar nicht so einfach etwas zu dem Thema zu finden, da Suchmaschinen schnell Richtung VR oder AR Brillen abschweifen und die Beschreibungen der Hersteller wichtige Eigenschaften vorenthalten. Da ich am Ende aber auch wieder bei der Viture One XR aus dem Heise-Test anlangte, überlasse ich es euch selbst auf die Suche zu gehen und meinen Beitrag als Entscheidungshilfe zu sehen.

Produkt

Eigentlich ist es nicht notwendig Zubehör zu bestellen, da die Viture One XR direkt an PC oder Smartphone angeschlossen werden kann. Am PC konnte ich mir keinen Vorteil für mich vorstellen und die Vorstellung das Handy am Kabel an der Brille hängen zu haben stellte ich mir auch nicht vorteilhaft vor. Daher bestellte ich das Nackenband gleich mit, dass auf Android TV basierend einige Vorteile liefern sollte. Dazu ein passendes Ladecase und einen Aufsatz um die Brille zu verdunkeln um an hellen Tagen ein echtes Kinoerlebnis erzeugen zhu können.

Lieferung

Da sich bereits die Lieferung spannend in die Länge zog, zunächst die wichtigsten Einträge aus der Sendungsverfolgung. Ich hatte eigentlich mit einer Lieferung ab Lager in Amerika gerechnet, tatsächlich kam das gute Stück aber direkt aus China.

Di 02.01.2024 20:12Bestellung ausgelöst
Do 04.01.2024 17:55Bestellung vom Absender bearbeitet
Fr 05.01.2024 17:58Abholscan
Sa 06.01.2024 00:24Sendung im Weitertransport zu DHL
Mo 08.01.2024 05.20Abgereist vom Yanwen Sortierzentrum
Mi 10.01.2024 08.20Abgereist zum Zielland
Do 11.01.2024 16:25Zielhafen – Ankunft
Sa 13.01.2024 17:00Internationale Sendungsfreigabe – Import
Di 16.01.2024 18:16Ankunft (Destination Country)
Mi 17.01.2024 10:04Zustellung erfolgreich

Ausgepackt

Nachdem ich jetzt so lange hin fiebern musste, habe ich natürlich als erstes die Brille ausgepackt und direkt an mein Smartphone angeschlossen. Die Enttäuschung war groß, als ich feststellen musste, dass es so einfach nicht werden würde. Die beiden Bildschirme der Brille wurden zwar abgedunkelt, erkannten also das eine USB Verbindung bestand, ein Bild war ihnen aber nicht zu entlocken. So möchte ich jedem, der sich das gute Stück ohne Nackenband beschaffen möchte, unbedingt das Studium der Kompatibilitätsliste ans Herz legen. Die ist ernst zu nehmen! Die Verpackungen sind aus sehr fester Pappe in schickem Schwarz mit orange abgesetzten Applikationen (siehe unten) und hinterlassen einen wertigen ersten Eindruck. Dokumentation ist nicht vorhanden. Es werden lediglich Sicherheitshinweise und Schnellstartanleitungen mitgeliefert.

Viture One XR unboxed

Nun waren meine Anforderungen eh andere. Also langsam, alle bestellten Komponenten einbeziehen! Es werden, neben jenem an der Brille, noch drei unterschiedliche Pads für die Nase mitgeliefert (unten im Bild), die sich einfach wechseln lassen. In der gleichen Schachtel befindet sich auch ein Silikonüberzug für den Bügel, an den das Kabel magnetisch andockt, um das Einklemmen von langen Haaren zu verhindern sowie je ein kleines und großes Ersatzpad. Viture bietet zu fast jedem Schritt eine Videoanleitung in der Academy.

Die Brille kommt mit einer Silikon Tasche, die das Kabel und die Pads unter einer Klappe aufnehmen kann. Die Tasche für das Nackenband (zweites von links) kann dieses auch im geschlossenen Zustand, mit dem mitgelieferten USB 3 Kabel aufladen. Das Case bietet eine Ladekontrolle mit 4 kleinen LEDs neben dem äußeren USB Anschluss, während das Nackenband selbst lediglich eine LED bietet, die nicht sehr eindeutig über den Zustand informiert. Zudem kommt noch eine einfachere Tasche dazu, die ohne Lademöglichkeit nur dem Schutz dient.

Viture One XR mit Nackenband und Zubehör
v.l.: Silikontasche der Brille mit Brille darunter, Silikontasche des Nackenbandes, darunter die Nasenpads, einfache Silikontasche, Nackenband, Verdunklungsaufsatz, USB Ladekabel, Reinigungstuch

Installiert

Das Nackenband wird von hinten nach vorne um den Hals gelegt, so das das Kabel an der rechten Seite liegt. Dann die Brille aufsetzen und das Kabel magnetisch am rechten Bügel einrasten lassen. Den Einschaltknopf am Nackenband so lange gedrückt halten (etwas 3 Sekunden), bis das Band den Start durch Vibration bekannt gibt. Der zunächst startende Assistent bietet eine erste Einführung über die Steuerung mit den wenigen Tasten am Nackenband und die Einbindung ins heimische WLAN. Anschließend sollte die Navigation in den Einstellungen an die eigenen Bedürfnisse angepasst werden. Allerdings bietet der Hersteller auch eine App für das Smartphone, die als Touchpad für die Navigation genutzt werden kann. Um Firmware Updates einzuspielen, wird die App sowieso benötigt.

Ist die Firmware aktuell und die Steuerung eingestellt, geht der erste Weg in die App TV Bro. Die dient dazu erst einmal die Google Apps und Libraries bzw. Dienste auf das Nackenband zu bekommen. Vermutlich wollte der Hersteller sich die Zertifizierung sparen, jedenfalls sind bei Auslieferung keine Google Dienste installiert. Leider ist die App nicht sehr kommunikativ und setzt etwas Geduld voraus. Anschließend kann man ein Google Konto in den Einstellungen hinterlegen und dann den Play Store nutzen wie vom Smartphone gewohnt. Für mich war hier natürlich Kodi die wichtigste Voraussetzung und das ließ sich ohne Probleme installieren und Einrichten.

Kodi spielt alle Videos aus meiner Bibliothek problemlos ab. Von AVI Containern mit XVid über MP4 bis MKV Containern mit h264 (SD bis HD) und h265 (UHD, mit und ohne HDR) konnte ich keine Auffälligkeiten feststellen.

Fazit

Natürlich kann ein unboxing keinen abschließenden Test liefern. Ich bin aber bisher sehr begeistert von der Hardware. Den Verdunklungsaufsatz muss man nicht haben, allerdings ist er mit unter 10 € auch keine Fehlinvestition. Ich würde jedem dazu raten das Nackenband (~170€) mitzubestellen. Fragen beantworte ich gern im Fediverse.

Ein @ von einem Herz eingeschlossen

Netzwerken, sozial?

Bereits im Frühjahr 2022 begann eine Diskussion um das Dasein sozialer Netzwerke und deren Kontrolle, als Elon Musk sich in den Kopf setzte Twitter zu kaufen. Dieser Beitrag soll sich allerdings darum bemühen, Vor.- und Nachteile der dadurch in den Fokus geratenen Netzwerke (Twitter [heute X], Bluesky und das Fediverse in Gestalt von Mastodon) zu vergleichen. Schon die Art der Nutzung eines solchen Netzwerks macht einen Vergleich schwierig, die Anforderungen an Reichweite, Datenschutz oder Vernetzungsmöglichkeiten sind aber abstraktionsfähig. Daher werde ich mich auf den technischen Aspekt beschränken.

Der Platzhirsch in diesem Trio ist natürlich noch immer Twitter, dass Anfang 2022 ca. 7,75 Millionen Menschen in Deutschland erreichte. Die Ankündigung der Übernahme durch Elon Musk, wenngleich sie zunächst als schlechter Scherz galt, führte bereits zu einer Welle von Nutzern die sich auch bei anderen Anbietern umzuschauen begannen. Mit Zahlen halten sich Firmen gerne bedeckt, eine Idee bekommt man aber durch das freie Netzwerk Fediverse, welches nicht nur allgemeine Nutzerzahlen abrufbar macht, sondern auch tatsächliche Nutzerstatistiken. Diese sind aber durch den dezentralen Aufbau des Netzwerks schwierig zu erfassen – wer möchte schon weit mehr als 15.000 Instanzen abfragen und eine Einteilung nach genutzter Sprache ist nicht möglich (dort werden auch mit deutscher IP-Adresse gern weitere Sprachen genutzt). Einen Überblick zeigt beispielsweise instances.social, mit aktuell 922.000 Nutzern. Der noch immer nur durch Einladung erreichbare Dienst Bluesky hat gerade durch einen Entwickler eine Zahl von 7900 deutschsprachigen Nutzern gemeldet.

Antennenmast

Die Nutzerzahlen zeigen aber ein verzerrtes Bild, wenn man die Reichweite eines einzelnen Nutzers eines bestimmten Netzwerks bewerten möchte. Das wäre aber einen eigenen Beitrag wert und würde hier zu weit führen. Das deutsche Behörden und öffentlich rechtlicher Rundfunk sich von Twitter verabschiedet haben und nur mehr auf Mastodon erreichbar sind, zeigt aber eine Richtung. Um Deine eigene Reichweite zu berechnen ist also zuerst einmal relevant wen Du überhaupt erreichen möchtest.

Kommen wir also zu den anwendungsspezifischen Eigenheiten der Netzwerke und gehen als Grundlage von Twitter aus, da ja Viele in diesem Szenario von Twitter weg wechseln möchten, dass sich durch die ständigen Änderungen durch den neuen Besitzer zu einer Realsatire entwickelt hat. In den ersten beiden Wellen (Frühjahr und Herbst 2022) habe ich mit Vielen ihre Gründe diskutiert, wenn sie sich dann doch nicht im neuen Netz heimisch fühlten. Welch Überraschung, dass die heute allesamt auf Bluesky zu finden sind und dort keine einzige dieser Begründung zu zählen scheint. Gefühlte Gründe kann ich weder bewerten noch gewichten. Das ist eine individuelle Entscheidung, die keinem Test standhalten kann.

Bluesky

Der ehemalige Twitter CEO Jack Dorsey hat Bluesky 2019 noch in dieser Funktion begonnen zu entwickeln und sitzt heute im Verwaltungsrat der Firma, die er kurz vor der Übergabe von Twitter an Elon Musk (im August 2022) ausgründete. Als CEO der Firma wurde Jay Graber eingesetzt, die zuvor als Entwicklerin im Bereich Blockchain tätig war und nach eigener Aussage nie für Twitter gearbeitet, sich aber bereits Monate mit einer eigenen Bluesky Instanz beschäftigt hat.

Als Studie um Twitter zu verbessern begonnen, wurde so ein Startup und ein neues Netzwerk aus dem Twitter Ableger, was natürlich Einfluss auf die weitere Entwicklung hatte. Die ersten Überlegungen Dorseys, Twitter dem Fediverse mit der Implementierung des ActivityPub Protokolls zu öffnen, wurde verworfen und man startete die Entwicklung des AT Protokolls, das heute Grundlage von Bluesky ist, sich aber bis auf die Verwaltung der Benutzeranmeldungen sehr nahe am ActivityPub Protokoll orientiert.

Aus der Sicht der Bluesky Entwickler (und Jack Dorseys) ist also die Föderation der große Vorteil, den man der Funktionalität des ursprünglichen Twitter hinzufügen möchte, wobei man den angeblichen Nachteil der dezentralen Benutzerverwaltung des ActivityPub getriebenen Fediverse (z.B. Mastodon) vermeiden möchte. Jeder Nutzer könne so Herr über die eigenen Beiträge bleiben und selbst bei einem Umzug auf eine andere Instanz würde sich die eigene Adresse bzw. die dahinter stehende interne ID nicht ändern. Eine Halbwahrheit..

Zwar ändert sich die ID tatsächlich nicht – auch wenn bislang gar keine anderen Instanzen im produktiven Netz zugelassen werden – allerdings ist Bluesky so auch alleiniger Torwächter für das gesamte Netzwerk und kann jeden Nutzer und jede Instanz mit einem Mausklick vom Netz trennen. Man kann jetzt andere Leute Server betreiben lassen ohne die Kontrolle abgeben zu müssen. In erster Linie spart das mal Ressourcen für das Hosting und wenn man das auf die Spitze treiben möchte, müsste Bluesky gar keine eigene Instanz mehr betreiben und würde doch die Kontrolle behalten. Das ist der Vorteil gegenüber Twitter, der allerdings zu Lasten der Nutzer erreicht wird, denen das im Vergleich mit dem Fediverse nur Nachteile bringt. Wenn Dir das Netz nicht gehört, wie könnten es dann die darin veröffentlichten Beiträge?

Die LGBTQ Community feiert hingegen den Save-Space den Bluesky angeblich liefert. Das ist eine trügerische Fehleinschätzung die dem Betabetrieb geschuldet ist, an dem nur teilnehmen kann wer eine Einladung erhält. Auch ich gebe meine Invite-Codes (man bekommt einen alle 10 Tage) and die Community weiter, aber die ersten Rechtsnationalen TERFs sind bereits gesichtet worden und auch wenn man die zu Beginn mit Blocking durch Mund zu Mund Propaganda in Schach halten kann, bekommen doch auch die ihre Invite-Codes und holen ihre Mutuals nach. Bleiben nur noch Datenschutz.- und Sicherheitsoptionen der Anwendung selbst. Bluesky bietet auch nach zwei Jahren Entwicklung weder Direktnachrichten noch die Einschränkung der Sichtbarkeit von Beiträgen oder geschützte Konten. Grundlagen die selbst der für diese marginalisierte Gruppe sehr toxische Vorgänger bietet.

Bleibt nur noch die Abstinenz eines nicht abschaltbaren Algorithmus, der die Timeline organisiert, den Bluesky aber mit Mastodon gemein hat. Persönlich finde ich eine Funktion sehr sexy, die aber bisher niemand als Grund angegeben hat. Man kann eigene Module schreiben um eine Timeline zu organisieren, sie auf eigenen Servern als HTTP Dienst bereitstellen und dann in Bluesky annoncieren und so bereitstellen – ein selbst programmierter Algorithmus, den dann auch andere nutzen können. Da die Wenigsten in der Lage sein werden selbst so einen Dienst zu programmieren oder bereitzustellen, ist das dann aber eine Frage des Vertrauens, da alle Beiträge der eigenen Timeline an diese Dienste geschickt werden. Mir ist schleierhaft wie das DSGVO konform funktionieren sollte, da das ja nicht nur eigene Beiträge betrifft, sondern alle Beiträge der Profile denen man folgt und die diese weiterleiten.

Die App ist auch nach zweijähriger Entwicklung noch außerordentlich rudimentär. Selbst die Aktualisierung der Timeline benötigt oft noch eine eigene Schaltfläche und springt anschließend zum neuesten Beitrag. Den Überblick zu behalten, was bereits gelesen wurde ist so anstrengend und das Übersehen von neuen Beiträgen vorprogrammiert. Hilfsmittel wie Listen oder Gruppen kennt die App nicht, selbst Webstandards für Medien sind nicht oder kaputt implementiert. So ist es nicht möglich Videoschnipsel zu teilen und Gif-Images werden falsch dargestellt, von animierten Gifs gar nicht zu reden.

Mastodon

Eigentlich sollte ich hier nicht die Anwendung Mastodon als Vergleichsobjekt wählen, geht es doch um Netzwerke und da wäre der Kandidat das Fediverse mit vielen unterschiedlichen Anwendungen, die recht unterschiedliche Möglichkeiten der Teilnahme bieten. Allerdings fehlt mir die Zeit und auch die Motivation die allesamt auszuprobieren. Du kannst die Prämisse das es die gibt und sie alle untereinander Erreichbar sind aber im Kopf behalten, denn der Wechsel zu einer anderen Anwendung ist für Nutzer immer eine Option um andere oder weitere Funktionalitäten zu bekommen ohne die alten Kontakte (Follower) zu verlieren. Du möchtest Themen gerne in Gruppen sortiert wissen: Friendica, dass oft als Facebook Alternative genannt wird, kann das. Du machst gerne Umfragen und hättest gern mehr Antwortmöglichkeiten: Pleroma kann bis zu 10 Antworten bereitstellen. Es gibt für jede denkbare Funktionalität eine Anwendung im Fediverse und es ist zu kurz gesprungen diese mit einem anderen Anbieter (Twitter, Facebook, Instagram, YouTube, usw.) gleichzusetzen.

Mastodon ist lediglich die Anwenderstärkste Anwendung im Fediverse, Du kannst aber aus allen Anwendungen auch Mastodon Nutzer erreichen. Das sollte also keine Rolle bei der Auswahl der Anwendung spielen. Da Mastodon stetig weiterentwickelt wird, ist es eine gute Idee die Anwendung im Browser zu nutzen (WebApp) um alle Funktionen nach einem Update sofort nutzen zu können. Für die mobile Nutzung steht auch eine Progressive Web App (PWA) zum Download von jeder Instanz bereit, die sich wie eine aus dem jeweiligen App-Store installierte Anwendung verhält.

Du kannst für jeden Beitrag die Sichtbarkeit einstellen (bei Auswahl nur eines Adressaten und Einstellung der Sichtbarkeit auf nur erwähnte Profile, ist das dann wie eine Direktnachricht). Je nach gewählter Instanz kann es zusätzliche Funktionalitäten wie eine Übersetzungsfunktion geben und die Wahl der Instanz kann auch bereits einen Schwerpunkt eines Themengebietes beinhalten, da jede Instanz eine zusätzliche Timeline bietet, die ausschließlich Nachrichten der eigenen Nutzer listet. Wenn Dir die Darstellung nicht gefällt gibt es eine Vielzahl von Apps, die die API von Mastodon (oder anderen Anwendungen des Fediverse) unterstützen und so als Ersatz für die WebApp oder die sehr rudimentäre Orfiginal-App der Mastodon Entwickler dienen können und eine vollständig andere Darstellung bieten.

Elk.zone Desktop Screenshot
Elk.zone Desktop Screenshot

Als besonderes Beispiel sei hier die WebApp von Elk.zone angeführt, das eine Darstellung bietet, die Twitter nachbildet und sehr umfangreich angepasst werden kann. Im Bild oben habe ich als Beispiel (ohne Anmeldung) Elk die lokale Timeline meiner eigenen Instanz anzeigen lassen. Mit eigener Anmeldung und dann angepasster Einstellungen auf dem Smartphone, habe ich natürlich auch ein Beispiel – in diesem Fall habe ich die Ansicht meines Profils gewählt.

Elk.zone Screenshot
Elk.zone Screenshot

Die letzte und nach meiner Einschätzung wichtigste Funktion ist aber, dass sich eine Gemeinschaft selbst eine Instanz installieren und so über die dort geltenden Regeln bestimmen sowie moderieren kann. Sie kann festlegen wer beitreten kann und ein eigenes Einladungssystem auf Nutzerbasis etablieren sowie bestimmen mit welchen anderen Instanzen föderiert bzw. welche geblockt oder stummgeschaltet werden sollen. Ein unschlagbarer Vorteil für marginalisierte Gruppen aber auch sehr nützlich für eingeschworene Gemeinschaften oder Gruppen die gemeinsam wechseln wollen.

Für zwei mir von Twitter bekannte Bubbles habe ich gar angeboten, dass meine Instanz zu diesem Zweck verfügbar wäre und ich Hilfestellungen beim Einfinden in die neue Umgebung bieten könnte, habe aber kaum oder gar keine Rückmeldungen erhalten.

Fazit

Aus meiner Erfahrung in den letzten 9 Monaten gehe ich davon aus, dass es Vielen nicht wirklich um Argumente geht. Selbst wenn diese zahlreich angeführt wurden, war am Ende doch immer ein unbestimmtes Gefühl ausschlaggebend für die letzte Entscheidung ob ein Netzwerk genutzt wird oder nicht. Vielleicht hilft dieser Beitrag trotzdem dem Einen oder der Anderen die eigenen Argumente zu hinterfragen und so zu einer nachhaltigen Entscheidung zu finden.

Mastodon

Mastodon Funktionsweise

Da es gerade für Menschen die Erfahrungen anderer sozialer Netzwerke mitbringen schwer zu durchschauen scheint wie Mastodon funktioniert, möchte ich versuchen anhand einer virtuellen „Geburt“ einer Instanz aufzuzeigen, wie sich Nachrichten in der Föderation verbreiten. Wenn Du dazu Fragen hast, schreib mich gerne direkt auf Mastodon an: Christian Schmidt auf Mastodon.

Eine Adresse auf ein Profil im Fediverse (auch für Mastodon) setzt sich immer aus einem Profilnamen und dem Instanznamen zusammen, die jeweils mit einem @ Zeichen beginnen. Meine Adresse lautet @christian@social.jcs-net.de und funktioniert ähnlich wie eine E-Mail-Adresse. Der Instanzname ist eine Domain, die auf einen Server im Internet verweist und der Profilname zeigt auf diesem Server auf das Profil des Benutzers. Du könntest also den Instanznahmen kopieren, in die Adresszeile Deines Browsers einfügen und erreichst so die Einsprungseite dieser Instanz (https://<instanzname ohne @>), in meinem Beispiel also https://social.jcs-net.de. Auch das Profil kannst Du so direkt im Browser aufrufen indem der Profilname einfach durch einen Schrägstrich getrennt angehängt wird (https://<instanzname ohne @>/<Profilname mit @>), was bei mir dann so aussieht: https://social.jcs-net.de/@christian. Während beim Instanznamen die Groß/Kleinschreibung irrelevant ist, muss beim Profilnamen darauf geachtet werden!

Der Server ist installiert

Nach der Installation einer neuen Instanz hat diese bereits den ersten Benutzer, seinen Administrator. Da Kommunikation so aber unmöglich erscheint lassen wir sich einen weiteren Benutzer anmelden. Jeder Benutzer spricht zu jeder Zeit ausschließlich mit der eigenen Instanz. Nur dort ist er angemeldet und kann sich authentifizieren, der Server also sicherstellen mit genau diesem Benutzer zu sprechen.

Gehen wir also davon aus das eine erste Nachricht verfasst und ohne Änderung möglicher Einstellungen abgeschickt wird. D.h. sie ist ohne Erwähnung (Mention), öffentlich und nicht in der Sichtbarkeit beschränkt (die Standardeinstellung) – wo wird diese zu sehen sein? Ok, einen Schritt zurücktreten bitte. Welche Möglichkeiten des Sichtbarwerdens gibt es denn überhaupt? Zunächst einmal gibt es aus der Sicht der Instanz zwei Zeitleisten (Timelines). Eine Lokale und eine Föderierte.

Mastodon Server Timelines
Mastodon Server Timelines

Zwar föderiert unsere Instanz noch nicht zu diesem Zeitpunkt, tatsächlich wird die Nachricht aber in beiden Zeitleisten angezeigt und dort kann der zweite Benutzer sie lesen. Die lokale Zeitleiste zeigt jede Nachricht die ein Nutzer dieser Instanz mit der Sichtbarkeit „öffentlich“ abschickt – gerne als das Wohnzimmer der Instanz bezeichnet, ist es doch eher eine Art Gemeinschaftsraum einer Wohngemeinschaft ähnlich. Die föderierte Zeitleiste betrachten wir weiter unten. Neben den Instanzzeitleisten, Funktionen zur Verwaltung des eigenen Profils und solchen Dingen, stellt die Instanz jedem angemeldeten Benutzer aber auch noch eine virtuelle Ansicht zur Verfügung.

Mastodon persönliche Timeline
Persönliche Timeline

Dabei handelt es sich bei der Spalte „Startseite“ um eine persönliche Zeitleiste und in dieser wird die selbst erstellte Nachricht ebenfalls angezeigt. Beim zweiten Benutzer blieb sie bisher aber leer. Bevor wir jetzt den zweiten Nutzer antworten lassen, schauen wir uns zu nächst an welche Möglichkeiten Mastodon bei der Sichtbarkeit von Beiträgen bietet und was sie bewirken. Ändern kannst Du die Sichtbarkeit mit dem Globus im Beitragseditor, wodurch sich das Symbol ändert und so die aktuelle Sichtbarkeit anzeigt. In Apps können sich die Symbole unterscheiden.

  • Öffentlich
    • Die Beschreibung „Für alle sichtbar“ zeigt es bereits, der Beitrag wird in den öffentlichen Zeitleisten (lokal, föderiert) angezeigt und jeder darf sie sehen bzw. kann sie sich anzeigen lassen, wenn er direkt auf den Beitrag verwiesen wird.
  • Nicht gelistet
    • Der Beitrag darf noch immer von jedem angezeigt werden, wird aber nicht in den öffentlichen Zeitleisten angezeigt (gelistet). Diese Sichtbarkeit bietet sich für Antworten an um die öffentlichen Zeitleisten sauber bzw. nutzbar zu halten.
  • Nur Follower
    • Das ist selbst beschreibend, ändert sich aber mit jedem neuen Follower oder einem der entfolgt.
  • Nur erwähnte Profile
    • Das ist die Direktnachricht an ein oder mehrere Konten. boosten lassen sich solche Nachrichten nicht, aber es können während der Kommunikation weitere Profile hinzugefügt oder gelöscht werden. Das wird in Gruppen schnell unübersichtlich!

Lassen wir also den zweiten Benutzer auf die Nachricht in der lokalen Zeitleiste antworten und wie beschrieben, die Sichtbarkeit einschränken auf „nicht gelistet“. Durch das Antworten wird die Adresse von Benutzer1 in die Antwort übernommen. Er ist getaggt, man spricht auch von mentioned (erwähnt) und damit taucht diese Nachricht in seiner persönlichen Zeitleiste und seinen Benachrichtigungen auf. Natürlich wird sie wie jede selbst erstellte Nachricht, auch in der persönlichen Zeitleiste des Antwortenden angezeigt, nicht aber in der lokalen oder föderierten Zeitleiste. Andere Benutzer würden die Antwort nur zu sehen bekommen, wenn sie die ursprüngliche Nachricht anklicken um dann alle Antworten zu sehen die entweder öffentlich oder ungelistet sind. Natürlich könntest Du bei der Antwort auch die Sichtbarkeit auf „nur erwähnte Profile“ umstellen, dann wird die Antwort zur Direktnachricht und kann von Dritten nicht angezeigt werden.

Bis da hin sind die Funktionalitäten denen anderer sozialer Netzwerke noch sehr ähnlich, nur das Adressaten und Sichtbarkeit unabhängig voneinander eigestellt werden können. Das ändert sich noch einmal grundlegend, wenn wir zu föderieren beginnen.

Die Föderation

Nehmen wir an Du bekommst die Mastodon Adresse eine(r/s) Bekannten zugeschickt, mit de(r/m) Du Dich verbinden möchtest (nimm gern meine als Beispiel: @christian@social.jcs-net.de). Kopiere sie und füge sie in die Suchleiste links-oben (Suchen oder URL einfügen) ein und drücke ENTER. Deine Instanz befragt jetzt die in dieser Adresse angegebene Instanz nach dem Profil und zeigt sie unterhalb der Suche an. Nach einem Klick darauf wird das Profil (ganz rechts in der Web-App) angezeigt und Du kannst über die Schaltfläche „Folgen“ eine Verbindung herstellen. Jetzt föderiert Deine Instanz mit jener dieses Profils (Benutzer2).

Schreibt jetzt Benutzer2 eine öffentlich Nachricht, wird sie wie zuvor auf seiner Instanz in lokaler und föderierter Zeitleiste angezeigt (keine alten Nachrichten). Da seine Instanz aber von eurer Verbindung weiß, wird sie die Nachricht auch an Deine Instanz senden und sie wird dort in Deiner persönlichen Zeitleiste und in der föderierten der Instanz angezeigt. Wenn Du darauf antwortest, wird Deine Instanz genau so verfahren und diese Antwort an die zweite Instanz senden, die diese dem Benutzer2 in seiner persönlichen Zeitleiste und seinen Benachrichtigungen anzeigt.

Damit hast Du alle Informationen die aus Nutzersicht beschreiben was passiert. Aus der Sicht der Instanz fängt es jetzt erst an interessant zu werden und das Wissen darum mag Dir helfen etwas Geduld aufzubringen, wenn es mal stockt auf Deiner Instanz.

Es wird voll im Fediverse

Hätte jeder Nutzer seine eigene Instanz, wären wir hier mit der Beschreibung fertig. Was passiert jetzt aber wenn Deine Instanz 1000 Nutzern eine Heimat bietet. Die wollen nicht alle gleichzeitig ihre Nachrichten loswerden, aber mit wie vielen Instanzen muss das ausgetauscht werden? Aktuell gibt es über 4.000 Mastodon Instanzen und über 15.000 im Fediverse mit über 8 Millionen Nutzern, Die größte Mastodon Instanz hat über 800.000 Nutzer!

Stelle Dir als Beispiel vor Du hättest 10 Follower auf 10 Instanzen, siehst einen tollen Tröt den Du gerne weitergeben möchtest. Du gibst ihm ein Sternchen (like) und boostest ihn also. Deine Instanz muss den Status (like und boost) an die Instanz des Autors zurückgeben sowie die Adresse des Beitrags an die 10 Instanzen Deiner Follower. Die schauen jetzt lokal ob dieser Tröt bereits bekannt ist, andernfalls holen sie ihn von der Instanz des Autors um sie Deinen Followern anzuzeigen. Die Instanz des Autors bekommt neben der Statusmeldung Deiner Instanz ggf. Anfragen von 10 weiteren Instanzen die beantwortet werden wollen.

Sollte also die eine oder andere Nachricht, Antwort oder ein Status verspätet eintreffen, denk einfach daran was im Hintergrund alles passieren muss um das sicherzustellen.

Mastodon

LibreTranslate in Mastodon einbinden

Mit dem großen Release 4.0, welches Mastodon Mitte November herausgebracht hat, sind einige neue Funktionen hinzugekommen. Eine lange Erwartete war die Übersetzung einzelner Beiträge innerhalb der Plattform ohne Medienbruch. Allerdings ist die Übersetzung nicht Bestandteil der Plattform, es gibt lediglich eine Schnittstelle um einen Dienst dafür einzusetzen. Zur Wahl stehen dabei zwei Lösungen.

  • DeepL, eine KI unterstützte Lösung eines Kölner Unternehmens, dass einen kostenlosen Plan zur Nutzung seiner API bereitstellt, mit dem monatlich 500.000 Worte übersetzt werden können. Das mag für eine kleinere Instanz, die lediglich deutsch und englisch bespielt ausreichen, das sind aber lediglich ca. 1000 Übersetzungen im Monat. Danach fällt die Übersetzung weg oder ein kostenpflichtiger Plan muss her.
  • LibreTranslate ist eine Open Source Software, die sich auch als Dienstleistung einkaufen lässt, die man aber selbst bereitstellen und so nicht nur Kosten einsparen kann, es müssen auch keine Daten an Dritte weitergegeben werden.

Die Einrichtung in Mastodon beschränkt sich bei beiden Lösungen auf das setzen zweier Variablen, wenn man einen Dienstleister bemüht diesen Dienst bereitzustellen und den Neustart des Puma Dienstes. Ich möchte aber kurz skizzieren, wie man diesen Dienst selbst bereitstellen kann. Ich habe mit dem Gedanken gespielt den Dienst direkt auf die Maschine mit dem Webserver zu installieren und habe das je einmal lokal und auf einem produktiven Webserver durchgespielt und möchte dringend davon abraten. Währen die aufgetretenen, unterschiedlichen Meldungen nicht Abschreckung genug für ein produktives System, sei darauf verwiesen, dass Mastodon zur Verwendung eines lokalen Dienstes erst gezwungen werden müsste und solche Sicherheitsschranken einen nicht unbedingt gleich ersichtlichen Grund haben.

Ich brauchte also einen Server ungleich dem Webserver der Instanz und eine Möglichkeit die Umgebung für den Dienst in einen definierten Zustand zu bringen, unabhängig zum vorhandenen Betriebssystem und den davon abhängigen Komponenten: Docker. Auch das wollte ich zunächst lieber ausprobieren und habe dabei ein strukturelles Problem ausgemacht. Das bestehende Dockerimage lädt die Sprachdateien erst beim Starten und das könnte bei einem benötigten Reboot des Systems zu Ausfallzeiten führen. Wir werden also das Image selbst erstellen, auf einem zusätzlichen Server, der einen Docker Deamon ausführt.


git clone https://github.com/LibreTranslate/LibreTranslate
cd LibreTranslate
sudo docker build --build-arg with_models=true -t libretranslate .

Der Punkt am Ende gehört zum Kommando! Die Zusammenstellung des Image wird einige Zeit in Anspruch nehmen, aber selbst wenn die ssh Verbindung abbricht, starte den Docker Build einfach noch mal – bis zur Erfolgsmeldung. Danach kann das Image gestartet werden.

sudo docker run -it -p 5000:5000 --restart=always libretranslate 

Auf der Github Seite des Projektes stehen weitere mögliche Parameter, an dieser Stelle ist der Dienst aber einsatzbereit und stellt zusätzlich eine WebUI zur Übersetzung bereit.

http://domain.tld:5000

Um die Funktion zu prüfen kann folgender Befehl auf einem mit curl ausgestatteten Client genutzt werden. Da aber der Webserver der Instanz noch um Anschluss bittet, kann das auch aus dessen Shell erfolgen. So ist gleich klar ob der den Dienst erreichen kann.

curl --request POST \
   --header "Content-type: application/json" \
   --data '{ "q": "Dzisiaj jest Czwartek, 17 listopada 2022", \
   "source": "pl", "target": "de"}' \
   http://domain.tld:5000/translate

Wenn das einen deutschen Satz zurück liefert, noch die zwei benötigten Variablen eintragen in /home/mastodon/live/.env.production

DEFAULT_LOCALE=de
LIBRE_TRANSLATE_ENDPOINT=http://domain.tld:5000

Jetzt nur noch die Puma Dienste der Instanz neu starten und die Übersetzung sollte automatisch bei allen fremdsprachigen Beiträgen bereitstehen.

sudo systemctl restart mastodon-web
Mastodon Übersetzer

Nachdem die Installation dann ein paar Wochen gearbeitet hat, sollte doch einmal ein Blick auf die Github Seite geworfen werden ob es evtl. Änderungen gibt, die eine Aktualisierung sinnvoll oder gar notwendig erscheinen lassen. Auf dem Mastodon Server muss dazu nichts geändert werden, während die Aktualisierung des Docker Images für LibreTranslate mit wenigen Kommandos erledigt ist.

cd LibreTranslate
git pull
docker build --build-arg with_models=true -t libretranslate .
sudo docker run -it -p 5000:5000 --restart=always libretranslate 

Das Image wird dabei nicht aktualisiert, sondern vollständig neu gebildet. So ist sichergestellt, dass falls zusätzliche Sprachdateien eingepflegt wurden, diese auch verwendet werden. Die lange Laufzeit des Build-Prozesses ist an dieser Stelle nicht mehr relevant, da der Container noch mit dem alten Image läuft, bis er im letzten Kommando ersetzt und neu gestartet wird.

Linux Logo Tux

SSH Public Key Authentifizierung

Wer Server im Internet betreiben möchte, sollte sich immer zunächst über deren Sicherheit Gedanken machen. Neben einer Backupstrategie und regelmäßiger Aktualisierungen fängt das bereits mit der Anmeldung am Server an. Ein frisch installiertes Linux System wird zunächst erst einmal lediglich eine Anmeldung mit dem Systembenutzer root und einem Passwort auf dem ssh Standard-Port 22 zulassen und das sollte als erstes angepasst werden. Lange Zeit ging es vor allem darum ein sicheres, möglichst langes Passwort zu nutzen und Passwortmanager waren das Maß der Dinge. Seit aber selbst Windows einen OpenSSH Client vorinstalliert mitbringt, sollte dieser Umstand auch genutzt werden um auf die sehr viel sicherere Public Key Authentifizierung umzustellen und das möchte ich hier einmal skizzieren – es ist recht einfach.

In der folgenden Anleitung gehe ich von einem Client mit aktuellem Windows 10 oder 11 aus und einem Server mit aktuellem Debian basiertem Linux (Debian, Ubuntu, etc.). Für Änderungen an Konfigurationsdateien auf dem Server nutze ich mcedit, das Teil des Midnight Commander ist. Auf dem Windows Client nutze ich die Powershell (Community Version), die Windows Powershell tut es aber genauso gut. Außerdem würde ich euch das Windows Terminal ans Herz legen. Wer mit mehreren Shells arbeitet, wird das sehr schnell zu schätzen wissen und bei Arbeiten an den Einstellungen des ssh daemon eines Servers, sollte mindestens eine ssh Shell geöffnet bleiben. Ich arbeite also mit wenigstens zwei Powershell Fenstern.

Der Übersicht halber werde ich Linux Befehle mit einem $ kennzeichnen und Powershell Befehle mit einem PS>. So lassen sich auch unbeabsichtigte Zeilenumbrüche besser erkennen.


Öffne also eine Powershell und wechsle ggf. in das Benutzerverzeichnis. Dort erstellen wir das Arbeitsverzeichnis (.ssh) für den OpenSSH Client.

PS> cd $env.userprofile
PS> mkdir .ssh

Als nächstes lassen wir ein Schlüsselpaar im Arbeitsverzeichnis erstellen für unsere gewünschte Verbindung. Ändere „name“ zu Deinem Anmeldenamen, „hostname“ in den Hostnamen des Servers (2x) und „winname“ in den Anmeldenamen auf dem Windowsclient. Nach dem Abschicken des Befehls wirst Du zweimal nach einem Passwort gefragt, mit dem die Schlüssel verschlüsselt werden können. Diese müssen dann aber bei jeder Anmeldung wieder eingegeben werden. Wenn Du eine sichere Umgebung sicherstellen kannst, kannst Du ein leeres Passwort übergeben um die Schlüssel unverschlüsselt abzulegen.

 PS> ssh-keygen -C "name@hostname" -f C:\Users\winname\.ssh\hostname.ed25519 -t ed25519

Der Parameter -C ist lediglich ein Kommentar, der Dir später bei der Zuordnung helfen kann, wenn Du viele solcher Schlüssel hast, mit -f wird der Dateiname festgelegt in dem der Schlüssel gespeichert wird und -t bestimmt die Art des Schlüssels. In diesem Fall habe ich eine elliptische Kurve gewählt, die sehr schnell und sicher ist.

Du hast jetzt zwei Dateien im Verzeichnis .ssh erzeugt, wobei hostname.ed25519 Deinen privaten Schlüssel enthält und hostname.ed25519.pub den dazu passenden öffentlichen Schlüssel. Dann können wir uns das erste mal am Server anmelden. Ich gehe von einem frisch installiertem Server aus. Wenn der bereits in Benutzung ist, passe den zur Anmeldung notwendigen Benutzernamen an und wechsle mit su zum root User.

PS> ssh root@hostname.domain.de

Zunächst wird einmal nach Aktualisierungen gesucht und diese installiert und anschließend die zusätzlich hilfreichen/benötigten Werkzeuge.

$ apt update && apt upgrade -y
$ apt install mc sudo

Wenn das durchgelaufen ist erstellen wir einen neuen Hauptbenutzer, der fortan zur Anmeldung am Server genutzt wird (ersetze username mit einem Namen Deiner Wahl). Der wird dann auch gleich in die sudo Gruppe aufgenommen um später Befehle nutzen zu können, die root Privilegien erwarten.

$ adduser --shell /bin/bash username
$ usermod -G sudo username

Anschließend verwenden wir dieses Fenster nicht mehr, halten es aber für den Notfall offen. Öffne eine weitere Powershell, in der Du Deine Änderungen überprüfen und die weiteren Schritte durchführen kannst. Dort verbindest Du Dich mit dem gerade erstelltem Benutzer mit dem Server.

 PS> ssh username@hostname.domain.de

Nach erfolgter Anmeldung prüfen wir auch gleich die sudo Berechtigung. Die sollte nach dem ersten Befehl (und nach einer einstellbaren Zeitspanne erneut) das Kennwort des Benutzers abfragen, bei mehreren aufeinander folgenden Befehlen aber nicht mehr.

$ sudo apt update
$ mkdir .ssh

Wenn das alles funktioniert hat, können wir uns an die Konfiguration des ssh Daemon machen. Erst einmal melden wir uns vom Server mit exit ab und senden den öffentlichen Schlüssel zum Server. Danach verbinden wir uns wieder neu. Wie bereits oben gelernt anpassen (winname, hostname 2x, username, domain).

$ exit
PS> scp C:\Users\winname\.ssh\hostname.ed25519.pub username@hostname.domain.de:~/.ssh/authorized_keys
PS> ssh username@hostname.domain.de
$ sudo mc

Der letzte Befehl startet den Midnight Commander mit root Rechten und wir wechseln in das Verzeichnis /etc/ssh um die Datei sshd_config zu bearbeiten (markieren, dann F4 drücken).

sshd_config im Midnight Commander
sshd_config im Midnight Commander

Drei Einträge sind anzupassen und ggf. die Raute (#) davor zu entfernen.

#Port 22
PermitRootLogin no
AuthorizedKeysFile      .ssh/authorized_keys  .ssh/authorized:keys2
PasswordAuthentication no

Wenn Du den Port anpassen möchtest, wähle einen oberhalb der Standardports (die ersten 1024) und entferne die Raute am Beginn der Zeile. ACHTUNG: wenn Du bereits eine Firewall scharf geschaltet hast, muss der neue Port freigegeben werden! PermitRootLogin regelt ob oder wie sich der root Benutzer remote anmelden kann und das sollte unterbunden werden. AuthorizedKeysFile ist üblicherweise bereits richtig vorbelegt (Raute entfernen). In dem wir PasswordAuthentication auf no setzen, unterbinden wir die Anmeldung mit Passwort. Mit F2 speichern, mit F10 den Editor verlassen und ein weiteres Mal F10 um den Midnight Commander zu beenden.

$ systemctl restart ssh
$ exit
PS> cd $env.userprofile
PS> cd .ssh
PS> notepad config

Der erste Befehl startet den ssh Deamon neu, der Folgende beendet die remote (SSH) Sitzung mit dem Server, die nächsten Beiden wechseln in das OpenSSH Konfigurationsverzeichnis des aktuell in Windows angemeldeten Benutzers und der letzte startet den Editor mit der Datei config. Sollte die nicht vorhanden sein, wirst Du gefragt ob sie erstellt werden soll und beantwortest den Dialog mit Ja. In die Datei schreibst Du folgende Zeilen einschließlich der Einrückungen (Tabulator). Die fett geschriebenen Teile sind Schlüsselworte und müssen genau so vorhanden sein. Im restlichen Teil ersetzt Du wieder hostname (3x), domain mit TLD (.de), username und winname wie bereits gewohnt. Wenn Du den Port auf dem Server geändert hast, muss der hier natürlich analog eingetragen werden. Speichern und beenden.

Host hostname
	HostName hostname.domain.de
	User username
	Port 22
	IdentityFile C:\Users\winname\.ssh\hostname.ed25519

Weitere Verbindungen können mit einer Leerzeile getrennt angefügt werden. Damit bist Du fertig und kannst das überprüfen. Mit einem kurzen Befehl solltest Du jetzt eine Verbindung zum Server aufbauen können.

PS> ssh hostname

Ich hoffe Dir damit ein klein wenig geholfen zu haben Deinen Server etwas sicherer zu gestalten. Als Nebenprodukt geht die Anmeldung von jetzt an auch noch schneller von der Hand.

Open Source Intelligence (osint)

OSINT unter Windows

Viele OSINT (Open Source Intelligence) Werkzeuge verwenden Perl oder Python Module und können so auch ohne Einschränkungen unter Windows eingesetzt werden. Microsoft hat sein Betriebssystem aber mittlerweile so weit aufgebohrt, das es eine bessere Option bietet. Das nachfolgend beschriebene Vorgehen setzt Windows 10, Version 2004 und höher (Build 19041 und höher) voraus, da erst dann alle Optionen um Hypervisor, Virtual Maschine Management und WSL (Windows Subsystem for Linux) in den notwendigen Versionen enthalten sind.

Bei einem frisch installierten Windows ohne aktiviertes WSL läßt sich Alles mit nur einem Befehl in einer mit Administrationsrechten gestarteten Eingabeaufforderung oder Powershell installieren.

wsl --install

Ist bereits eine ältere Version von WSL aktiv oder einzelne benötigte Komponenten, wird es etwas komplizierter. Microsoft erklärt es recht ausführlich in diesem Beitrag auf der Lernplattform. Wir benötigen ein WSL in Version 2 und es können so viele Distributionen wie gewünscht installiert werden. Dabei ist es auch nicht relevant, welche als Standard fungiert (default ist erst einmal Ubuntu). Für unsere Anforderungen ist Kali Linux besonders geeignet, da es für Datenbeschaffung und Pentesting geschaffen wurde. Zwar läßt sich das auch gleich in der Eingabeaufforderung erledigen, aber ich möchte anraten auch gleich das Windows Terminal zu installieren, da es den Umgang mit unterschiedlichen Shells erleichtert. Das ist aber im Microsoft Store wesentlich komfortabler zu erledigen und der kümmert sich fortan auch automatisch um notwendige Updates für die Terminal Anwendung.

Nachdem beide installiert sind kann das Terminal über das Windows Startmenü gestartet werden und wird sicher schnell die einzelnen Startoptionen für unterschiedliche Shells (Eingabeaufforderung, Powershell, Windows Powershell und WSL Distributionen) ablösen, da es neben der aufgeräumten Oberfläche mit einfacher Möglichkeit weitere (auch unterschiedliche) Shells zu starten und in Tabs zu organisieren, auch einige Optionen zur Anordnung neben.- oder übereinander bietet.

Mit dem Plussymbol wird ein weiteres Tab mit der als standard definierten Shell gestartet, mit dem Pfeilsymbol daneben eine Liste aller installierten Shells geöffnet um daraus eine zum Start auszuwählen. Wir starten also jetzt das erste Mal die Kali Shell wie unten abgebildet.

Der erste Aufruf einer neuen WSL Shell dauert einen Moment, da für jede neue Distribution im Hintergrund eine Virtuelle Maschine eingerichtet und mit entsprechendem Inhalt versehen wird. Dabei wird jede Distro in einer virtuellen Festplatte (vhdx) gekapselt und hat keine Auswirkungen auf das Hostbetriebssystem oder andere Distributionen. Ihr werdet dann aufgefordert einen Benutzernamen festzulegen und ihm ein Kennwort zu verpassen. Ein kurzer Benutzername (ohne Leerzeichen) mit einem sicheren aber gut zu merkenden Passwort ist zu empfehlen! Wenn das erledigt ist, werdet ihr von einem Prompt begrüßt, das bei Kali aus Benutzernamen und Hostnamen getrennt durch ein Kali Symbol mit nachfolgendem Verzeichnis besteht und in der nächsten Zeile die Eingabe erwartet. Die Tilde (~) steht dabei für das Homeverzeichnis.

Ich kann in so einem Beitrag natürlich niemanden umfassend über die Arbeitsweise eines Betriebssystems aufklären oder gar eine Schulung daraus machen (es soll ja auch jedem Anwender ermöglichen damit begrenzt umgehen zu können), aber auf eine Prämisse sei hier verwiesen: wir arbeiten unter Linux ausschließlich mit einem normalen Benutzer, der keine administrative Berechtigung hat! Für Kommandos, die administrative Berechtigungen voraussetzen, nutzen wir den Befehl sudo (Super User Do) vorweg. Der zu Beginn eingerichtete Benutzer hat das Recht sudo zu benutzen automatisch bekommen.

Da wir unser frisch installiertes System noch aktualisieren müssen, probieren wir das gleich an einem passenden Beispiel aus. Der Paketmanager in Debian basierten Systemen, zu welchen unser Kali gehört nennt sich APT (Advanced Packaging Tool) und ist für die Installation und Aktualisierung bereits installierter Software zuständig. Für die Aktualisierung werden lediglich zwei aufeinanderfolgende Befehle benötigt und wir beginnen mit dem aktualisieren der Repositorys zunächst ohne administrative Berechtigung, um das zu veranschaulichen. Gib also den folgenden Befehl am Prompt ein und schicke ihn mit ENTER ab.

apt update

Oben im Bild siehst Du das Ergebnis. Apt beginnt seine Arbeit mit dem Einlesen der Paketlisten und gibt dann Fehler (E) und Warnungen (W) aus. Danach bricht es die Arbeit ab und Du bekommst ein neues Prompt, wobei die Meldungen (13: Keine Berechtigung) schon auf das Problem hinweisen. Damit solltest Du in der Lage sein kleinere Fehler mit Hilfe einer Suchmaschine selbst zu beheben. Weiter im Plan: Nach dem Abschicken eines Befehls mit vorangestelltem sudo wird das Kennwort des angemeldeten Benutzers abgefragt.

sudo apt update
sudo apt upgrade -y

An dieser Stelle sei darauf verwiesen, das die Universität Aachen bei Änderungen an diesem Repository mitunter nicht erreichbar ist. Dann gibt es beim ersten Befehl eine Meldung wie unten abgebildet. Versuche es dann einfach später noch einmal.

Nachdem die Software aktualisiert wurde, kann das eigentliche GUI (Graphical User Interface) installiert werden.

sudo apt install -y kali-win-kex

Nicht erschrecken lassen, das wird eine ganze Menge Pakete auf das System spülen und entsprechend eine Weile benötigen. Im Anschluss ist das Grundsystem bereits lauffähig und kann in seinen unterschiedlichen Modi gestartet werden. Derer werden 3 Modi unterstütz (Window Mode, Enhanced Session Mode, Seamless Mode) die jeweils mit den nachfolgenden Befehlen gestartet werden (immer nur einer davon).

kex --win -s
kex --esm --ip -s
kex --sl -s

Geschmackssache, welches System bevorzugt wird. Am Ende ist es noch sinnvoll das bevorzugte System in die Vorauswahl des Windows Terminal einzutragen. Die Win-KeX Dokumentation bietet hier weitere Informationen. Unabhängig davon welcher Modus gewählt wird, das System startet im Vollbild und fühlt sich wie ein vollständiges Kali Linux an und kann auch so verwendet werden.

Links oben befindet sich das Startmenü (1), dass Zugang zu allen installierten Anwendungen bietet. Zwar muss man sich bei OSINT Werkzeugen meist auf die Shell begeben, bei Kali gibt es aber oft Startmenüeinträge, die das betreffende Script/Modul mit der internen Hilfe aufruft und so bereits die häufigsten Optionen des Skriptes anzeigt. Natürlich ist für den Aufruf solch eines Skriptes aber kein Kex erforderlich. Wenn Du also erst einmal familiär mit Einem geworden bist, kannst Du es auch direkt im Windows Terminal in einer Kali Shell verwenden. Als Beispiel habe ich hier ein solches OSINT Werkzeug gewählt, dass im Startmenü unter „01 Informationsbeschaffung“ (2) und darin unter „OpenSource Intelligence (OSINT) Analyse“ mit dem Eintrag „theharvester“ (3) zu finden ist.

Wenn Du damit ein wenig herumprobiert hast, kannst Du das in der Kali Shell unter /usr/bin/ finden. Der Befehl für das obige Beispiel wäre dann wie folgt.

/usr/bin/theHarvester -h

Die Kali GUI eignet sich hervorragend für Anfänger, die noch keine Idee haben welche Befehle und Werkzeuge für welche Art der Informationsbeschaffung geeignet sind. Sie bietet aber auch Profis Vorteile mit der Integration der Werkzeuge unter einer gemeinsamen Oberfläche und der Trennung vom Windows Desktop. Die Anderen nutzen die Werkzeuge einfach direkt im Terminal. Natürlich betreibe ich den Aufwand so eines Beitrags nicht um eine Spielerei zu veröffentlichen. Den Antrieb zu der Idee hat Nella mit ihrer steten Arbeit gegen den Unrat der Gesellschaft gegeben…

Das dort genutzte Werkzeug (holehe) wollen wir unserem Kali hinzufügen. Zu finden ist es auf Github und sowohl mit einem Git Client aus den Sourcen zu erstellen, als auch direkt über das Python Paket Management, welches wir hier der Einfachheit halber nutzen wollen, da es eine bereits erstellte Version passend zum lokalen System installiert bzw. sich um alle Befehle bei der Erstellung selbst kümmert. Das dazu nötige Werkzeug pip (Packaging for Python) müssen wir aber auch zunächst installieren.

sudo apt install -y python3-pip python3-pip-whl python3-setuptools

Im Anschluß können wir als Funktionstest sich pip selbst aktualisieren lassen und wenn das ohne Fehler klappt nachfolgend holehe. Die dritte Zeile ruft das Werkzeug dann direkt auf und zeigt die möglichen Parameter.

sudo python3 -m pip install --upgrade pip setuptools wheel
pip3 install holehe
holehe -h

Damit habt ihr ein praktisches Werkzeug in euer Windows integriert und vermutlich eine Menge Dinge zum Ausprobieren. Ich wünsche viel Spaß und bitte darum Vorsicht walten zu lassen. Die auch enthaltenen Pentesting Werkzeuge solltet ihr ausschließlich gegen eigene Computer einsetzen um nicht gegen geltendes Recht zu verstoßen!

Logo Freie Demokraten (FDP)

Klientelpolitik oder Ich-Partei

Natürlich spreche ich von der FDP und möchte einen Blick auf die Klimapolitik der freien Demokraten werfen. Zuletzt haben sich Christian Lindner (Bundesminister der Finanzen, BMF) und Volker Wissing (Bundesminister für Digitales und Verkehr, BMDV) mit besonders kruden Aussagen hervorgetan. Die gibt es zwar auch von anderer Seite aus der Partei und zu weiteren Themen, aber das würde den Beitrag sprengen.

Energie

Im Bereich der Energieversorgung ist das polyfone Crescendo besonders ausgeprägt. Vor allem Anderen wird vielstimmig nach einer Verlängerung der Laufzeiten der verbliebenen drei AKWs gerufen. Dabei wird vorausschauend auf Argumente verzichtet und stattdessen mit suggestiven Fragestellungen gearbeitet. Gleichzeitig besteht der Finanzminister auf die Einhaltung der Schuldenbremse, nachdem er der Ölindustrie gerade ein Geschenk von etwa drei Milliarden Euro mit dem Tankrabatt bescherte. Die Kosten der Atomenergie wird dabei ignoriert. Gerade jene Kosten die auf folgende Generationen wegen der Endlagerung zukommen, wären auch schwer gegen die Schuldenbremse zu argumentieren, ganz zu schweigen davon, dass Atomenergie bereits im Betrieb hoch subventioniert und nicht kostendeckend ist.

An der Stelle wird dann auch gern auf das Klima verwiesen, wegen der CO² Emissionen. Gleichzeitig möchte die FDP aber die Entscheidung über Mindestabstände von Windkraftanlagen zur Wohnbebauung den Ländern überlassen, was ja erst zum starken Rückgang der neu gebauten Anlagen führte. Das Kernkraftwerke im Strommix nur mehr 6,3% beitragen und nicht zur Lastverteilung taugen und dafür dann Gasturbinen zum Einsatz kommen, geschenkt.

Stromerzeugung in Deutschland Stand Januar 2022
Stromerzeugung in Deutschland (Quelle: Fraunhofer ISE, Stand Januar 2022)

Die staatlichen Förderungen und gesamtgesellschaftlichen Kosten von konventionellen und erneuerbaren Energien sind nicht in wenigen Worten zusammengefasst. Es gibt allerdings eine Studie aus 2017 (PDF) vom Forum Ökologisch-Soziale Marktwirtschaft e.V. (FÖS) im Auftrag von Greenpeace Energie, heute Green Planet Energy, die einige Fragen beantwortet.

Staatliche Förderungen für Energieträger 1970-2016
Staatliche Förderungen für Energieträger 1970-2016 (© Green Planet Energy eG)

Verkehr

Im Verkehrssektor kommt neben den Kosten für den Staat und damit die Allgemeinheit noch eine Abhängigkeit der Preise verschiedener Energieträger und damit auch der resultierenden Preise für den Einzelnen hinzu. Beispielsweise hat eine höhere Nachfrage nach Heizöl wie zu Beginn des russischen Überfalls auf die Ukraine direkt eine Preissteigerung auch beim Dieselkraftstoff zur Folge und umgekehrt. Jeder eingesparte Liter hilft also in mehrfacher Weise.

Beispiel 9 Euro Ticket

Hieß es zunächst das 9 Euro Ticket würde den automobilen Verkehr nicht verringern, zeigte sich doch recht schnell, dass das nicht stimmte. Die Ferienzeit mag diesen Fehler beeinflußt haben, jeder zieht aber andere Schlüsse aus den Ergebnissen des Statistischen Bundesamtes. Christian Lindner hatte dazu eine sehr eigene Meinung.

Auch drei Wochen nach Auslaufen des 9 Euro Tickets gibt es noch immer keinen Nachfolger. Allerdings hat man sich im Zuge der Einigung auf ein drittest Entlastungspaket dazu durchgerungen zumindest eine Willenserklärung dazu zu beschließen. Es bleibt spannend!

AKW Grafenrheinfeld

Laufzeitverlängerung AKW

AKW Grafenrheinfeld
Von Avda – Eigenes Werk, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=26894741

Nachdem die Union ständig den Weiterbetrieb der noch am Netz befindlichen 3 Kernkraftwerke fordert, springt nun auch die FDP auf den Zug auf und redet von ideologiefreier Prüfung. Diese wurde aber bereits vom Bundesministerium für Wirtschaft und Klimaschutz (BMWK) und dem Bundesministerium für Umwelt, Naturschutz, nukleare Sicherheit und Verbraucherschutz (BMUV) durchgeführt. Das Ergebnis wurde als PDF bereitgestellt und kann hier nachgelesen werden.

Mal davon abgesehen, dass benötigte Sicherheitsüberprüfungen bereits seit 2019 nicht mehr durchgeführt wurden und es daher zu einer Neuzulassung kommen müsste, ist bereits die Beschaffung der Brennelemente in so kurzer Frist unmöglich. Laut Branchenverband Kerntechnik (KernD) dauert diese im Normalfall 12 bis 18 Monate und lässt sich nicht in unter einem Jahr bewerkstelligen. Dazu habe ich auch einen Beitrag von Michael Wiedemann (ZDF) gefunden.

Zwar ist die Beschaffung nicht unmöglich wie mitunter behauptet wird, aber neben der dafür benötigten Zeit muss auch betrachtet werden, dass 40% des Weltmarktes aus Russland und dem mit ihm befreundeten Kasachstan über den russischen Staatskonzern Rosatom bedient werden, der auch über Beteiligungen an Uranminen im Westen verfügt. Eine Abhängigkeit zur russischen Energie mit einer anderen Abhängigkeit zur russischen Energie abzulösen erscheint nicht nur abwegig, wir würden damit auch den Preis für Brennelemente der davon abhängigen Europäischen Staaten erhöhen. Die Zeit bis solche Brennelemente zur Verfügung stehen und alle Sicherheitsüberprüfungen nachgeholt wären, müsste zudem durch Gas.- und Kohlekraftwerke überbrückt werden.

Diese Umstände sind natürlich CDU/CSU und FDP bekannt und der Populismus kann eigentlich nur als Lüge betrachtet werden. Über den fehlenden Enthusiasmus beim Ausbau nachhaltiger Energiegewinnung der CSU Landesregierung des Herrn Söder habe ich mich bereits auf Twitter ausgelassen.