Systemsicherheit erhöhen mit Grsecurity

© © Luce Morin, 123RF

Abgedichtet

Sicherheitsbewusste ziehen um ihr Haus einen tiefen Wassergraben mit Krokodilen, verstecken ihr Mobiliar in Hinterzimmern und lassen Besucher nur nach der Nennung eines geheimen Codewortes ins Bad. Nach einem ähnlichen radikalen Prinzip baut Grsecurity Linux-Systeme zu einer Festung aus.
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)

Eine kleine Patch-Sammlung namens Grsecurity (für Greater Security) verwandelt den Linux-Kernel in einen extrem misstrauischen Gesellen. Gleich mit einem ganzen Maßnahmenbündel versucht er präventiv, Angreifer auszusperren, und behandelt jeden Benutzer erst einmal als prinzipielle Gefahrenquelle. So erlaubt er unter anderem den Aufruf von »dmesg« nur ganz bestimmten Benutzern, riegelt das »/proc« -Verzeichnis ab und der Kernel verhindert Zugriffe auf »/dev/kmem« , »/dev/mem« und »/dev/port« . Anwendungen schiebt er an eine zufällige Stelle im Hauptspeicher (Address Space Layout Randomization) und versteckt alle Kernel-Threads.

Rollenspiel

Den Kern von Grsecurity bildet jedoch die rollenbasierte Zugriffskontrolle (Role Based Access Control, kurz RBAC), die auf der schon vorhandenen Rechteverwaltung aufsetzt. Dabei entzieht Grsecurity zunächst allen Benutzern ihre Zugriffsrechte, versteckt vor ihnen sogar Teile des Dateisystems und erlaubt so nur das gerade Notwendige. Anschließend gestattet der Administrator einzelnen Benutzern dann gezielt wieder bestimmte Aktionen. Benutzer mit ähnlichen Aufgaben lassen sich in Gruppen zusammenfassen, den sogenannten Rollen. Denen kann der Admin anschließend ebenfalls weitere Rechte zugestehen. So darf beispielsweise die Gruppe der Webmaster den SSH-Daemon starten, die Gruppe der Datenbankadministratoren hingegen nicht.

Die Konfiguration bleibt dennoch kinderleicht: Man lässt Grsecurity einfach eine Weile die Arbeit des Webmasters beobachten und anschließend die dabei durchgeführten Aktionen für ihn freigeben. Sämtliche anderen Aktionen bleiben weiterhin verboten. Diese automatisch ermittelte Konfiguration lässt sich selbstverständlich noch manuell verfeinern beziehungsweise anpassen.

Von RBAC unabhängig verhindert Grsecurity, dass Benutzer eigene, möglicherweise böswillige Programme oder Skripte starten (Trusted Path Execution). Aufrufen lassen sich dann nur noch Anwendungen aus Verzeichnissen, für die ausschließlich der Benutzer »root« Schreibrechte besitzt. Abschließend dichtet Grsecurity auch noch Chroot-Umgebungen so ab, dass die darin laufenden Programme weder Zugriff auf Systemfunktionen erhalten, noch ihr neues Zuhause wieder verlassen können.

Alle diese Funktionen erschweren einen Einbruch in das System erheblich und schützen somit auch vor noch unbekannten Sicherheitslücken. Sollte es dennoch passieren, kann ein kompromittiertes Programm dank beschränkter Zugriffsrechte keinen größeren Schaden anrichten. Grsecurity steht unter der freien GNU GPL, die Weiterentwicklung finanziert sein Autor Brad Spengler aus Spenden und über kommerziellen Support.

Gespaltene Persönlichkeit

Grsecurity besteht aus mehreren Teilen: Dank der Patch-Sammlung überwacht der Linux-Kernel alle Prozesse und unterbindet im Fall der Fälle verbotene Aktionen. Die Konfiguration und Einrichtung des RBAC-Systems übernimmt das kleine Kommandozeilenwerkzeug »gradm« , die übrigen Kernel-Funktionen schaltet man über »sysctl« ein und aus.

Dummerweise steht der Kernel-Patch nur für bestimmte Kernel-Versionen bereit, zum Redaktionsschluss trugen sie die Nummern 3.2.19 und 2.6.32.59. Diese beiden Kernel hält Brad Spengler für stabil. Darüber hinaus lässt sich der Patch nur auf den originalen, unmodifizierten Kernel von kernel.org anwenden (den sogenannten Vanilla-Kernel). Da keine der großen Distributionen einen mit Grsecurity gepatchten Kernel anbietet, muss man folglich selbst den originalen Kernel herunterladen, patchen, übersetzen und dann auch immer noch auf dem aktuellen Stand halten. Das sollte man nur in Angriff nehmen, wenn man auf diesem Gebiet bereits Erfahrungen gesammelt hat. Als Alternative bieten sich ähnlich arbeitende Systeme an, wie etwa Tomoyo [2] .

Extrawurst

Eine kleine Sonderrolle nehmen Debian 6 und Ubuntu 12.04 ein. Zunächst einmal halten diese beiden Distributionen eine ältere Version des Werkzeugs »gradm« in ihren Repositories bereit, bieten aber kurioserweise keinen mit Grsecurity gehärteten Kernel. Den stellt stellvertretend Julien Tinnes in einem eigenen Repository bereit [3] . Die Auswahl beschränkt sich allerdings auf ein paar Kernel mit der Versionsnummer 2.6.32 und jünger ( Abbildung 1 ). Für Debian 6 dürfte das noch passen, Ubuntu 12.04 setzt jedoch schon den Kernel 3.2 ein.

Abbildung 1: Zum Redaktionsschluss enthielt das Repository von Julien Tinnes nur diese Kernel-Versionen.

Darüber hinaus fehlt im Repository ein zu den Kerneln passendes »gradm« -Werkzeug. Die Fassung auf der Grsecurity-Homepage trug zum Redaktionsschluss bereits eine höhere Versionsnummer und arbeitet somit nicht mehr mit den von Julien Tinnes gebauten Kerneln zusammen. Auch das von Debian mitgelieferte »gradm« -Paket ist hier nutzlos. Da man zudem Julien Tinnes und seinen Kerneln blind vertrauen muss, eignet sich sein Angebot nur zum schnellen Ausprobieren von Grsecurity unter Debian – wenn man denn auf das RBAC-System verzichten kann. Das Repository fügen in diesem Fall die folgenden Befehle hinzu:

su root
echo 'deb http://debian.cr0.org/repo/ kernel-security/' >> /etc/apt/sources.list
wget http://kernelsec.cr0.org/kernel-security.asc
apt-key add kernel-security.asc
apt-get update

Jetzt kann man sich alle darin verfügbaren Kernel anzeigen lassen:

apt-cache search linux image grsec

und den Kernel mit der höchsten Versionsnummer installieren:

apt-get install linux-image-2.6.32.15-1-grsec

Ä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