Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly
1st Edition November 1999
1-56592-449-5, Order Number: 4495
416 pages, $34.95

Buy the hardcopy

Inhaltsverzeichnis


Previous: 4.5 Disk Share Konfiguration Kapitel 4
Disk Shares
Next: 4.7 Virtuelle Server
 

4.6 Netzwerk-Optionen mit Samba

Wenn Samba auf einer multi-homed Maschine (das bedeutet eines auf mehreren Subnetzen) läuft oder wenn du sogar eine Sicherheitsregel auf deinem eigenen Subnetz einrichten willst, solltest du einen näheren Blick auf die Netzwerk-Konfigurationsmöglichkeiten werfen:

Für die Zwecke dieser Übung lasst uns davon ausgehen, dass unser Sambaserver in einem Netzwerk mit mehr als einem Subnetz hängt. Die Maschine kann genau zwei Subnetze, das 192.168.220.* und das 134.213.233.* betreiben. Hier sind unsere Zusätze zur laufenden Konfigurationsdatei für die Netzwerk Konfigurations-Optionen:

[global]
	netbios name = HYDRA
	server string = Samba %v on (%L)
	workgroup = SIMPLE

	#  Networking configuration options
	hosts allow = 192.168.220. 134.213.233. localhost
	hosts deny = 192.168.220.102
	interfaces = 192.168.220.100/255.255.255.0 \
					134.213.233.110/255.255.255.0
	bind interfaces only = yes

[data]
	path = /home/samba/data
	guest ok = yes
	comment = Data Drive
	volume = Sample-Data-Drive
	writeable = yes
	

Sprechen wir zuerst über die Optionen hosts allow und hosts deny. Diese Optionen klingen vertraut, und du denkst vielleicht an die Dateien hosts.allow und hosts.deny, die auf vielen Unix-Systemen im Verzeichnis /etc liegen. Der Zweck dieser Optionen ist mit diesen Dateien identisch; sie verschaffen ein Mittel der Sicherheit, indem sie Verbindungen von anderen Hosts auf Grund ihrer IP-Adressen erlauben oder verbieten. Warum nur verwenden die Dateien hosts.allow und hosts.deny dieselben nicht? Weil es auf dem Server Dienste geben könnte, die du anderen zugänglich machen willst, ohne ihnen Zugriff auf Sambas Disk- oder Drucker-Shares zu gewähren.

Mit der oben genannten Option hosts allow haben wir eine verstümmelte IP-Adresse genannt: 192.168.220. (Beachte, dass hier noch eine dritte Periode steht; es fehlt nur die vierte Nummer.) Das ist dasselbe, wie wenn man sagt: "Alle Hosts auf dem 192.168.220 Subnetz." Ja und dann haben wir in einer hosts deny -Zeile explizit festgelegt, dass 192.168.220.102 nicht zugreifen darf.

Du wunderst dich vielleicht: warum wird 192.168.220.102 verboten, selbst wenn es noch im Subnetz von der Option hosts allow gutgeheißen wurde? Hier steht nun, wie Samba die von hosts allow und hosts deny aufgestellten Regeln aussortiert:

  1. Wenn nirgendwo allow oder deny -Optionen in smb.conf festgelegt sind, wird Samba Verbindungen von jeder Maschine erlauben, die vom System selbst gutgeheißen wird.

  2. Sind hosts allow oder hosts deny -Optionen in der [global] Section der smb.conf definiert, so gelten sie für alle Shares, selbst wenn die Shares eine Option zum Überschreiben definiert haben.

  3. Wenn nur eine hosts allow -Option für eine Share festgelegt wurde, dürfen nur die angeführten Hosts die Share benützen. Alle anderen haben keinen Zugriff.

  4. Wenn nur eine hosts deny -Option für eine Share festgelegt wurde, darf jede nicht auf der Liste stehende Maschine die Share benützen.

  5. Wenn beide Optionen, hosts allow und hosts deny, definiert wurden, muss ein Host in der Erlaubnisliste aufscheinen und nicht in der Verbotsliste (in jeder Form) stehen, damit er ordnungsgemäß auf die Share zugreifen kann. Andernfalls erhält er keine Erlaubnis.

    WARNUNG: Stell sicher, dass du nicht explizit einem Host Zugriff auf eine Share gewährst, aber dann dem ganzen Subnetz den Zugriff verbietest, dem der Host angehört.

Schauen wir uns ein anderes Beispiel über diesen letzten Punkt an. Überlege die folgenden Optionen:

hosts allow = 111.222.
hosts deny = 111.222.333.

In diesem Fall bekommen nur die Hosts, die zum Subnetz 111.222.*.* gehören, Zugriff auf die Samba-Shares. Jedoch, wenn ein Client zum Subnetz 111.222.333.* gehört, darf er nicht zugreifen, selbst wenn er noch die Qualifikationen erfüllt, die von hosts allow vorgegeben sind. Der Client muss auf der Liste hosts allow aufscheinen und darf nicht auf der Liste hosts deny stehen, damit er sich ordnungsgemäß Zugang zu einer Samba-Share verschafft. Wenn ein Computer einen Zugriff auf eine Share versucht, zu der er keinen Zugang hat, wird er eine Fehlermeldung bekommen.

Die anderen Optionen, die wir genannt haben, sind die interfaces -Adressen und bind interface only. Schauen wir uns zuerst die Option interfaces an. Samba sendet als Vorgabe Daten nur vom primären Netzwerk-Interface, welches in unserem Beispiel das Subnetz 192.168.220.100 ist. Wenn wir gerne Daten zu mehr als einem Interface senden würden, müssen wir die ganze Liste mit der Option interfaces anführen. Im vorherigen Beispiel verbanden wir Samba mit beiden Subnetzen (192.168.220 und 134.213.233), auf welchen die Maschine arbeitet, indem wir die Adresse des anderen Netzwerk-Interfaces angaben: 134.213.233.110. Wenn du mehr als ein Interface auf deinem Computer hast, solltest du immer diese Option setzen, da es keine Garantie gibt, dass das primäre Interface, welches Samba wählt, das richtige ist.

Die Option bind interfaces only schließlich unterrichtet den nmbd -Prozess, keine Broadcast-Messages zu akzeptieren, außer solchen Subnetzen, die mit der Option interfaces bezeichnet wurden. Beachte, dass das anders ist als bei den Optionen hosts allow und hosts deny, welche die Maschinen daran hindern, Verbindungen zu Diensten aufzunehmen, aber nicht daran hindern Broadcast-Messages zu erhalten. Der Gebrauch der Option bind interfaces only ist ein Weg, sogar Datagramme von fremden Subnetzen auszuschließen, die vom Sambaserver erhalten wurden. Zusätzlich weist sie den smbd -Prozess an, nur die von der Option interfaces gelieferte Interface-Liste einzubinden. Das beschränkt die Netzwerke, die Samba bedient.

4.6.1 Netzwerk-Optionen

Die von uns oben vorgestellten Netzwerk-Optionen sind in Tabelle 4.5 gesammelt.


Tabelle 4.5: Optionen zur Netzwerk-Konfiguration

Option

Parameter

Funktion

Vorgabewert

Bereich

hosts allow (allow hosts)

string (Liste von Hostnamen)

Nennt die Maschinen, die sich mit Samba verbinden können.

keiner

Share

hosts deny (deny hosts)

string (Liste von Hostnamen)

Nennt die Maschinen, die sich nicht mit Samba verbinden können.

keiner

Share

interfaces

string (Liste von IP/Netzmasken Kombinationen)

Setzt die Netzwerk-Interfaces, denen Samba antwortet. Erlaubt Korrektur von Vorgaben.

Systemabhängig

Global

bind

interfaces only

boolean

Wenn auf yes gesetzt, wird Samba nur solche Interfaces anbinden, die in der Option interfaces genannt werden.

no

Global

socket

address

string (IP-Adresse)

Setzt IP-Adresse zur Überwachung, zum Gebrauch mit mehreren virtuellen Interfaces auf einem Server.

keiner

Global

4.6.1.1 hosts allow

Die Option hosts allow (manchmal allow hosts geschrieben) bestimmt die Maschinen, welche die Erlaubnis zum Zugriff auf Shares des Sambaservers haben, geschrieben als eine Liste von Maschinennamen oder ihren IP-Adressen, wobei sie mit Beistrichen oder Leerzeichen getrennt werden. Du kannst ein ziemliches Stück Sicherheit gewinnen, indem du einfach die Adresse deines LAN-Subnetzes in diese Option platzierst. Wir legten z.B. das Folgende in unserer Zeile fest:

hosts allow = 192.168.220. localhost

Beachte, dass wir localhost nach der Adresse des Subnetzes anhängten. Einer der am meisten üblichen Fehler beim Versuch, die Option hosts allow zu verwenden, ist das versehentliche Verbot gegenüber dem Sambaserver, mit sich selbst zu kommunizieren. Das Programm smbpasswd muss gelegentlich als Client den Sambaserver aufrufen, um ein verschlüsseltes Passwort eines Users zu ändern. Zusätzlich braucht die Verteilung des lokalen Browsings den Zugriff auf den lokalen Host. Wenn diese Option eingeschaltet und die Adresse des Localhost nicht angegeben ist, werden die lokal erzeugten Pakete, welche die Änderung des verschlüsselten Passworts abfragen, verworfen, und die Verteilung des Browsings wird nicht richtig funktionieren. Um dies zu vermeiden, erlaube explizit den Gebrauch der Loopback-Adresse (entweder localhost oder 127.0.0.1).[3]

[3] Beim Start mit Samba 2.0.5 wird localhost automatisch erlaubt, außer er wird explizit gesperrt.

Du kannst jede der folgenden Formate für diese Option angeben:

  • Hostnamen wie ftp.example.com.

  • IP-Adressen wie 130.63.9.252.

  • Domain-Namen, welche von individuellen Hostnamen unterschieden werden können, weil sie mit einem Punkt beginnen. Es repräsentiert z.B. .ora.com alle Maschinen mit der Domain ora.com.

  • Netzgruppen, die mit einem AT-Zeichen beginnen, so wie @printerhosts. Netzgruppen finden sich auf Systemen, auf denen Gelbe Seiten/NIS oder NIS+ eingerichtet sind, aber sonst selten. Wenn auf deinem System Netzgruppen unterstützt werden, sollte eine netgroups Manual-Page existieren, die sie genauer beschreibt.

  • Subnetze, die mit einem Punkt enden. Z.B. umfasst 130.63.9. alle Maschinen, deren IP-Adresse mit 130.63.9 beginnt.

  • Das Schlüsselwort ALL, das allen Clients Zugriff gestattet.

  • Das Schlüsselwort EXCEPT, gefolgt von einem oder mehr Namen, IP-Adressen, Domain-Namen, Netzgruppen oder Subnetzen. Du könntest z.B. festlegen, dass Samba alle Hosts erlaubt, ausgenommen die auf dem Subnetz 192.168.110 mit hosts allow = ALL EXCEPT 192.168.110. (beachte den angehängten Punkt).

Das Schlüsselwort ALL zu verwenden, ist meist immer eine schlechte Idee, weil es bedeutet, dass jeder deine Dateien auf jedem Netzwerk anschauen kann, wenn er den Namen deines Servers errät.

Beachte, dass es keinen Vorgabewert für die Konfigurations-Option hosts allow gibt, obgleich der vorgegebene Ablauf der Aktion in dem Fall, dass keine Option festgelegt ist, gilt, den Zugriff von allen Quellen zu erlauben. Zusätzlich, wenn du diese Option in der Section [global] der Konfigurationsdatei festgelegt hast, wird sie jede in Shares definierte Option hosts allow überschreiben.

4.6.1.2 hosts deny

Die Option hosts deny (auch deny hosts) bezeichnet Maschinen, denen der Zugriff auf eine Share nicht erlaubt ist, geschrieben als eine Liste von Maschinen-Namen oder ihrer IP-Adressen, mit Komma oder Leerzeichen getrennt. Verwende dasselbe Format zum Festlegen der Clients wie die Option hosts allow oben. Um z.B. den Zugriff auf den Server für jedermann außer example.com zu verbieten, könntest du schreiben:

hosts deny = ALL EXCEPT .example.com

Wie bei hosts allow gibt es keinen Vorgabewert für die Konfigurations-Option hosts deny, obwohl der vorgegebene Ablauf der Aktion in dem Fall, dass keine Option festgelegt ist, gilt, den Zugriff von allen Quellen zu erlauben. Und wiederum, wenn du diese Option in der Section [global] der Konfigurationsdatei festgelegt hast, wird sie jede in Shares definierte Option hosts deny überschreiben. Wenn du hosts den Zugriff zu bestimmten Shares verbieten willst, lass beide Optionen hosts allow und hosts deny in der Section [global] der Konfigurationsdatei weg.

4.6.1.3 interfaces

Die Option interfaces umreißt die Netzwerk-Adressen, von denen du willst, dass sie den Sambaserver erkennen und ansprechen. Diese Option ist gut geeignet, wenn du einen Computer hast, der zu mehr als einem Netzwerk gehört. Ist diese Option nicht gesetzt, so sucht Samba beim Start nach dem primären Netzwerk-Interface auf dem Server (üblicherweise die erste Ethernet-Karte) und konfiguriert sich selbst, nur auf diesem einen Subnetz zu operieren. Wenn der Server für mehr als ein Subnetz eingerichtet ist und du verwendest diese Option nicht, wird Samba nur auf dem ersten angetroffenen Subnetz arbeiten. Du musst diese Option verwenden, damit du Samba zwingst, die anderen Subnetze auf deinem Netzwerk zu unterstützen.

Der Wert dieser Option ist ein Satz oder sind mehrere Sätze von IP-Adresse/Netzmaske -Paaren, wie die folgenden:

interfaces = 192.168.220.100/255.255.255.0 192.168.210.30/255.255.255.0

Du kannst wahlweise eine Bitmaske im CIDR-Format anführen, wie folgt:

interfaces = 192.168.220.100/24 192.168.210.30/24

Die Bitmasken-Nummer nennt die erste Anzahl an Bits, die in der Netzmaske gesetzt sind. Die Nummer 24 z.B. bedeutet, dass die ersten 24 (von 32) Bits in der Bitmaske aktiviert werden, das ist dasselbe, wie wenn man 255.255.255.0 schreibt. Gleichfalls würde 16 255.255.0.0 und 8 255.0.0.0 entsprechen.

Diese Option könnte nicht korrekt arbeiten, wenn du DHCP verwendest.

4.6.1.4 bind interfaces only

Die Option bind interfaces only kann verwendet werden, um die Prozesse smbd und nmbd zu zwingen, SMB-Requests nur zu den Adressen zu unterstützen, die von der Option interfaces bezeichnet wurden. Der Prozess nmbd bindet normalerweise an das Interface für alle Adressen (0.0.0.0) auf den Ports 137 und 138, es erlaubt, Broadcasts von überall her zu erhalten. Nun, du kannst dieses Verhalten mit dem Folgenden überschreiben:

bind interfaces only = yes

Das wird beide Sambaprozesse veranlassen, Paktete zu ignorieren, deren ursprüngliche Adresse nicht mit der (den) Broadcast-Adresse(n) übereinstimmt, die von der Option interfaces genannt wurde, eingeschlossen die Broadcast-Pakete. Bei smbd wird diese Option Samba veranlassen, keine Dateianfragen an andere Subnetze als solche zu unterstützen, die in der Option interfaces eingetragen sind. Du solltest den Gebrauch dieser Option vermeiden, wenn du temporäre Netzwerkverbindungen erlauben willst, so wie solche, die durch SLIP oder PPP erzeugt werden. Diese Option wird sehr selten gebraucht und sollte nur von Experten benützt werden.

Wenn du bind interfaces only auf yes setzt, solltest du die Adresse des Localhost (127.0.0.1) zur "interfaces"-Liste hinzufügen. Sonst kann smbpasswd den Server nicht kontaktieren, wenn es seinem vorgegebenen Modus benützt, ein Passwort zu ändern.

4.6.1.5 socket address

Die Option socket address diktiert, welche von den Adressen, die mit dem Parameter interfaces genannt werden, Samba für Verbindungen auflisten sollte. Samba akzeptiert Verbindungen auf allen Adressen, die von der Vorgabe genannt werden. Wenn diese Option in einer smb.conf -Datei verwendet wird, wird sie Samba zwingen, nur eine IP-Adresse anzuführen. Ein Beispiel:

interfaces = 192.168.220.100/24 192.168.210.30/24
socket address = 192.168.210.30

Diese Option ist ein Werkzeug für Programmierer, und wir empfehlen, dass du sie nicht verwendest.


Previous: 4.5 Disk Share Konfiguration Next: 4.7 Virtuelle Server
4.5 Disk Share Konfiguration Buch-Index (engl.) 4.7 Virtuelle Server

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.