Security ist ein stets aktuelles Thema in der IT. Deshalb widmet sich das ADMIN-Magazin 04/2012 speziell Sicherheitsaspekten und gibt Antworten auf die Fragen: ... (mehr)

Aufgepasst

Wenn Sie das System in den produktiven Betrieb nehmen, sollten Sie den »Sysctl support« jedoch wieder deaktivieren. Andernfalls könnten Angreifer darüber das Sicherheitssystem unbemerkt abschalten. Alle übrigen hier im Kernel von Grsecurity angebotenen Funktionen sollten Sie nur ein- und ausschalten, wenn Sie ihre Bedeutung und Wirkung kennen.

Abschließend konfigurieren Sie den übrigen Kernel nach Ihren Bedürfnissen und übersetzt ihn. Das erfolgt unter Ubuntu mit den Befehlen:

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version "grsec" kernel_image

Möglicherweise erhalten Sie dabei die Fehlermeldung aus Abbildung 4 : »Your gcc installation does not support plugins.« . Um das Problem zu lösen, installieren Sie entweder das entsprechende Paket mit der Plugin-Unterstützung für GCC oder stellen dem »make« -Aufruf ein »DISABLE_PAX_PLUGINS=y« voran. Letzteres sieht im Fall von Ubuntu wie folgt aus:

Abbildung 4: Erscheint diese Fehlermeldung beim Übersetzen des Kernels, unterstützt der Compiler keine Plugins.
DISABLE_PAX_PLUGINS=y fakeroot make-kpkg--initrd kernel_image

Erscheint nach mehreren Tassen Kaffee die Erfolgsmeldung, können Sie den Kernel in den Bootvorgang einbinden. Unter Ubuntu müssen Sie dazu nur noch das erstellte Paket einspielen:

cd ..
sudo dpkg -i linux-image*.deb

Das erzeugt gleichzeitig einen neuen Eintrag im Bootmenü. Auch auf anderen Systemen sollten Sie zumindest während der Testphase den alten Kernel noch im Bootmenü behalten. Damit können Sie immer wieder zu ihm zurückkehren und bleiben im Fall der Fälle nicht ausgesperrt.

Kommandozentrale

Nach einem Neustart ist es recht schwierig herauszufinden, ob Grsecurity aktiv ist. Man kommt nicht umhin, ein paar seiner Funktionen zu prüfen. Als Erstes sollte

uname -r

einen Kernel mit »-grsec« nennen. Darüber hinaus darf man als normaler Benutzer nicht mehr mit »dmesg« das Kernel-Log abrufen.

Sofern man die Sysctl-Schnittstelle aktiviert hat, erscheint unter »/proc/sys/kernel« das Verzeichnis »grsecurity« . Jede Datei dort repräsentiert eine grsecurity-Funktion. Indem man in sie als Benutzer »root« eine 1 oder 0 schreibt, schaltet man die Funktion ein beziehungsweise aus. Beispielsweise erlaubt der Kernel nach einem

echo "0" >/proc/sys/kernel/grsecurity/dmesg

wieder jedem Benutzer den Zugriff via »dmesg« auf das Kernel-Log. Alternativ kann man natürlich auch das Systemwerkzeug »sysctl« verwenden:

sysctl kernel.grsecurity.dmesg=0

Bei dieser Variante steht jedem Kernel-Parameter grundsätzlich ein »kernel.grsecurity« voran. Alle möglichen Parameter und ihre aktuellen Einstellungen liefert ( Abbildung 5 ):

Abbildung 5: Welche Grsecurity-Funktionen man über
sysctl -a | grep -i grsec

Die Änderungsmöglichkeit über »Sysctl« und »/proc« können Sie komplett abschalten beziehungsweise sperren:

echo "1" >/proc/sys/kernel/grsecurity/grsec_lock

Damit kann sie kein Angreifer mehr verändern – Sie selbst allerdings auch erst wieder nach einem Neustart.

Die Zugriffskontrolle des RBAC-Systems ist standardmäßig deaktiviert. Um sie nutzen und einrichten zu können, muss man noch das Werkzeug »gradm« erstellen. Dazu braucht man die über den Paketmanager nachgeholten Programme Bison und Lex (respektive Flex) sowie die folgenden Befehle:

tar xvfz gradm-2.9-201202232055.tar.gz
cd gradm2
make
sudo make install

Unter Umständen meldet das letzte Kommando, dass es »/dev/grsec« nicht öffnen kann. In diesem Fall sollten Sie zunächst prüfen, ob Grsecurity tatsächlich aktiv ist. Sofern weder »udev« noch »devfs« laufen, muss man zudem die Gerätedatei selbst anlegen:

mknod -m 0622 /dev/grsec c 1 13

Ging alles glatt, fordert »gradm« die Eingabe eines Passworts. Nur mit ihm können Sie später die Zugriffskontrolle wieder deaktivieren. Erneuern beziehungsweise ändern lässt sich dieses Passwort jederzeit via

gradm -P

Standardmäßig existiert eine spezielle Rolle »admin« . Wie ihr Name andeutet, darf ein »admin« das System administrieren. Im Auslieferungszustand könnte theoretisch jeder mit

gradm -a admin

zu einem »admin« aufsteigen (beziehungsweise diese Rolle einnehmen). Um das zu verhindern, gilt es ein Passwort zu setzen:

gradm -P admin

Vergeben Sie kein Passwort, wird »gradm« gleich diese Sicherheitslücke anprangern und den Start des RBAC-Systems verweigern. Analog gibt es eine Rolle »shutdown« . Diese müssen Sie später einnehmen, wenn Sie bei aktiviertem RBAC-System den Computer herunterfahren möchte. Auch für »shutdown« ist ein Passwort zu setzen:

gradm -P shutdown

Sämtliche Passwörter sammelt »gradm« verschlüsselt in der Datei »/etc/grsec/pw« .

Jetzt endlich können Sie das RBAC-System aktivieren:

gradm -E

»gradm« liest dabei als Erstes die Konfigurationsdatei »/etc/grsec/policy« ein. Sie enthält das grundlegende Regelwerk und teilt dem RBAC-System mit, wer welche Zugriffsrechte besitzt. In ihr sind auch die mitgelieferten Rollen »admin« und »shutdown« definiert. Mit anderen Worten enthält die Datei »policy« nichts anderes als eine Access Control List (ACL). »gradm« prüft, ob dieses Regelwerk Sicherheitslöcher oder (Tipp-)Fehler enthält. Ist dies der Fall, bemängelt es die entsprechenden Punkte und lässt die Zugriffskontrolle deaktiviert. Andernfalls startet es das RBAC-System mit den in »/etc/grsec/policy« hinterlegten Rollen und Zugriffsrechten.

Sobald das RBAC-System läuft, bleibt das Regelwerk für jegliche Änderungen gesperrt. Grsecurity versteckt sogar die Konfigurationsdateien unter »/etc/grsec« . Sehen kann man sie dann nur, wenn man in die Rolle »admin« schlüpft. Ebenso ist es jetzt selbst als »root« unmöglich, verschiedene Systemdienste wie den SSH-Daemon zu starten und zu stoppen. Auch das ist nur Benutzern in der Rolle »admin« gestattet. Um sie einzunehmen, ruft man:

gradm -a admin

auf. Jetzt sieht man wieder den Inhalt von »/etc/grsec« und kann den SSH-Daemon starten. Um die Rolle wieder abzulegen, genügt ein:

gradm -u

Durch das Rollen-Konzept erhält man folglich eine zweistufige Absicherung: Um einen Systemdienst zu starten oder zu stoppen, muss man zunächst Root-Rechte erhalten und dann noch per »gradm« in die Rolle »admin« schlüpfen.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023