IT-Blog von Sebastian van de Meer

Kategorie: Kernel-Error-Blog (Seite 14 von 45)

Persönlicher Tech-Blog von Sebastian van de Meer — Beiträge zu IT-Security, Netzwerken, FreeBSD, Linux, Elektronik und Maker-Projekten.

FreeBSD Jail Upgrade: Wenn freebsd-update die Version nicht erkennt

FreeBSD-Jails lassen sich mit freebsd-update genauso upgraden wie das Host-System. Der Parameter -b gibt den Pfad zur Jail an:

# Normales Jail-Upgrade
freebsd-update -r 14.2-RELEASE upgrade -b /zroot/jails/myjail
freebsd-update install -b /zroot/jails/myjail
service jail restart myjail
freebsd-update install -b /zroot/jails/myjail
# Pakete aktualisieren
jexec myjail pkg upgrade
freebsd-update install -b /zroot/jails/myjail

Das Problem: Falsche Versionserkennung

Manchmal ist freebsd-update davon überzeugt, dass die Jail bereits auf der Zielversion läuft, obwohl sie es nicht ist. Prüft man manuell, steht da noch die alte Version:

jexec myjail freebsd-version
13.2-RELEASE-p9

Das passiert typischerweise wenn die Jail schon Patches bekommen hat oder wenn der Host auf einer anderen Version läuft als die Jail. freebsd-update liest die Version aus Dateien im Jail-Dateisystem und kommt durcheinander.

Die Lösung: –currently-running

Mit --currently-running gibt man freebsd-update die aktuelle Version explizit vor:

freebsd-update -b /zroot/jails/myjail --currently-running 13.2-RELEASE-p9 -r 14.2-RELEASE upgrade

Danach läuft das Upgrade normal durch. Die Version, die man bei --currently-running angibt, muss exakt der Ausgabe von freebsd-version in der Jail entsprechen, inklusive Patchlevel.

Tipp: Vor dem Upgrade einen ZFS-Snapshot der Jail anlegen. Falls etwas schiefgeht, ist ein Rollback in Sekunden erledigt.

Fragen? Einfach melden.

OpenPOWER-Testsystem mit POWER8-CPU von Thomas-Krenn im Detail

Die netten Leute von Thomas Krenn haben uns ihr OpenPOWER-Testsystem zur Verfügung gestellt. Wir wollten dieses System schon länger in die Finger bekommen. Jetzt hat es endlich geklappt.

Die Hardware

Der Server zieht mit seinen zwei 1200-Watt-Netzteilen in der Spitze etwa 370 Watt (im Normalbetrieb um die 230 Watt) und soll laut Thomas Krenn 1.325 BTU/h produzieren. Verbaut sind 128 GB RAM und eine POWER8-CPU:

root@ubuntu:~# lscpu
Architecture:          ppc64le
Byte Order:            Little Endian
CPU(s):                64
Thread(s) per core:    8
Core(s) per socket:    8
Socket(s):             1
Model name:            POWER8 (raw), altivec supported
CPU max MHz:           3857.0000
L1d cache:             64K
L1i cache:             32K
L2 cache:              512K
L3 cache:              8192K

64 Threads auf 8 Cores, SMT8. Das Betriebssystem war ein Ubuntu 16.04 LTS (ppc64le).

Storage-Anpassung

Die mitgelieferten Festplatten (3,5″ Nearline SAS mit 7,2k) waren für unseren Datenbanktest zu langsam. Also haben wir ein paar ältere 15k-SAS-Platten aus dem Lager verbaut und in ein RAID 10 geworfen. Damit war das lokale Storage laut pg_test_fsync vergleichbar mit unseren anderen Testsystemen. Wir wollten ja CPU-Leistung vergleichen, nicht Festplatten.

Alltagsvergleich

Als Erstes ein paar alltägliche Operationen im Vergleich mit Intel-Systemen:

CPUSHA256 500 MBbzip2 500 MBAES 500 MB
2× Xeon E5-2665 @ 2.40 GHz3,859 s5,445 s1,337 s
1× POWER8 @ 3.86 GHz3,803 s7,868 s0,866 s
1× Core i7-6700 @ 3.40 GHz2,370 s4,207 s0,831 s
2× Xeon E5-2650 v4 @ 2.20 GHz2,652 s5,413 s1,585 s
2× Xeon E5-2650 v3 @ 2.30 GHz2,484 s5,217 s1,500 s

AES-Verschlüsselung: POWER8 vorn. SHA256: gleichauf. bzip2: Intel deutlich schneller. Ein gemischtes Bild.

UnixBench

Das OpenPOWER-System gegen ein Dell-System mit zwei Intel Xeon E5-2665 (nur CPU/RAM relevant):

Benchmark2× Xeon E5-26651× POWER8
Dhrystone 234.551.077 lps27.167.564 lps
Double-Precision Whetstone4.082 MWIPS4.092 MWIPS
Execl Throughput2.124 lps2.776 lps
Pipe Throughput2.067.851 lps465.884 lps
Process Creation4.278 lps7.391 lps
Shell Scripts (1 concurrent)5.543 lpm7.085 lpm
Shell Scripts (8 concurrent)6.090 lpm4.357 lpm
System Call Overhead4.186.840 lps344.157 lps
Index Score1.629,6851,8

Process Creation und Shell Scripts (single): POWER8 vorn. System Calls und Pipe Throughput: Intel massiv besser. Der Index-Score geht klar an Intel, wobei der Vergleich nicht ganz fair ist (Dual-CPU gegen Single-CPU).

PostgreSQL-Restore

Die hohe Thread-Anzahl und die breite Speicheranbindung machen die POWER8 theoretisch zum guten Datenbankprozessor. Wir arbeiten viel mit PostgreSQL, also haben wir unsere Testdatenbank restored:

CPURestore-Zeit
2× Xeon E5-2650 v3 @ 2.30 GHz129 min 34 s
1× POWER8 @ 3.86 GHz120 min 43 s

Knapp 9 Minuten schneller als das Dual-Xeon-System. Bei Datenbank-Workloads macht sich die Speicheranbindung bemerkbar.

Fazit

Die POWER8 ist ohne Zweifel leistungsstark. Die Speicheranbindung und die 64 Threads merkt man bei Datenbank-Workloads. Im Single-CPU-Vergleich macht das System bei Datenbanken den Stich. Aber: Das OpenPOWER-System von Thomas Krenn gibt es nur mit einem CPU-Socket, preislich liegt es aber auf dem Niveau eines Dual-Xeon-Systems. In diesem Vergleich hat Intel die Nase vorn.

IBM hat die POWER8 2013 vorgestellt, unser Test war 2018. Die Vergleichssysteme waren ebenfalls nicht brandneu. Unterm Strich: Tolle CPU, aber im Preis-Leistungs-Verhältnis für einen Datenbankserver gegenüber Intel der Verlierer. Im HPC-Bereich oder bei der Anbindung von Nvidia-Beschleunigern sieht das sicher anders aus. Dual-CPU-Systeme oder direkt POWER9 (mit AES und GZIP im Chip) wären spannend gewesen. Da IBM von diesen CPUs im Vergleich zu Intel nur geringe Stückzahlen verkauft, bleibt der Preis hoch.

Wer FreeBSD auf anderer Hardware ausprobieren will: FreeBSD auf dem Desktop beschreibt die Grundinstallation mit MATE. Und mit bhyve und vm-bhyve lassen sich Windows-VMs auf FreeBSD betreiben.

Fragen? Einfach melden.

bhyve und vm-bhyve: Windows-VM auf FreeBSD einrichten

FreeBSD bringt seit Version 10.0 einen eigenen Typ-2-Hypervisor mit: bhyve. Für den täglichen Umgang empfiehlt sich vm-bhyve als Verwaltungstool — damit lässt sich eine Windows-VM in wenigen Minuten einrichten, ohne sich mit den bhyve-Basistools herumschlagen zu müssen.

vm-bhyve installieren und einrichten

# Installation
pkg install vm-bhyve grub2-bhyve uefi-edk2-bhyve

# ZFS-Dataset für VMs anlegen
zfs create pool/vm

# Autostart aktivieren
sysrc vm_enable="YES"
sysrc vm_dir="zfs:pool/vm"

# Initialisieren und Templates kopieren
vm init
cp /usr/local/share/examples/vm-bhyve/* /pool/vm/.templates/

# Netzwerk-Switch erstellen und physisches Interface anhängen
vm switch create public
vm switch add public em0

Windows-VM erstellen

ISO-Dateien importieren — die Windows-ISO und die virtio-Treiber für die Netzwerkkarte:

# Windows-ISO importieren
vm iso /home/kernel/Download/win10.iso

# virtio-net Treiber (für die Netzwerkkarte in der VM)
fetch https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
vm iso /home/kernel/Download/virtio-win.iso

VM aus dem mitgelieferten Windows-Template erstellen:

vm create -t windows -s 200G win10

VM-Konfiguration anpassen

Das Windows-Template kommt mit 2 CPUs und 2 GB RAM. Für eine brauchbare Windows-VM besser anpassen:

vm configure win10
uefi="yes"
cpu=4
memory=8G
graphics="yes"
graphics_port="5999"
graphics_listen="127.0.0.1"
graphics_res="1280x1024"
graphics_wait="auto"
xhci_mouse="yes"
network0_type="virtio-net"
network0_switch="public"
disk0_type="ahci-hd"
disk0_name="disk0.img"

Die wichtigsten Optionen: graphics="yes" aktiviert einen VNC-Server für die Grafikausgabe, xhci_mouse="yes" sorgt für eine brauchbare Maus in der VM, network0_type="virtio-net" nutzt den schnelleren paravirtualisierten Netzwerktreiber statt einer emulierten Karte.

Installation und Zugriff

# VM starten und ISO einlegen
vm install win10 win10.iso

Dann mit einem VNC-Viewer auf 127.0.0.1:5999 verbinden und Windows installieren. Nach der Installation die virtio-Treiber-ISO einlegen (vm install win10 virtio-win.iso) und Windows die Netzwerktreiber dort suchen lassen.

Für den täglichen Zugriff RDP in der VM aktivieren — dann braucht man den VNC-Viewer nur noch für die Ersteinrichtung.

VM verwalten

# Laufende VMs anzeigen
vm list
NAME   DATASTORE  LOADER  CPU  MEMORY  VNC  AUTOSTART  STATE
win10  default    uefi    4    8G      -    No         Running (10638)

# VM stoppen / starten
vm stop win10
vm start win10

# Snapshot erstellen (ZFS-Snapshot der VM-Disk)
vm snapshot win10

Details und weitere Optionen im vm-bhyve Wiki. Fragen? Einfach melden.

Wunderbarer Kreisschneider für die Holzwerkstatt: Ein Muss für Handwerker

Heute mal komplett weg von der IT. Ich lasse mich gerne von gutem Werkzeug beeindrucken, und mein neuer Kreisschneider hat das geschafft. Es war selbst 2018 nicht einfach, ihn zu bekommen. Das Teil ist regelmäßig schneller ausverkauft als der Hersteller nachliefern kann. Gekauft habe ich ihn bei feinewerkzeuge.de. Bei Amazon gibt es sehr ähnliche Modelle, mit denen viele ebenfalls zufrieden sind.

Das Problem mit Topfkreisbohrern

Für kleine Löcher nimmt man einen Bohrer, für größere einen Forstnerbohrer. Wird es noch größer, greift man zum Topfkreisbohrer. Ein ordentlicher kostet schnell 40 bis 100 Euro. Trotzdem hat man ähnliche Probleme wie mit billigen: Das Holz verbrennt, es reißt aus, und das ausgeschnittene Stück klemmt im heißen Bohrkopf. Wer verschiedene Lochgrößen abdecken will, hat ein kleines Vermögen in der Werkstatt liegen und braucht es vielleicht dreimal im Jahr. Natürlich hat man dann doch keine passende Größe. Ein Millimeter zu klein oder zu groß. Also kleiner bohren und dann schleifen. So wird man die Brandstellen gleich mit los. Oder auch nicht.

STAR-M Kreisschneider Nr. 36 HSS

Ein Bekannter hat mir irgendwann zu diesem Kreisschneider geraten. Er lässt sich komplett stufenlos einstellen, man hat also immer die passende Größe. Die Messer und die Zentrierspitze lassen sich einzeln und günstig tauschen, das Werkzeug selbst ist gut bezahlbar. Statt eines großen Bohrkopfs arbeiten nur zwei kleine Messer in massiven Metallhaltern. Weniger Kontaktfläche bedeutet weniger Reibung und weniger Hitze. Die Metallhalter führen die Restwärme zusätzlich ab. Die Japaner wissen, wie man gutes Holzwerkzeug baut.

Praxistest: 18 mm Buche-Leimholz

Hier ein paar Bilder vom Einsatz an einer 18 mm Leimholzplatte aus Buche:

Fragen? Einfach melden.

TLS 1.0 und 1.1 abschalten: Postfix, Dovecot und Nginx auf TLS 1.2+ umstellen

TLS 1.0 stammt von 1999, TLS 1.1 von 2006. Beide Versionen haben bekannte Schwächen (BEAST, POODLE, fehlende AEAD-Cipher) und werden seit 2020 von keinem Browser mehr unterstützt. Qualys SSL Labs vergibt seit 2020 maximal ein B-Rating wenn TLS 1.0 oder 1.1 aktiv ist. Es gibt keinen Grund mehr, diese Protokolle anzubieten.

Postfix

In der main.cf die Mindestversion auf TLS 1.2 setzen. Die Einstellungen gelten getrennt für eingehende (smtpd) und ausgehende (smtp) Verbindungen:

# Eingehend (smtpd)
smtpd_tls_mandatory_protocols = >=TLSv1.2
smtpd_tls_protocols = >=TLSv1.2

# Ausgehend (smtp)
smtp_tls_mandatory_protocols = >=TLSv1.2
smtp_tls_protocols = >=TLSv1.2

Die Syntax >=TLSv1.2 gibt es seit Postfix 3.6. Bei älteren Versionen muss man die alten Protokolle einzeln ausschließen: !SSLv2, !SSLv3, !TLSv1, !TLSv1.1. Wenn OpenSSL 1.1.1+ oder neuer installiert ist, wird TLS 1.3 automatisch unterstützt und bevorzugt.

Dovecot

In conf.d/10-ssl.conf:

ssl_min_protocol = TLSv1.2
ssl_cipher_list = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
ssl_prefer_server_ciphers = yes

ssl_min_protocol gibt es seit Dovecot 2.3.15. In älteren Versionen heißt es ssl_protocols = !SSLv3 !TLSv1 !TLSv1.1. Die Cipher-Liste enthält nur AEAD-Cipher mit Forward Secrecy.

Nginx

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;

Die TLS-1.3-Cipher (TLS_AES_*) werden von OpenSSL automatisch bevorzugt und lassen sich nicht über ssl_ciphers deaktivieren. Die Reihenfolge in der Cipher-Liste gilt nur für TLS 1.2.

stunnel

Wer stunnel als TLS-Wrapper nutzt (z.B. für DNS over TLS):

options = NO_SSLv3
options = NO_TLSv1
options = NO_TLSv1.1

Prüfen

Nach der Umstellung prüfen ob die alten Protokolle wirklich deaktiviert sind:

# TLS 1.0 testen (sollte fehlschlagen)
openssl s_client -connect smtp.example.de:25 -starttls smtp -tls1 2>&1 | grep "Protocol"

# TLS 1.2 testen (sollte funktionieren)
openssl s_client -connect smtp.example.de:25 -starttls smtp -tls1_2 2>&1 | grep "Protocol"

Für Webserver hilft Qualys SSL Labs. Wer noch einen Schritt weitergehen will: Mit ECDSA-Zertifikaten wird der Handshake schneller und mit Post-Quantum Key Exchange ist der Schlüsselaustausch auch gegen Quantencomputer abgesichert. Fragen? Einfach melden.

BGP und wie sicher ist das Internet?

Das Internet funktioniert nicht, wie euer normales Netzwerk zuhause. Es basiert in den weitesten Teilen auf BGP, dem Border Gateway Protocol. Natürlich kann es auch dabei zu Problemen kommen, mal macht ein Mensch einen Fehler, mal Hardware oder Software oder eine Regierung möchte etwas „blockieren“… Naja, oder die bösen Hacker halt.

Unter folgendem Link, werden BGP Probleme visualisiert und mit einer Historie versehen:

https://web.archive.org/web/20240420082316/http://bgpstream.com/

Klickt unbedingt auch mal auf „More detail“ bei einem Event und schaut euch das Replay an, das ist nicht nur interessant, sondern auch lehrreich. Viel besser zu verstehen, als wenn man nur die BGP Events im Log fliegen sieht!

So long..

Siehe auch: IPv4-Adressen sind aufgebraucht

Fragen? Einfach melden.

Jabber / XMPP R.I.P.

Ich habe gerade eben meinen Openfire abgeschaltet und werde ihn nicht mehr einschalten. Jabber / XMPP war eine wirklich schöne Möglichkeit der Kommunikation. Der Aufwand SPAM zu filtern und das Teil selbst zu betreiben steht aber inzwischen einfach in keinem Verhältnis mehr. Zudem hat sich Jabber nur minimal weiterentwickelt. Inzwischen ist es von vielen schönen Lösungen überholt worden.

Meine Kommunikation läuft inzwischen mehr über Matrix/Riot oder Slack Chat als über Jabber.

Siehe auch: Eigenen Jabber-Server betreiben

Fragen? Einfach melden.

Loadbalancer IP (SLB) in RackTables anlegen: Schritt-für-Schritt-Anleitung

Racktables ist zur Dokumentation seiner Assets im Rack nicht das schlechteste Tool. Es hat ganz klar seine Grenzen aber oft erfüllt es die Anforderungen.

Wie füge ich in Racktables einen Load Balancer hinzu? Vor dieser Frage stand ich vor einiger Zeit. Mein erster Anlaufpunkt war natürlich das Racktables Wiki. Leider wurde ich daraus nicht wirklich schlauer. Die google Suche: „How to add LoadBalancers to racktables“ hat mir ebenfalls nicht geholfen. Irgendwann bin ich auf den Hinweis zur User Interfaceconfiguration „IPV4LB_LISTSRC“ gestoßen. Ab da öffneten sich meine Augen.

Die Option ist im default mit einem false deaktiviert. Aktiviert man sie mit einem einfachen true, tauchen einfach alle Hardwareserver als Load Balancer unter IP SLB ==> Load balancers auf. Das ist fast gut. Fast… ja fast weil dort eigentlich nur die Load-Balancer auftauchen sollten. Da kam mir die Funktion der Tags in den Sinn. Nach diesen lässt sich bei Racktables nicht nur filtern, sondern man kann darauf aufbauend auch Dinge im Interface umorganisieren. Einfachstes Beispiel ist sicher der Tag „Poweroff“, welcher ausgeschaltete Systeme in der Rackübersicht andersfarbig darstellt, wenn man dem Tag eine andere Farbe zugewiesen hat.

Genau so bekommt man nun ebenfalls die Load balancers ins IP SLB von Racktables. Als erstes legt man also einen Tag an, der jedem Load balancer zugewiesen wird: Configuration ==> Tag tree ==> Edit tree

Nun weißt man dieses Tag dem jeweiligen Load Balancer Object zu.

Screenshot der RackTables-Seite zur IP SLB-Konfiguration - View

Nun geht es weiter unter Configuration ==> User Interface ==> Change

Screenshot der RackTables-Seite zur IP SLB-Konfiguration - User Interface

Dort muss die Option IPV4LB_LISTSRC so geändert werden, dass unser neues Tag in geschweiften Klammern steht. In meinem Beispiel ist es das Tag LoadBalancer und dieses findet sich wie folgt in der Konfiguration:

Screenshot der RackTables-Seite zur IP SLB-Konfiguration - IPV4LB_LISTSRC

Das war es auch schon. Ab jetzt wird jedes Object unter Racktables ==> IP SLB ==> Load balancers auftauchen, welches das Tag LoadBalancer bekommen hat.

Screenshot der RackTables-Seite zur IP SLB-Konfiguration - Load balancers

Wenn man es einmal verstanden hat, ganz einfach oder? Viel Spaß.

Fragen? Einfach melden.

SSD Secure Erase mit FreeBSD: So löschst du deine SSD sicher

Um alle Daten einer SSD möglichst sicher zu löschen gibt es im ATA die Funktion: „ATA Secure Erase“. Möchte man nun seine SSD schnell und einfach von allen Daten befreien (dd mit Nullen ist ja eher eine schlechte und nicht funktionsfähige Möglichkeit bei SSDs), nutzt man einfach diese Funktion.

Bei einem FreeBSD sieht dieses unter optimalen Bedingungen wie folgt aus:

root@sun-wks:/usr/home/kernel # camcontrol security ada4 -s Erase -e Erase
pass7: <OCZ-AGILITY3 2.15> ATA8-ACS SATA 3.x device
pass7: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)

You are about to ERASE ALL DATA from the following device:
pass7,ada4: <OCZ-AGILITY3 2.15> ATA8-ACS SATA 3.x device

Are you SURE you want to ERASE ALL DATA? (yes/no) yes
Issuing SECURITY_SET_PASSWORD password='Erase', user='master', mode='high'
Issuing SECURITY_ERASE_PREPARE
Issuing SECURITY_ERASE_UNIT password='Erase', user='master'

Erase Complete

Optimale Bedingungen?

Das eine oder andere BIOS „schützt“ die Festplatten vor dieser Funktion und sorgt dafür das sie nicht genutzt werden kann. Hier hilft es die Platte erst nach dem Boot anzuschließen. Um die Funktion nutzen zu können muss der SSD ebenfalls erst ein Kennwort gegeben werden. Ohne gesetztes Kennwort kann die Funktion ebenfalls nicht genutzt werden. Ich habe dieses in einem Abwasch erledigt indem ich erst das Kennwort und dann direkt die Funktion mit dem gesetzten Kennwort aufrufe (-s Erase -e Erase) Erase ist also in meinem Beispiel das gesetzte Kennwort.

Da wir gerade dabei sind… Viele SSDs habe eine Art „Selbstheilungsmodus“… Ist diese aktiviert prüft sich die SSD selbst und repariert sich, soweit möglich. Dieser Modus wird aktiviert wenn die SSD am Strom aber nicht am Datenbus angeschlossen ist. Bedeutet. SATA/SAS Kabel abziehen. Strom anschließen/einschalten und warten. In der Regel sollten SSDs nach knapp 4 Stunden mit ihrer „Selbstheilung“ fertig sein. Dieses lässt sich natürlich im Anschluss noch einmal wiederholen. Funktioniert die SSD nach zwei Durchläufen noch nicht wie gewünscht, wird sie wohl wirklich kaputt sein.

Fragen? Dann Fragen.

Siehe auch: ZFS Encryption

Fragen? Einfach melden.

« Ältere Beiträge Neuere Beiträge »

© 2026 -=Kernel-Error=-RSS

Theme von Anders NorénHoch ↑