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:
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.
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):
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.