Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly1st Edition November 1999 1-56592-449-5, Order Number: 4495 416 pages, $34.95 |
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 = yesSprechen wir zuerst über die Optionen
hosts
allow
undhosts
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 vonhosts
allow
undhosts
deny
aufgestellten Regeln aussortiert:
Wenn nirgendwo
allow
oderdeny
-Optionen in smb.conf festgelegt sind, wird Samba Verbindungen von jeder Maschine erlauben, die vom System selbst gutgeheißen wird.Sind
hosts
allow
oderhosts
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.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.Wenn nur eine
hosts
deny
-Option für eine Share festgelegt wurde, darf jede nicht auf der Liste stehende Maschine die Share benützen.Wenn beide Optionen,
hosts
allow
undhosts
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 Listehosts
allow
aufscheinen und darf nicht auf der Listehosts
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 undbind
interface
only
. Schauen wir uns zuerst die Optioninterfaces
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 Optioninterfaces
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 Optioninterfaces
bezeichnet wurden. Beachte, dass das anders ist als bei den Optionenhosts
allow
undhosts
deny
, welche die Maschinen daran hindern, Verbindungen zu Diensten aufzunehmen, aber nicht daran hindern Broadcast-Messages zu erhalten. Der Gebrauch der Optionbind
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 Optioninterfaces
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
(manchmalallow
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. localhostBeachte, dass wir
localhost
nach der Adresse des Subnetzes anhängten. Einer der am meisten üblichen Fehler beim Versuch, die Optionhosts
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 (entwederlocalhost
oder127.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:
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 einenetgroups
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
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 mithosts
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 Optionhosts
allow
überschreiben.4.6.1.2 hosts deny
Die Option
hosts
deny
(auchdeny
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 Optionhosts
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.comWie bei
hosts
allow
gibt es keinen Vorgabewert für die Konfigurations-Optionhosts
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 Optionhosts
deny
überschreiben. Wenn du hosts den Zugriff zu bestimmten Shares verbieten willst, lass beide Optionenhosts
allow
undhosts
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.0Du kannst wahlweise eine Bitmaske im CIDR-Format anführen, wie folgt:
interfaces = 192.168.220.100/24 192.168.210.30/24Die 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 Optioninterfaces
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 = yesDas 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 Optioninterfaces
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
aufyes
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 Parameterinterfaces
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.30Diese Option ist ein Werkzeug für Programmierer, und wir empfehlen, dass du sie nicht verwendest.
© 1999, O'Reilly & Associates, Inc.