Linuxgarage.ch

OpenBSD-Testfahrt

Bei Linuxgarage befassen wir uns, dem Namen zum trotz, nicht nur mit Linux, sondern auch mit IT-Security. Und es gibt ein Betriebsystem, welches sich eben diese auf die Fahnen geschrieben hat: Ein erklärtes Ziel des OpenBSD-Projekts ist es, das sicherste Betriebsystem zu sein.

OpenBSD ist, wie auch Linux oder andere BSD-Varianten, ein Unix-artiges Betriebssystem und freie Software. Der erste OpenBSD-Release erschien 1995; aktuell erscheinen Release etwa halbjährlich und werden für jeweils ein Jahr unterstützt. Zum OpenBSD-Projekt gehört auch das legendäre OpenSSH. Im Gegensatz zu Linux hat OpenBSD eine unterschiedliche Lizenzphilosopie - es kommen ausschliesslich Lizenzen zum Einsatz, welche für die Software keinerlei Restriktionen vorsehen, also keine GPL.

Es existieren sowohl wohlgesinnte wie auch eher kritische Fanclubs. Die Sicherheits- und Stabilitätsversprechen sind für uns jedenfalls Grund genug, mit OpenBSD einen Versuch zu wagen.

Gemeinsamkeiten, Unterschiede und Kleingedrucktes

Der Vergleich mit Linux drängt sich auf - untenstehend ein kurzer Vergleich einiger Aspekte.

Hardwaresupport und Stabilität

OpenBSD ist bezüglich Hardwaresupport und Systemperformance nicht mit Linux vergleichbar. Die Entwickler betonen ausdrücklich, dass die Priorität bei der Entwicklung auf einer sauberen, übersichtlichen Code-Basis liegt und nicht auf Optimierungen, Feature-Reichtum und Performance; dementsprechend sind im Vergleich mit Linux nur wenige Gerätetreiber implementiert bzw. verfügbar; ein Multimedia-Betriebssystem ist OpenBSD somit definitiv nicht.

Softwareumfang / Verwaltung

OpenBSD liefert ein vollständiges Basis-Betriebsystem aus - d.h. den OpenBSD-Kernel sowie ein Set an Zusatzsoftware, welche aufeinander abgestimmt sind und auch hinsichtlich Sichterheit verbesssert und gepflegt werden. Einerseits handelt es sich dabei um eigene Software des OpenBSD-Projekts (z.B. OpenSSH, httpd usw.), andererseits um Systemnahe Komponenten wie X.org, GCC usw.

Weitere Software ("Third Party Software", z.B. XFCE oder Firefox) steht über ein Paketsystem namens Ports zur Verfügung. Für diese Software gelten die OpenBSD Sicherheits- und Qualitätsaussagen allerdings nicht.

Ein Vorteil ist, dass diverse von Linux gewohnte Software auch auf OpenBSD funktioniert und als Package verfügbar ist; so lässt sich z.B. ein Desktop-System mit KDE oder XFCE aufsetzen.

Dateisystem

Die Liste an unterstützten Dateisystemen ist kurz. Für OpenBSD selber ist das Fast File System (FFS) bzw. Enhanced Fast File System (FFS2) die wohl einzige realistische Option. Gewöhnungsbedürftig: Dieses Dateisystem unterstützt noch kein Journalling, man fühlt sich an ext2-Zeiten inkl. fsck erinnert.

Installation

In diesem Artikel möchten wir das System in einer virtuellen Maschine unter Linux (KVM) installieren. Wir laden dazu das aktuelle OpenBSD-ISO Image herunter (zum Zeitpunkt der Erstellung dieses Texts die Version 7.6) und richten eine virtuelle Maschine mit ausreichend Festplatte (mind. 30G) und dem erwähnten ISO-Image als Bootmedium ein.

Der Installer

Beim Start des ISO-Abbildes begrüsst uns der textbasierte Installer. Dieser führt mehr oder weniger offensichtlich durch den Installationsprozess, und es lassen sich (zumindest für einen IT-versierten Anwender) selbsterklärend Hostname, Netzwerkinterfaces, Keyboard-Layout, Basis-Paketauswahl usw. konfigurieren.

IDE-Probleme...

Zumindest in der virtuellen Maschine gab es Probleme mit dem Lesen ab dem virtuellen ISO-Disk: Zwar funktionierte der Installer, sobald es aber ums Kopieren der Daten von der Disk auf die Festplatte ging, verabschiedete sich das System mit einer IDE-Lesefehlermeldung. Dieses Problem kann man umgehen, indem man den Typ der virtuellen Festplatte im Virtualisierer von "IDE" zu "SATA" umstellt.

Video-Probleme...

Die Installation einer grafischen Oberfläche gelingt zwar problemlos, jedoch war in unserer Test-VM die Auflösung auf nicht mehr zeitgemässe 800x600 Pixel beschränkt. Mit einer Änderung des VM-Videotreibers von QXL zu VGA liessen sich dann immerhin höhere Auflösungen einstellen, etwas exotischere Auflösungen wie 1600x900 gehen damit aber auch nicht. Ob das jetzt auf Bare-Metal (statt in einer VM) besser funktioniert haben wir nicht probiert.

Partitionierung

Während es bei Linux normalerweise nur eine halbe Hand voll (oder nur eine) Systempartitionen gibt, schlägt der OpenBSD-Installer gleich deren vor, für diverse Bereiche des Dateisystems je eine. Dafür mag es zwar viele gute Gründe geben, in unserer Installation mit einer 20G Disk führte das jedoch dazu, dass die Softwarepartition bei der Installation der grafischen Oberfläche vollief. Natürlich lässt sich das Schema mit dem Installer anpassen, und für unsere Testinstallation haben wir schliesslich eine einzige Rootpartition angelegt.

Wie fühlt es sich an?

Beim ersten Login nach der Installation fällt bei einem Blick auf die Prozessliste auf, wie schlank das System ist: Es gibt kein Systemd, kein Snapd, kein Networkmanager, keine 20 Kernel Threads usw.

Positiv: Als Linux-User findet man sich in der OpenBSD-Umgebung sofort zurecht. Ein Grossteil des gewohnten Userlands ist auch hier verfügbar, Befehle wie ls, cat,top usw. sind 1:1 vorhanden.

Hier bin ich: So identifiziert sich das Betriebsystem:

blowfish# uname -a
OpenBSD blowfish.my.domain 7.6 GENERIC.MP#338 amd64

Schlank: Die Prozessliste nach einer Basis-Installation

blowfish# ps -A
  PID TT  STAT        TIME COMMAND
    1 ??  I        0:00.01 /sbin/init
20533 ??  Ip       0:00.01 /sbin/slaacd
68785 ??  Ip       0:00.01 slaacd: engine (slaacd)
28863 ??  IpU      0:00.01 slaacd: frontend (slaacd)
40103 ??  IU       0:00.02 /sbin/dhcpleased
70393 ??  Ip       0:00.02 dhcpleased: engine (dhcpleased)
73387 ??  IpU      0:00.01 dhcpleased: frontend (dhcpleased)
53573 ??  IpU      0:00.01 /sbin/resolvd
72738 ??  IpU      0:00.01 syslogd: [priv] (syslogd)
46652 ??  Spc      0:00.02 /usr/sbin/syslogd
56064 ??  IU       0:00.01 pflogd: [priv] (pflogd)
74187 ??  Spc      0:00.01 pflogd: [running] -s 160 -i pflog0 -f /var/log/pflog (pflogd)
88878 ??  S<pc     0:00.02 ntpd: ntp engine (ntpd)
59694 ??  Ip       0:00.02 ntpd: dns engine (ntpd)
81568 ??  S<pU     0:00.00 /usr/sbin/ntpd
13524 ??  I        0:00.01 sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups (sshd)
66139 ??  Ip       0:00.02 /usr/sbin/smtpd
13779 ??  Ipc      0:00.02 smtpd: crypto (smtpd)
89117 ??  Ipc      0:00.02 smtpd: control (smtpd)
17771 ??  Ip       0:00.02 smtpd: lookup (smtpd)
58812 ??  Ipc      0:00.03 smtpd: dispatcher (smtpd)
83652 ??  Ipc      0:00.02 smtpd: queue (smtpd)
52757 ??  Ipc      0:00.02 smtpd: scheduler (smtpd)
37053 ??  IpU      0:00.00 sndiod: helper (sndiod)
50405 ??  I<pc     0:00.00 /usr/bin/sndiod
39020 ??  Sp       0:00.00 /usr/sbin/cron
21843 ??  I        0:00.04 sshd-session: root [priv] (sshd-session)
19164 ??  S        0:00.07 sshd-session: root@ttyp0 (sshd-session)
62325 p0  Sp       0:00.02 -ksh (ksh)
47199 p0  R+pU/0   0:00.00 ps -A
  105 C0  I+p      0:00.04 -ksh (ksh)
21281 C1  I+pU     0:00.01 /usr/libexec/getty std.9600 ttyC1
90415 C2  I+pU     0:00.01 /usr/libexec/getty std.9600 ttyC2
52354 C3  I+pU     0:00.01 /usr/libexec/getty std.9600 ttyC3
53246 C5  I+pU     0:00.01 /usr/libexec/getty std.9600 ttyC5

Auch schlank: Lediglich 1.6G belegt das System auf der Platte:

blowfish# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd0a     19.4G    1.6G   16.8G     9%    /

Security Features

Natürlich interessiert uns besonders, was das "sicherste Betriebsystem" denn so an Security-Vorteilen mitbringt.

Zum einen wäre da mal der Audit-Prozess: Nach Aussagen des Projekts existiert ein Security Auditing Team, welches kontinuierlich Datei für Datei jeder einzelnen kritischen Softwarekomponente überprüft und nach Bugs absucht. Gefundene Fehler werden zeitnah gefixt, auch wenn sie zuerst nicht als sicherheitskritisch klassifizert sind (sich aber später teils als solche herausstellen). Andererseits gibt es eine ganze Reihe an technischen Innovationen, welche im Verlauf der bald 30-jährigen Projektgeschichte entwickelt wurden. In erster Linie geht es dabei um Speichersicherheit, aber auch um Isolation/Sandboxing (z.B. Chroot) und Rechteeinschränkung.

Interessant aus Security-Sicht ist, dass Isolationstechnologien wie Container oder Jails fehlen; lediglich chroot und Virtualisierung (via den Hypervisor vmm) stehen zur Verfügung.

Aufmerksamkeit erhalten haben in jüngerer Zeit die Einführung der cleveren System Calls Pledge und Unveil, mit welchen Prozesse eingeschränkt werden können: Mit Pledge kann eingeschränkt werden, welche System-Calls ein Prozess verwenden darf, und mit Unveil kann für einen Prozes der Dateisystemzugriff unterbunden bzw. gezielt freigegeben werden. Diese Funktionen sind jedoch in erster Linie für OpenBSD-Software bzw. für diese Platform entwickelte Anwendungen hilfreich.

Besondere Erwähnung verdient auch der Paketfilter pf (das OpenBSD Handbook nennt ihn einen Grundpfeiler von OpenBSD): Dessen Funktionsumfang ist umfangreich und für verschiedene Anwendungsfälle (Firewall, Netzwerksegmentierung, Traffic Shaping, Intrusion Detection usw.) einsetzbar.

Unterlagen und Hilfreiche Links

Fazit

Beeindruckt hat uns vor allem, wie dieses Betriebsystem seit 30 Jahren von einer kleinen aber äusserst kompetenten Community gepflegt und weiterentwickelt wird, und seinen Prinzipien treu geblieben ist.

Die Installation und Anwendung stellt versierte Linux-Nutzer vor keine allzu grossen Hürden, so dass (zumindest für gewisse Anwendungen) eine reale Alternative zu Linux zur Verfügung steht.

Überzeugend ist auch die Schlankheit und Konsistenz des Systems: Man fühlt sich an DOS-Zeiten erinnert, wo man tatsächlich noch den Überblick (und die Kontrolle) hatte, was auf dem System alles läuft. Die Sicherheitsvorteile sehen wir dementsprechend auch in einer schlanken und gut gewarteten Codebasis, welche weniger Angriffsoberfläche bietet; bei einem Default-Install wird deutlich weniger Ballast installiert, als dies bei den meisten Linux-Distros der Fall ist.

Bei Erwägung eines Einsatzes auf Produktionssystemen stellen sich allerdings auch Fragezeichen (Dateisystem, Performance, fehlender Container-Support).

Der OpenBSD-Maintainer Rafael Sadowski fasst die Vor- und Nachteile des Betriebssystems in einer Präsentation wie folgt zusammen:

Pros Cons
Packet Filter : super awesome firewall Has only FFS file system, which is slow and has no “feature”
Sane defaults : you install, it works, no tweak No bluetooth support
Stability : upgrades go smooth and are easy No USB3 full speed performance
OpenBSD (security) innovations No VM guest additions
Server and desktop ENV No nvidia support (nvidia’s fault)
New and stable packages No container / docker / jails
Lot of in-house development Poor FUSE support (it crashes quite often)

Unsere Empfehlung: Asprobieren!

In eigener Sache: Wir planen, einen ähnlichen Artikel für das Betriebssystem FreeBSD zu verfassen.

MF, Januar 2025