Absichern eines Samba-Datei- und Druckerservers

Samba-Sicherheitsmodi

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.

Security = User

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.

Freigabesicherheit

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

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

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.

Samba-AppArmor-Profil

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.

Ressourcen