Samba fürs Windows-Netzwerk

Einen Dateiserver mit Samba Windows-Clients zur Verfügung zu stellen, ist keine grosse Kunst. Die Teilnahme am Active Directory schon eher.

Artikel erschienen in Swiss IT Magazine 2007/13

     

Seit 1992 liefert Samba der freien Softwarewelt Unterstützung für SMB/CIFS und damit Zugang zur Windows-Welt der Datei- und Druckerteilung. Doch hinkt Samba der Funktionalität des Originals immer hinterher, was nicht am mangelnden Willen der Entwickler, sondern an der Geheimniskrämerei seitens Microsoft um ihre Client-Server-Protokolle liegt. Dafür kann Samba einige Tricks, die Windows nicht beherrscht. Wir zeigen, was geht und was nicht.


Samba als PDC

Mit NT4 Server hat Microsoft den PDC, den primären Domänen-Controller eingeführt. Ein Domänen-Controller ist ein Rechner, welcher zentral alle Benutzer-Accounts und Rechner in seinem Netz verwaltet. Jeder Arbeitsplatz muss von einem dazu berechtigten Administrator im Windows-Domänen-Netz (nicht zu verwechseln mit einer DNS-Domäne!) eingetragen werden. Damit «unterwirft» sich Windows auf dem Client dem Domänen-Controller, worauf dann letzterer sozusagen die absolute Kontrolle über den Client hat. Er bestimmt unter anderem, wer sich wann einloggen darf, wer welche Programme installieren darf oder wer was ausführen kann.


Bereits seit einiger Zeit kann Samba die Tätigkeiten eines PDC übernehmen. Der Code stammt vom Samba-TNG-Projekt, das sich vom ursprünglichen Samba-Projekt abgespalten hatte. Ziel dieses Fork war es, einen vollständigen Primary Domain Controller in Samba implementieren zu können. Grosse Teile der TNG-Sourcen sind inzwischen in das klassische Samba zurückgeflossen, sodass Samba aktuell durchaus einen Windows-PDC ersetzen kann.



Der Vorteil eines Samba-PDC liegt darin, dass man die dahinterliegende Authentifizierungsdatenbank (fast) frei wählen kann: Samba kann Passworte per PAM, LDAP, importierter Passwortliste aus NIS oder /etc/passwd und aus Datenbanken beziehen. Den Passwort-Dialog zwischen Windows-Client und Samba-Server betrifft das Back-end nicht.


Allerdings sollte man vorsichtig sein und je nach zu erwartendem Client-Betriebssystem einige Default-Einstellungen von Windows bearbeiten. Standardmässig erfolgt in einem Windows-Netz der Passwortaustausch per LANMAN oder NTLM. Samba bietet die Möglichkeit, diese beiden unsicheren Mechanismen zu deaktivieren, indem man in der Konfiguration sowohl lanman auth = no als auch ntlm auth = no setzt. Allerdings kann es dann Schwierigkeiten mit Windows-Rechnern vor Windows 98 SP2 geben.


Samba und ADS

Mit der Einführung von Windows 2000 Server hat Microsoft auch den Schritt in Richtung Directory Server (LDAP) gemacht und Active Directory, kurz AD, eingeführt. Mit AD hat ein Domänen-Administrator seine Workstations noch mehr unter Kontrolle. Selbst das Aussehen des Arbeitsplatzes, das Verhalten von einigen Programmen wie dem Internet Explorer, Anti-Viren-Software oder der Firewall kann er ebenso steuern wie die automatische Installation von Updates oder Microsoft-Programmen. Dass es sehr schwer ist, eine solche Funktionalität rein mit Reverse Engineering nachzubilden, leuchtet ein und ist der Grund, weshalb Samba-3.0.x-Versionen nicht als vollständiger Active-Directory-Server-Ersatz oder AD-Backup-Server verwendet werden können, auch wenn Samba sich grundsätzlich gegen LDAP authentifizieren kann.



Die Bindung von Samba an einen bereits bestehenden AD-Server klappt jedoch hervorragend – vorausgesetzt, man hat beim Übersetzen von Samba entsprechende Optionen vorgegeben. Die meisten vorkonfigurierten Samba-Pakete haben dies jedoch.


Einlass gegen Tickets

Die Authentifizierung eines Windows Client in einer AD-Domäne erfolgt mittels Kerberos. Kerberos ist ein vom MIT entwickeltes Authentifizierungssystem zum Single-Sign-On. Ein Client meldet sich an den Kerberos-Server an und authentifiziert sich. War die Authentifizierung erfolgreich, bekommt der Client vom Kerberos-Server ein Ticket mit einer bestimmten Gültigkeitsdauer. Innerhalb dieser Gültigkeitsdauer kann sich der Client mit Hilfe seines Tickets an anderen Kerberos-fähigen Systemen anmelden und darauf zugreifen. Er muss sich nicht mehr mit Benutzername und Passwort anmelden. Ein «Vorzeigen» seines Tickets genügt.


Auch Samba 3.0.x ist Kerberos-fähig und kann mit den Tickets, die der AD-Server ausgestellt hat, umgehen. Dazu muss der Server, auf dem Samba läuft, in die Kerberos-Umgebung (Realm) aufgenommen werden und anschliessend der Samba-Dienst mit Hilfe eines Administrator-Accounts am Active Directory angemeldet werden. In der Konfigurationsdatei von Samba (smb.conf) sollte es genügen, folgende Zeilen zu ergänzen:




security = ADS

realm = AD.DOMAENE

wins server = WINS.SERVER




In der Konfigurationsdatei von Kerberos muss man den Kerberos-Realm und den Kerberos-Ticket-Server eintragen. Folgende Zeilen sollten angepasst werden:

default_realm = AD.DOMAENE

kdc = IP ADS
admin_server = IP ADS

Um gleich auszuprobieren, ob Kerberos funktioniert, kann sich der Admin ein Ticket holen, mit dem er danach den Samba-Server am AD ohne Eingabe seines Passwortes anmelden kann. Dies geschieht auf den meisten Systemen mit kinit PRINCIPAL, wobei PRINICPAL der Name des Benutzers (oder Dienstes) ist, gefolgt (je nach Konfiguration) vom Kerberos-Realm. Letzteres muss bei AD immer die AD-Domäne sein. Hat man sein gültiges Ticket (klist zeigt dies an), kann man den Samba-Dienst am AD anmelden: net ads join -U BENUTZER reicht dazu aus.


Unix für Windows-Nutzer

Umgekehrt bietet Samba auch die Möglichkeit, Windows-Benutzer auf Unix-Ebene bekanntzugeben. Damit werden unter Unix nicht bekannte Benutzer aus der Windows-Welt übernommen. Konfiguriert wird dieser zusätzliche Dämon namens winbind auch in der Samba-Konfigurationsdatei smb.conf. Man teilt winbind mit, in welchem UID- und GID-Bereich das Mapping auf Unix-User erfolgt:



idmap uid = 10000-20000

winbind gid = 10000-20000




Meldet sich nun ein Windows-Benutzer zum ersten Mal unter Unix an, mappt winbind seinen Numerical Relative Identifier (RID) aus der Windows-Welt auf die UID der Unix-Welt und merkt sich dann dieses Mapping in einer tdb-Datenbank. Analog dazu erfolgt das Mapping der Gruppen. Wichtig ist hierbei, dass ein freier UID/GID-Bereich verwendet wird, da sonst unter Umständen nicht berechtigte Benutzer auf Dateien anderer Zugriff haben könnten. Zum differenzierten Zugriff kann Samba auch noch die ACLs von NTFS auf POSIX-ACLs – sofern vom Betriebs- und Filesystem unterstützt – mappen, um Rechte und andere Dateiattribute auf das darunter liegende Unix-Dateisystem abzubilden. Allerdings sind Microsofts Dateiattribute umfangreicher, und somit können einige wenige und sehr selten benutzte Attribute nicht verwendet werden.


Auf Unix-Seite sollte mit NFS-Exporten von mit Samba exportierten Laufwerken vorsichtig umgegangen werden, da einige Unices keine ACLs über NFS beherrschen. In NFSv4 ist jedoch die komplette Abbildung von NTFS ACLs vorgesehen. Ausser Suns ZFS gibt es aber kein Unix-Dateisystem, welches mehr als die vom POSIX-Standard vorgesehenen ACLs unterstützt.


User suchen

Das Unix-System muss noch wissen, wo es nebst /etc/passwd nach einem Benutzer suchen soll, was sich über die Datei /etc/nsswitch.conf erledigen lässt:



passwd: files winbind

shadow: files

group: files winbind




Hierbei sollte aber beachtet werden, dass bereits vorhandene Dienste wie LDAP nicht rausgelöscht werden. Ausserdem sollte die Reihenfolge der Einträge der Wahrscheinlichkeit eines Treffers entsprechen – files sollte aber trotzdem an erster Stelle stehen bleiben. Liegen die meisten Benutzer in einem LDAP-Verzeichnis und nur wenige sollen aus einem ADS Server übernommen werden, sollte der Eintrag winbind als letzter in der nsswitch.conf stehen.


Vorteile für Unix-User

Neben dem Verschmelzen verschiedener Plattformen bietet Samba für Unix-Anwender, wie bereits erwähnt, die eine oder andere praktische Möglichkeit.


Ein sehr grosser Vorteil, einen Samba-Server als Fileserver zu verwenden, ist die nahezu unerschöpfliche Möglichkeit an Aktionen, die beispielsweise bei einem Zugriff auf eine Datei oder bei der Anmeldung eines Benutzers erfolgen können. So ist es zum Beispiel möglich, beim Anmelden eines Benutzers zu überprüfen, ob ein Profilverzeichnis für Windows in seinem Home existiert oder ob der Benutzer vielleicht seine Quota überschritten hat, bevor der erste lesende oder schreibende Zugriff erfolgt ist. Denn Windows reagiert seltsam und undeterministisch, wenn es seine Daten in das Profilverzeichnis nicht oder nicht vollständig schreiben kann. Dies kann bei einer Überschreitung der Quota passieren. Mit dem genannten Mechanismus kann der Benutzer sofort informiert werden, noch bevor Windows überhaupt zugreift.



Auch lässt sich ein On-Demand Virenschutz (Anti-Virus-Software auf dem Server vorausgesetzt) realisieren. Greift ein Benutzer auf eine Datei zu, wird vom Samba-Server erst einmal ein Script mit einem Virencheck ausgeführt. Dies sollte für den Benutzer kaum merkbar sein – auch andere Fileserver wie Novell- oder Windows- Server verwenden einen ähnlichen Mechanismus. Ebenfalls liesse sich eine Datei, auf die ein Benutzer zugreifen will, just in diesem Moment vom Server erzeugen – etwa wenn ein Benutzer auf eine Word-Vorlage im Corporate Design zugreift und beispielsweise sein Name als Autor eingetragen werden soll.


All diese Aktionen werden mit der VFS-Schnittstelle (Virtual File System) realisiert. Diese definiert, wie Samba auf eine geteilte Datei zugreifen soll. In der Regel wird beim Zugriff direkt von der Platte gelesen. Mit Hilfe von VFS kann aber ein anderes Modul, Script oder Programm sozusagen zwischen Platte und Benutzerzugriff gelegt werden.


ADS als Zukunft

Der nächste grosse Meilenstein in der Samba-Entwicklung wird die Möglichkeit sein, mit Samba 4 (Bild) die Software als Domänen-Controller einer AD-Domäne einsetzen zu können – zumindest was die Authentifizierung betrifft. Zu diesem Zweck wird Samba 4 unter anderem einen eigenen Directory-Server sowie eine spezielle Kerberos-Implementierung mitbringen. Eine komplette Nachbildung der Funktionalität von Microsofts Active Diectory wird man nach jetzigem Stand aber nicht erwarten können. Wer also komplexere Szenarien oder komplizierte Benutzer-, Rechner- oder Programm-Policies braucht, wird wohl um einen Windows Server nicht herum kommen. Dafür kann mit Unterstützung für SMB2 von Windows Vista sowie vollständiger Unterstützung von NTFS ACLs und Alternate Data Streams gerechnet werden.


Der Autor

Gregor Longariva (longariva@softbaer.de) ist Solaris-Administrator am Rechenzentrum der Universität Erlangen-Nürnberg und Spezialist für die Unix-Betriebssysteme Solaris, OpenBSD und Linux.




Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Wieviele Fliegen erledigte das tapfere Schneiderlein auf einen Streich?
GOLD SPONSOREN
SPONSOREN & PARTNER