|
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
hostsallowundhostsdeny. 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
hostsallowhaben 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
hostsallowgutgeheißen wurde? Hier steht nun, wie Samba die vonhostsallowundhostsdenyaufgestellten Regeln aussortiert:
Wenn nirgendwo
allowoderdeny-Optionen in smb.conf festgelegt sind, wird Samba Verbindungen von jeder Maschine erlauben, die vom System selbst gutgeheißen wird.Sind
hostsallowoderhostsdeny-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
hostsallow-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
hostsdeny-Option für eine Share festgelegt wurde, darf jede nicht auf der Liste stehende Maschine die Share benützen.Wenn beide Optionen,
hostsallowundhostsdeny, 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
hostsallowvorgegeben sind. Der Client muss auf der Listehostsallowaufscheinen und darf nicht auf der Listehostsdenystehen, 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 undbindinterfaceonly. Schauen wir uns zuerst die Optioninterfacesan. 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 Optioninterfacesanfü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
bindinterfacesonlyschließlich unterrichtet den nmbd -Prozess, keine Broadcast-Messages zu akzeptieren, außer solchen Subnetzen, die mit der Optioninterfacesbezeichnet wurden. Beachte, dass das anders ist als bei den Optionenhostsallowundhostsdeny, welche die Maschinen daran hindern, Verbindungen zu Diensten aufzunehmen, aber nicht daran hindern Broadcast-Messages zu erhalten. Der Gebrauch der Optionbindinterfacesonlyist 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
interfacesstring (Liste von IP/Netzmasken Kombinationen)
Setzt die Netzwerk-Interfaces, denen Samba antwortet. Erlaubt Korrektur von Vorgaben.
Systemabhängig
Global
bind
interfaces onlyboolean
Wenn auf
yesgesetzt, wird Samba nur solche Interfaces anbinden, die in der Optioninterfacesgenannt werden.
noGlobal
socket
addressstring (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
hostsallow(manchmalallowhostsgeschrieben) 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
localhostnach der Adresse des Subnetzes anhängten. Einer der am meisten üblichen Fehler beim Versuch, die Optionhostsallowzu 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 (entwederlocalhostoder127.0.0.1).[3][3] Beim Start mit Samba 2.0.5 wird
localhostautomatisch 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.comalle 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 einenetgroupsManual-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 mithostsallow=ALLEXCEPT192.168.110.(beachte den angehängten Punkt).Das Schlüsselwort
ALLzu 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
hostsallowgibt, 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 Optionhostsallowüberschreiben.4.6.1.2 hosts deny
Die Option
hostsdeny(auchdenyhosts) 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 Optionhostsallowoben. 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
hostsallowgibt es keinen Vorgabewert für die Konfigurations-Optionhostsdeny, 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 Optionhostsdenyüberschreiben. Wenn du hosts den Zugriff zu bestimmten Shares verbieten willst, lass beide Optionenhostsallowundhostsdenyin der Section[global]der Konfigurationsdatei weg.4.6.1.3 interfaces
Die Option
interfacesumreiß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
bindinterfacesonlykann verwendet werden, um die Prozesse smbd und nmbd zu zwingen, SMB-Requests nur zu den Adressen zu unterstützen, die von der Optioninterfacesbezeichnet 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
interfacesgenannt 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 Optioninterfaceseingetragen 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 onlyaufyessetzt, 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
socketaddressdiktiert, welche von den Adressen, die mit dem Parameterinterfacesgenannt 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.