Benutzer-Werkzeuge

Webseiten-Werkzeuge


allgemein:howto:samba_ad

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
allgemein:howto:samba_ad [2016/12/08 10:42] richardallgemein:howto:samba_ad [2025/11/19 16:39] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-https://www.dasmagazin.ch/2016/12/03/ich-habe-nur-gezeigt-dass-es-die-bombe-gibt/+====== Samba 4 als Active Directory ======
  
-http://www.rebootrestore.com/+Allgemeine Informationen zu Samba 4 als Acitve Directory bei: [[https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/|ubuntuusers.de]]
  
-https://www.packtpub.com/+**HINWEISDie Seite ist noch nicht final überarbeitet wordenSie wurde als Mitschrift während einer Schulung angefertigtEs fehlen daher die Aufgabenstellungen, die  
 +während der Schulung vorgegeben wurden.**
  
-====== Samba 4 als Active Directory ======+===== Buch-Empfehlung =====
  
-https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/+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-Tools ======+**Achtung:** 2. Auflage ist massiv überarbeitet (blaue Ausgabe) 
 + 
 + 
 +===== Samba-Tools =====
  
 ^Tool ^ Beschreibung^ ^Tool ^ Beschreibung^
-|''testparm''|| +|''testparm''Testen der ''smb.conf''
-|''smbcontrol''||+|''smbcontrol''Steuert den 'Samba-Dienst |
 |''samba-tool''|| |''samba-tool''||
 |''smbstatus''| Status von Verbindungen und Dateien anzeigen| |''smbstatus''| Status von Verbindungen und Dateien anzeigen|
 |''net''|| |''net''||
-|''smbpasswd''|| +|''smbpasswd''Passwort eines Samba-Benutzers setzen
-|''pdbedit''||+|''pdbedit''Samba-Datenbanken einsehen und editieren. VORSICHT!!|
 |''smbcalcs''|| |''smbcalcs''||
-|''smbclient''||+|''smbclient''Samba-Client, um sich auf einem SMB-Server zu verbinden|
 |''mount.cifs''|| |''mount.cifs''||
 |''nmblookup''|| |''nmblookup''||
Zeile 26: Zeile 30:
 |''wbinfo''|| |''wbinfo''||
 |''rpcclient''|| |''rpcclient''||
- 
  
  
 ====== 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 = /srv/samba/Public/ +
-        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> +
 <file python install_samba.py> <file python install_samba.py>
 #!/usr/bin/python3.5 #!/usr/bin/python3.5
Zeile 98: Zeile 77:
 # smbclient SMB-Client für Freigaben # smbclient SMB-Client für Freigaben
 # heimdal Kerberos Implementierung # heimdal Kerberos Implementierung
-os.system ("mkdir -p /srv/samba/Publlic")+os.system ("mkdir -p /srv/samba/Public")
 os.system ("chmod 1777 /srv/samba/Public") os.system ("chmod 1777 /srv/samba/Public")
 os.system ("mv /etc/samba/smb.conf /etc/samba/smb.conf.org") os.system ("mv /etc/samba/smb.conf /etc/samba/smb.conf.org")
Zeile 107: Zeile 86:
                                                                                                                                                                                  
 </file> </file>
 +
 +Im vorangegangen Script wird eine erste ''smb.conf'' abgelegt. Die folgende Datei ist etwas ausführlicher.
 +<file bash smb.conf>
 +[global]
 +
 +        workgroup = training
 +        netbios name = tsam-fs01
 +        server string = Training CIFS Server
 +        server role = standalone server
 +
 +[Public]
 +
 +        path = /srv/samba/Public/
 +        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>
 +
  
  
Zeile 509: Zeile 515:
  
  
-====== Aufgabe11 LDAP-Objekte verändern ======+====== Aufgabe 11LDAP-Objekte verändern ======
  
 OFFEN: Konsitenz bedrohend, falls Änderungen nicht korrekt durchgeführt werden. OFFEN: Konsitenz bedrohend, falls Änderungen nicht korrekt durchgeführt werden.
  
 Nur über entsprechende lonsistenzbewahrende Tools durchführen. z.B. ''ldbrename'' Nur über entsprechende lonsistenzbewahrende Tools durchführen. z.B. ''ldbrename''
 +
 +====== Aufgabe 12: Wiederherstellung gelöschter Objekte (AD spezifisch) ======
 +
 +<file python enablerecyclebin>
 +#!/usr/bin/env python
 +#
 +# enabled the Recycle Bin optional feature
 +#
 +import optparse
 +import sys
 +
 +# Find right directory when running from source tree
 +sys.path.insert(0, "bin/python")
 +
 +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("enablerecyclebin <URL>")
 +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(), credentials=creds, lp=lp_ctx)
 +
 +# get the rootDSE
 +res = sam_ldb.search(base="", expression="", scope=SCOPE_BASE, attrs=["configurationNamingContext"])
 +rootDse = res[0]
 +
 +configbase=rootDse["configurationNamingContext"]
 +
 +# enable the feature
 +msg = ldb.Message()
 +msg.dn = ldb.Dn(sam_ldb, "")
 +msg["enableOptionalFeature"] = ldb.MessageElement(
 +     "CN=Partitions," +  str(configbase) + ":766ddcd8-acd0-445e-f3b9-a7f9b6744f2a",
 +     ldb.FLAG_MOD_ADD, "enableOptionalFeature")
 +res = sam_ldb.modify(msg)
 +
 +print "Recycle Bin feature enabled"
 +
 +</file>
 +====== 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 =====
 +
 +<code>
 +cat /var/lib/samba/private/krb5.conf 
 +[libdefaults]
 + default_realm = TRAINING.EXAMPLE
 + dns_lookup_realm = false
 + dns_lookup_kdc = true
 +</code>
 +
 +Ticket am Kerbos holen:
 +<code>
 +kinit Administrator@TRAINING.EXAMPLE
 +klist 
 +
 +Ausgabe:
 +Credentials cache: FILE:/tmp/krb5cc_0
 +        Principal: Administrator@TRAINING.EXAMPLE
 +
 +  Issued                Expires               Principal
 +Dec  8 13:53:27 2016  Dec  8 23:53:24 2016  krbtgt/TRAINING.EXAMPLE@TRAINING.EXAMPLE
 +</code>
 +
 +Die letzte Zeile zeig t das TGT als ''krbtgt'' an.
 +
 +Man kann pro User nur ein TGT erhalten. Will man sich mit unterschiedlichen Usernamen an einem AD anmelden, dann kann folgendes verwendet werden:
 +<code>
 +kinit -c testfile schueler1@TRAINING.EXAMPLE
 +klist -c testfile
 +
 +Ausgabe:
 +Credentials cache: FILE:testfile
 +        Principal: schueler1@TRAINING.EXAMPLE
 +
 +  Issued                Expires               Principal
 +Dec  8 13:55:02 2016  Dec  8 23:54:58 2016  krbtgt/TRAINING.EXAMPLE@TRAINING.EXAMPLE
 +</code>
 +
 +Pro Anmeldung erhält man ein eigenes Ticket:
 +<code>
 +smbclient -L tsam-fs01 -k
 +
 +Ausgabe:
 +Domain=[TRAINING] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]
 +
 + Sharename       Type      Comment
 + ---------       ----      -------
 + Public          Disk      Dateifreigabe
 + homes           Disk      Heimatverzeichnis
 + Gruppe1         Disk      Gruppe 1 Austausch
 + IPC$            IPC       IPC Service (Training CIFS Server)
 + administrator   Disk      Heimatverzeichnis
 +Domain=[TRAINING] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]
 +
 + Server               Comment
 + ---------            -------
 + TSAM-FS01            Training CIFS Server
 +
 + Workgroup            Master
 + ---------            -------
 + TRAINING             TSAM-FS01
 +
 +>> klist 
 +
 +Ausgabe:
 +Credentials cache: FILE:/tmp/krb5cc_0
 +        Principal: Administrator@TRAINING.EXAMPLE
 +
 +  Issued                Expires               Principal
 +Dec  8 13:53:27 2016  Dec  8 23:53:24 2016  krbtgt/TRAINING.EXAMPLE@TRAINING.EXAMPLE
 +Dec  8 13:58:24 2016  Dec  8 23:53:24 2016  cifs/tsam-fs01@TRAINING.EXAMPLE
 +</code>
 +
 +In der letzten Zeile ist nun ein neues Ticket für die CIFS-Freigabe
 +
 +Unter Windows funktioniert der ''klist''-Befehl ebenfalls.
 +Ausgabe:
 +<code>
 +Aktuelle Anmelde-ID ist 0:0x2a443
 +
 +Zwischengespeicherte Tickets: (2)
 +
 +#0>     Client: Administrator @ TRAINING.EXAMPLE
 +        Server: krbtgt/TRAINING.EXAMPLE @ TRAINING.EXAMPLE
 +        KerbTicket (Verschlüsselungstyp): AES-256-CTS-HMAC-SHA1-96
 +        Ticketkennzeichen 0x40e00000 -> forwardable renewable initial pre_authent
 +        Startzeit: 12/8/2016 14:02:01 (lokal)
 +        Endzeit:   12/9/2016 0:02:01 (lokal)
 +        Erneuerungszeit: 12/15/2016 14:02:01 (lokal)
 +        Sitzungsschlüsseltyp: AES-256-CTS-HMAC-SHA1-96
 +        Cachekennzeichen: 0x1 -> PRIMARY
 +        KDC aufgerufen: tsam-dc01.training.example
 +
 +#1>     Client: Administrator @ TRAINING.EXAMPLE
 +        Server: cifs/tsam-fs01 @ TRAINING.EXAMPLE
 +        KerbTicket (Verschlüsselungstyp): RSADSI RC4-HMAC(NT)
 +        Ticketkennzeichen 0x40a80000 -> forwardable renewable pre_authent 0x80000
 +        Startzeit: 12/8/2016 14:02:01 (lokal)
 +        Endzeit:   12/9/2016 0:02:01 (lokal)
 +        Erneuerungszeit: 12/15/2016 14:02:01 (lokal)
 +        Sitzungsschlüsseltyp: RSADSI RC4-HMAC(NT)
 +        Cachekennzeichen: 0
 +        KDC aufgerufen: tsam-dc01.training.example
 +</code>
 +
 +
 +====== Aufgabe 15: GPOs bearbeiten ======
 +
 +<code>
 +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},CN=Policies,CN=System,DC=training,DC=example
 +version      : 0
 +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},CN=Policies,CN=System,DC=training,DC=example
 +version      : 0
 +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},CN=Policies,CN=System,DC=training,DC=example
 +version      : 589824
 +flags        : NONE
 +</code>
 +
 +Man kann Geltungsbereich eines GPO-Containers gezielt ansehen. Hier: Alles unterhalb der ''OU=Schüler''
 +<code>
 +samba-tool gpo listcontainers CD2C83FD-4EEB-4DCD-88F9-97FE462C8CAF
 +
 +Ausgabe:
 +Container(s) using GPO CD2C83FD-4EEB-4DCD-88F9-97FE462C8CAF
 +    DN: OU=Schüler,OU=Schule,DC=training,DC=example
 +</code>
 +
 +Für einzelne Accounts:
 +<code>
 +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}
 +</code>
 +
 +Beim Benutzer ''cschmidt'' kann man sehen, dass die zuvor angelegte GPO ''Schüler Policy'' nicht eingebunden ist.
 +
 +Auf Verzeichnisebene kann man die Policies unter:
 +<code>/var/lib/samba/sysvol/training.example/Policies/{CD2C83FD-4EEB-4DCD-88F9-97FE462C8CAF}</code> 
 +
 +finden.
 +
 +
 +
 +====== Aufgabe 16: DNS im Active Directory ======
 +
 +Im ADSI-Editor eine neue Verbindung herstellen über den ''Definierten Namen und Namenskontext..''
 +mit folgendem Ziel:
 +<code>
 +DC=DomainDNSZones, DC=training,DC=example
 +</code>
 +
 +
 +====== 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.1481193720.txt.gz · Zuletzt geändert: (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki