[[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