Bei der in einem vorangegangenen Blog-Artikel beschriebenen Serverhärtung stellt sich die Frage, wie die notwendigen Änderungen, also eine hohe Anzahl an Härtungsmaßnahmen am Betriebssystem, auf möglicherweise hunderten von Systemen effizient auszuführen und nachzuhalten sind.
An diesen Sicherheitsprozess sind einige Anforderungen zu stellen, die hier im Einzelnen beleuchtet werden.
Individualisierung
Zunächst müssen die Änderungen individuell auf den Server angepasst sein:- Verschiedene Schutzbedarfsklassen der auf dem System vorhandenen Daten benötigen unterschiedlich strenge Maßnahmen. Oft lässt sich dies an den Netzen (Produktiv-, Test und Entwicklungssysteme) festmachen, in denen sich die Server befinden.
- Das Betriebssystem sollte zur Unterstützung der laufenden Anwendung optimal angepasst werden. Die auf dem System betriebene Anwendung lässt somit vielleicht einige Maßnahmen nicht zu.
- Die Serversysteme unterscheiden sich im Betriebssystem und deren verschiedene Versionen.
Schon hier wird ersichtlich, dass Härtungsmaßnahmen zur Vereinfachung an einem zentralen Punkt verwaltet werden sollten.
Anforderungen an das Ausrollen von Maßnahmen
Ein Ausrollen von Maßnahmen zur Serverhärtung unterliegt ebenso einigen Rahmenbedingungen.- Die Änderungen müssen nachvollziehbar gemacht werden. Ein Protokoll mit den Informationen, was, wann, wo durch wen ausgeführt und geändert wurde, ist zu erstellen.
- Die Änderungen müssen reproduzierbar sein, eine Änderung zum Zeitpunkt A muss zum Zeitpunkt B identisch wiederholt werden können. Sinnvoll ist es auch, den „Bevor"-Wert einer Änderung zu protokollieren, um in der Lage zu sein, Änderungen zurückzunehmen.
- Geeignete Tests sollten entwickelt werden, die die Umsetzung der Maßnahme prüfen. (So ist z.B. zu testen, ob das Anlegen eines Passworts, das nicht den Kriterien entspricht, tatsächlich verhindert wird)
Warum Automatisieren?
Eine „per Hand" durchgeführte Systemhärtung ist zeitaufwändig und fehleranfällig, von einer Reproduzierbarkeit gar nicht zu reden. Der Einsatz einer Software zur Automatisierung der Serverhärtung empfiehlt sich dringend. Dies kann z.B. mit Ansible, Saltstack oder Puppet geschehen. Als Beispiel sei hier im Sprachgebrauch von Ansible beschrieben, wie eine solche Automatisierung aussehen kann.
Die Eigenschaften der individuellen Server sind als Variablensätze in den host_vars und group_vars parametrisiert. Einzelne Maßnahmen zur Härtung werden in Tasks abgebildet. Die Tasks werden in Playbooks zusammengefasst. Durch Verknüpfung der Tasks an Bedingungen, die durch die Parametrisierung beschrieben werden, kann ein allgemeines Playbook auf alle Server angewendet werden. Die Idempotenz der Tasks, also die Eigenschaft, dass ein mehrmaliges Ausführen des Tasks den gleichen Effekt hat wie ein einmaliges, sorgt dafür, dass ein Härtungs-Playbook regelmäßig ausgeführt werden kann.
Ein weiterer Vorteil einer täglichen Überprüfung und gleichzeitigen Umsetzung von Härtungstasks ist, dass so im Protokoll detektiert wird, welche in der Vergangenheit schon umgesetzten Härtungsmaßnahmen erneut umzusetzen waren und somit Hinweise auf eine mögliche Kompromittierung der Serversicherheit gegeben sind.
Die Playbooks werden in einem Softwarerepository mit Versionskontrolle in einem zugangsgesicherten Bereich entwickelt. In einem 4-Augen-Prinzip werden sie revidiert und freigegeben.
Fazit
Die in einem vorausgegangenen Blog-Artikel besprochenen CIS Benchmarks als Ausgangspunkt für Härtungsmaßnahmen können innerhalb einer Automatisierungs-Software praktisch umgesetzt werden. Mit einigem Programmier- und Testaufwand entsprechen sie den beschriebenen Anforderungen an Sicherheit und Nachvollziehbarkeit und Reproduzierbarkeit.