[[start|zurück]]
====== SMB / CIFS / Samba – Grundlagen ======
SMB (**Server Message Block**) ist ein Dateifreigabe- und Kommunikationsprotokoll
von Microsoft Windows.
Es ermöglicht:
* Datei- und Ordnerfreigaben
* Druckerfreigaben
* Benutzer- und Rechteverwaltung
* Netzwerkanmeldungen
* Kommunikation im Windows-Netzwerk
Unter Linux wird SMB über die **Samba-Software** bereitgestellt.
===== 1. SMB vs. CIFS ======
Viele verwechseln diese Begriffe:
* **SMB** ist das grundlegende Protokoll (besteht seit den 1980ern)
* **CIFS** ist eine alte Implementierung von SMB aus Windows NT-Zeiten
* Heute nutzt man **SMB2** oder **SMB3**, nicht CIFS
Moderne Netzwerke:
* SMB3 Standard
* CIFS gilt als veraltet und unsicher
---
===== 2. SMB – Ports ======
^ Port ^ Protokoll ^ Beschreibung ^
| **445/TCP** | SMB | aktueller Standard |
| **137/UDP** | NetBIOS Name Service | Legacy |
| **138/UDP** | NetBIOS Datagram | Legacy |
| **139/TCP** | NetBIOS Session | Legacy |
Moderne Systeme nutzen primär **445/TCP**.
---
===== 3. Samba – SMB unter Linux ======
Samba ist eine freie Implementierung von SMB und bietet:
* Datei- und Ordnerfreigaben
* Active Directory kompatible Domain Controller (AD DC)
* Integration in LDAP, Kerberos, AD
* NTFS-ähnliche Berechtigungen
* Druckservices (historisch)
Wichtige Dienste in Samba:
* **smbd** → Datei- und Druckdienste
* **nmbd** → NetBIOS (legacy)
* **winbind** → AD/LDAP-Integration
* **samba** → AD DC Dienst
---
===== 4. Aufbau eines SMB-Netzes ======
Schema:
.------------------------.
|Windows / Linux Clients |
'--------+---------------'
|
v
SMB3 (Port 445)
|
v
.--------------.
| Samba Server |
'-----+--------'
|
v
Unix-Dateisystem
---
===== 5. Konfigurationsdatei (Linux) ======
/etc/samba/smb.conf
Struktur:
[global]
... globale Einstellungen ...
[share-name]
path = /data/share
browsable = yes
read only = no
valid users = @gruppe
---
===== 6. Benutzer & Authentifizierung ======
Samba kann Benutzer verwalten über:
* lokale Linux-Benutzer
* LDAP-Datenbanken
* Active Directory
* Passwörter in `smbpasswd`
* `tdbsam` oder `ldapsam`
Moderne Setups:
* Samba greift **vollständig auf LDAP-Benutzer** zu
* keine lokalen Benutzer nötig
* Authentifizierung via Kerberos oder LDAP Bind
---
===== 7. Rechte & Berechtigungen ======
SMB unterstützt:
* klassische Linux-Rechte (rwx)
* ACLs (Access Control Lists)
* Windows-kompatible NTFS-Rechte
Beispiel:
valid users = alice bob @admins
read only = no
force group = smbgroup
create mask = 0660
directory mask = 0770
---
===== 8. Beispiel einer einfachen Freigabe ======
[public]
path = /srv/samba/public
read only = no
guest ok = yes
===== 9. Beispiel mit Benutzerzugriff ======
[projekt]
path = /srv/samba/projekt
valid users = @projektteam
read only = no
create mask = 0640
directory mask = 0750
---
===== 10. Druckerfreigabe (legacy) ======
[printers]
printable = yes
path = /var/spool/samba
→ wird heute kaum noch genutzt.
===== 11. Samba als Active Directory Domain Controller ======
Samba kann eine Windows-Domäne bereitstellen:
* Kerberos
* LDAP
* DNS
* GPO-Kompatibilität
* Roaming Profiles
Beispiel für Provisionierung:
samba-tool domain provision
---
===== 12. Performance – Achtung bei SMB! ======
Wichtig für reale Netzwerke:
* SMB ist sehr chatty → viele kleine Anfragen
* Latenz kann SMB extrem bremsen
* Hohe Performance hängt ab von:
- Netzwerk-Latenz
- MTU
- Caching
- Server-Hardware (SSD/NVMe)
- Protokollversion (SMB3 bevorzugen)
---
===== 13. SMB & Docker ======
In Docker-Containern:
* Volumes über SMB mounten
* Samba Container im eigenen VLAN
* Integration mit LDAP/Winbind möglich
* Achtung: Rechte korrekt abbilden
---
===== 14. Sicherheit bei SMB ======
* SMBv1 **unbedingt deaktivieren** (WannaCry lässt grüßen)
* SMBv2/3 nutzen
* Verschlüsselung optional einschalten:
smb encrypt = required
* eigene Benutzergruppen
* Firewall-Port 445 nur intern erlauben
* richtige Masken/ACLs setzen
* keine anonymen Freigaben in produktiven Netzen
* Auditing aktivieren bei kritischen Shares
---
===== 15. Wichtige SMB-Befehle ======
==== SMB-Client (Linux) ====
smbclient -L //server/
smbclient //server/share -U user
==== Mounten ====
mount -t cifs //server/share /mnt \
-o username=user,vers=3.1.1
---
===== 16. SMB-Versionsübersicht ======
^ Version ^ Jahr ^ Merkmale ^
| SMB1 | 1980er | sehr unsicher, veraltet |
| SMB2 | 2006 | schneller, weniger Chatty |
| SMB3 | 2012+ | Verschlüsselung, Sicherheit, moderne Features |
===== Zusammenfassung ======
* SMB = Windows-Dateifreigabeprotokoll
* CIFS = alte SMB-Version, heute veraltet
* Samba = SMB-Server unter Linux
* moderne Systeme nutzen SMB3
* Ports: 445 (modern), 137–139 (legacy)
* Benutzer & Rechte über Linux, LDAP oder AD
* hohe Sicherheit durch SMB3 + ACLs + Firewalls
* SMBv1 immer deaktivieren