next | next | up | down | Inhalt | Uebungen | Complete | Kommentar

all, section 8.8.

8.8.  Sicherheit versus Nutzbarkeit

Hat man eine Anzahl von Unix-Rechnern vernetzt, dann kann man die vorhandenen Ressourcen optimal ausnutzen, falls man auf jedem beliebigen Rechner ein Kommando mittels rsh ohne Eintippen des Paßworts aktivieren kann. Ist Ihr System so konfiguriert? Falls ja, haben Sie jedem Einbrecher, der sich für Ihr Netz interessiert, den goldenen Schlüssel zum Öffnen in die Hand gegeben. Warum dies so ist und was man dagegegen unternehmen kann, wird in diesem Artikel dargelegt.

Das Vertrauen

Ist man auf einem Rechner, nennen wir ihn mozart, angemeldet, und möchte auf thor ein Kommando wie z.B. date absetzen, wird in punkto Sicherheit der in Abbildung 1 dargestellte Algorihmus angewendet.

[picture]

Abbildung 1: Kontaktaufnahme

Der fremde Rechner überprüft, ob das Tupel (loginname, Rechner) berechtigt ist, Kommandos auf ihm zu aktivieren. Er beantwortet die Frage, indem er eine lokale Datenbasis zu Rate zieht. Falls ja, wird das Kommando ausgeführt; falls nein, wird die Ausführung des Kommandos verweigert.

Wann ist ein fremder Rechner in Verbindung mit einer loginname vertrauenswürdig? Das Vertrauensverhältnis kann auf zwei verschiedenen Wegen definiert werden.

Das Problem

Nehmen wir an, im Netz gibt es wenigstens die beiden Rechner balrog und gandalf und alle Nutzer gelten auf allen Rechner als vertrauenswürdig. Ein Bösewicht, der Zugang zum Netz hat, bringt seinen Laptop mit, steckt diesen auf das Netz und gibt ihm die gleiche IP-Adresse wie balrog. Dann meldet er sich als superuser oder ein anderer interesanter Nutzer auf balrog an. Da dies sein Rechner ist, dürfte ihm das entsprechende Paßwort wohl bekannt sein. Mit rsh gandalf erlangt er superuser-Rechte auf einem Rechner des Netzes, ohne daß er das entsprechende Paßwort kennt. Vorbei ist es mit der Sicherheit der Daten.

Weil dieser Aspekt nicht sicher zu bekommen ist, werden von fast allen Administratoren die systemweiten rhost-Dateien gelöscht. Die Arbeit auf dem Netz wird unbequemer, vieles dauert länger und wird demzufolge teurer.

Die Lösung

Angenommen der Heimatkatalog eines Nutzers und seine user id auf allen Rechnern des Netzes sind gleich, und $HOME/.rhosts ist leer. Betrachten wir nochmals Abbildung 1: Nur zum Zeitpunkt der Kontaktaufnahme der beteiligten Rechner wird das Vertrauensverhältnis geprüft -- also legen wir die Datei $HOME/.rhosts kurz vor der Kontaktaufnahme an und löschen sie zum fühest möglichen Zeitpunkt wieder. Siehe Abbildung 2.

#!/bin/sh

RHOSTS=$HOME/.rhosts

if [ --f $RHOSTS ]
then
        echo "$RHOSTS exists."
fi

echo `hostname` > $RHOSTS
rsh $1 "rm --f $RHOSTS 2> /dev/null; $2"
exit 0

Abbildung 2: Vetrauen ist gut, kein Vertrauen ist besser.

Nur für die Zeitdauer zwischen dem Füllen von $HOME/.rhosts und dem Löschen ist die Benutzerkennung unsicher. Es ist klar, daß das Skript noch zusätzliche Arbeit in puncto Environment und Pfaden leisten muß.


back | next | up | down | Inhalt | Uebungen | Complete | Kommentar


Created by unroff & hp-tools. © by Hans-Peter Bischof. All Rights Reserved (1997).

Last modified 03/July/97