allegutendinge

Energieverbrauch von Software und Betriebssystemen

Motivation

Wie das Umweltbundesamt(UBA) auf dem 36c3 mitteilte, wurde mit Beschluss vom Dezember 2019 die Umweltauszeichnung “Blauer Engel” auch für Software eingeführt.

Dabei hat das UBA Kriterien und Methodik entwickelt, um die Umwelt- und Klimafreundlichkeit von Software zu beurteilen. Diese wird im Abschlussbericht des UBA beschrieben. Dabei spielt der Energieverbrauch von Software eine wesentliche Rolle (wobei streng genommen nicht die Software Energie verbraucht, sie weist aber die Hardware an Tätigkeiten auszuführen und damit Energie zu verbrauchen.)

Das UBA hat zunächst nur einzelne Anwendungsprogramme getestet, das darunter liegende Betriebssystem aber nicht beachtet. Dabei kann das Betriebssystem und die vorhandenen Standardbibliotheken einen wesentlichen Einfluss auf den Energieverbrauch haben. In der vorliegenden Arbeit wurden daher Messungen des gesamten Betriebssystems inklusive einer Anwendung vorgenommen.

Methodik

Hardware

Um vergleichbare Ergebnisse zu bekommen muss die Hardware so identisch wie möglich sein. Die Virtualisierung bietet die Möglichkeit, identische virtuelle Maschinen (VM) – also simulierte Hardware – zu erstellen und diese bei Bedarf zu klonen.

Das physikalische Hostsystem war für alle Systeme dasselbe: ein Intel Core i3-2120 mit 10 GB RAM. Das Betriebssystem war ein GNU/Linux System auf Basis von Arch Linux. Es wurde sichergestellt, dass keine dynamischen Prozesse liefen, die plötzlich Ressourcen anfordern konnten und somit das Ergebnis verfälschen können.

Als Virtualisierungssoftware wurde qemu-kvm mit libvirtd als Middleware gewählt. Die Erstellung und Ausführung der VM wurde mit dem Programm virt-manager vorgenommen.

Für die VM wurde identische, virtuelle Hardware gewählt: 2 Prozessor-Kerne mit 4 GB RAM und eine SATA-Festplatte. Die Auflösung des grafischen Oberfläche wurde zwecks Vergleichbarkeit für alle Systeme auf 1024x768 eingestellt.

Messsoftware

Unter Linux steht folgende Software zur Erfassung von Energieverbrauch zur Verfügung: powertop, cpu-energy-meter, powergadget und s-tui. Letztere 3 sind dabei fähig, den Running Average Power Limit (RAPL) von Intel CPUs auszulesen. RAPL steht leider nur für Intel CPUs zur Verfügung.

Am geeignetsten hat sich dabei das Tool powergadget erwiesen, welches von Intel selbst stammt.

Die Messungen wurden dabei nicht in der VM selbst, sondern auf dem physikalischen Host ausgeführt.

Getestete Software / Betriebssysteme

Für alle Systeme gilt: Es wurde immer die Standardinstallation verwendet und es wurden keine Optimierungen vorgenommen, die über Abfragen bei der Installation hinaus gingen.

Windows 10

Es wurde eine Standardinstallation von Windows 10 1903 Home durchgeführt. Alle Fragen zur Datenerfassung wurden negativ beantwortet, darüber hinaus wurden jedoch keine Optimierungen vorgenommen, um Telemetrie oder andere Hintergrund-Tätigkeit zu verhindern. Es wurde ein so genanntes Offline-Konto verwendet, kein Microsoft-Konto

Linux/Unix

Es wurden folgende unixoide Betriebssysteme getestet:

  • Debian 10 (mit MATE Desktop)
  • GhostBSD (mit MATE Desktop)
  • OpenBSD (mit MATE Desktop)
  • Antix (runit Variante, mit IceWM)

Der MATE Desktop wurde gewählt, weil er relativ ressourceneffizient ist, eine weite Verbreitung hat und auf allen unixoden Systemen verfügbar ist. Mit Antix wurde eine Linux-Distribution für ressourcenschwache Computer mit dem schlanken Window-Manger IceWM gewählt um zu sehen, ob die Verwendung eines solchen schlanken Systems auch Vorteile im Energieverbrauch hat.

Browser

Hier wurde der Firefox Webbrowser ausgewählt, weil er für alle Systeme verfügbar ist.

Mess-Szenarien

Es wurden für jedes System mindestens 3 Messungen für folgende Szenarien durchgeführt:

  • System in Inaktivität: Das System ist gestartet,jedoch werden keinerlei Anwendungsprogramme ausgeführt und keine Eingaben vorgenommen. Die Messdauer betrug jeweils 10 Minuten

  • Webbrowser spielt ein Youtube-Video ab: Im Webbrowser wurde ein HD-Video von Youtube mit 720p abgespielt (der freie Animationsfilm “Big Buck Bunny”). Währenddessen wurde ein 10-minütige Messung vorgenommen. Nach jeder Messung wurde der Browser-Cache geleert.

Insgesamt wurden 38 Messungen über je 10 Minuten durchgeführt.

Ergebnisse

Hostsystem

Zunächst wurden Messungen am physikalischen Hostsystem ohne laufende VM vorgenommen, um festzustellen, wie viel Energie das System selbst verbraucht. Der gemittelte Wert betrug hier 576 mWh für 10 Minuten.

Windows 10 Home 1903

Anmerkung: Bedingt durch zahlreiche Hintergrundaktivitäten (AV-Scanner, Telemetrie) lieferte Windows die ungleichmäßigsten Ergebnisse von allen Betriebssystemen. Daher wurden für dieses System die meisten Messungen durchgeführt, um einen möglichst nahe an der Realität liegenden mittleren Wert zu erhalten

Inaktivität (ohne aktive Anwendungsprogramme und Eingaben)

Die Messergebnisse lieferten hier einen mittleren Wert von 1053 mWh für 10 Minuten. Dies ist der mit Abstand höchste Wert für alle OS für den inaktiven Zustand. Die Bandbreite betrug hier 1029 – 1078 mWh.

10 Minuten Youtube HD Video in Firefox

Die Messergebnisse lieferten hier einen mittleren Wert von 3223 mWh. Die Bandbreite war hier stark schwankend, zwischen 2870 und 3838 mWh.

Debian 10 mit MATE Desktop

Inaktivität (ohne aktive Anwendungsprogramme und Eingaben)

Die Messergebnisse lieferten hier einen mittleren Wert von 601 mWh für 10 Minuten. Dies ist der niedrigste Wert für alle OS für den inaktiven Zustand. Die Bandbreite betrug hier 599 – 601 mWh.

10 Minuten Youtube HD Video in Firefox

Die Messergebnisse lieferten hier einen mittleren Wert von 2759 mWh. Die Bandbreite lag zwischen 2741 und 2796 mWh.

Antix-runit mit IceWM

Inaktivität (ohne aktive Anwendungsprogramme und Eingaben)

Die Messergebnisse lieferten hier einen mittleren Wert von 612 mWh für 10 Minuten. Die Bandbreite lag zwischen 598 und 621 mWh.

10 Minuten Youtube HD Video in Firefox

Die Messergebnisse lieferten hier einen mittleren Wert von 2625 mWh. Dies ist der niedrigste Wert für 10 Minuten Youtube. Die Bandbreite lag zwischen 2586 und 2654 mWh.

OpenBSD 6.6 mit MATE Desktop

Inaktivität (ohne aktive Anwendungsprogramme und Eingaben)

Die Messergebnisse lieferten hier einen mittleren Wert von 632 mWh für 10 Minuten. Die Bandbreite lag zwischen 630 und 634 mWh.

10 Minuten Youtube HD Video in Firefox

Die Messergebnisse lieferten hier einen mittleren Wert von 3880 mWh. Dies ist der höchste Wert für 10 Minuten Youtube. Die Bandbreite lag zwischen 3793 und 3971 mWh.

GhostBSD 19.10 mit MATE Desktop

Inaktivität (ohne aktive Anwendungsprogramme und Eingaben)

Die Messergebnisse lieferten hier einen mittleren Wert von 645 mWh für 10 Minuten. Die Bandbreite lag zwischen 635 und 660 mWh.

10 Minuten Youtube HD Video in Firefox

Die Messergebnisse lieferten hier einen mittleren Wert von 2965 mWh. Die Bandbreite lag zwischen 2957 und 2978 mWh.

Zusammenfassung und Fazit

Ergebnis

Szenario Win 10 Debian 10 Antix OpenBSD GhostBSD
Inaktiv 1053 601 612 632 645 mWh/10m
Youtube 3223 2759 2654 3880 2965 mWh/10m

Schlussfolgerung

Da ich die Messreihe als Privatperson durchführte und mir kein Labor zur Verfügung steht, ist die Datenbasis nicht sehr umfangreich. Dennoch erlaubt das Ergebnis eine erste Einschätzung.

  • Windows 10 braucht im Ruhezustand mit Abstand am meisten Energie. Dies war zu erwarten, da Windows zahlreiche Hintergrundaktivitäten ausführt. Microsoft als beherrschender Marktführer arbeitet eng mit Hardware-Herstellern zusammen (und tritt teilweise selbst als solcher auf), daher ist davon auszugehen, dass Windows intern alle energiesparenden Möglichkeiten ausnutzt. Die schiere Menge an Hintergrundaktivitäten konterkarieren jedoch diese technischen Möglichkeiten. Aus ökologischer Sicht ist Windows daher nicht zu empfehlen.

  • Linux mit dem MATE Desktop hat sich am Energie- und daher auch als am Umwelt- und Klimaschonendsten heraus gestellt. Die Ergebnisse deuten darauf hin, dass der Energiespar-Effekt unter Aktivität noch gesteigert werden, wenn ein schlankes System mit wenig Hintergrund-Prozessen und ein schlanker Window Manager genutzt wird. Dies wäre aber durch weitere Messungen mit anderen schlanken Linux-Systemen noch zu verifizieren. Anders herum ist zu erwarten, dass der Energiebedarf steigt, wenn eine ausgewachsene 3D Desktop Umgebung genutzt wird, dies wurde jedoch nicht getestet.

  • GhostBSD (und damit FreeBSD) folgt dicht hinter Linux, was die Energie-Sparsamkeit angeht, kommt aber nicht ganz ran. Möglicherweise könnte es mit Optimierungen gelingen, mit Linux gleich zu ziehen.

  • OpenBSD ist im inaktiven Zustand etwa gleichauf mit Linux. Bei CPU-lastiger Aktivität steigt der Energieverbrauch aber rasant an und übetrifft sogar den von Windows 10. Dies ist vermutlich darauf zurück zu führen, dass OpenBSD Sicherheit als primäres und nahezu einziges Ziel hat und Performance eine niedrigere Priorität einräumt. Dies gilt dann auch für die Energie-Performance. Aus Sicht der IT-Sicherheit ist dies verständlich. Aus ökologischer Sicht aber ist OpenBSD als Desktop-System nicht zu empfehlen.

Aus ökologischer und klimapolitischer Sicht ist GNU/Linux das geeignetste Betriebssystem. Auch FreeBSD ist noch vertretbar. Aber auch bei diesen Systemen ist darauf zu achten, nicht zu viele (Hintergrund-)Prozesse auszuführen.

OpenBSD 6.5 (stable) Setup auf einem PC oder Notebook

Stand: 15.08.2019 Seit kurzem verwende ich OpenBSD auch auf mehreren PCs und Notebooks. Obwohl andere BSD-Varianten beliebter sind, finde ich dass OpenBSD das schnellste und einfachste out-of-the-box Erlebnis inklusive grafischer Oberfläche bietet.

Die Installation des Betriebssystems ist recht einfach und schnell gemacht und soll hier auch nicht weiter besprochen werden. Einfach alles nach den Standardvorgaben installieren und fertig.

Nach der Installation sollten jedoch einige Anpassungen vorgenommen werden. Ich dokumentiere hier komprimiert meine Einstellungen, die ich als sinnvoll erachte. Diese sind ausgerichtet auf Benutzung des Systems als Desktop, also als System, welches nur temporär läuft und ausschließlich lokale Benutzer hat. Viele der Einstellungen stammen von https://www.c0ffee.net/blog/openbsd-on-a-laptop/

Der Artikel wird ständig aktualisiert

doas einrichten

doas ist ein leichtgewichtiger sudo-Ersatz, der unter OpenBSD zum Einsatz kommt

echo 'permit persist keepenv USERNAME' > /etc/doas.conf

Notebooks: Powermanagement einrichten

rcctl enable apmd
rcctl set apmd flags -A
rcctl start apmd

Einrichtung Unicode und Befehls-Historie

~/.profile

# Befehlshistorie sichern
HISTFILE=~/.ksh_history

#Bash-ähnlicher Prompt:
export PS1='\u@\h:\w$ '

# Unicode
export LC_CTYPE="en_US.UTF-8"

Xenocara (Xorg) Einstellungen

Nerviges xconsole Fenter abstellen

sed -i 's/xconsole/#xconsole/' /etc/X11/xenodm/Xsetup_0
echo 'xset b off' >> /etc/X11/xenodm/Xsetup_0

Window-Manager Einstellungen ~/.xsession

# Unicode
export LC_CTYPE="en_US.UTF-8"

# specify location of kshrc
export ENV=$HOME/.kshrc

# load Xresources file
xrdb -merge $HOME/.Xresources

# set your background color
xsetroot -solid dimgray

# xidle will lock your display after a period of inactivity
xidle &

# deutsche Tastatur
# Ist unnötig, wenn das Tastaturlayout in /etc/kbdtype festgelegt ist
setxkbmap de

# starte Windowmanager, cwm mit dem Windowmanager deiner Wahl ersetzen
exec cwm

Dienste deaktivieren

Es gibt ein paar Dienste, die nicht unbedingt auf einer Workstation oder einem Notebook laufen müssen:

  • smtpd(8) ist ein Dienst zum empfangen von Mails (so genannter MTA). Die wenigsten dürften ihren eigenen Mailserver auf dem Desktop betrieben. Allerdings werden auch diverse Systemmeldungen, u.a. von Cron und syspatch, über smtpd an das lokale Postfach verschickt. Kann man auf diese Mails verzichten (z. B. weil man sie eh nicht liest) und denkt daran, das System regelmäßig zu patchen kann das Mailsystem m.E. abgestellt werden. Alternativ kann auch ein leichtgewichtiger smtp-Client wie msmtp installiert werden (nicht getestet).

  • slaacd(8) ist ein Dienst, der aus Router-Advertisements IPv6-Adressen und Routen erstellt. Benötigt man kein IPv6 kann der Dienst abgestellt werden. Manchmal wird IPv6 benötigt, ohne dass man es weiß (ggf. für LL-Multicast). Allerdings ist IPv6 in OpenBSD sowieso standardmäßig abgestellt.

  • sshd(8) ist ein Dienst welches einloggen auf dem Rechner aus der Ferne über einen verschlüsselten Kanal ermöglicht. Arbeitet man immer direkt (lokal) am Rechner, und möchte man nicht aus der Ferne auf ihn zugreifen, benötigt man den Dienst nicht.

# SMTP (Mail) Server
rcctl stop smtpd
rcctl disable smtpd

# IPv6 brauch ich derzeit nicht
rcctl stop slaacd
rcctl disable slaacd

# SSH-Dienst auf einem PC/Notebook muss nicht sein
rcctl stop sshd
rcctl disable sshd

Performance Einstellungen

Jeder Benutzer wird unter OpenBSD einer bestimmten Login-Klasse zugeteilt. Diese Klasse bestimmt darüber, wie viel Ressourcen benutzt werden können. Am wenigsten Rechte hat die default Klasse. Mehr Rechte hatt die staff-Klasse. Als Hauptbenutzer sollte man sich in die staff Klasse einordnen

usermod -G staff USERNAME
usermod -L staff USERNAME

Anschließend sollten die Rechte des staff Klasse noch erweitert werden /etc/login.conf

staff:\
        :datasize-cur=1536M:\
        :datasize-max=infinity:\
        :maxproc-max=1024:\
        :maxproc-cur=512:\
        :openfiles-cur=4096:\
        :openfiles-max=8192:\
        :ignorenologin:\
        :requirehome@:\
        :tc=default:

sysctl erlaubt es bestimmte Kerneleinstellungen zu setzen. Wir schalten hier Hyperthreading ein, was standardmäßig aus Sicherheitsgründen bei OpenBSD abgestellt ist. Nach meiner Erfahrung bringt dies einen Performance-Gewinn, sofern die CPU Hyperthreading wirklich unterstützt. Überprüfen kann man dies wie folgt:

  • top aufrufen, nachsehen wie viel CPUs angezeigt werden
  • mit sysctl hw.smt=1 Hyperthreading anschalten
  • Erneut top aufrufen. Werden nun doppelt so viele CPUs angezeigt handelt es sich um “echtes” Hyperthreading und es wird einen Performancegweinn geben (z.B. lädt Firefox nach meinen Messungen ca. 20% schneller)

Man sollte sich aber klar sein, dass man damit einen Sicherheitsmechanismus abstellt.

/etc/sysctl.conf

# Hyperthreading einschalten, siehe oben
hw.smt=1


# Hinweis: Folgende Settings werden von Cullum Smith im o. g. Blog 
# empfohlen (ausgerichtet auf eine Maschine mit 16 GB RAM)
# Einige OpenBSD-Nutzer meinen jedoch, sie bringen nichts,
# daher hier auskommentiert. YMMV

# shared memory limits (chrome needs a ton)
#kern.shminfo.shmall=3145728
#kern.shminfo.shmmax=2147483647
#kern.shminfo.shmmni=1024

# semaphores
#kern.shminfo.shmseg=1024
#kern.seminfo.semmns=4096
#kern.seminfo.semmni=1024

#kern.maxproc=32768
#kern.maxfiles=65535
#kern.bufcachepercent=90
#kern.maxvnodes=262144
#kern.somaxconn=2048


Um die Performance der Festplatte zu erhöhen sollte man die Mount-Optionen anpassen und jeweils softdep,noatime hinzufügen

/etc/fstab

0364c44477d30004.b none swap sw
0364c44477d30004.a / ffs rw,softdep,noatime 1 1
0364c44477d30004.l /home ffs rw,softdep,noatime,nodev,nosuid 1 2

Updates

Das OpenBSD-Basissystem von -STABLE kann mit dem Befehl syspatch aktualisiert werden

Für Binärpakete aus den Ports von -STABLE bietet OpenBSD keine Updates an. Möchte man aktuelle Sicherheitsfixes, was dringend zu empfehlen ist, müsste man sich die entsprechenden Pakete aus den Ports selbst bauen.

Update 15.08.2019: Seit dem 14.08.2019 bietet OpenBSD auch Sicherheitupdates für den -STABLE-Zweig an, siehe https://marc.info/?l=openbsd-announce&m=156577865917831&w=2

Um in den Genuss dieser Updates zu kommen muss man nichts weiter tun, als pkg_add -u auszuführen (sofern der Standard mit ungesetztem PKG_PATH beibehalten wurde).

Nachfolgend zu Dokumentationszwecken einige inoffizielle Repos, die ebenfalls aktuelle Updates bereit halten (oder hielten). Teilweise können diese Pakete anbieten, die nicht in den offiziellen -STABLE updates enthalten sind),

Bei Nutzung dieser Repos muss der entsprechende Signify Key runter geladen und nach /etc/signify kopiert werden.

Änderungen:

  • 04.07.2019: Anmerkungen zum Abstellen der Dienste hinzugefügt (Danke an @dah)
  • 04.07.2019: Anmerkungen zu Hypterthreading ergänzt
  • 05.07.2019 Link zum Port von msmtp geändert. Danke an @solene für ihre neue OpenBSD Ports Webseite https://ports.perso.pw/
  • 14.07.2019: Anmerkung zum Tastaturlayout, Danke an @reyk
  • 15.08.2019: Änderungen zu den Updates, da OpenBSD nun auch -STABLE updates binärer Pakete bereit stellt

Einleitung

IT-Sicherheit ist heute ein riesiges Betätigungsfeld. Menschen, die im ITSec-Umfeld tätig sind werden mit Begriffen überschwemmt. Der Markt hält ebenso viele Sicherheits-Produkte bereit.

Während der Admin überlegt, wie er nach ITIL vorgeht um die neue NextGen2-SIEM-Firewall zu integrieren und dabei noch die DSGVO beachten muss, und sich außerdem dringend mal dem Thema APT widmen will, dringen Angreifer über ein längst vergessenes Wordpress-Plugin in den Webserver ein und greifen Daten ab.

Es ist Zeit sich von der Begriffsverwirrung und der Produktschwemme zu befreien. Zeit einen Schritt zurück zu treten und sich darüber Gedanken zu machen, welche Grundprinzipien IT-Sicherheit ausmachen.

1. Kenne deine Systeme

Lerne dein System so gut wie möglich kennen. Wenn Du dein System nicht kennst kannst Du es auch nicht verteidigen. Verstehe, welche Komponenten und Dienste dein System benutzt. Stellst Du einen unnötigen Dienst fest (siehe 2. Halte dein System klein und einfach) stelle ihn ab. Stelle fest, welche Risiken durch die laufenden Dienste entstehen können.

Verlasse dich nicht nur auf externen Support (z.B. des Herstellers). Dies macht Dich abhängig vom Supporter und kann schnell zur Katastrophe führen, wenn er nicht reagiert oder das Problem nicht beheben kann. Open Source Software zu verwenden ist hier sehr hilfreich, weil diese meist sehr gut dokumentiert ist und ihre Funktionsweise daher gut erlernbar ist.

Dokumentiere deine Systeme und Komponenten. Ein guter Überblick ist wichtig um zu sehen, wo Schwachstellen entstehen können.

Verhindere, dass Angreifer dein System besser kennen als Du. Verwende Verschlüsselung bei der Kommunikation und, dort wo es nötig ist, bei der Speicherung von Daten

Beobachte Systemmeldungen und Protokolle (Log-Dateien). Oft beinhalten Sie wertvolle Hinweise. Auch darüber, wo noch Maßnahmen nötig sein könnten.

2. Halte dein System klein und einfach

Systeme und Applikationen sollen so klein und einfach wie möglich sein. Komplexität ist der Feind der Sicherheit. Verwende immer das einfachstmögliche System. Zum einen vermeidet man so Komplexität, zum anderen schont man so Ressourcen.

Füge einem System nicht mehr Komponenten oder Features hinzu als unbedingt benötigt werden. Lass nicht mehr Dienste laufen als unbedingt nötig. Verzichte auf alle unnötige Software. So wird die Angriffsfläche verkleinert, ebenso wie die Wahrscheinlichkeit, dass etwas schief gehen kann. Falls das System schon bei Lieferung zu komplex ist, passe es an. Hilfreich ist es in dieser Hinsicht Open Source Software zu verwenden.

Beispiel: Verzichte auf Web-Interfaces zur Administration einer Firewall. Das Webinterface benötigt einen HTTP-Server und implementiert eine Schnittstelle zur Umsetzung der Eingaben im Webinterface in Kommandozeilen-Befehle für die Firewall. Dies sind zwei zusätzliche, aber unnötige Angriffsvektoren. Lerne stattdessen, die Kommandozeile direkt zu benutzen.

(Exkurs: OpenBSD gilt als das sicherste Betriebssystem der Welt, nicht zuletzt deswegen weil es im Vergleich zu anderen Betriebssystemen sehr schlank ist. Der Linux Kernel besteht aus fast 30 Millionen Zeilen Code, der OpenBSD Kernel hat gerade mal 2,9 Millionen Zeilen, also 10% des Umfangs des Linux Kernels.)

Fast das gleiche gilt für Daten: Lösche sensitive Daten wenn sie nicht mehr gebraucht werden. Speicher sie erst gar nicht, wenn sie nicht benötigt werden.

Auch bei der Rechtevergabe sollte Minimalismus vorherrschen. Gib jeder Person und jedem Prozess nur die Rechte, die unbedingt benötigt werden.

3. Verwende gut dokumentierte, offene und gebräuchliche Systeme

Dies ist Voraussetzung dafür, zu wissen was man einsetzt. Vermeide den Einsatz von “Blackboxen”, deren Inhalt Du nicht kennst. Wieder ist es von Vorteil, Open Source Software zu benutzen. Gebräuchliche und verbreitete Open Source Software ist gut dokumentiert und der Quellcode liegt offen. Vermeide jedoch Exoten, die kaum jemand einsetzt und schlecht dokumentiert sind. Verwende robuste und stabile Systeme, die gut geprüft sind.

4. Verwende Information und nutze Informationsaustausch

All zu leicht zieht man sich in eine Filterblase zurück und bekommt kaum noch Informationen von der Welt da draußen mit, während Angreifer sich ständig über neue Möglichkeiten informieren.

Vernetze dich mit der “Community”, also mit Leuten denen es ähnlich geht wie Dir. Tausch Dich mit Ihnen aus, z.B. über Mailinglisten. Gehe zu Community-Veranstaltungen mit Schwerpunkt Security (nicht aber zu reinen Produkt-Werbeveranstaltungen von Herstellern). Gute Adressen vor Ort sind oft der CCC oder die Linux User Group (LUG).

Informiere Dich bei CERTs und Security-Mailinglisten über neue Sicherheitslücken. Dies ist Voraussetzung dafür dein System zu kennen (Punkt 1.).

5. Überprüfe deine Systeme

Um zu wissen ob deine Systeme korrekt und sicher laufen müssen sie überprüft werden. Verwende Monitoring, um deine Systeme zu überprüfen. Lege Parameter fest, innerhalb der deine Systeme laufen sollen. Falls ein System außerhalb diese Parameter läuft, sollte es Alarmmeldungen geben.

Beobachte Systemprotokolle (siehe auch Punkt 2.) Halte Logs einfach (im Textformat) und zentralisiere das Logging. Verwende Filter für Logmeldungen, um nicht von der Flut der Meldungen erschlagen zu werden.

Verwende Informationen (siehe Punkt 4.), um zu überprüfen, ob deine Systeme Sicherheitslücken aufweisen. Patche die Systeme schnell, denn Angreifer wissen spätestens mit der Veröffentlichung des Patches über die Angreifbarkeit Bescheid.

6. Isoliere deine Systeme

Große All-in-One-Systeme sind oft bequem und komfortabel zu nutzen. Leider sind sie auch überaus komplex und bieten daher eine große Angriffsfläche.

Systeme und Funktionen sollten daher so weit wie möglich voneinander getrennt werden. Bei Problemen ist so immer nur eine Komponente betroffen. Separiere Systeme voneinander, auf möglichst unterschiedlichen Ebenen. Verwende verschiedene Netzwerksegmente, da wo es angebracht ist. Verwende unterschiedliche Hosts für einzelne Dienste. Verwende dabei Virtualisierung, keine Containerisierung.

(Exkurs: Obwohl alle Welt von Docker spricht, sollten Docker und andere Containerlösungen nicht für produktive Systeme verwendet werden. Container laufen im selben Kernelspace ab wie der Container-Host und andere Container auf diesem. Das bedeutet, wird ein Container erfolgreich angegriffen, sind alle anderen Container die auf derselben physikalischen Maschine laufen, ebenfalls betroffen. Container bieten keine ausreichende Isolierung).

Verwende Schnittstellen, um die Kommunikation zwischen den isolierten System herzustellen und kontrolliere diese.

Jede Komponente sollte immer genau eine Aufgabe erfüllen, und diese gut. Verwende daher keine Universalisten, sondern Spezialisten. Vergiss aber nicht, dass diese einfach und klein sein sollen.

7. Gestalte deine Systeme fehlertolerant

Frag Dich bei jedem System: “Was ist, wenn es ausfällt? Ist dann das gesamte Gefüge betroffen, oder kann es ohne das System weiter funktionieren?” Erstelle einen Notfall-Plan, der sagt was Ausfällen zu tun ist. Denn früher oder später wird jedes System gestört sein oder ausfallen.

Sorge bei kritischen Systemen dafür, dass eine Reservesystem zeitnah bereit steht ( gestalte es z. B. als hochverfügbares System). Aktuelle Daten benötigen aktuelle Backups und sollten zeitnah wieder eingespielt werden können.

Je kleiner und einfacher die Systeme sind (Punkt 2.) desto besser sind sie fehlertolerant zu gestalten. Auch die Isolierung (Punkt 6.) unterstützt dabei, fehlertolerante Systeme einfach aufbauen zu können.

Auch Sicherheitsmaßnahmen können ausfallen. Wenn ein Account oder ein Zertifikat kompromittiert wird, muss es Maßnahmen geben, die den damit eingehenden Risiken entgegenwirken.

8. Beachte die Verhältnismäßigkeit

Sicherheit kostet Zeit, Geld und Aufwand. Bei jedem vorangegangenen Punkt sollte man sich daher fragen: Ist das noch verhältnismäßig?

Man kauft sich schließlich auch keinen 1000-Euro-Safe um darin 100 Euro zu lagern. Daher sollte geprüft werden, was man mit der Sicherheitsmaßnahme eigentlich schützen will und welche Auswirkungen die Maßnahme auf den Betrieb hat. Die Datenbank mit den Ergebnissen der Betriebs-Fußballmannschaft braucht sicher weniger Schutz, als die Datenbank mit den Firmenpatenten (Beides liegt auf demselben Server? Dann hast Du Punkt 6. nicht beachtet.)

Ein guter Weg, um die die Verhältnismäßigkeit festzustellen, sind folgende Fragen:

  1. Muss das System geschützt werden und in wie weit?
  2. Welche Sicherungsmaßnahme hat die geringste Auswirkung auf den laufenden Betrieb?
  3. Welches ist die einfachste und kostengünstigste Lösung für die Sicherungsmaßnahme (Hinweis: oft lautet die Antwort “Open Source Software”).

Schlusswort

Jedes einzelne dieser Grundprinzipien ist ein wichtiger Baustein. Jedoch sind sie um so wirksamer wenn sie zusammen arbeiten. Wenn man sich diese Grundprinzipien vor Augen führt, können sie dabei helfen, Ordnung in die Flut von Buzzwörtern der ITSec-Industrie zu bekommen und auch im eigenen Netz die Übersicht zu behalten.

Die Systeme zu kennen, zu separieren, klein und einfach zu halten und zu überprüfen kann die NextGen2-SIEM-Firewall überflüssig machen. Wenn man die Prinzipien kennt, muss man nicht unbedingt ITIL und ISO 27001 im Detail kennen – vieles von dem was dort steht wird sich daraus automatisch ergeben. Weiterführende Literatur: The Information Security Practice Principles, Craig Jackson, Scott Russell, and Susan Sons, University Center for Applied Cybersecurity Research

© Henry Jensen 2019, lizenziert unter CC-BY-SA 4.0