In letzter Zeit habe ich mich vermehrt mit OpenBSD beschäftigt. Ich habe den Server für ideaio.ch migriert und OpenBSD auf einem Lenovo X260 installiert. Es ist nicht mein erster Kontakt mit OpenBSD. Dieses habe ich im Laufe der Jahre mehrmals genutzt. Damals wie heute wollte ich ein Unix zum Basteln, bei welchem ich nachvollziehen kann, was unter der Haube läuft und das sicher und schlank ist. In diesem Artikel liste ich einige Beobachtungen und Gedanken dazu auf.
OpenBSD verfolgt konsequent die Unix Philosophie. Es gibt ein Tool
für einen Job. So werden Netzwerkinterfaces, egal ob Wireless oder Wired
über ifconfig
konfiguriert. Um die Konfiguration dafür zu
speichern gibt es die hostname.if
Konfigurationsdatei, die in einem abgekürzten Format oder direkt als
ifconfig
Parameter formuliert wird.
Dienste lassen sich einheitlich über rcctl
konfigurieren. Das funktioniert für manuelle Starts und Stops und für
permanente Konfiguration immer über dieses Kommando. Was
rcctl
macht, kann in der rcctl Manpage nachgelesen
werden. Bei enable
oder disable
wird z.B. das
Service Flag in der Datei /etc/rc.conf.local
geschrieben. Die aktivierten Dienste lassen sich mit
rcctl ls on
anzeigen.
OpenBSD will das sicherste Betriebssystem sein Try to be the #1 most secure
operating system. Das zeigt sich an unterschiedlichen Orten.
Beispielsweise habe ich meinen Webserver für ideaio.ch auf OpenBSD migriert. Der
OpenBSD Webserver httpd(8)
ist standardmässig so konfiguriert, dass er ein SSL Labs A Rating für
die verwendeten TLS Optionen erhält. Einfach so, ohne dass ein
Feintunning nötig wäre. Für den Bezug von Let’s Encrypt Zertifikaten kann der
OpenBSD Automatic Certificate Management Environment (ACME) Client acme-client(1)
verwendet werden. Die nötige Konfigurationsdatei wird als Beispieldatei
unter /etc/examples/acme-client.conf
bereitgestellt.
Der Webserver läuft immer in einem chroot
Environment.
Das ist nicht nur die Default Konfiguration, sondern eine Einschränkung
des Dienstes an sich. Er lässt sich gar nicht anders starten.
Im Vergleich zu Apache und Nginx hat der OpenBSD Webserver einen kleineren Funktionsumfang. So können z.B. keine Header hinzugefügt oder verändert werden. Dieses Feature gehört bei anderen Webservern zum Standardumfang.
Hier kommt wieder die “Do one thing and do it right” Philosophie zum Einsatz. Die Manipulation der HTTP Header kann einfach mit dem OpenBSD eigenen Loadbalancer, dem relayd vorgenommen werden, der auch zum OpenBSD Grundsystem gehört.
Der Installer hat sich seit meiner letzten OpenBSD Installation vor
ca. 10 Jahren nicht verändert. Ich habe immer noch das selbe Bild des
einfachen Text Interfaces im Kopf und kannte noch die Abkürzung
sg
für das Schweizer Tastaturlayout. Das ist ein krasser
Gegensatz zu vielen anderen Softwareprodukten, Webseiten, oder Apps die
ihr GUI fast jährlich ändern. Das Interface ist zwar nicht modern,
erfüllt aber seinen Zweck sehr effizient. Mir gefällt der minimale
Aufbau und die Konzentration auf das Wesentliche.
OpenBSD ist bekannt für seine gute Dokumentation. Die Manpages sind gut durchdacht und beschreiben meistens einige häufige Anwendungsfälle. Für neue Benutzer gibt ist die afterboot Manpage empfehlenswert. Sie beschreibt die wichtigsten Punkte für die Systemadministration. Wenn die Manpages nicht ausreichen lohnt sich ein Blick in die FAQ. Zudem gibt es weitere Ressourcen, wie z.B. das OpenBSD Handbook.
Im Vergleich mit Linux Distributionen fühlt sich OpenBSD auf der gleichen Hardware langsamer an. Der Boot Vorgang dauert länger. Applikationen brauchen länger zum starten. Die Netzwerkverbindung ist langsamer. Ich vermute, dass dies ein Resultat der schlanken Code Base und der Sicherheitsmechanismen ist. Die schlankere Code Base bringt Vorteile für die Sicherheit, da sie besser auf Sicherheitslücken untersucht werden kann und generell weniger Funktionen und damit eine kleinere Angriffsfläche bietet. Sie bringt aber Nachteile für die Performance, da weniger Optimierungen vorgenommen werden. Mir gefällt dieser Fokus auf die Sicherheit und Stabilität. Auf etwas Performance kann ich verzichten.
Die Treiberunterstützung ist zumindest auf einem Standard Lenovo
Business Notebook absolut unproblematisch. Es funktioniert alles,
inklusive der Lenovo Hotkeys für Sound, Bildschirmhelligkeit, Mikrofon
und Grafik. Mit apm(8) lässt
sich die CPU Taktrate automatisch oder manuell regulieren. Über die
Kommandos ZZZ
oder zzz
kann der Notebook in
den Hibernate oder Sleep Modus geschickt werden. Bluetooth wird gar
nicht unterstützt. Das OpenBSD Team hat die Unterstützung von Bluetooth
eingestellt. Dies allerdings nicht primär aus Sicherheitsgründen,
sondern weil sich niemand mehr um den Bluetooth Code gekümmert hat.
OpenBSD folgt grob einem halbjährlichen Release Zyklus. Dieser wird
allerdings nicht strikt eingehalten. Es zählt die Qualität und nicht die
Einhaltung des Termins. Falls zwischen den Releases Sicherheitslücken im
Basissystem gefunden werden, stellt das Projektteam Patches über das
syspatch
Utility bereit. Es lohnt sich die security-announce
Mailingliste zu abonnieren die Meldungen zu erhalten.
Für die bereitgestellten Binaries, die mit pkg_add
installiert und mit pkg_add -u
aktualisiert werden können,
werden nicht immer Sicherheitsupdates geliefert. Für Desktop Systeme ist
das ein Nachteil, da häufig Sicherheitslücken in Desktop Anwendungen wie
z.B. Webbrowsern gefunden werden. Es gibt aber den Umweg über die Ports.
Damit können die Pakete bei Bedarf selber kompiliert und installiert
werden.