Archiv der Kategorie: Linux

Alles rund um die Pinguine – auf dem Desktop und dem Server

LDAPs via HAProxy

Situation: LDAPs Verbindungen sollen via pfSense und dem dortigen HAProxy an den LD-Server ge-proxied werden, um mehr Kontrolle über die zulässigen LDAP-Hosts zu haben als mit plain LD-Server.

Problem: Obwohl die LDAPs Verbindung vom Client via pfSense und HAProxy zum lokalen LDAP-Server klappt, geht keine Antwort vom LDAP-Server nach Außen.

Lösung: TLS1.3 verbieten – mit TLS1.2 funktioniert es. Das Feld im Frontend nennt sich „Advanced ssl options“ und braucht den folgenden Eintrag:

no-tlsv13

Dann ist es im übrigen auch auf der pfSense einstellbar, dass es Wurst sein soll, dass das LDAP-Zertifikat auf dem LD-Server self signed ist. Hauptsache das Zertifikat in Richtung Internet ist sauber (z.B. Let’sEncrypt-Certificate mit ACME Plugin für pfSense), damit sich z.B. ein Moodle verbinden kann.

Tools zum Debuggen: tcpdump, Apache directory Studio

OpenVPN und OpenSSL 3.x

Das Arch-Update von OpenSSL auf Version 3.x brachte mit sich, dass ich nicht mehr via OpenVPN auf meinen Server kam.

Fehlermeldungen waren ungefähr solche hier:

2022-11-09 08:23:40 OpenSSL: error:11800071:PKCS12 routines::mac verify failure
2022-11-09 08:23:40 OpenSSL: error:0308010C:digital envelope routines::unsupported
2022-11-09 08:23:40 Decoding PKCS12 failed. Probably wrong password or unsupported/legacy encryption
2022-11-09 08:23:40 Error: private key password verification failed
2022-11-09 08:23:40 Exiting due to fatal error

Die Lösung ist hier [1, 2] beschrieben. Am schnellsten (wenn auch nicht am saubersten) geht es via Anpassung der /etc/ssl/openssl.cnf

[openssl_init]
providers = provider_sect

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1

OMD versus Canonical

OMD / Check_MK konnte nicht mehr apt auslesen. Ursächlich war, dass Canonical auf die tolle Idee kam, bei jedem Aufruf von apt update Werbebotschaften einzublenden. Der Output von apt update verwirrt dann den Filter. Der meldet im OMD nur noch:

UNKN - Item not found in agent output

Lösungsansatz: Auf dem Server die Templates für Canonicals Werbemüll weglöschen:

rm /var/lib/ubuntu-advantage/messages/apt-pre-invoke-*

Reicht aber nicht. Canonical stellt die Dateien wieder her. Da musste noch mehr weg:

systemctl stop ua-timer.service ua-timer.timer
systemctl mask ua-timer.service ua-timer.timer

Und das da auch gleich mit in den Eimer:

rm /etc/apt/apt.conf.d/20apt-esm-hook.conf

Immer mehr Gründe, die für Debian oder Arch sprechen.

Elden Runes

https://www.elden-runes.de/

ELDEN RUNES is an action roguelike boss rush. Explore the ruins of the ancient temple in a 2.5D pixel art style, where each animation, mechanic and sound is lovingly made by hand. Each guardian has their individual fighting style, utilizing the elements of light and darkness. Use the powers of Vex and Lux to defeat them and get out of the temple!

Elden Runes [ C ] via ER

Ein Projekt, das IMHO einen Blick wert ist. Allein schon deswegen, weil es mit Liebe und auch viel Freude und Einsatz von Faik Dogar, Tim Scholl, Marc Seelmann, Aydeniz Sözbilir und Janis Weller erstellt wurde – und nun gemeinsam betüttelt wird. Die Quellenauszeichnung ist hier ebenso durchdacht wie die Datenschutzseite – und unterscheidet sich somit (leider!) heftig von vielen andern Projektseiten aus diesem Seminar. Ich tippe mal, die Profs merken das nicht einmal.

WiFi Heatmap

Ich war auf der Suche nach einer schnellen Möglichkeit, die Wifi Qualität hier im Haus (und später evtl. auch mal an der Schule) zu erfassen.

Geht via CLI mit den folgenden Methoden:

# nmcli
nmcli d wifi

# iw
sudo iw dev wlan0 link

# wpa_cli
sudo wpa_cli -i wlan0 scan_results

# wavemon
wavemon

mit den jeweiligen Vor- und Nachteilen bei der Interpretation und Darstellung. Für den Alltag reicht mir hier nmcli.

Eine Heatmap zu erstellen wäre dann die nächste Idee, jedoch will mensch die Ergebnisse ja in hübsch – und möglichst automatisiert. Dazu fand ich die folgenden Projekte:

https://github.com/jantman/python-wifi-survey-heatmap ist schon ein wenig älter und sah mir komplexer aus, als ich es haben wollte.

Das hier https://github.com/Nischay-Pro/wifi-heat-mapper schien der einfachere kleine Bruder zu sein – also getestet.

Die Installation geht mit pip auf einem Arch flott über die Bühne. Auf einem hausinternen Serverchen dann iperf3 gestartet, damit wir einen Endpoint für die Messungen haben. Es folgt die Erstellung einer groben Skizze des zu erfassenden Stockwerkes (z.B. mit Libreoffice Draw). Dieses als PNG oder JPG wegspeichern / exportieren. Die dann folgenden Schritte (die eigentliche Messung) sind auf der Seite bei Github ausführlich beschrieben und gehen einfach von der Hand.

Die Ergebnisse sind dann … nunja … abhängig von der eigenen Geduld, die an zwei Stellen hart auf die Probe gestellt wird: Erstens dauert eine Messung gefühlte Ewigkeiten – und zweitens stürzt whm öfter mal ab. Es speichert aber alle bisherigen Messergebnisse, so dass der Verlust vor allem deswegen nervt, weil die Messung wiederholt werden muss.

Im Ergebnis tauchen dann so Sonderbarkeiten wie im Bild oben auf: Der UDP Scan zeigt ein Loch an einem Messpunkt. Macht nicht wirklich Sinn für mich.

Aber nett anzusehen sind die Bildchen und manchmal bringen sie einen ja schon zum Nachdenken:

Signalstärke

Den AP hinter der Glotze zu verstauen ist selbstverständlich doof und das oben zu sehende Resultat auch zu erwarten. Aber! Die „Heatmap“, die ich erhalte, wenn der dauerblinkende, schwarze, hässliche AP nicht hinterm TV versteckt ist, will ich mir nicht zeichnen lassen. Das Programm erfasst halt nicht den WAF.

Horde GnuPG auf Ubuntu 18.04

Horde ist hier auf einem Ubuntu 18.04 Server installiert – mit Hilfe von PEAR.  Leider funktionierte eine ganze Zeit lang die PGP / GnuPG Schlüsselerstellung damit nicht mehr. Ich vermute inzwischen, weil der Commit hier

https://github.com/horde/Crypt/pull/2/commits/5f0c7e7b7a3dc7b6a8a3e9ba1e085be7a94d3477

nie Eingang in das Horde fand, das hier mittels PEAR aktuell gehalten wird.

Was nämlich funktioniert, ist, der Austausch von

/usr/share/php/Horde/Crypt/Pgp/Backend/Binary.php

mit der Binary.php von oben! Also

wget https://raw.githubusercontent.com/horde/Crypt/5f0c7e7b7a3dc7b6a8a3e9ba1e085be7a94d3477/lib/Horde/Crypt/Pgp/Backend/Binary.php
mv /usr/share/php/Horde/Crypt/Pgp/Backend/Binary.php /usr/share/php/Horde/Crypt/Pgp/Backend/Binary.php.bak
mv Binary.php /usr/share/php/Horde/Crypt/Pgp/Backend/Binary.php

und die Schlüsselerstellung funktioniert wieder.

Danke auch an kruedewagen und die weiterführenden Links dort, der mich auf die richtigen Gleise setzte, auch wenn dessen Lösung hier nicht funktionierte.

Q4 auf Arch

Musste ich mal wieder anschauen, weil die Jungs die DVD im Keller fanden, auch wenn es das einst von mir am wenigsten gespielte Quake war.

Die Voraussetzungen dafür, dass das im Netz noch immer als Download zu findende quake4-linux-1.4.2.x86.run beim Start nicht Fehler dieser

error while loading shared libraries: libSDL-1.2.so.0: cannot open shared object file: No such file or directory

oder dieser Art

MESA-LOADER: failed to open i965: libgcc_s.so.1: version `GCC_7.0.0' not found (required by /usr/lib32/dri/i965_dri.so) (search paths /usr/lib32/dri)

warf, war erstens die Installation von

sudo pacman -S lib32-sdl lib32-mesa

und zweitens ein

mv libgcc_s.so.1 libgcc_s.so.1.bak
mv libstdc++.so.6 libstdc++.so.6.bak

in /usr/local/games/quake4.

Alle weiteren Hinweise und Tipps sind hier zu finden:

https://www.gamingonlinux.com/articles/playing-quake-4-on-linux-in-2018.11017

Ubuntu Server Upgrade 18.04 auf 20.04

Das Update von 18.04 auf 20.04 auf einem Server mit RSpamd, Postfix, Dovecot, Apache, MySQL zeigte gestern, dass nur relativ wenig bricht:

Das Paket mail-stack-delivery ist ja seit 18.04 schon nicht mehr das, was es einst war. Leider. Jetzt scheint dessen Vorhandensein dafür zu sorgen, dass beim Upgrade die Pakete

dovecot-imapd dovecot-pop3d dovecot-sieve

entfernt werden. Dovecot wirft dann mit Fehlern, die nicht ganz in die richtige Richtung weisen – nämlich u.a.

Error: sieve: Failed to initialize script execution: Invalid postmaster_address: invalid
address `postmaster' specified for the postmaster_address setting

auch wenn mensch hier ebenfalls tätig werden und postmaster_address setzen darf.

Weiter fällt der Start des MySQL Servers auf die Nase, wenn vorher Anpassungen für Moodle und / oder Nextcloud vorgenommen wurden. Er moniert:

[ERROR] [MY-000067] [Server] unknown variable 'innodb_file_format=Barracuda'.

Behoben wird dies (zumindest bei diesem Server) durch Auskommentieren der Zeilen

innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix

in /etc/mysql/mysql.conf.d/moodle.cnf bzw. nextcloud.cnf ebenda. Weder Moodle noch Nextcloud scheinen sich hieran bisher zu stören.

Check_MK kommt mit dem frischen Kernel ebenfalls nicht richtig klar und zeigt auf einer Maschine mit 32GB RAM bei 2GB RAM Auslastung nun:

Largest Free VMalloc Chunk: 0 B (warn/crit below 50 MB/30 MB) CRIT

Der Workaround ganz unten im Thread hier hilft weiter.

Der Rest (z.B. RSpamd, Tripwire, Postfix, ufw, Redis, PHP-Upgrade auf 7.4 und Anpassungen des Apachen hierzu, Certbot usw usw) lief hier ohne weitere Probleme durch.

Debian Installbox

Um viele Laptops möglichst zügig mit einem Betriebssystem versorgen zu können, habe ich eine „Debian Installbox“ erzeugt. Diese basiert auf

https://salsa.debian.org/installer-team/netboot-assistant

und der Dank geht somit an andi für das Konzept, die Skripte und seine Unterstützung.

Meine eigenen Konfigurationsdateien habe ich ins Git gelegt:

https://codeberg.org/dowel/installbox

Eine fertige VM für Virtualbox kann mensch hier herunterladen:

https://cloud.kvfg.de/index.php/s/aXtJQxKccPCm8kX

Ein paar Erläuterungen dazu:

Host

Den Hostrechner mit zwei Netzwerkkarten versorgen. Die „nach Außen“ / Richtung Internet zeigende Netzwerkkarte sollte die langsamere der beiden sein. Nach „innen“ und damit in Richtung der zu installierenden Maschinen das schnellste nehmen, was rumliegt.

Die VM unter Debian Buster braucht nicht viel – die voreingestellten 4GB und 2 CPUs sollten reichen. Vermutlich reicht auch die Hälfte – die VM hat ja fast nix zu tun, außer Steuerbefehle zu schicken und Dateien auszuteilen. Der Host sollte das doppelte der VM an Ressourcen aufweisen. Hier klappt das auf Rechnern der „Isny-Klasse“ (Core i3 mit 8 GB RAM und SSD) ganz flott – so als Orientierung.

Adapter 1 zeigt in Richtung Internet und ist im Auslieferungszustand vermutlich noch als Bridge konfiguriert, weil das in meinem lokalen Netz praktischer war. Das Interface darf ruhig NATen. Im Bild oben ist das nicht so, weil ich dann vom VM-Host via SSH einfacher auf die VM komme.

Adapter 2 zeigt in Richtung der zu installierenden Maschinen und muss deswegen eine Netzwerkbrücke direkt auf das Interface im Host sein. Hier in der VM die Einstellungen in /etc/network/interfaces nur befummeln, wenn man die Folgen abschätzen kann – also dazu bereit ist, die Konfiguration zu überarbeiten. Voreingestellt ist hier die IP 192.168.0.10. Da fährt dann auch der TFTP-Server hoch und lauscht der dnsmasq auf Anfragen.

Am Host selbst hatte ich für diese zweite Karte keine IP gesetzt, was unter Arch gut funktionierte. Unter Debian funktionierte das überhaupt nicht. Da musste ich auf dem Host dem Interface eine 192.168.0.1 statisch verpassen, erst dann konnte die VM dort bridgen.

Dann noch eine Anmerkung zum Grafik-Controller: VBox will da inzwischen VMSVGA haben. Das führt in der Debian-VM hier (unter Arch) jedoch dazu, dass diese alle paar Sekunden eine Denkpause in der GUI einlegt. Mit VBoxVGA flutscht es in der VM weitaus besser. Muss man ausprobieren – tun sollte beides.

VM

Usermanagement

Es sind zwei Benutzer eingerichtet – installbox als Arbeitskonto (Passwort: muster) und kvfg (Passwort: kvfg) für die Erzeugung eines hübschen Homeverzeichnisses für die SuS, das dann auf die Laptops mit ausgerollt wird und somit schon alle sinnigen Einstellungen mitbringt. Da müsst ihr Euch halt einen eigenen backen – das Schulkürzel bietet sich als Benutzername wie auch als Passwort an.

Also: Als kvfg anmelden und alle Einstellungen so vornehmen, wie sie später die SuS an den Laptops vorfinden sollen. Z.B. kann hier das hässliche XFCE-Debian-Theme überarbeitet werden. Ich habe dann noch in Firefox ublock und decentraleyes installiert, die Suchmaschinenliste überarbeitet, Bookmarks eingefügt, die Startseite angepasst und auch Libreoffice für den Einsatz in den Fächern Deutsch, Englisch, Französisch und Spanisch inklusive Beispieldateien vorbereitet. Weiter habe ich Nextcloud „halb installiert“, damit den SuS das auch auffällt, wie sie von zu Hause aus geschickt arbeiten könnten. Dazu kommt – seit der letzten Version – auch ein Skript, das die Verbindung mit dem Schulnetzwerk herstellt (WLAN, Servermounts), sofern die SuS mal in der Schule arbeiten. So Sachen eben, die den Alltag für die SuS erleichtern.

Sobald das alles nach Wunsch aussieht ausloggen und als installbox wieder anmelden. Von diesem Konto aus als root das Homeverzeichnis von kvfg komplett in ein TAR packen. Das Skript build-skel.sh im Rootverzeichnis hilft dabei.

Die Laptops holen sich im Zuge der Installation das TAR-Archiv und entpacken das auf dem Laptop nach /home/kvfg, womit die Einstellungen auf den Geräten wie gewünscht gesetzt sind.

Wer sich einen eigenen Benutzer für die Schule gebacken hat, sollte also die Pfade und Namen in der preseed.cfg daraufhin überprüfen.

Hints

Die VM ist mit einem Apt-Cacher NG versorgt, der die gesamte Installation Stand 13.08.2020 10:00 Uhr auch offline abwickeln kann. Ihr könnt in der VM unter http://localhost:3142 nachsehen, wie viel an Download aus dem Netz ihr schon gespart habt – und außerdem geht es so einfach total flott.

In Zeile 81 hinter

d-i pkgsel/include string

der preseed.cfg sind die Pakete aufgeführt, die nachinstalliert werden. Da lassen sich leicht weitere ergänzen. Ich hab hier z.B. Gimp, VLC, Okular und Gwenview sowie Kate mit eingetragen, weil ich diese selbst gerne nutze – und weil sie auf den Clients in der Schule auch da sind. Dazu kamen dann noch Cheese für einen Test der Webcam und Nextcloud-Desktop für die Verbindung mit der Schulcloud usw usw usw …

Releases

2020-08-13

Initial release

2020-08-14

Paketliste ergänzt (Druckmöglichkeit), Splash-Screen, Softwarecenter

2020-08-17

Paketliste ergänzt (simple-scan), ublock im Firefox-ESR für die BBB Domains auf lehrerfortbildung-bw.de und die schulischen Domains deaktiviert

2020-08-18

KISS: Die Druckerpakete machen vermutlich keinen Sinn. Wenn die SuS keine Geräte haben und deswegen einen Laptop von der Schule erhalten, dann haben diese aller Wahrscheinlichkeit nach auch keinen Drucker rumstehen – und wenn doch, dann lernen sie was bei der Nachinstallation. Synaptics-Touchpad-Treiber kamen noch dazu – und die Repos wurden freundlicher eingestellt (contrib, non-free hinzugefügt).

2020-08-20

Das XFCE-Batteriestatus Icon hat noch gefehlt. Weiter habe ich, um den Überblick zu behalten, etckeeper und git auf den Laptops installiert [1]. So kann bei Tests vor Ort besser abgeschätzt werden, welche Anpassungen noch fehlen (z.B. Netzwerkverbindungen).

Die Verbindung mit dem Schulnetz wird nun via WPA2-Enterprise hergestellt. Deswegen wird in der Downloadversion der VM eine weitere Datei mit ausgerollt:

/var/lib/tftpboot/d-i/buster/schueler.nmconnection

In dieser sind die Credentials für die Verbindung mit dem Schulnetz „schueler“ mit drin (in der Downloadversion der VM nicht wirklich – aber den Teil muss mensch eh selbst an die Gegebenheiten in der Schule vor Ort anpassen).

Damit diese Configdatei an Ort und Stelle auf den Laptops ankommt, wurde dann die preseed.cfg überarbeitet, was wiederum im Git auf Codeberg (Link siehe oben) zu finden ist.

Damit evtl. Änderungen schnell eingepflegt werden können, die schueler.nmconnection in der VM nach /root legen. Dort liegt auch das Skriptchen build-skel.sh, das dann das Homeverzeichnis zusammen mit dieser Datei packt.

2020-08-24

Die VM hat nun Skripte an Bord, die auf den Laptops die Einrichtung individueller Verbindungen mit dem Schulnetzwerk (WPA2-Enterprise) unterstützen – inklusive mount der Servershares. Der Würgaround vom 20.08 mit einem Xtra-User ist somit nicht mehr nötig.

2020-08-25

Gut, wenn man noch einmal drüber schläft. Ich hatte die cifs-utils in der preseed.cfg vergessen.

Systempflege

2021-06-25

Fährt mensch die Installbox nach einigen Wochen / Monaten erneut hoch, dann passt der Kernel nicht mehr und die Fehlermeldung

Es wurden keine Kernel-Module gefunden. Dies liegt vermutlich an einem Unterschied zwischen dem hier verwendeten Kernel des Installers und dem Kernel, der im Debian-Archiv verfügbar ist […]

taucht auf. Hier scheint das folgende Vorgehen geholfen zu haben:

  1. Alle Pakete aus dem Apt-Cacher NG löschen
  2. lokales Update der Installbox durchführen
  3. di-netboot-assistant frisch machen:
di-netboot-assistant purge stable
di-netboot-assistant install stable
di-netboot-assistant fw-toggle stable
di-netboot-assistant rebuild-grub
di-netboot-assistant rebuild-menu

Irgendwo auf dem Weg zum Glück bog ich dabei falsch ab und erhielt bei der Partitionierung die Meldung, dass kein Root-Dateisystem angegeben worden sei. Ein Reboot der Installbox scheint das aber erledigt zu haben. Jetzt läuft die Installation wieder durch. Ursächlich ist wohl eher der Client selbst, dessen Festplatte nicht erkannt wurde. Hier half bei weiteren Versuchen ein Strg-Alt-F1 und dann die Auswahl von „Festplatten erkennen“. Klappt das, dann läuft die Installation auf Basis der preseed.cfg danach weiter.

Da ich jetzt am Spielen bin habe ich noch meine auf Debian 10 laufende Clonezilla VM ins oben angegebene Repo gelegt. Kurzbeschreibung:

Adapter 1 mit 080027358D91 zeigt in Richtung Internet (NAT)
Adapter 2 mit 080027129480 zeigt in Richtung Clients (Bridged)
# Benutzerkonten
root: muster
konto: muster

Adapter 1 wird vom NetworkManager verwaltet. Adapter 2 wird von ifupdown mit 192.168.0.10 versorgt. Auf dem Desktop befindet sich eine TXT Datei mit den wichtigsten Einstellungen und Befehlen. Clonezilla läuft hier so, dass Images erstellt und wieder ausgerollt werden können. Schon enthalten ist das Image aus der Installbox in /home/partimg/ … und das bau ich nun weiter aus und um.

2021-06-26 I

firmware-iwlwifi wird nun bei der Installation via Installbox auf den T450ern explizit benötigt. Das habe ich ergänzt  – auch in der preseed.cfg auf Codeberg. Das Installbox Image ist aktualisiert und frisch hochgeladen.

Die Clonezilla-Server Variante enthält nun zwei Images: Einmal das, was die Installbox auswirft (XFCE als Desktop) und zusätzlich noch ein Image mit KDE mit den folgenden, zusätzlich installierten und schon vorkonfigurierten Paketen:

kde-full breeze-gtk-theme thunderbird thunderbird-l10n-de keepassxc inkscape youtube-dl flatpak gnome-software-plugin-flatpak

2021-06-26 II

Die Installbox bietet nun beim Boot des Clients zwei Installationsoptionen an: Bullseye und Buster jeweils mit XFCE als Desktop.

Die Dokumentation dazu auf Codeberg ist aktualisiert.

In der nächsten Pflegestufe kommt der Clonezillaserver dran – mit XFCE und KDE Desktop für Bullseye.