AESNI und FreeBSD – “Crypto: accelerated software” nutzt Hardware

Nur kurz am Rande: meine Verwirrung war groß, als ich bei geli las “Crypto: accelerated software”. Ich dachte, der Hardwareteil der Algorithmik für AESNI würde nicht genutzt. Also suchte ich zuerst im BIOS meines HP MicroServer Gen8 mit XEONProzessor nach AES, wurde aber nicht fündig. Dann durchsuchte ich das Internet.

Durch bsdforen.de fanden wir aber heraus: es gab lediglich eine Namensänderung (:. Es steht jetzt “accelerated software” drin und bedeutet, dass die Hardware mitgenutzt wird, ansonsten sollte nur “software” darin stehen.

FreeBSD-Grundkurs 031: Virtualisierung mit bhyve und vm-bhyve

Wer mit FreeBSD Virtualisierung durchführen möchte, hat mehrere Möglichkeiten: Jails, VirtualBox und QEmu. Mit bhyve bietet FreeBSD aber ein eigenes Virtualisierungsprogramm an, welches sehr einfach mit vm-byhve zu benutzen ist. Wie das geht, zeigt dieses Video.

Virtualisierung mit bhyve und vm-bhyve
Virtualisierung mit bhyve und vm-bhyve

In diesem Beispiel zeige ich, wie man vm-byhve und grub2-bhyve installiert, konfiguriert und ein Debian darin installiert.

Virtualisiertes Debian unter bhyve
Virtualisiertes Debian unter bhyve

Hier einige Kommandos:

# SSH-Verbindung, falls nötig, zum Host aufbauen und darauf achten, dass Escape-Sequenzen von SSH ignoriert werden, da diese sonst nicht an die Console von bhyve geschickt werden können (cu)
ssh -e none $servername

# Installation der benötigten Pakete
pkg install vm-bhyve grub2-bhyve

# ZFS-Dataset erstellen
zfs create storage/bhyve

# /etc/rc.conf bearbeiten
sysrc vm_enable="YES"
sysrc vm_dir="zfs:server/bhyve"

# vm-byhve initialisieren
vm init

# Template kopieren und bearbeiten
cp /usr/local/share/examples/vm-bhyve/debian.conf /server/bhyve/.templates/mydebian.conf

# Switch erstellen und Netzwerk-Interface hinzufügen
vm switch create public
vm switch add public bge0

# ISO-Datei für die Installation von Debian herunterladen
vm iso https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.5.0-amd64-netinst.iso

# Virtuelle Maschine erstellen, Festplattengröße auf 16GB setzen
vm create -t mydebian -s 16g mydebian

# Virtuelle Maschine installieren
vm install -f mydebian debian-11.5.0-amd64-netinst.iso

# Virtuelle Maschinen auflisten (inkl. Status)
vm list

# Vorhandene ISO-Dateien ansehen
vm iso

# Automatischer Start der virtuellen Maschinen
vm_list="vm1 vm2"
vm_delay="5"

Hier geht es zum Video.

FreeBSD-Grundkurs 029: RAID1 mit GMIRROR

Datenredundanz ist mitunter ein sehr wichtiges Theman. Wie man ein (Software-) RAID1 mit FreeBSD und GMIRROR aufbaut, zeigt dieses Video.

RAID1 mit GMIRROR
RAID1 mit GMIRROR

Die Erstellung eines einfach RAID1 funktioniert so:

# Erste Festplatte labeln
gmirror label -b round-robin $name $device1

# gmirror laden (für den Boot 'geom_mirror_load="YES"' in /boot/loader.conf eintragen
gmirror load

# Zweite Festplatte einbinden
gmirror insert $name $device2

# Status ansehen
gmirror status

Alle wichtigen Dinge und auch Beispiele stehen in der Manpage. Bitte immer lesen!

Hier geht es zum Video.

FreeBSD-Grundkurs 028: Festplattenverschlüsselung mit GELI

Datenverschlüsselung ist sehr wichtig. Wie einfach das mit FreeBSD und GELI funktioniert, zeigt dieses Video.

Festplattenverschlüsselung mit GELI
Festplattenverschlüsselung mit GELI

Das Vorgehen ist relativ einfach. Wir verschlüsseln eine Festplatte mit AES-XTS 256 mit Passphrase (Kennwort) und einer Sektorgröße von 4096:

geli init -s 4096 -e aes -l 256 $device

Das Einhängen ist dann ebenfalls leicht:

geli attach $device

Wenn man die Festplatte (oder Partition oder das Device) beim Starten des Computers entschlüsselt wird, dann reicht ein Eintrag in der /etc/rc.conf:

geli_devices="$device"

Mitunter ist es sinnvoll, das Auto-Detaching abzuschalten, weswegen noch ein Eintrag in die rc.conf muss:

geli_autodetach="NO"

Bitte lest dazu aber alle Dokus durch, da es da um einen sicherheitsrelevanten Teil geht!

Nicht vergessen, dass in der /boot/loader.conf folgender Eintrag bei der Benutzung von GELI stehen muss:

geom_eli_load="YES"

Es gibt noch weitere Möglichkeiten. Es ist zum Beispiel möglich, bestimmte Parameter (z.B. geli_autodetauch) auf einzelne Devices zu konfigurieren, so dass diese dann nicht global gelten. Hier gibt es noch weiteführende Informationen, die unbedingt gelesen werden sollten.

Als Nachtrag: Wenn der Computer das kann, Hardware-Encryption einschalten (/boot/loader.conf):

aesni_load="YES"

Hier geht es zum Video.

FreeBSD-Grundkurs 027: Die Befehle truncate und mdconfig

Für die nächsten Videos brauchen wir zwei Befehle, auf die ich in diesem Video einmal ganz kurz eingehen möchte: truncate und mdconfig.

Die Befehle: truncate und mdconfig
Die Befehle: truncate und mdconfig

Mit truncate ist es möglich, Dateien zu vergrößern und zu verkleinern. Es kann aber auch Dateien mit bestimmter Größe erstellen. Wir benutzen truncate so:

truncate -s 1g Dateiname

Dieser Befehl erstellt eine Datei mit der Größe von einem Gigabyte.

Mit mdconfig können wir Dateien als Devices einbinden:

# Datei einbinden
mdconfig -a -f Dateiname

# Eingebundene Datei wieder entfernen (X steht für die Device-Nummer)
mdconfig -d -uX

# Devices anzeigen lassen
mdconfig -l -v

Hier geht es zum Video.

wxWidgets-Tutorial 005 – wxWidgets auf FreeBSD installieren und ein erstes Beispielprojekt

Dieses Video zeigt, wie einfach die Installation von wxWidgets unter FreeBSD geht.

wxWidgets auf FreeBSD installieren und ein erstes Beispielprojekt
wxWidgets auf FreeBSD installieren und ein erstes Beispielprojekt

wxWidgets ist einfach installierbar:

pkg install wx31-gtk3

Hier das Beispielprogramm:

#include <wx/wx.h>

class MyApp : public wxApp {

	public:
		bool OnInit();

};

class MyFrame : public wxFrame {

	public:
		MyFrame();

};

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit() {
	MyFrame *myFrame = new MyFrame;
	myFrame->Show();
	SetTopWindow(myFrame);

	return true;
}

MyFrame::MyFrame() : wxFrame(nullptr, wxID_ANY, "Meine wx-App") {
	wxStaticText *staticText = new wxStaticText(this, wxID_ANY, "Hello World");
}

Und so wird es kompiliert:

c++ *.cpp -o mywxapp `wxgtk3u-3.1-config --libs --cppflags` -std=c++11

Folgendermaßen sieht es dann aus:

Beispielprojekt unter FreeBSD
Beispielprojekt unter FreeBSD

Hier geht es zum Video.

Kurztipp: bhyve auf FreeBSD mit vm-bhyve

Alle nutzen Jira. Ich hatte das seinerzeit mal bei der CGM nutzen müssen, wollte mir aber auch mal wieder die aktuelle Version ansehen, um wenigstens sagen zu können: ich kenne es (Pssst: Redmine gefällt mir von der Übersicht und Usability aber weitaus besser – Geschmackssache).

Da ich hier nur FreeBSD-Server rumstehen habe, dachte ich mir: Da gibt’s ja bhyve. Angesehen und aus Zeitgründen wieder verworfen, da ich mich nicht ewig mit der Bedienung auseinandersetzen wollte und konnte. Irgendwann stieß ich dann auf vm-bhyve, einem kleinen Konsolenprogramm, dass eine ähnliche Bedienung wie die anderen administrativen Programme unter FreeBSD bietet (geli, gstat, gpart…).

Auf meinem Server (Intel(R) Xeon(R) CPU E3-1220L V2 @ 2.30GHz) habe ich es dann auch direkt installiert und wollte Ubuntu virtualisieren, genauer: Ubuntu Server. Die Installation lief auch mit dem bei bhyve-vm mitglieferten Template durch, bootete aber nicht, sondern blieb im Grub hängen. Irgendwo in den Tiefen des Internet fand ich dann, dass man LVM bei der Installation weglassen sollte. Gemacht, funktionierte aber genauso schlecht.

Was dann aber funktionierte, und das absolut reibungslos, war die Installation von Debian. Das installierte sich problemlos und bootete durch. Jira und die geforderten Abhängigkeiten waren auch in ein paar Minuten installiert und liefen direkt, so dass ich mir Jira noch einmal genauer ansehen konnte.

Wer also mit FreeBSD (mit allen Features und Einschränkungen) als Hypervisor liebäugelt, dem sei angeraten, sich einmal vm-bhyve anszusehen.

FreeBSD-Grundkurs 026: Die grafische Benutzeroberfläche (GUI) – Installation von Xorg und XFCE

Auch, wenn es aus dem Konzept ist: aufgrund der Nachfragen zeige ich, wie man schnell und einfach Xorg und XFCE installieren und benutzen kann (mit deutschen Einstellungen).

Die grafische Benutzeroberfläche - Installation von Xorg und XFCE
Die grafische Benutzeroberfläche – Installation von Xorg und XFCE

Letztlich sind die Schritte einfach. Wir nehmen ein aktuelle und vollständig durchgepatchtes FreeBSD (in meinem Fall FreeBSD 13.1-RELEASE-p2) und installieren folgende Pakete:

pkg install xorg xfce slim

Dann konfigurieren wir noch, dass dbus und slim beim Starten des Betriebssystem automatisch starten sollen:

service slim enable
service dbus enable

Wir erstellen die Datei “/usr/local/etc/X11/xorg.conf.d/keyboard-de.conf” mit folgendem Inhalt:

Section "InputClass" 
    Identifier    "KeyboardDefaults" 
    MatchIsKeyboard    "on" 
    Option        "XkbLayout" "de" 
EndSection

Dann legen wir für den Benutzer oder die Benutzer, die XFCE verwenden wollen, im Home-Verzeichnis eine Datei mit dem Namen “.xinitrc” an, die folgenden Inhalt hat:

export LANG=de_DE.ISO8859-15
. /usr/local/etc/xdg/xfce4/xinitrc

Das war es schon. Einmal durchstarten (oder alle Dienste per Hand starten) und man kann sich ins System einloggen.

Wer das, wie ich, in VirtualBox macht, dem empfehle ich noch die VirtualBox-Guest-Additions:

pkg install virtualbox-ose-additions
service vboxguest enable
service vboxservice enable

So sieht dann das Ergebnis aus:

XFCE mit Xorg auf FreeBSD in VirtualBox
XFCE mit Xorg auf FreeBSD in VirtualBox

Hier geht es zum Video.