Zugriffsrechte im heterogenen LAN

23.04.2002 von Alexander Scheb
In vielen Unternehmen findet man eine heterogene Windows/Unix-Umgebung vor. Da sich die Rechtesysteme von Windows NT und Linux deutlich unterscheiden, kommt dabei eine Menge Arbeit auf den Administrator zu.

Nach dem Trend zu einheitlichen Windows-basierten Netzen Mitte bis Ende der 90er Jahre findet man inzwischen in vielen Firmen wieder heterogene Systemlandschaften. Dabei bildet auf Serverseite die Kombination Windows NT/2000/XP plus Linux die Regel. Nicht selten macht hier jedoch der Zugriff der Clients auf einzelne Server Probleme. Manchmal hapert es bereits beim Verbindungsaufbau, meist gestaltet sich jedoch speziell die Vergabe korrekter Zugriffsrechte schwierig. Als Wurzel des Übels lassen sich regelmäßig die grundlegend verschiedenen Rechtesysteme von Windows und Linux ausmachen.

Die Implementierung einer stringenten Sicherheitsstrategie und die konsequente Konfiguration der Rechner verlangen dem Administrator in diesem Szenario einiges an Arbeit ab. Wie eine saubere Einrichtung eines solchen Netzes funktioniert, wollen wir uns anhand eines Praxisbeispiels ansehen. Der vorliegende erste Teil des Artikels befasst sich dabei mit dem Zugriff der Linux-Clients via NFS auf Server unter Linux. Ein zweiter Teil behandelt demnächst typische Probleme bei der Verbindung von Windows-Clients mit SMB-Servern unter Linux.

Zugriffe im Netz

Innerhalb eines Mehrbenutzersystems kommt man um die sinnvolle Vergabe von Rechten nicht herum. Ansonsten stehen Angreifern Tür und Tor offen. Aus demselben Grund müssen die Zugriffe im LAN reglementiert werden. Sorgfalt und ein gewisses Maß an Erfahrung bilden hier die Grundlage. Anderenfalls kann es nur zu leicht dazu kommen, dass gewollte Zugriffe scheitern oder sich sogar der Administrator selbst aussperrt.

Gerade die Unix-typischen Zugriffsrechte unter Linux bereiten Einsteigern große Schwierigkeiten. Deswegen greifen bislang nur mit Windows vertraute Anwender gern auf den root -Account zurück: Damit erlangen sie volle Zugriffsrechte, wie sie es bisher von ihrem Betriebssystem gewohnt waren. Das immanente Sicherheitsrisiko fällt dabei allerdings hoch aus. Schnell sind versehentlich Systemdateien gelöscht und damit das ganze System unbrauchbar. Ein gewöhnlicher Benutzer dagegen kommt an entscheidende Dateien gar nicht erst heran. Daher sollte man der Versuchung des Global-Zugriffs widerstehen und sich stattdessen schon im Vorfeld mit den Zugriffsrechten unter Unix beschäftigen.

Es gilt die Rechte so zu staffeln, dass nur autorisierte Benutzergruppen den Zugriff erlangen. Dabei gibt der Server Ressourcen frei, derer sich die Clients bedienen können, und definiert deren Rechte. Die Vielzahl der unterschiedlichen Typen von Rechten auf den verschiedenen Betriebssystemen erleichtert die Vergabe korrekter Befugnisse dabei nicht unbedingt. Verfolgt der Administrator bei der Rechtevergabe keine vorgeplante und konsequente Strategie, dann kommt es schnell zu Sicherheitslücken im System.

Beispielszenario

Zur Beschreibung eines Konzepts für Zugriffsrechte soll uns hier das Netzwerk eines Verlags als Beispiel dienen. Alle Mitarbeiterdaten lagern dabei zentral auf einem Server unter Linux. Üblicherweise teilt sich jeder Verlag in einzelne Abteilungen auf. Diesen ordnen wir einzelnen Verzeichnissen (Shares) zu, die via Netz verfügbar sein sollen. Somit greifen alle Mitarbeiter auf den aktuellen Projektstand zu. Andererseits sollen die Redaktionsmitarbeiter nicht auf alle PCs und Daten zugreifen können.

Nun sind die Zugriffe entsprechend zu reglementieren. Um die Zuordnung einfacher regeln zu können, sortiert der Administrator die Mitarbeiter in verschiedene Benutzergruppen ein. Innerhalb unseres Verlags besitzt die Verlagsleitung die höchste Rechte-Ebene, sie kann Verzeichnisse und Dateien der anderen Gruppen einsehen. Hierzu führen wir die Gruppe "Verlag" ein. Danach folgt der Chefredakteur mit seinem Stellvertreter und den anderen Redakteuren. Diese bringen wir in der Gruppe "Redaktion" unter. Zum Schluss gibt es dann noch die Redaktionsassistenzen, welche die Gruppe "Sekretariat" zusammenfasst.

Rechtevergabe unter NFS

Der Einfachheit halber beginnen wir den Aufbau unseres Verlags-LANs als reines Linux-Netz. Für den Zugriff auf entfernte Rechner-Ressourcen zeichnet hier das Netzwerk-Filesystem NFS (Network File System) verantwortlich.

Um NFS zu nutzen, gilt es zunächst einmal die entsprechende Software einzurichten. Dazu muss im Kernel die NFS-Unterstützung aktiviert werden, zudem wird das Programmpaket nfs-utils benötigt. Dort findet man alle Client-/Server-Programme für den NFS-Betrieb. Über ein Terminal-Fenster erfolgt mit dem Befehl rpm -ivh nfs-utils-0.3.1.i386.rpm die Installation.

Nun muss das System angewiesen werden, den NFS-Server beim Systemstart aufzurufen. Über das Tool ksysv kann man angeben, welche Dienste beim Booten hochgefahren werden sollen. Hier wählt man den NFS-Daemon aus und fügt ihn dem Runlevel 5 (Mehrbenutzer mit X11 und Netzwerk) hinzu. Mittels des Kommandos /etc/init.d/nfs status lässt sich nach dem Neustart prüfen, ob der Dienst tatsächlich aktiviert wurde.

Benutzergruppen anlegen

Nun können wir den Verlagsaufbau im Dateisystem abbilden. Der Administrator legt dazu die einzelnen Gruppen mit Hilfe des Kommandos groupadd an. Der Befehl erwartet als Parameter einen Gruppennamen sowie eine numerische Gruppenkennung (ID).

IDs im Zahlenbereich von 0 bis 499 bleiben dabei für systemspezifische Benutzerkonten (wie root oder mail) reserviert. Unsere Gruppenkennungen müssen also höher ausfallen. Im Terminalfenster geben wir folgende Kommandos an:

groupadd -g 510 Verlag
groupadd -g 520 Redaktion
groupadd -g 530 Sekretariat

Den Erfolg unserer Aktion können wir nachprüfen, indem wir uns den Inhalt der Datei /etc/group ausgeben lassen. Dort notiert das Betriebssystem alle definierten Benutzergruppen.

Benutzerkonten anlegen

Nun geht es an die Definition der Benutzerkonten. Diese verwaltet das System zentral innerhalb der Datei /etc/passwd. Der Administrator legt die einzelnen Accounts mittels des Kommandos useradd an. Dabei lässt sich in Form von Optionen angeben, welches Heimatverzeichnis (-d) der Benutzer bekommt und welcher Gruppe (-g) er angehört.

Über die folgenden Kommandos definieren wir die Benutzer Huber, Meier und Schmitz und weisen sie gleichzeitig einer bestimmten Gruppe zu:

adduser huber -g Verlag -d /home/huber
adduser meier -g Redaktion -d /home/meier
adduser schmitz -g Sekretariat -d /home/schmitz

Jetzt muss für jeden Benutzer noch das Passwort gesetzt werden. Dazu dient das Kommando passwd, dem als einziger Parameter der Benutzername übergeben wird. Beim Aufruf fragt es dann nach dem zu registrierenden Passwort.

Exported Shares

Zu guter Letzt müssen noch die freizugebenden Verzeichnisse (Exported Shares) angelegt werden. Als Wurzel des entsprechenden Verzeichnisbaums dient uns /usr/Exports. Hier legen wir zunächst das Hauptverzeichnis (/usr/Exports/Verlag) für den Verlag an. In diesem Directory sollen die Unterverzeichnisse für die einzelnen Abteilungen (Redaktion und Sekretariat) liegen. Folgende Kommandos erledigen das Gewünschte:

mkdir -p /usr/Exports/Verlag
mkdir /usr/Exports/Verlag/Redaktion
mkdir /usr/Exports/Verlag/Sekretariat

Definition der Netzwerkfreigaben

Als nächstes müssen wir den Clients Zugriffsrechte auf die Ressourcen einräumen. Dabei eignet sich das Tool Linuxconf als bequemes Hilfsmittel. Dort wählen wir die Registerkarte Config/Networking/ServerTasks/Exported File Systems(NFS) aus und geben zunächst das Datenverzeichnis /usr/Exports/Verlag frei. Anschließend führen wir die Clients an, die einen Zugriff auf das Verzeichnis bekommen sollen. Dazu tragen wir die Hostnamen oder IP-Adressen der fraglichen Rechner, durch Leerzeichen getrennt, in das entsprechende Eingabefeld ein.

Da einzelne Clients unterschiedliche Rechte haben können, stehen mehrere Eingabebereiche zur Verfügung. Jeder Abschnitt entspricht einem unterschiedlichen Rechtebereich, einer so genannten Domain. Dabei können jeweils mehrere Clients derselben Domain angehören und damit identische Rechte besitzen. Mittels Optionsbuttons lassen sich die Rechte der Domain setzen. Dabei ist der Lesezugriff stets erlaubt, das Schreibrecht oder ein Zugriff als root sind gesondert anzugeben. Ebenso können alle Zugriffe auf einen sicheren Port beschränkt werden.

Sobald Sie die getroffenen Einstellungen über die Schaltfläche "Accept" übernehmen, führt Linuxconf das freigegebene Verzeichnis in der Registerkarte Exported File Systems auf. Auch die beiden anderen Verzeichnisse (für Redaktion und Sekretariat) werden anschließend in gleicher Weise für die entsprechenden PCs freigegeben.

Alle getroffenen Einstellungen legt Linuxconf in der Datei /etc/exports ab. In unserem Beispiel sieht sie nach Erledigung der Freigaben folgendermaßen aus:

usr/Exports/Verlag rechner1.firma.de(rw)
usr/Exports/Verlag/Redaktion rechner2.firma.de(rw)
usr/Exports/Verlag/Sekretariat rechner3.firma.de(rw)

Festlegen der Benutzer- und Gruppenrechte

Zwar haben wir jetzt den Zugriff zu den Exported Shares auf einzelne Client-PCs beschränkt. Noch immer kann aber jeder Benutzer - unabhängig von seiner Gruppenzugehörigkeit - auf die Verzeichnisse zugreifen. Dies gilt es in einem zweiten Schritt zu ändern.

Nur die Benutzer Huber, Meier und Schmitz sollen - mit unterschiedlichen Rechten auf die Exported Shares zugreifen. Dazu setzen wir die Dateirechte auf dem Server entsprechend. Am komfortabelsten lässt sich das über einen grafischen Dateimanager wie etwa den Konqueror erledigen. Dort wählen wir mittels rechter Maustaste das Hauptverzeichnis des Verlags an und können nun im Kontextmenü den Eintrag "Eigenschaften" bearbeiten. Dort lassen sich die Zugriffsrechte für den Eigentümer der Datei ("Benutzer"), die zugehörige Benutzergruppe ("Gruppe") sowie alle Anwender aus anderen Benutzergruppen ("Sonstige") festlegen. Hier kann man jeweils das Recht zum Lesen (read, "Einträge anzeigen") , Schreiben (write, "Einträge Schreiben") oder Ausführen (execute, "Öffnen") der Datei oder des Verzeichnisses zuweisen.

In unserem Beispiel gewähren wir der Gruppe Verlag den Lesezugriff auf das eigene (/usr/Exports/Verlag) und alle darunter liegenden Verzeichnisse. Die Mitglieder der Verlagsleitung dürfen also die Unterverzeichnisse Redaktion und Sekretariat einsehen. Andererseits erhalten Benutzer der Gruppen Redaktion und Sekretariat keinerlei Zugriff auf das Verzeichnis des Verlags. Dies setzt man um, indem man "Sonstigen" keine Rechte an dem Hauptverzeichnis des Verlags einräumt. Die Gruppen Redaktion und Sekretariat erhalten jeweils kompletten Zugriff (read, write, execute) auf das eigene Verzeichnis.

Ab sofort muss der Benutzer auf dem Client-PC mit dem entsprechenden Benutzernamen angemeldet sein, um einen Zugriff auf die Exported Shares zu erhalten. Selbst der dortige root-Benutzer bekommt nur eine eingeschränkte Ansicht des Verzeichnisinhaltes zu sehen. Ist der angemeldete Benutzer nicht Mitglied der Gruppe, bleibt ihm generell der Zugriff verwehrt. In diesem Fall wird innerhalb des Verzeichnissymbols ein Schloss dargestellt.

NFS-Zugriff auf den Server

Bevor die berechtigten Clients tatsächlich auf den NFS-Server zugreifen können, müssen sie zunächst entsprechend konfiguriert werden. Dazu legen wir zuerst ein Verzeichnis an, das als Mountpoint dient (mkdir /mnt/Verlag). Es dient quasi als Platzhalter für das auf dem Server freigegebene Directory. An dieser Stelle sollen direkt nach einem Neustart des Systems die Exported Shares zur Verfügung stehen. Um dies zu konfigurieren, bemühen wir erneut Linuxconf. Dort rufen wir diesmal die Registerkarte File Systems/Access NFS Volume auf. Hier geben wir zunächst den Hostnamen oder die IP-Adresse des NFS-Servers an, zu dem eine Verbindung aufgebaut werden soll. Anschließend tragen wir die gewünschten Exported Shares (etwa /usr/Exports/Verlag) sowie den lokalen Mountpoint (mnt/Verlag) ein.

Ob der geplante Zugriff auch funktioniert, lässt sich jetzt durch einen Klick auf die Schaltfläche Mount ausprobieren. Fehlkonfigurationen äußern sich hier durch eine entsprechende Fehlermeldung. Typisch ist etwa die Beschreibung "RPC: Kann nicht empfangen werden; errno = Verbindungsaufbau abgelehnt". Dies liegt meist daran, dass der inetd-Daemon nicht gestartet wurde und damit auch portmap nicht aktiviert werden kann. Ein Blick in die Datei /var/log/messages schafft gegebenenfalls Klarheit über die Fehlerursache. Kommt es zu keiner Fehlermeldung, so können die Einstellungen über die Schaltfläche Accept übernommen werden. Parallel sollte in der Registerkarte "NFS Volume" die mountbare Ressource auftauchen. Alle getroffenen Einstellungen sichert Linuxconf in der Konfigurationsdatei /etc/fstab.

Sobald die Verbindung zum NFS-Server steht, ist der Zugriff auf das freigegebene Verzeichnis nur noch Formsache: Über den Befehl ls /mnt/Verlag lässt sich nun der Verzeichnisinhalt auflisten.

Zusatzrechte auf dem Client

Auch auf dem Client lassen sich zusätzliche Einstellungen für den NFS-Zugriff treffen. Dazu nehmen wir wieder Linuxconf zu Hilfe und rufen den Punkt File Systems/Access NFS Volume/Options auf. Dort können wir über Optionsknöpfe verschiedene Berechtigungen einstellen. Diese beziehen sich automatisch auf alle mountbaren Geräte.

Die Option "ReadOnly" legt fest, dass der Client nur Lesezugriff auf gemountete Geräte erhält. Dagegen deaktiviert diese Einstellung jeglichen Schreibzugriff. Soll jeder Benutzer Freigaben mounten können, ist die Option "User Mountable" zu aktivieren. Anderenfalls kann nur der Benutzer root einen Mountvorgang vornehmen. Um ein Gerät automatisch beim Systemstart zu mounten, gilt es die Option "Not Mount At Boot Time" zu deaktivieren.

Damit ein Benutzer ein ausführbares Programm innerhalb eines verteilten Verzeichnisses aufrufen darf, muss man die Option "No Program Allowed to Execute" abschalten. Der Punkt "No Special Device Support" dient der Steigerung der Systemsicherheit. Hiermit werden alle Zugriffsrechte nicht mehr beachtet, die innerhalb des Verzeichnisses /dev des Clients definiert sind. Die Einstellung "No Setuid Programms Allowed" schließlich unterbindet, dass ein Benutzer einen Dienst im Kontext eines anderen Benutzers starten kann.

Fazit

In der Kommunikation von Linux-Servern mit Clients unter dem gleichen Betriebssystem treten Dank der stringenten und klar zwischen NFS und Dateisystem differenzierten Rechteverteilung keinerlei gravierende Probleme auf. Der Administrator muss sich im Vorfeld lediglich bezüglich der Zugriffsrechte der einzelnen Benutzer und Gruppen ein klares Konzept zurechtlegen.

Leider gilt dies nicht in gleichem Maß auch für den Zugriff von Windows-Clients via Samba auf Linux-Server. Zwar birgt die grundlegende Einrichtung des Servers, wie sie unser Artikel Linux als Windows-Server beschreibt, keine größeren Tücken. Grundlegende Unterschiede in der Konzeption und Verwaltung der Zugriffsrechte unter Windows und Linux führen jedoch im laufenden Betrieb immer wieder zu Schwierigkeiten.

Daher werden wir uns im zweiten Teil des Artikels damit befassen, wie sich auch bei der Interaktion zwischen Linux-Server und Windows-Client der Zugriff bestimmter Rechner und Benutzer einschränken lässt. Zudem nehmen wir dort näher unter die Lupe, wie sich für Windows typische Dateiattribute wie Archiv-, Hidden- und System-Bit auf dem Windows-Server konservieren lassen. (jlu)