Sicherheitsprobleme unter Unix sind kein notwendiges Übel:

Vorhandene Möglichkeiten werden noch zu wenig genutzt

21.04.1989

Unix-Betriebssystemen wird häufig vorgeworfen, besonders unsicher zu sein. Welche Möglichkeiten der Datensicherung durch verschlüsselte Paßwörter, User-IDs, Group-IDs und Kontrollprogramme zur Verfügung stehen, beschreibt Jiirgen Spies*.

Am 2. November 1988 entdeckten zwei Mitarbeiter der Experimental Computing Facility der Berkley Universität in Kalifornien, daß auf den Rechnern in ihrem Netzwerk fremde Programme liefen. Sie fanden heraus, daß diese Programme auf immer mehr Rechnern auftauchten. In wenigen Stunden war praktisch das gesamte "Internet", ein Netzwerk mit mehreren tausend Rechnern, das sich über die gesamten USA erstreckt, befallen.

Um die weitere Verbreitung zu verhindern, wurde fast das gesamte Netz heruntergefahren. Als nächstes mußte untersucht werden, wie es dem Programm gelang, sich so schnell von Rechner zu Rechner zu verbreiten. Drei Gruppen von Unix-Gurus an der Universität in Berkley, dem Massachusetts Institut of Technologie und der Purdue Universität begannen, das Programm zu disassemblieren, also aus dem Objektcode den ursprünglichen C-Quellcode wiederzugewinnen.

Nachdem dies gelungen war, stellte man zur Erleichterung fest, daß es sich nicht um ein destruktives Programm handelte. Das heißt, das Programm versuchte nicht, Dateien auf den befallenen Rechnern zu zerstören. Allerdings verbraucht es bei seinem Versuch, sich auf andere Rechner zu übertragen, derartig viele Kapazitäten, daß die befallenen Rechner praktisch zum Stillstand kamen.

Wie sieht es nun tatsächlich mit der Sicherheit von Unix-Systemen aus? - Im Gegensatz zu seinem schlechten Ruf bietet Unix relativ gute Möglichkeiten, ein System sicher zu machen. Allerdings bedarf es dafür eines erfahrenen und aufmerksamen Systembetreuers. Leider werden immer noch viele Unix-Systeme vom Hersteller in einem Zustand ausgeliefert, der Eindringlinge geradezu einlädt.

Der Zugang zum Unix-System erfolgt für den Benutzer über die Eingabe eines Paßwortes. Es wird nach dem DES-(Data Encryption Standard) Verfahren verschlüsselt und in einer Datei abgelegt. Bei den meisten heutigen Unix-Systemen kann dieses verschlüsselte Paßwort noch von jedem Benutzer gelesen werden. Um die Sicherheit zu erhöhen, wird das Paßwort in Zukunft in einer Datei abgelegt, die normalen Benutzern nicht mehr zugängig ist.

Jedem Benutzer werden auf dem System eine sogenannte User-ID und eine Group-ID zugeordnet. User-IDs sollten eindeutig zu einem Benutzernamen gehören, während die GroupID es erlaubt, verschiedene Benutzer zu Arbeitsgruppen zusammenzufassen und ihnen gemeinsame Rechte zu geben.

Die Zuordnung von Rechten zu Benutzern erfolgt über die Vergabe von Zugriffsrechten auf Dateien. Dateien sind unter Unix neben einfachen Datenbehältern auch Directories, Peripherie-Geräte wie Drucker, Bildschirme und Platten oder Kommunikationskanäle für die Interprozeßkommunikation. Selbst der Hauptspeicher eines Rechners ist unter Unix eine Datei.

Zu jeder Datei gehören drei Gruppen von Zugriffsrechten: für den Eigentümer der Datei, für die Gruppe des Eigentümers und für alle anderen Systembenutzer. Für jede dieser Gruppen lassen sich drei Rechte vergeben:

- eine Datei zu lesen,

- eine Datei zu modifizieren,

- ein Programm auszuführen beziehungsweise ein Directory zu durchsuchen.

Es gibt eine User-ID unter Unix, die besondere Prioritäten aufweist. Das ist die User-lD 0, der sogenannte Superuser. Unabhängig von den vergebenen Dateirechten hat der Superuser immer Zugriff auf eine Datei. Also ist es das erklärte Ziel jedes Hackers, Superuser-Rechte zu erlangen. Diese absolute Macht des Superusers ist einer der häufigsten Kritikpunkte an Unix.

Wünschenswert wäre es, eine Gruppe von Benutzer-lDs zu haben, die für unterschiedliche Aufgaben autorisiert sind. Andererseits wird es immer so sein, daß derjenige Benutzer, der das Recht hat, andere Benutzer in das System einzutragen, letztendlich Zugang zu allen Daten gewinnen kann.

Eine weitere gefährliche Stelle im Unix-System sind die sogenannten Setuid-(Set-User-ID) oder Setgid-(Set-Group-ID)Programme. Wenn ein Benutzer ein normales Programm aufruft, so läuft es unter seiner eigenen Benutzer-ID und hat damit auch nur die Rechte, die der Benutzer hat. Ruft ein Benutzer ein Programm mit Setuid auf, bei dem das Setuid-Bit gesetzt ist, so erhält das Programm zur Laufzeit die Rechte des Besitzers des Programmes.

Ein Beispiel soll den Sinn dieses Features deutlich machen: In der Datei "/etc/passwd" sind sämtliche Benutzernamen, die User-IDs und die Paßwörter eingetragen. Die Datei darf aus verständlichen Gründen nur vom Superuser modifiziert werden.

Andererseits soll aber jeder Benutzer in der Lage sein, sein eigenes Paßwort zu ändern. Zu diesem Zweck existiert ein Programm "Passwd", das dem Superuser gehört und unter Setuid läuft. Wenn ein Benutzer dieses Programm aufruft, so läuft es unter der User-ID des Superusers und darf damit die Datei "/etc/passwd" modifizieren. Das Programm ist so geschrieben, daß nur das Paßwort innerhalb der Datei modifiziert wird. Die Veränderung seiner eigenen User-ID ist unmöglich.

Beim Schreiben von Setuid-Programmen muß allerdings besondere Sorgfalt aufgebracht werden. Existiert zum Beispiel die Möglichkeit, aus einem solchen Programm heraus einen Kommando-Interpreter aufzurufen, so läuft dieser dann unter der User-ID des Superusers und öffnet dem Benutzer alle Möglichkeiten.

Die meisten Trojan Horses unter Unix versuchen eine Kopie vom Kommandointerpreter der Shell anzulegen; dann legen sie den Superuser als Eigentümer dieser Datei fest und setzen das Setuid-Bit. Ruft man dieses Programm auf, so läuft es unter das User-ID des Superusers. Unter Setuid laufende Programme, die lange Zeit beliebte Angriffspunkte waren, sind die Networking-Programme des UUCP (Unix-Unix-Copy) und der Drucker-Spooler.

Um Bedroher, die das System unterwandert haben, zu erkennen, gibt es verschiedene Möglichkeiten unter Unix. Alle Fehleingaben von Paßwörtern werden mitprotokolliert. Mit Hilfe des Process-Accounting ist es möglich, festzustellen, welcher Benutzer welche Programme aufgerufen hat.

Es gibt Programme, die regelmäßig überprüfen, ob sich Systemprogramme verändert haben und ob neue Programme mit Setuid hinzugekommen sind, die im System nichts verloren haben. Mit diesen Möglichkeiten bietet Unix erfahrenen Systemverwaltern die Möglichkeit, ein relativ sicheres System zu generieren. Diese Form der Sicherungen greifen allerdings nur gegen unberechtigte Zugänge zum System. Im Falle der Zerstörung von Daten kann lediglich eine existierende Systemsicherung helfen. Die unter Unix vorhandenen Standardsicherungsprogramme genügen allerdings keinen höheren Anforderungen. Ihre Benutzung ist relativ kompliziert und für die Sicherung von großen Datenbeständen sind sie vielfach nicht geeignet, da sie oft keine MultivolumeVerarbeitung, das heißt Verarbeitung von Dateien, die sich über mehrere Bänder erstrecken, zulassen.

Bei großen Datenbeständen, die nur relativ wenige Veränderungen erfahren, ist es unnötig und unerwünscht, sie jeden Tag vollständig zu sichern. Es werden inkrementelle Sicherungen notwendig: Am ersten Montag jeden Monats wird der gesamte Datenbestand gesichert. An den folgenden Wochentagen werden jeweils nur die seit dem Vortag modifizierten Dateien gesichert. An den folgenden Montagen werden immer nur alle seit dem vorigen Montag modifizierten Dateien gesichert (siehe Abbildung auf Seite 44).

Muß nun zum Beispiel nach einem Platten-Crash eine Platte neu eingespielt werden, so müssen sämtliche Sicherungen, die aufeinander aufbauen, eingespielt werden. Das können in diesem Beispiel bis zu acht Sicherungen sein. Dafür sind die täglichen Sicherungszeiten relativ gering. Bei diesem Verfahren ist eine komfortable Verwaltung der Bänder unabdingbar.

Um komfortable Datensicherung auch von ungeschultem Personal durchführen lassen zu können, wurden Backup-Tools entwickelt; sie erlauben die Verwaltung von unterschiedlichen Datensicherungsplänen mit Vorgabe des Sicherungsverfahrens, des Sicherungsbeginnes und des Aufbewahrungszeitraums für Magnetbänder. So können unterschiedliche Platten mit unterschiedlichen Sicherungsplänen gesichert werden. Innerhalb lokaler Netze wird Sicherung und Restaurieren von Daten auf Remote-Systemen unterstützt.

Magnetbänder können mit Labeln versehen werden, so daß beim Einlegen eines Bandes die Identität geprüft werden kann. Im Gegensatz zu den meisten Unix-Werkzeugen verfügt ein Backup-Tool über eine eigene Folgebandverarbeitung. Damit ist eine effiziente Sicherung großer FileSysteme möglich. Das Auffinden von Dateien und Dateisystemen auf den Bändern wird unterstützt. Die Backup-Tools nennen die Namen der Bänder, die eingelegt werden müssen, um eine Datei oder ein Dateisystem wieder einzuspielen.

In Form von Sicherungsberichten können alle Datensicherungsaktivitäten (Datensicherungsbericht, Zeitplanbericht, Gerätebericht, Bandzustand, Archivbericht etc.) aufgezeichnet werden. Damit existiert unter Unix ein Werkzeug zur schnellen und effizienten Restaurierung von Daten nach Zerstörung oder Abänderung von Daten. Es ist zu erwarten, daß in Zukunft weitere Werkzeuge entwickelt werden, die die Arbeit, ein sicheres Unix zu konfigurieren, erleichtern.