
Im Netzwerkprotokoll „Common Internet Filesystem“ (CIFS) gibt es zwei Sicherheitsebenen: user-level und share-level. Allerdings erlauben die von Samba implementierten Sicherheitsmodi mehr Flexibilität, indem sie vier Wege anbieten, die User-Level-Sicherheit umzusetzen, und eine Möglichkeit anbieten, die Share-Level-Sicherheit umzusetzen:
security = user: Erfordert von den Clients die Angabe eines Benutzernamens und eines Passwortes, um sich mit einer Freigabe zu verbinden. Die Samba-Benutzerkonten werden von den System-Benutzerkonten getrennt, aber das Software-Paket libpam-smbpass erlaubt es, System-Benutzer und deren Passwörter mit der Samba-Benutzerdatenbank abzugleichen.
security = domain: Dieser Modus erlaubt es Samba, gegenüber Windows-Clients als ein Primärer Domänen-Controller (PDC), ein Backup-Domänen-Controller (BDC), oder ein Domänen-Mitgliedsserver (DMS) aufzutreten. Weitere Informationen dazu sind unter the section called “Samba als Domänen-Contoller” zu finden.
security = ADS: erlaubt es Samba, einer Active-Directory-Domäne als natives Mitglied beizutreten. Weitere Informationen dazu finden sich unter the section called “Einbinden eines Samba-Active-Directories”.
security = server: dieser Modus ist aus der Zeit übrig geblieben, bevor Samba ein Mitgliedsserver werden konnte, und sollte aus Sicherheitsgründen nicht genutzt werden. Sehen Sie sich den Abschnitt Server Security der Samba-Dokumentation an, um nähere Informationen dazu zu erhalten.
security = share: Erlaubt es Clients, sich ohne die Angabe eines Benutzernamens oder eines Passwortes mit einer Freigabe zu verbinden.
Der bevorzugte Sicherheitsmodus hängt von der Umgebung ab und welche Bedürfnisse der Samba-Server erfüllen muss.
Dieser Abschnitt wird den Samba-Datei- und Druckserver umkonfigurieren, aus the section called “Samba-Datei–Server” und Druckserver, sodass er eine Authentifizierung verlangt.
Installieren Sie zuerst das Software-Paket libpam-smbpass, dass die Systembenutzer mit der Samba-Benutzerdatenbank abgleicht:
sudo apt-get install libpam-smbpass
Note
Wenn die Aufgabe Samba-Server schon während der Installation ausgewählt wurde, ist libpam-smbpass schon installiert.
Bearbeiten Sie die Datei /etc/samba/smb.conf
und ändern Sie im Abschnitt [share] folgendes:
guest ok = no
Starten Sie abschließend Samba neu, damit die Änderungen wirksam werden.
sudo /etc/init.d/samba restart
Wenn Sie sich jetzt mit freigegebenen Verzeichnissen oder Druckern verbinden, wird nach Benutzername und Passwort gefragt.
Note
Wenn Sie ein Netzwerklaufwerk mit einer Freigabe verbinden, sollte “Wiederverbinden beim Anmelden” angewählt sein, damit der Benutzername und das Passwort nur einmal eingegeben werden müssen, sofern das Passwort sich nicht ändert.
Es gibt einige Optionen, die die Sicherheit für jeden freigegebenen Ordner erhöhen können. In dem folgenden Abschnitt werden mit Hilfe des [share]-Beispiels einige übliche Optionen erläutert.
Gruppen definieren eine Sammlung von Rechnern oder Benutzern, welche eine gemeinsame Grundlage für den Zugriff auf bestimmte Netzwerkressourcen haben, und ermöglicht die feine Regulierung des Zugriffs auf diese Ressourcen. Beispielsweise ist eine Gruppe qa definiert und besteht aus den Benutzern freda, danika und rob und eine zweite Gruppe support besteht aus den Benutzern danika, jeremy und vincent. Die betreffende Netzwerkressource ist so eingerichtet, dass die Gruppe qa Zugriff hat, was bedeutet, dass freda, danika, und rob Zugriff haben, aber nicht jeremy oder vincent. Da die Benutzerin danika zu beiden Gruppen, qa und support, gehört, wird sie Zugriff auf alle Ressourcen haben, auf die eine der beiden Gruppen zugreifen kann, während alle anderen Benutzer nur Zugriff auf die Ressourcen haben, die für die Gruppe freigegeben sind, zu der sie gehören.
Standardmäßig sucht Samba nach lokalen Systemgruppen, die in /etc/group
definiert sind, um herauszufinden, welcher Benutzer zu welcher Gruppe gehört. Für weitere Informationen über das Hinzufügen und Entfernen von Benutzern zu Gruppen lesen Sie bitte den Abschnitt Grundlagen.
Wenn Sie Gruppen in der Sambakonfigurationsdatei /etc/samba/smb.conf
definieren, wird dem Gruppennamen ein „@“-Symbol vorangestellt. Um beispielsweise eine Gruppe mit dem Namen sysadmin im entsprechenden Abschnitt der /etc/samba/smb.conf
zu definieren,, wird der Gruppenname als @sysadmin eingetragen.
Dateizugriffsrechte legen explizit fest, welche Rechte ein Rechner auf einen bestimmten Ordner, eine Datei oder eine Menge von Dateien hat. Solche Berechtigungen können durch Bearbeiten der Datei /etc/samba/smb.conf
und dem Festlegen expliziter Berechtigungen für Dateifreigaben eingerichtet werden.
Um beispielsweise bei einer Samba-Freigabe mit dem Namen share der Gruppe qa eine Nur-Lesen-Berechtigung geben, während der Gruppe sysadmin und dem Benutzer vincent auch Schreibzugriff gewährt werden sollen, müssen in der Datei /etc/samba/smb.conf
die folgenden Einträge unterhalb des Eintrags [share] eingefügt werden:
read list = @qa write list = @sysadmin, vincent
Eine weitere mögliche Berechtigung in Samba ist die administrative Berechtigung für eine bestimmte Freigabe. Benutzer, die eine administrative Berechtigung haben, können jede Information lesen, schreiben und verändern, die sich in der Freigabe befindet, in der der Benutzer explizit die administrative Berechtigung erhalten hat.
Um zum Beispiel dem Benutzer melissa administrative Rechte für das Freigabe-Beispiel zu geben, muss die Datei /etc/samba/smb.conf
so geändert werden, dass die folgende Zeile unterhalb des Eintrags [share] eingefügt wird:
admin users = melissa
Nach dem Bearbeiten von /etc/samba/smb.conf
, starten Sie Samba neu, damit die Änderungen Berücksichtigung finden:
sudo /etc/init.d/samba restart
Note
Damit emphasis>read list
Jetzt, da Samba so eingerichtet ist, dass festgelegt ist, welche Gruppen Zugriff auf welchen freigegebenen Ordner haben, müssen die Dateiberechtigungen aktualisiert werden.
Traditionelle Linux-Dateiberechtigungen lassen sich nicht gut auf Windows-NT-„Access Control Lists“ (ACLs) übertragen. Glücklicherweise sind POSIX-ACLs auf Kubuntu-Servern verfügbar und bieten eine feinere Kontrolle. Um zum Beispiel ACLs auf /srv
, einem EXT3-Dateisystem, zu aktivieren, editieren Sie /etc/fstab
und fügen Sie die Option acl hinzu:
UUID=66bcdd2e-8861-4fb0-b7e4-e61c569fe17d /srv ext3 noatime,relatime,acl 0 1
Danach hängen Sie die Partition wieder ein:
sudo mount -v -o remount /srv
Note
Das obige Beispiel geht davon aus, dass /srv
auf einer eigenen Partition liegt. Wenn /srv
oder wo sonst der Pfad zur Freigabe ist, Teil von der Partition /
ist, ist ein Neustart nötig.
Um zur obigen Samba-Konfiguration zur passen, bekommt die sysadmin-Gruppe Lese-, Schreib- und Ausführberechtigungen auf/srv/samba/share
, die qa-Gruppe bekommt Lese- und Ausführberechtigungen und die Dateien gehören dem Benutzer melissa. Geben Sie folgendes in ein Terminal ein:
sudo chown -R melissa /srv/samba/share/ sudo chgrp -R sysadmin /srv/samba/share/ sudo setfacl -R -m g:qa:rx /srv/samba/share/
Note
Der obige Befehl setfacl vergibt die Ausführ-Berechtigungen auf alle Dateien in dem Verzeichnis /srv/samba/share
, was gewünscht sein kann oder auch nicht.
Ein Windows-Client wird anzeigen, dass die neuen Dateiberechtigungen angewandt wurden. Sehen Sie sich die Handbuchseiten (Man Pages) über acl und setfacl für mehr Informationen über POSIX-ACLs an.
Kubuntu bringt ein AppArmor-Sicherheitsmodul mit, welches die Möglichkeit von Zugriffskontrollen bietet. Das vorinstallierte AppArmor-Profil für Samba muss auf die Konfiguration angepasst werden. Für weitere Details über die Benutzung von AppArmor lesen Sie bitte das Wiki (englisch)
Es gibt Standard-AppArmor-Profile für /usr/sbin/smbd
und /usr/sbin/nmbd
, die Samba-Hintergrunddienste, als Teil des Paketes apparmor-profiles. Um das Paket von der Befehlszeile aus zu installieren, geben Sie ein:
sudo apt-get install apparmor-profiles
Note
Das Paket enthält noch Profile für viele weitere Binärdateien.
Standardmäßig sind die Profile für smbd und nmbd im complain-Modus, der es erlaubt, dass Samba ohne Anpassung der Profile arbeitet und nur Fehler protokolliert. Um das smbd-Profil in den enforce-Modus zu versetzen und Samba dazu zu bringen, das er so arbeitet wie gewollt, muss das Profil so angepasst werden, dass alle freigegebenen Verzeichnisse aufgelistet werden.
Editieren Sie /etc/apparmor.d/usr.sbin.smbd
und fügen Sie die Informationen für [share] aus dem Dateiserver-Beispiel hinzu:
/srv/samba/share/ r, /srv/samba/share/** rwkix,
Versetzen Sie das Profil jetzt in den Status enforce und laden Sie es neu:
sudo aa-enforce /usr/sbin/smbd cat /etc/apparmor.d/usr.sbin.smbd | sudo apparmor_parser -r
Nun sollte es im freigegebenen Ordner möglich sein zu lesen, zu schreiben und Programme normal auszuführen. smbd wird dabei nur auf die eingestellten Dateien und Ordner Zugriff haben. Man sollte darum sicher gehen, dass Samba dementsprechend eingerichtet ist. Fehler werden in der Datei /var/log/syslog
protokolliert.
Für eine tiefergreifende Samba-Konfiguration findet man hier weitere Informationen: Samba-HOWTO-Sammlung (englisch)
Dieses Handbuch steht auch in gedruckter Form zur Verfügung.
Using Samba vor O’Reilly ist auch eine gute Referenz.
Kapitel 18 der Samba-HOWTO-Sammlung (englisch) widmet sich dem Thema Sicherheit.
Weitere Informationen über Samaba und ACLs finden sich hier: Samba-ACLs-Webseite (englisch)