Linux - Netzwerk und Serveradminstration SAMBA Rocky: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 66: Zeile 66:
  
 
== SELinux – Kontexte und Booleans ==
 
== SELinux – Kontexte und Booleans ==
=== Status prüfen ===
+
*[[SELinux – Kontexte und Booleans]]
*sestatus
 
*getenforce
 
 
 
 
 
=== Wichtige Booleans ===
 
{| class="wikitable"
 
! Boolean !! Bedeutung
 
|-
 
| samba_enable_home_dirs || Zugriff auf Home-Verzeichnisse via Samba
 
|-
 
| smbd_anon_write || Anonymes Schreiben erlauben
 
|-
 
| samba_export_all_ro || Alle Verzeichnisse read-only exportieren
 
|-
 
| samba_export_all_rw || Alle Verzeichnisse read-write exportieren
 
|}
 
 
 
=== Booleans anzeigen ===
 
*getsebool -a | grep samba
 
 
 
=== Fehleranalyse SELinux ===
 
*sudo ausearch -c smbd --raw | audit2why
 
*sudo tail -f /var/log/audit/audit.log | grep denied
 
  
 
== Netzwerk-Check (vorher) ==
 
== Netzwerk-Check (vorher) ==
Zeile 119: Zeile 96:
 
   writable = yes
 
   writable = yes
 
   guest ok = yes
 
   guest ok = yes
  read only = no
 
 
</pre>
 
</pre>
 
*[[Optionen Samba Grundkurs 1]]
 
*[[Optionen Samba Grundkurs 1]]
Zeile 169: Zeile 145:
  
 
== Benutzer anlegen ==
 
== Benutzer anlegen ==
 +
=== Samba Share Gruppe anlegen ===
 +
*sudo groupadd sambashare
 
=== Linux-Benutzer anlegen <nowiki>(Password: 123Start$)</nowiki> ===
 
=== Linux-Benutzer anlegen <nowiki>(Password: 123Start$)</nowiki> ===
 
*sudo useradd -m -s /bin/bash -G sambashare martha
 
*sudo useradd -m -s /bin/bash -G sambashare martha
Zeile 200: Zeile 178:
 
*sudo chown root:sambashare /srv/samba/secure
 
*sudo chown root:sambashare /srv/samba/secure
 
*sudo chmod 770 /srv/samba/secure
 
*sudo chmod 770 /srv/samba/secure
 +
*ls -ldZ /srv/samba/secure/
  
 
=== SELinux-Kontext setzen ===
 
=== SELinux-Kontext setzen ===
 
*sudo semanage fcontext -a -t samba_share_t "/srv/samba/secure(/.*)?"
 
*sudo semanage fcontext -a -t samba_share_t "/srv/samba/secure(/.*)?"
 
*sudo restorecon -Rv /srv/samba/secure
 
*sudo restorecon -Rv /srv/samba/secure
 +
*ls -ldZ /srv/samba/secure/
  
 
=== Dienst neu starten ===
 
=== Dienst neu starten ===
Zeile 280: Zeile 260:
 
==== ss -4tulpen | egrep "137|138|139|445" ====
 
==== ss -4tulpen | egrep "137|138|139|445" ====
 
*sudo ss -4tulpen | egrep "137|138|139|445"
 
*sudo ss -4tulpen | egrep "137|138|139|445"
 
=== firewalld anpassen ===
 
*sudo firewall-cmd --permanent --remove-service=samba
 
*sudo firewall-cmd --permanent --add-port=445/tcp
 
*sudo firewall-cmd --reload
 
  
 
=== Ergebnis ===
 
=== Ergebnis ===
Zeile 324: Zeile 299:
 
;Neu laden
 
;Neu laden
 
*sudo systemctl restart smb
 
*sudo systemctl restart smb
 +
 +
;firewalld anpassen
 +
*sudo firewall-cmd --permanent --remove-service=samba
 +
*sudo firewall-cmd --permanent --add-port=445/tcp
 +
*sudo firewall-cmd --reload
  
 
;Testen
 
;Testen
Zeile 333: Zeile 313:
 
*Zugriff erfolgt ausschließlich über moderne SMB-Verbindungen.
 
*Zugriff erfolgt ausschließlich über moderne SMB-Verbindungen.
  
== Rocky Linux Client Mount ==
+
== Linux Client Mount ==
  
 
=== Pakete installieren ===
 
=== Pakete installieren ===
 +
;Rocky
 
*sudo dnf install cifs-utils -y
 
*sudo dnf install cifs-utils -y
 +
;Debian
 +
*sudo apt install cifs-utils -y
  
 
=== Mountpunkt erstellen ===
 
=== Mountpunkt erstellen ===
Zeile 342: Zeile 325:
  
 
=== Temporärer Mount ===
 
=== Temporärer Mount ===
*sudo mount -t cifs //smb/secure /mnt/smb -o username=martha
+
*sudo mount //smb/secure /mnt/smb -o username=martha,password=123Start$
 +
=== Kontrolle ===
 +
*mount -t cifs
  
 
=== Test ===
 
=== Test ===
Zeile 404: Zeile 389:
  
 
== Typische Fehleranalyse ==
 
== Typische Fehleranalyse ==
=== Verbindung testen ===
+
=== Server ===
*smbclient -L smb -U martha%123Start$
+
;Läuft der Dienst überhaupt
 
+
*systemctl status smb
=== Namensauflösung prüfen ===
+
;Logs checken
*ping SERVER-IP
+
*journalctl -fu smb
 
+
*tail -f /var/log/samba/log.smbd
=== Firewall prüfen ===
+
;Welche Ports sind geöffnet
*sudo firewall-cmd --list-all
+
*ss -tulpen | grep 445
*sudo ss -tulpen | grep 445
+
;Firewall prüfen
 
+
Entweder iist samba freigeschaltet
=== SELinux prüfen ===
+
*firewall-cmd --list-all | grep samba
 +
oder der Port 445
 +
*firewall-cmd --list-all | grep 445/tcp
 +
;SELinux prüfen
 
*sudo ausearch -c smbd --raw | audit2why
 
*sudo ausearch -c smbd --raw | audit2why
 
*sudo tail -f /var/log/audit/audit.log | grep denied
 
*sudo tail -f /var/log/audit/audit.log | grep denied
  
=== Live-Logs ===
+
===Client ===
*sudo journalctl -u smb -f
+
;Vorab smbclient
 +
Debian
 +
*apt install -y smbclient
 +
Rocky
 +
*dnf install -y smbclient
 +
;Ist der Rechnername auflösbar und erreichbar
 +
*ping -c 1 smb
 +
;Ist der smb Port geöffnet
 +
*netcat -zv smb 445
 +
*nmap -sS smb -p 445
 +
;Anonymer Connect
 +
*smbclient -L smb -N
 +
;Authorizierter Connect
 +
*smbclient -L smb -U martha%123Start$
 +
;Login
 +
*smbclient //smb/secure    -U martha%123Start$
  
 
== Optional: Windows Client ==
 
== Optional: Windows Client ==
Zeile 588: Zeile 591:
 
*testparm prüft die Konfiguration.
 
*testparm prüft die Konfiguration.
 
*ss zeigt offene Ports.
 
*ss zeigt offene Ports.
 
== Persistenter Mount ==
 
*sudo nano /etc/fstab
 
 
<pre>
 
//SERVER-IP/group /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8 0 0
 
</pre>
 
 
;Erklärung
 
*Eintrag sorgt für automatisches Mounten beim Systemstart.
 
*iocharset=utf8 verhindert Probleme mit Umlauten.
 

Aktuelle Version vom 21. April 2026, 12:05 Uhr

Vorab

SMB Server

Vorbereitungen

  • VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen
  • Der Host soll im SERVER-Netzwerk liegen
  • statische IP-Adresse nach dem Netzwerkplan setzen
  • Hostname ändern zu smb
  • SSH-Schlüssel des Kit Hosts für User kit hinterlegen

Netzkonfiguration SMB

Parameter Wert Erläuterung
Netzwerk (NIC) SERVER Interface-Zuweisung in VirtualBox
IP 10.2XX.1.2 Statische IP
CIDR 24 Classless Inter-Domain Routing Präfixlänge
GW 10.2XX.1.1 GATEWAY
NS 10.88.2XX.21 Resolver
FQDN smb.it2XX.int Fully Qualified Domain Name
SHORT smb Short Name
DOM it2XX.int Domain Name
Anpassen des Templates

Ziel

  • Ein einfacher Samba-Server wird schrittweise aufgebaut und getestet – von Public Share bis Home-Verzeichnis inkl. Debugging.

Installation

Pakete installieren

  • sudo dnf install samba samba-client cifs-utils -y

Starten von smb

  • sudo systemctl enable smb --now

Dienststatus prüfen

  • systemctl status smb
  • systemctl status nmb
Merke RedHat Derivate starten bzw. enablen keinen Dienst per default.

Welche Ports sind offen

  • sudo ss -4lntp | grep smbd
LISTEN 0      50           0.0.0.0:445        0.0.0.0:*    users:(("smbd",pid=1947,fd=30))                           
LISTEN 0      50           0.0.0.0:139        0.0.0.0:*    users:(("smbd",pid=1947,fd=31))

firewalld – Ports freischalten

Samba-Dienst freischalten

  • sudo firewall-cmd --permanent --add-service=samba
  • sudo firewall-cmd --reload

Status prüfen

  • sudo firewall-cmd --list-all
Erklärung

Der samba-Dienst in firewalld beinhaltet TCP 445, TCP 139, UDP 137, UDP 138.

SELinux – Kontexte und Booleans

Netzwerk-Check (vorher)

  • sudo ss -tulpen | grep smb
  • sudo ss -tulpen | grep 445
  • sudo ss -tulpen | grep 139
Erklärung

Samba nutzt primär TCP 445 (modern). Port 139 (NetBIOS) ist Legacy und kann später deaktiviert werden.

Einfachste Konfiguration (Public Share)

Wir fangen von ganz vorne an

  • sudo -i
  • cd /etc/samba
  • mv smb.conf smb.conf.org

Konfigurationsdatei bearbeiten

  • sudo nano /etc/samba/smb.conf
[global]
   workgroup = WORKGROUP
   server string = Samba Server
   security = user
   map to guest = Bad User

[public]
   path = /srv/samba/public
   browsable = yes
   writable = yes
   guest ok = yes

Verzeichnis anlegen

  • sudo mkdir -p /srv/samba/public
  • sudo chmod 777 /srv/samba/public

SELinux-Kontext setzen

  • sudo semanage fcontext -a -t samba_share_t "/srv/samba/public(/.*)?"
  • sudo restorecon -Rv /srv/samba/public

Dienst neu starten

  • sudo systemctl restart smb

Test (Public Share)

Freigaben anzeigen

  • smbclient -L localhost -N

Auf Share zugreifen

  • smbclient //localhost/public -N

Testdatei erstellen

  • put /etc/hostname test.txt

Debug zwischendurch

Logs beobachten

  • sudo journalctl -u smb -f

Testparm

Alle aktiven Optionen anzeigen

  • testparm

Nur effektive Konfiguration ohne Kommentare

  • testparm -s

Bestimmten Parameter prüfen

  • testparm -v | grep parametername

Alle verfügbaren Optionen anzeigen

  • testparm -v

Nur eine Freigabe anzeigen

  • testparm -s --section-name=public

Hinweis

  • testparm zeigt nur die tatsächlich gesetzten bzw. wirksamen Optionen an.
  • Mit -v werden zusätzlich alle Default-Werte angezeigt.

Benutzer anlegen

Samba Share Gruppe anlegen

  • sudo groupadd sambashare

Linux-Benutzer anlegen (Password: 123Start$)

  • sudo useradd -m -s /bin/bash -G sambashare martha
  • sudo passwd martha

Samba-Benutzer hinzufügen

  • sudo smbpasswd -a martha

Kit User hinzufügen (Password: kit)

  • sudo smbpasswd -a kit
Erklärung

Samba verwaltet eigene Passwörter. Linux-User + Samba-User sind getrennt → daher zwei Passwörter.

Geschützter Share (Login erforderlich)

Konfiguration erweitern

  • sudo nano /etc/samba/smb.conf
[secure]
   path = /srv/samba/secure
   browsable = yes
   writable = yes
   guest ok = no
   valid users = martha

Verzeichnis vorbereiten

  • sudo mkdir -p /srv/samba/secure
  • sudo chown root:sambashare /srv/samba/secure
  • sudo chmod 770 /srv/samba/secure
  • ls -ldZ /srv/samba/secure/

SELinux-Kontext setzen

  • sudo semanage fcontext -a -t samba_share_t "/srv/samba/secure(/.*)?"
  • sudo restorecon -Rv /srv/samba/secure
  • ls -ldZ /srv/samba/secure/

Dienst neu starten

  • sudo systemctl restart smb

Test (Authentifiziert)

martha

  • smbclient //localhost/secure -U martha%123Start$

kit

  • smbclient //localhost/secure -U kit%kit

Home-Verzeichnisse

Konfiguration aktivieren

  • sudo nano /etc/samba/smb.conf
[homes]
   comment = Home Directories
   browseable = no
   writable = yes

SELinux Boolean aktivieren

  • sudo setsebool -P samba_enable_home_dirs on

Dienst neu starten

  • sudo systemctl restart smb

Test Home

  • smbclient //localhost/martha -U martha%123Start$
  • smbclient //localhost/martha -U kit%kit

Sicherheitsmassnahmen

  • sudo ss -tulpen | egrep "137|138|139|445"

Samba Ports und Dienste Erklärung

Überblick

  • Die Ausgabe zeigt offene Netzwerk-Ports und die dazugehörigen Samba-Dienste (smb und nmb).

UDP 137

  • NetBIOS Name Service (nmb)

UDP 138

  • NetBIOS Datagram Service (nmb)

TCP 139

  • NetBIOS Session Service (smb)

TCP 445

  • Direct SMB über TCP (smb)

nmb

  • Dienst für NetBIOS

smb

  • Hauptdienst für Datei- und Druckfreigaben

Interpretation

  • NetBIOS aktiv, SMB modern + legacy parallel

Fazit

  • Mischbetrieb aktiv

NetBIOS deaktivieren und Ports prüfen

Schritte

systemctl stop nmb

  • sudo systemctl stop nmb

systemctl disable nmb

  • sudo systemctl disable nmb

ss -4tulpen | egrep "137|138|139|445"

  • sudo ss -4tulpen | egrep "137|138|139|445"

Ergebnis

  • NetBIOS (137/138) sollte weg sein.
  • Optional auch 139, wenn sauber konfiguriert.
  • Nur noch Port 445 aktiv → moderner SMB-Betrieb.

Warum NetBIOS abschalten

Gründe

Sicherheit

  • NetBIOS ist alt und anfälliger für Angriffe (z. B. Spoofing, Information Leakage).

Weniger Angriffsfläche

  • Ports 137/138/139 verschwinden → weniger offene Dienste im Netzwerk.

Moderne Systeme

  • Aktuelle Windows/Linux nutzen direkt SMB über Port 445.

Saubere Architektur

  • Namensauflösung läuft heute über DNS statt NetBIOS-Broadcasts.

Weniger Traffic

  • NetBIOS erzeugt unnötige Broadcasts im Netzwerk.

Fazit

  • NetBIOS ist Legacy → in modernen Netzen überflüssig und besser deaktivieren.

SMB auf Port 445 beschränken

Konfiguration anpassen

  • sudo nano /etc/samba/smb.conf
[global]
   smb ports = 445
Neu laden
  • sudo systemctl restart smb
firewalld anpassen
  • sudo firewall-cmd --permanent --remove-service=samba
  • sudo firewall-cmd --permanent --add-port=445/tcp
  • sudo firewall-cmd --reload
Testen
  • sudo ss -4tulpen | egrep "137|138|139|445"
Erklärung
  • Samba lauscht nur noch auf Port 445 (Direct SMB).
  • Port 139 (NetBIOS) wird nicht mehr verwendet.
  • Zugriff erfolgt ausschließlich über moderne SMB-Verbindungen.

Linux Client Mount

Pakete installieren

Rocky
  • sudo dnf install cifs-utils -y
Debian
  • sudo apt install cifs-utils -y

Mountpunkt erstellen

  • sudo mkdir -p /mnt/smb

Temporärer Mount

  • sudo mount //smb/secure /mnt/smb -o username=martha,password=123Start$

Kontrolle

  • mount -t cifs

Test

  • ls /mnt/smb

Credentials-Datei erstellen

  • sudo nano /root/.smbcred
username=martha
password=123Start$

Rechte setzen

  • sudo chmod 600 /root/.smbcred

Mount mit Credentials

  • sudo mount -t cifs //smb/secure /mnt/smb -o credentials=/root/.smbcred

Persistenter Mount (/etc/fstab)

  • sudo nano /etc/fstab
//smb/secure /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8,_netdev 0 0

Erklärung der Felder

Feld Bedeutung
//smb/secure SMB-Share (Servername + Freigabe)
/mnt/smb lokaler Mountpunkt
cifs Dateisystemtyp für SMB
credentials=/root/.smbcred Benutzername/Passwort aus Datei
iocharset=utf8 korrekte Darstellung von Umlauten
_netdev Mount erst nach Netzwerkstart
0 kein Dump (Backup irrelevant)
0 keine automatische fsck-Prüfung

Test ohne Reboot

  • sudo mount -a

Prüfung

  • ls /mnt/smb

Reboot und Test

  • sudo reboot
  • ls /mnt/smb
Erklärung
  • /etc/fstab sorgt für automatisches Mounten beim Systemstart.
  • Credentials-Datei verhindert Klartext-Passwörter in der fstab.

Typische Fehleranalyse

Server

Läuft der Dienst überhaupt
  • systemctl status smb
Logs checken
  • journalctl -fu smb
  • tail -f /var/log/samba/log.smbd
Welche Ports sind geöffnet
  • ss -tulpen | grep 445
Firewall prüfen

Entweder iist samba freigeschaltet

  • firewall-cmd --list-all | grep samba

oder der Port 445

  • firewall-cmd --list-all | grep 445/tcp
SELinux prüfen
  • sudo ausearch -c smbd --raw | audit2why
  • sudo tail -f /var/log/audit/audit.log | grep denied

Client

Vorab smbclient

Debian

  • apt install -y smbclient

Rocky

  • dnf install -y smbclient
Ist der Rechnername auflösbar und erreichbar
  • ping -c 1 smb
Ist der smb Port geöffnet
  • netcat -zv smb 445
  • nmap -sS smb -p 445
Anonymer Connect
  • smbclient -L smb -N
Authorizierter Connect
  • smbclient -L smb -U martha%123Start$
Login
  • smbclient //smb/secure -U martha%123Start$

Optional: Windows Client

\\SERVER-IP\public
\\SERVER-IP\secure

Fazit

  • Public → ohne Login
  • Secure → mit Benutzer
  • Homes → automatisch pro User
  • Port 445 → Standard
  • 139/NetBIOS → abschaltbar

Gruppenbasierte Freigabe

Gruppe anlegen

  • sudo groupadd smbgruppe

Benutzer hinzufügen

  • sudo usermod -aG smbgruppe kit

Verzeichnis vorbereiten

  • sudo mkdir -p /srv/samba/group
  • sudo chown root:smbgruppe /srv/samba/group
  • sudo chmod 770 /srv/samba/group

SELinux-Kontext setzen

  • sudo semanage fcontext -a -t samba_share_t "/srv/samba/group(/.*)?"
  • sudo restorecon -Rv /srv/samba/group

Konfiguration

  • sudo nano /etc/samba/smb.conf
[group]
   path = /srv/samba/group
   browsable = yes
   writable = yes
   guest ok = no
   valid users = @smbgruppe

Dienst neu starten

  • sudo systemctl restart smb

Test

  • smbclient //localhost/group -U kit%kit
  • smbclient //localhost/group -U martha%123Start$
Erklärung
  • Zugriff erfolgt nur für Mitglieder der Gruppe smbgruppe.
  • @ vor dem Gruppennamen bedeutet Gruppenfreigabe.
  • Linux-Rechte (770) und Samba valid users greifen gemeinsam.

ACLs

Installation

  • sudo dnf install acl -y

ACL setzen

  • sudo setfacl -m u:kit:rwx /srv/samba/group

Default ACL

  • sudo setfacl -d -m u:kit:rwx /srv/samba/group

Anzeigen

  • getfacl /srv/samba/group
Erklärung
  • ACLs erlauben zusätzliche Benutzerrechte unabhängig von Gruppen.
  • -m setzt Rechte für einen Benutzer.
  • -d sorgt dafür, dass neue Dateien diese Rechte automatisch erben.

Samba + ACL

  • sudo nano /etc/samba/smb.conf
[group]
   path = /srv/samba/group
   browsable = yes
   writable = yes
   guest ok = no
   valid users = @smbgruppe
   create mask = 0660
   directory mask = 0770
Erklärung
  • create mask bestimmt Rechte neuer Dateien.
  • directory mask bestimmt Rechte neuer Verzeichnisse.
  • 0660 = lesen/schreiben für Owner + Gruppe.
  • 0770 = volle Rechte für Owner + Gruppe.

Force Group

  • sudo nano /etc/samba/smb.conf
[group]
   path = /srv/samba/group
   browsable = yes
   writable = yes
   guest ok = no
   valid users = @smbgruppe
   force group = smbgruppe
   create mask = 0660
   directory mask = 0770
Erklärung
  • Alle Dateien gehören automatisch der Gruppe smbgruppe.
  • Verhindert Probleme bei unterschiedlichen Primärgruppen.
  • Wichtig bei mehreren Nutzern im gleichen Share.

Setgid

  • sudo chmod g+s /srv/samba/group
Erklärung
  • Neue Dateien übernehmen automatisch die Gruppen-ID des Verzeichnisses.
  • Ergänzt force group auf Dateisystemebene.

Fehleranalyse

Zugriff verweigert

  • sudo chmod 700 /srv/samba/group
  • sudo chmod 770 /srv/samba/group
Erklärung
  • Zu restriktive Rechte blockieren den Zugriff.
  • 770 erlaubt Zugriff für Gruppe.

Benutzer fehlt

  • sudo gpasswd -d user1 smbgruppe
  • sudo usermod -aG smbgruppe user1
Erklärung
  • Nur Gruppenmitglieder dürfen zugreifen.
  • Änderungen wirken erst nach neuer Anmeldung.

Samba User fehlt

  • sudo smbpasswd -x user1
  • sudo smbpasswd -a user1
Erklärung
  • Samba benötigt eigene Benutzerdatenbank.
  • Linux-User allein reicht nicht.

Dienst gestoppt

  • sudo systemctl stop smb
  • sudo systemctl start smb
Erklärung
  • Ohne smb kein Zugriff möglich.

SELinux blockiert

  • sudo ausearch -c smbd --raw | audit2why
  • sudo sealert -a /var/log/audit/audit.log
Erklärung
  • SELinux kann Zugriff trotz korrekter Linux-Rechte blockieren.
  • audit2why erklärt die Ursache und schlägt Lösungen vor.

Debug

  • smbstatus
  • smbstatus -p
  • testparm
  • sudo ss -tulpen | grep 445
Erklärung
  • smbstatus zeigt aktive Verbindungen und Dateien.
  • testparm prüft die Konfiguration.
  • ss zeigt offene Ports.