Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
samba:samba [2008/05/20 21:04] – st | samba:samba [2021/12/24 23:44] – [Firewalling] st | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Samba ====== | ||
+ | [[wpde> | ||
+ | |||
+ | siehe auch: **[[netzwerke: | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ^ Nützliche Programme zu Samba ^^ | ||
+ | ^ Programm ^ Funktion ^ | ||
+ | | nmblookup | schlägt NetBIOS-Namen nach, z.B. < | ||
+ | | smbstatus | zeigt den aktuellen Status von Samba | | ||
+ | | testparm | prüft die syntaktische Richtigkeit (geänderter) Einstellungen | | ||
+ | | smbpasswd | ändert die Passwörter der Samba-Benutzer (in ''/ | ||
+ | | pdbedit | Editiert das tdb-backend (Datei liegt in ''/ | ||
+ | |||
+ | |||
+ | ===== Links ===== | ||
+ | |||
+ | * **[[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | |||
+ | |||
+ | ===== Syncronisation der Passwörter ===== | ||
+ | Wenn ein Benutzer sein Passwort ändert, muss das im Normalfall an 2-3 Stellen erfolgen | ||
+ | - unter [[windows: | ||
+ | - bei Samba ('' | ||
+ | - unter [[linux: | ||
+ | |||
+ | Lösen lässt sich das Problem indem man | ||
+ | - entweder Login-Namen, | ||
+ | - oder einen [[windows: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Konfiguration ===== | ||
+ | Die Einstellungen von Samba sind eigentlich recht ausführlich dokumentiert. | ||
+ | |||
+ | Die Einstellungen die man meist braucht sind | ||
+ | guest ok = Yes | ||
+ | Es ist kein Benutzerkonto auf dem Pc nötig | ||
+ | browseable = Yes | ||
+ | Man kann die Freigabe im Netzwerk sehen. | ||
+ | |||
+ | |||
+ | Nach der Änderung sollte zuerst die Richtigkeit überprüft werden: | ||
+ | testparm | ||
+ | dann kann man die Änderungen einlesen lassen: | ||
+ | / | ||
+ | |||
+ | |||
+ | |||
+ | ==== Domänencontroller einrichten ==== | ||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | |||
+ | ==== Freigabe einrichten ohne Benutzer ==== | ||
+ | Den einfachsten Fall (eine Verbindung auf Freigabe-ebene und ohne Passwortabfrage für jeden beschreibbar): | ||
+ | |||
+ | < | ||
+ | [public] | ||
+ | path = / | ||
+ | read only = No | ||
+ | guest ok = Yes | ||
+ | </ | ||
+ | '' | ||
+ | |||
+ | |||
+ | ==== Freigabe einrichten mit Benutzern ==== | ||
+ | |||
+ | Vorbereitung: | ||
+ | * Systembenutzer anlegen (adduser TOM)und z.B. in Gruppe " | ||
+ | * Ordner anlegen und entsprechende Rechter erteilen | ||
+ | |||
+ | < | ||
+ | [dateiserver] | ||
+ | | ||
+ | read only = no | ||
+ | path = / | ||
+ | guest ok = no | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * Benutzer hinzufügen: | ||
+ | * Passwort ändern: <code bash> | ||
+ | * existierende Benutzer auflisten: <code bash> | ||
+ | |||
+ | |||
+ | ==== Firewalling ==== | ||
+ | |||
+ | Samba (bzw. netbios und CIFS) sollten nicht frei aus dem Internet erreichbar sein. | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | In diesem Beispiel wird netbios und CIFS auf allen Interfaces AUSSER $IP blockiert (deswegen die Negation " | ||
+ | |||
+ | ''/ | ||
+ | < | ||
+ | # Generated by iptables-save | ||
+ | *filter | ||
+ | :INPUT ACCEPT [0:0] | ||
+ | :FORWARD ACCEPT [0:0] | ||
+ | :OUTPUT ACCEPT [0:0] | ||
+ | -A INPUT ! -d $IP/32 -p tcp -m tcp --dport 137:139 -j DROP | ||
+ | -A INPUT ! -d $IP/32 -p udp -m udp --dport 137:139 -j DROP | ||
+ | -A INPUT ! -d $IP/32 -p udp -m udp --dport 445 -j DROP | ||
+ | -A INPUT ! -d $IP/32 -p tcp -m tcp --dport 445 -j DROP | ||
+ | COMMIT | ||
+ | </ | ||
+ | |||
+ | Hier wird CIFS auf IPv6 gar nicht angeboten: ''/ | ||
+ | < | ||
+ | *filter | ||
+ | :INPUT ACCEPT [0:0] | ||
+ | :FORWARD ACCEPT [0:0] | ||
+ | :OUTPUT ACCEPT [0:0] | ||
+ | -A INPUT -p tcp -m tcp --dport 137:139 -j DROP | ||
+ | -A INPUT -p udp -m udp --dport 137:139 -j DROP | ||
+ | -A INPUT -p udp -m udp --dport 445 -j DROP | ||
+ | -A INPUT -p tcp -m tcp --dport 445 -j DROP | ||
+ | COMMIT | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Samba an AD authentifizieren ==== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | ==== Schattenkopien mit ZFS ==== | ||
+ | |||
+ | < | ||
+ | [global] | ||
+ | shadow: snapdir = .zfs/ | ||
+ | shadow: sort = desc | ||
+ | # Specify snapshot name: frequent, hourly, daily… as desired | ||
+ | shadow: format = zfs-auto-snap_hourly-%Y-%m-%d-%H%M" | ||
+ | </ | ||
+ | |||
+ | * https:// | ||
+ | * help.univention.com/ | ||
+ | |||
+ | ==== Verschlüsselung erzwingen ==== | ||
+ | < | ||
+ | [global] | ||
+ | min protocol = SMB2 | ||
+ | client max protocol = SMB3 | ||
+ | encrypt passwords = yes | ||
+ | server signing = mandatory | ||
+ | smb encrypt = mandatory | ||
+ | </ | ||
+ | |||
+ | '' | ||
+ | < | ||
+ | client max protocol = SMB3 | ||
+ | client min protocol = CORE | ||
+ | server max protocol = SMB3 | ||
+ | server min protocol = SMB2 | ||
+ | </ | ||
+ | ==== WINS-Unterstützung ==== | ||
+ | |||
+ | Samba als WINS-Server: | ||
+ | < | ||
+ | wins support = yes | ||
+ | name resolve order = wins lmhosts hosts bcast</ | ||
+ | |||
+ | Samba als WINS-Client:< | ||
+ | [global] | ||
+ | wins server = IP_or_DNS-Name</ | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | ===== Samba als standalone Dateiserver ===== | ||
+ | |||
+ | Komplexes Beispiel: | ||
+ | <code bash> | ||
+ | useradd meinUser | ||
+ | passwd meinUser | ||
+ | smbpasswd -a meinUser | ||
+ | # anzeigen lassen zur Kontrolle: | ||
+ | # pdbedit -w -L | ||
+ | </ | ||
+ | |||
+ | ''/ | ||
+ | < | ||
+ | # Global parameters | ||
+ | [global] | ||
+ | log file = / | ||
+ | logging = file | ||
+ | map to guest = Bad User | ||
+ | max log size = 1000 | ||
+ | obey pam restrictions = Yes | ||
+ | pam password change = Yes | ||
+ | panic action = / | ||
+ | passwd chat = *Enter\snew\s*\spassword: | ||
+ | passwd program = / | ||
+ | server role = standalone server | ||
+ | unix password sync = Yes | ||
+ | usershare allow guests = Yes | ||
+ | idmap config * : backend = tdb | ||
+ | |||
+ | store dos attributes = no | ||
+ | ea support = no | ||
+ | map archive = no | ||
+ | map hidden = no | ||
+ | map system = no | ||
+ | map readonly = no | ||
+ | |||
+ | min protocol = SMB2 | ||
+ | client max protocol = SMB3 | ||
+ | encrypt passwords = yes | ||
+ | # win7 unterstützt die folgenden beiden Einstellungen nicht: | ||
+ | # server signing = mandatory | ||
+ | # smb encrypt = mandatory | ||
+ | |||
+ | #[homes] | ||
+ | # | ||
+ | # comment = Home Directories | ||
+ | # create mask = 0700 | ||
+ | # directory mask = 0700 | ||
+ | # valid users = %S | ||
+ | |||
+ | [meineFreigabe] | ||
+ | create mask = 0700 | ||
+ | directory mask = 0700 | ||
+ | path = /srv/samba | ||
+ | read only = No | ||
+ | valid users = meinUser | ||
+ | </ | ||
+ | |||
+ | '' | ||
+ | |||
+ | Optional: | ||
+ | * siehe oben firewalling | ||
+ | * in [[linux: | ||
+ | ===== Samba als DC ===== | ||
+ | |||
+ | * [[https:// | ||
+ | < | ||
+ | # Global parameters[global] | ||
+ | netbios name = $Servername | ||
+ | realm = $Domainroot | ||
+ | server role = active directory domain controller | ||
+ | workgroup = $Domainroot | ||
+ | tls enabled = yes | ||
+ | tls keyfile = tls/ | ||
+ | tls certificate = tls/ | ||
+ | tls cafile = tls/ | ||
+ | dns forwarder = extern1.dns.resolver.tld extern2.dns.resolver.tld | ||
+ | kccsrv: | ||
+ | ldap server require stron auth = no | ||
+ | |||
+ | [netlogon] | ||
+ | path = / | ||
+ | read only = No | ||
+ | |||
+ | [sysvol] | ||
+ | path = / | ||
+ | read only = No | ||
+ | </ | ||
+ | |||
+ | Zertifikate nach ''/ | ||
+ | |||
+ | SAMBA_START_MODE=" | ||
+ | |||
+ | Zeitzone muss überall gleich gesetzt werden: '' | ||
+ | |||
+ | ==== AD-Controller neu installieren ==== | ||
+ | |||
+ | Vorbereitungen: | ||
+ | * :!: Hostname und FQDN in Hostdatei /etc/hosts schreiben (Beispiel). | ||
+ | * netplan und systemd-resolved deaktivieren | ||
+ | * Apparmor deaktivieren: | ||
+ | |||
+ | Der systemd-NTP wird ersetzt weil DCs signierte Zeitstempel liefern wollen, das kann ntp mit ntpsigndsocket: | ||
+ | <code bash> | ||
+ | apt install ntp</ | ||
+ | |||
+ | / | ||
+ | < | ||
+ | # First one is a internal IP as (in case DNS fails): | ||
+ | server 1.2.3.4 | ||
+ | server de.pool.ntp.org | ||
+ | server ntp.ubuntu.com | ||
+ | # Restrictions | ||
+ | restrict default kod limited nomodify notrap nopeer mssntp | ||
+ | restrict 127.0.0.1 | ||
+ | restrict ::1 | ||
+ | restrict time.neofonie.de mask 255.255.255.255 nomodify notrap nopeer noquery | ||
+ | # Location of drift filedriftfile / | ||
+ | # Location of the update directory | ||
+ | ntpsigndsocket / | ||
+ | </ | ||
+ | |||
+ | testen: '' | ||
+ | |||
+ | Hostname setzen: <code bash> | ||
+ | |||
+ | Falls cloud-init installiert ist: / | ||
+ | Pakete deinstallieren: | ||
+ | |||
+ | **Kerberos-Config ins System**: | ||
+ | * krb5.conf kopieren (nach erstmaligem start von samba): <code bash>cp / | ||
+ | |||
+ | **Replikation beobachten**: | ||
+ | |||
+ | **Test/ | ||
+ | |||
+ | |||
+ | === csync2 für sysvol-Replikation === | ||
+ | |||
+ | <code bash>apt install csync2</ | ||
+ | |||
+ | xinetd konfigurieren: | ||
+ | <code bash> | ||
+ | apt purge openbsd-inetd | ||
+ | apt install xinetd | ||
+ | systemctl is-enabled xinetd | ||
+ | systemctl restart xinetd</ | ||
+ | |||
+ | Schlüssel generieren: | ||
+ | |||
+ | <code bash> | ||
+ | csync2 -k / | ||
+ | openssl genrsa -out / | ||
+ | openssl req -batch -new -key / | ||
+ | openssl x509 -req -days 9999 -in / | ||
+ | </ | ||
+ | |||
+ | config-Dateien auf die anderen PDCs kopieren incl. keys: | ||
+ | <code bash> | ||
+ | scp csync2* $Server2:/ | ||
+ | scp csync2* $Server3:/ | ||
+ | </ | ||
+ | |||
+ | / | ||
+ | <code bash> | ||
+ | ignore uid; | ||
+ | ignore gid; | ||
+ | ignore mod; | ||
+ | group samba4 | ||
+ | { | ||
+ | host $server; | ||
+ | host $server2; | ||
+ | host $server3; | ||
+ | key / | ||
+ | include / | ||
+ | exclude .*; | ||
+ | action { | ||
+ | exec " | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | testen: csync2 -xv | ||
+ | |||
+ | Auf allen Beteiligten Nodes in den Crontabs den sync setzen (Minuten variieren damit nicht alle drei Nodes zur gleichen Sekunden syncen): | ||
+ | < | ||
+ | */10 * * * * root csync2 -x | ||
+ | </ | ||
+ | |||
+ | Neuen PDC in die Domain joinen: '' | ||
+ | |||
+ | weitere Links: | ||
+ | * http:// | ||
+ | * https:// | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Diagnose ==== | ||
+ | |||
+ | * Log-Dateien: | ||
+ | * **Replikation** checken: '' | ||
+ | * Datenbankeinträge checken: '' | ||
+ | * Offene Verbindungen von Clients anzeigen: '' | ||
+ | |||
+ | **Bind**: | ||
+ | * Cache des Bind ggf. löschen: '' | ||
+ | * Cache anzeigen: '' | ||
+ | |||
+ | **NTP-Daemon prüfen**: '' | ||
+ | |||
+ | * AD-Informationen anzeigen: '' | ||
+ | * Informationen über DCs anzeigen: '' | ||
+ | * Master finden: '' | ||
+ | * AD anpingen: '' | ||
+ | * User-Liste anzeigen: wbi'' | ||
+ | * Aktuelle Benutzer-Zahl: | ||
+ | * Liste der Gruppen: '' | ||
+ | * Anzahl von Gruppen: '' | ||
+ | * Alle Zahlen zusammen: '' | ||
+ | * Schnelle Verifikation von Usern auf verschiedenen PDCs: '' | ||
+ | |||
+ | Bei TKEY Problemen: Rechte anpassen | ||
+ | <code bash> | ||
+ | chgrp bind / | ||
+ | chmod 750 / | ||
+ | chgrp bind / | ||
+ | chmod 640 / | ||
+ | </ | ||
+ | |||
+ | * DNS-Zoneninformationen abfragen (Samba direkt): '' | ||
+ | * DNS-Zoneninformationen auflisten (Samba direkt): '' | ||
+ | * Neuen DNS-Record setzen: '' | ||