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
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
- OpenBSD Handbook: Sehr gutes Handbuch, welches die Installation und wesentliche Features gut abdeckt
- isopenbsdsecu.re: Kritische Würdigung der OpenBSD Sicherheitsfunktionen
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