allgemein:howto:samba_ad
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| allgemein:howto:samba_ad [2016/12/08 11:04] – richard | allgemein:howto:samba_ad [2025/11/19 16:39] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | https:// | + | ====== Samba 4 als Active Directory ====== |
| - | http://www.rebootrestore.com/ | + | Allgemeine Informationen zu Samba 4 als Acitve Directory bei: [[https://wiki.ubuntuusers.de/Archiv/ |
| - | https://www.packtpub.com/ | + | **HINWEIS: Die Seite ist noch nicht final überarbeitet worden. Sie wurde als Mitschrift während einer Schulung angefertigt. Es fehlen daher die Aufgabenstellungen, |
| + | während der Schulung vorgegeben wurden.** | ||
| - | https:// | + | ===== Buch-Empfehlung ===== |
| - | http://www.alvestrand.no/objectid/1.2.840.113556.1.8000.2554.html | + | Ein ausführliches Buch zu Samba 4 und dessen Möglichkeiten findet man in [[https://www.rheinwerk-verlag.de/samba-4_4186/|Rheinwerk-Verlag]] |
| - | ====== Samba 4 als Active Directory ====== | + | **Achtung: |
| - | https:// | ||
| - | ====== Samba-Tools | + | ===== Samba-Tools ===== |
| ^Tool ^ Beschreibung^ | ^Tool ^ Beschreibung^ | ||
| - | |'' | + | |'' |
| - | |'' | + | |'' |
| |'' | |'' | ||
| |'' | |'' | ||
| |'' | |'' | ||
| - | |'' | + | |'' |
| - | |'' | + | |'' |
| |'' | |'' | ||
| - | |'' | + | |'' |
| |'' | |'' | ||
| |'' | |'' | ||
| Zeile 30: | Zeile 30: | ||
| |'' | |'' | ||
| |'' | |'' | ||
| - | |||
| ====== Installationsscript ====== | ====== Installationsscript ====== | ||
| - | <file bash smb.conf> | + | Die folgende Dateien können verwendet werden, um eine rudimentäre Konfiguartion vorzunehmen. |
| - | [global] | + | |
| - | + | ||
| - | workgroup = training | + | |
| - | netbios name = tsam-fs01 | + | |
| - | server string = Training CIFS Server | + | |
| - | server role = standalone server | + | |
| - | + | ||
| - | [Public] | + | |
| - | + | ||
| - | path = / | + | |
| - | comment = Dateifreigabe | + | |
| - | browseable = yes | + | |
| - | writeable = yes | + | |
| - | guest ok = yes | + | |
| - | + | ||
| - | [homes] | + | |
| - | comment = Heimatverzeichnis | + | |
| - | browseable = yes | + | |
| - | guest ok = yes | + | |
| - | writeable = yes | + | |
| - | valid users = %S | + | |
| - | # valid users = %S nur Eigentümer $S darf sich auf ein Home-Ordner verbinden | + | |
| - | </ | + | |
| <file python install_samba.py> | <file python install_samba.py> | ||
| # | # | ||
| Zeile 102: | Zeile 77: | ||
| # smbclient SMB-Client für Freigaben | # smbclient SMB-Client für Freigaben | ||
| # heimdal Kerberos Implementierung | # heimdal Kerberos Implementierung | ||
| - | os.system (" | + | os.system (" |
| os.system (" | os.system (" | ||
| os.system ("mv / | os.system ("mv / | ||
| Zeile 111: | Zeile 86: | ||
| | | ||
| </ | </ | ||
| + | |||
| + | Im vorangegangen Script wird eine erste '' | ||
| + | <file bash smb.conf> | ||
| + | [global] | ||
| + | |||
| + | workgroup = training | ||
| + | netbios name = tsam-fs01 | ||
| + | server string = Training CIFS Server | ||
| + | server role = standalone server | ||
| + | |||
| + | [Public] | ||
| + | |||
| + | path = / | ||
| + | comment = Dateifreigabe | ||
| + | browseable = yes | ||
| + | writeable = yes | ||
| + | guest ok = yes | ||
| + | | ||
| + | [homes] | ||
| + | comment = Heimatverzeichnis | ||
| + | browseable = yes | ||
| + | guest ok = yes | ||
| + | writeable = yes | ||
| + | valid users = %S | ||
| + | # valid users = %S nur Eigentümer $S darf sich auf ein Home-Ordner verbinden | ||
| + | </ | ||
| + | |||
| Zeile 520: | Zeile 522: | ||
| ====== Aufgabe 12: Wiederherstellung gelöschter Objekte (AD spezifisch) ====== | ====== Aufgabe 12: Wiederherstellung gelöschter Objekte (AD spezifisch) ====== | ||
| + | |||
| + | <file python enablerecyclebin> | ||
| + | # | ||
| + | # | ||
| + | # enabled the Recycle Bin optional feature | ||
| + | # | ||
| + | import optparse | ||
| + | import sys | ||
| + | |||
| + | # Find right directory when running from source tree | ||
| + | sys.path.insert(0, | ||
| + | |||
| + | import samba | ||
| + | from samba import getopt as options, Ldb | ||
| + | from ldb import SCOPE_BASE | ||
| + | import sys | ||
| + | import ldb | ||
| + | from samba.auth import system_session | ||
| + | |||
| + | parser = optparse.OptionParser(" | ||
| + | sambaopts = options.SambaOptions(parser) | ||
| + | parser.add_option_group(sambaopts) | ||
| + | credopts = options.CredentialsOptions(parser) | ||
| + | parser.add_option_group(credopts) | ||
| + | parser.add_option_group(options.VersionOptions(parser)) | ||
| + | |||
| + | opts, args = parser.parse_args() | ||
| + | opts.dump_all = True | ||
| + | |||
| + | if len(args) != 1: | ||
| + | parser.print_usage() | ||
| + | sys.exit(1) | ||
| + | |||
| + | url = args[0] | ||
| + | |||
| + | lp_ctx = sambaopts.get_loadparm() | ||
| + | |||
| + | creds = credopts.get_credentials(lp_ctx) | ||
| + | sam_ldb = Ldb(url, session_info=system_session(), | ||
| + | |||
| + | # get the rootDSE | ||
| + | res = sam_ldb.search(base="", | ||
| + | rootDse = res[0] | ||
| + | |||
| + | configbase=rootDse[" | ||
| + | |||
| + | # enable the feature | ||
| + | msg = ldb.Message() | ||
| + | msg.dn = ldb.Dn(sam_ldb, | ||
| + | msg[" | ||
| + | " | ||
| + | | ||
| + | res = sam_ldb.modify(msg) | ||
| + | |||
| + | print " | ||
| + | |||
| + | </ | ||
| + | ====== Aufgabe 14: Kerberos ======= | ||
| + | |||
| + | Kerberos Folien | ||
| + | ===== Challenge-Response ===== | ||
| + | |||
| + | ==== NTLMv1 ===== | ||
| + | - Passwort wird gehasht auf dem Server ablegt | ||
| + | - Server schickt ein Challenge an den Client | ||
| + | - Client verschlüsselt die Challenge mit dem gehashten Passwort | ||
| + | - Client schickt das verschlüsselte Challenge an den Server | ||
| + | - Server ermittelt ebenfalls das verschlüsselte Challenge mittels des gespeicherten gehashten Passwort | ||
| + | |||
| + | Verfahren NTLMv1 gilt als unsicher. | ||
| + | |||
| + | ===== Ticket-System ===== | ||
| + | |||
| + | - User (Principal) meldet sich bei AS ((Authentication Service)) und bekommt ein TGT ((Ticket Granting Ticket)) | ||
| + | - User gibt das TGT an den TGS ((Ticket Granting Service)) und erhält ein ST ((Service Ticket)), welches mit dem Hash des entsprechenden Maschinen Konto des Service geschlüsselt wurde. | ||
| + | - User kann nun mit dem ST an eigentlichen Dienst herantreten und sich dort anmelden. | ||
| + | - Möchte der User einen zweiten Dienst nutzen, dann muss er für diesen ein neues ST beim TGS holen | ||
| + | |||
| + | ===== Linux-Konfiguration ===== | ||
| + | |||
| + | < | ||
| + | cat / | ||
| + | [libdefaults] | ||
| + | default_realm = TRAINING.EXAMPLE | ||
| + | dns_lookup_realm = false | ||
| + | dns_lookup_kdc = true | ||
| + | </ | ||
| + | |||
| + | Ticket am Kerbos holen: | ||
| + | < | ||
| + | kinit Administrator@TRAINING.EXAMPLE | ||
| + | klist | ||
| + | |||
| + | Ausgabe: | ||
| + | Credentials cache: FILE:/ | ||
| + | Principal: Administrator@TRAINING.EXAMPLE | ||
| + | |||
| + | Issued | ||
| + | Dec 8 13:53:27 2016 Dec 8 23:53:24 2016 krbtgt/ | ||
| + | </ | ||
| + | |||
| + | Die letzte Zeile zeig t das TGT als '' | ||
| + | |||
| + | Man kann pro User nur ein TGT erhalten. Will man sich mit unterschiedlichen Usernamen an einem AD anmelden, dann kann folgendes verwendet werden: | ||
| + | < | ||
| + | kinit -c testfile schueler1@TRAINING.EXAMPLE | ||
| + | klist -c testfile | ||
| + | |||
| + | Ausgabe: | ||
| + | Credentials cache: FILE: | ||
| + | Principal: schueler1@TRAINING.EXAMPLE | ||
| + | |||
| + | Issued | ||
| + | Dec 8 13:55:02 2016 Dec 8 23:54:58 2016 krbtgt/ | ||
| + | </ | ||
| + | |||
| + | Pro Anmeldung erhält man ein eigenes Ticket: | ||
| + | < | ||
| + | smbclient -L tsam-fs01 -k | ||
| + | |||
| + | Ausgabe: | ||
| + | Domain=[TRAINING] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu] | ||
| + | |||
| + | Sharename | ||
| + | --------- | ||
| + | Public | ||
| + | homes | ||
| + | Gruppe1 | ||
| + | IPC$ IPC IPC Service (Training CIFS Server) | ||
| + | administrator | ||
| + | Domain=[TRAINING] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu] | ||
| + | |||
| + | Server | ||
| + | --------- | ||
| + | TSAM-FS01 | ||
| + | |||
| + | Workgroup | ||
| + | --------- | ||
| + | TRAINING | ||
| + | |||
| + | >> klist | ||
| + | |||
| + | Ausgabe: | ||
| + | Credentials cache: FILE:/ | ||
| + | Principal: Administrator@TRAINING.EXAMPLE | ||
| + | |||
| + | Issued | ||
| + | Dec 8 13:53:27 2016 Dec 8 23:53:24 2016 krbtgt/ | ||
| + | Dec 8 13:58:24 2016 Dec 8 23:53:24 2016 cifs/ | ||
| + | </ | ||
| + | |||
| + | In der letzten Zeile ist nun ein neues Ticket für die CIFS-Freigabe | ||
| + | |||
| + | Unter Windows funktioniert der '' | ||
| + | Ausgabe: | ||
| + | < | ||
| + | Aktuelle Anmelde-ID ist 0:0x2a443 | ||
| + | |||
| + | Zwischengespeicherte Tickets: (2) | ||
| + | |||
| + | # | ||
| + | Server: krbtgt/ | ||
| + | KerbTicket (Verschlüsselungstyp): | ||
| + | Ticketkennzeichen 0x40e00000 -> forwardable renewable initial pre_authent | ||
| + | Startzeit: 12/8/2016 14:02:01 (lokal) | ||
| + | Endzeit: | ||
| + | Erneuerungszeit: | ||
| + | Sitzungsschlüsseltyp: | ||
| + | Cachekennzeichen: | ||
| + | KDC aufgerufen: tsam-dc01.training.example | ||
| + | |||
| + | # | ||
| + | Server: cifs/ | ||
| + | KerbTicket (Verschlüsselungstyp): | ||
| + | Ticketkennzeichen 0x40a80000 -> forwardable renewable pre_authent 0x80000 | ||
| + | Startzeit: 12/8/2016 14:02:01 (lokal) | ||
| + | Endzeit: | ||
| + | Erneuerungszeit: | ||
| + | Sitzungsschlüsseltyp: | ||
| + | Cachekennzeichen: | ||
| + | KDC aufgerufen: tsam-dc01.training.example | ||
| + | </ | ||
| + | |||
| + | |||
| + | ====== Aufgabe 15: GPOs bearbeiten ====== | ||
| + | |||
| + | < | ||
| + | samba-tool gpo listall | ||
| + | |||
| + | Ausgabe: | ||
| + | GPO : {31B2F340-016D-11D2-945F-00C04FB984F9} | ||
| + | display name : Default Domain Policy | ||
| + | path : \\training.example\sysvol\training.example\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9} | ||
| + | dn : CN={31B2F340-016D-11D2-945F-00C04FB984F9}, | ||
| + | version | ||
| + | flags : NONE | ||
| + | |||
| + | GPO : {6AC1786C-016F-11D2-945F-00C04FB984F9} | ||
| + | display name : Default Domain Controllers Policy | ||
| + | path : \\training.example\sysvol\training.example\Policies\{6AC1786C-016F-11D2-945F-00C04FB984F9} | ||
| + | dn : CN={6AC1786C-016F-11D2-945F-00C04FB984F9}, | ||
| + | version | ||
| + | flags : NONE | ||
| + | |||
| + | GPO : {CD2C83FD-4EEB-4DCD-88F9-97FE462C8CAF} | ||
| + | display name : Schüler Policy | ||
| + | path : \\training.example\SysVol\training.example\Policies\{CD2C83FD-4EEB-4DCD-88F9-97FE462C8CAF} | ||
| + | dn : CN={CD2C83FD-4EEB-4DCD-88F9-97FE462C8CAF}, | ||
| + | version | ||
| + | flags : NONE | ||
| + | </ | ||
| + | |||
| + | Man kann Geltungsbereich eines GPO-Containers gezielt ansehen. Hier: Alles unterhalb der '' | ||
| + | < | ||
| + | samba-tool gpo listcontainers CD2C83FD-4EEB-4DCD-88F9-97FE462C8CAF | ||
| + | |||
| + | Ausgabe: | ||
| + | Container(s) using GPO CD2C83FD-4EEB-4DCD-88F9-97FE462C8CAF | ||
| + | DN: OU=Schüler, | ||
| + | </ | ||
| + | |||
| + | Für einzelne Accounts: | ||
| + | < | ||
| + | samba-tool gpo list schueler1 | ||
| + | |||
| + | Ausgabe: | ||
| + | GPOs for user schueler1 | ||
| + | Schüler Policy {CD2C83FD-4EEB-4DCD-88F9-97FE462C8CAF} | ||
| + | Default Domain Policy {31B2F340-016D-11D2-945F-00C04FB984F9} | ||
| + | | ||
| + | samba-tool gpo list cschmidt | ||
| + | |||
| + | Ausgabe: | ||
| + | GPOs for user cschmidt | ||
| + | Default Domain Policy {31B2F340-016D-11D2-945F-00C04FB984F9} | ||
| + | </ | ||
| + | |||
| + | Beim Benutzer '' | ||
| + | |||
| + | Auf Verzeichnisebene kann man die Policies unter: | ||
| + | < | ||
| + | |||
| + | finden. | ||
| + | |||
| + | |||
| + | |||
| + | ====== Aufgabe 16: DNS im Active Directory ====== | ||
| + | |||
| + | Im ADSI-Editor eine neue Verbindung herstellen über den '' | ||
| + | mit folgendem Ziel: | ||
| + | < | ||
| + | DC=DomainDNSZones, | ||
| + | </ | ||
| + | |||
| + | |||
| + | ====== Aufgabe 17: ACLs ====== | ||
| + | |||
| + | Access Control Lists verwalten. | ||
| + | |||
| + | Über die eigentlichen Filesystem-Zugriffsrechte hinaus weitere Berechtigungen verwalten. Z.B. Zugriff von | ||
| + | verschiedenen Gruppen auf einen Ordner. Dies ist über die regulären Berechtigungen nicht möglich. | ||
| + | |||
| + | |||
| + | ====== Aufgabe 18: Roaming Profiles ====== | ||
| + | |||
| + | ====== Aufgabe 19: Distributed File System (DFS) ====== | ||
| + | |||
| + | ====== Aufgabe 20: Konfiguration per Registry | ||
allgemein/howto/samba_ad.1481195072.txt.gz · Zuletzt geändert: (Externe Bearbeitung)
