IDEA I/O home  | about  | cheat sheets  | github

Gedanken zu OpenBSD

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.

Unix Philosophie

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.

Secure by Default

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.

Stabilität / Kontinuität

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.

Dokumentation

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.

OpenBSD als Desktop

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.

Security Updates

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.

Ressourcen