
{"id":115,"date":"2014-11-01T17:18:15","date_gmt":"2014-11-01T16:18:15","guid":{"rendered":"http:\/\/3ronco.vahanus.net\/?p=115"},"modified":"2019-01-24T09:22:07","modified_gmt":"2019-01-24T08:22:07","slug":"linux-als-domain-member-host-einer-windows-domane","status":"publish","type":"post","link":"http:\/\/3ronco.vahanus.net\/?p=115","title":{"rendered":"Linux als Mitglied einer Windows Dom\u00e4ne"},"content":{"rendered":"<p>Heute m\u00f6chte ich die Anbindung eines <em>Linux Host<\/em> als vollwertiges Dom\u00e4nenmitglied in eine <em>Windows Server 200x Active Directory<\/em> Dom\u00e4ne behandeln. Dabei kommt einem vermutlich <em>Samba<\/em> in den Sinn jedoch dient dies eher der Dateifreigabe in einem Netzwerk, bei einfachen <em>Windows<\/em>-Arbeitsgruppen Netzwerken ist dies auch recht schnell bewerkstelligt allerdings mit einigen Einschr\u00e4nkungen. Die Benutzer und Gruppen, die Identifiktaion der einzelnen Hosts eines Netzwerks, verschiedenen Berechtigungsysteme etc. alles mu\u00df von Hand verwaltet werden.<br \/>\nEine <em>Windows Active Directory<\/em>-Dom\u00e4ne bietet hier verschiedene Vorteile. Alle Entit\u00e4ten werden in einer <em>LDAP<\/em> Datenbank auf dem <em>Windows Server<\/em> innerhalb eines sogenannten <em>Realms<\/em> (vgl. Dom\u00e4ne) verwaltet, dabei erhalten alle Maschinen ihre verschiedenen Berechtigungen vom <em>Windows Server<\/em>. F\u00fcr <em>Windows<\/em> Maschinen ist das nichts besonderes aber man kann sowas auch mit einer <em>Linux<\/em> Maschine machen dabei sollen folgende Kriterien erf\u00fcllt sein:<\/p>\n<ul>\n<li>Nutzung der <em>Kerberos<\/em> Authentifizierung. Der Linux Host soll ein Dom\u00e4nen Mitglied mit eigener <em>Machine Credential<\/em> sein um sich so auch passwortlos am Dom\u00e4nennetzwerk anmelden zu k\u00f6nnen. So wie das Windows Maschinen auch machen.<\/li>\n<li>Benutzer und Gruppen des <em>Realms<\/em> (vgl. Dom\u00e4ne) sollen dem Linux Host bekannt sein und auch als Besitzer f\u00fcr Dateien und Ordner des Linux Hosts gesetzt werden k\u00f6nnen.<\/li>\n<li>Linux spezifische Accountdaten wie <em>UID<\/em>, <em>GID<\/em>, <em>Homepath<\/em>, <em>Shell<\/em>, etc, sollen im Active Directory verwaltet werden.<\/li>\n<li>Der Linux Host soll Dienste anbieten die den <a href=\"http:\/\/en.wikipedia.org\/wiki\/Single_sign-on\">Single sign-on<\/a> Mechanismus der Dom\u00e4ne verwenden k\u00f6nnen und bei dem sich auch Benutzer der Dom\u00e4ne auf Diensten des Linux Hosts anmelden k\u00f6nnen z.B. <em>Samba<\/em> oder <em>NFS<\/em> Freigaben nutzen oder per <em>SSH<\/em> anmelden, etc.<\/li>\n<\/ul>\n<p>Quellen:<br \/>\n<a href=\"http:\/\/www.samba.org\/samba\/docs\/man\/Samba-HOWTO-Collection\/index.html\">The Official Samba 3.5.x HOWTO and Reference Guide<\/a><br \/>\n<a href=\"http:\/\/web.mit.edu\/kerberos\"> http:\/\/web.mit.edu\/kerberos<\/a><br \/>\n<!--nextpage--><\/p>\n<h1>Prerequisites<\/h1>\n<p>Bevor wir beginnen sollten folgende Dinge sicher gestellt sein. Da die Konfiguration sehr umfangreich ist k\u00f6nnen nicht alle Schritte im Detail betrachtet werden, daher wird folgendes voraus gesetzt:<\/p>\n<ul>\n<li>Ein <em>Windows Server 200x<\/em> heraufgestuft zum Prim\u00e4ren Dom\u00e4nen Controller mit <em>Active Directory Realm<\/em> hier bezeichnet als <em>snakeoil.org<\/em>. Im Folgenden wird der Windows Server als <em>myPDC.snakeoil.org<\/em> bezeichnet.<\/li>\n<li>Ein DNS-Server der alle <em>Hosts<\/em> und insbesondere die <em>SRV<\/em> Eintr\u00e4ge aufl\u00f6sen kann sodass sich der <em>KDC<\/em> Server auch im <em>Realm<\/em>, z.B. per <em>snakeoil.org<\/em> finden l\u00e4\u00dft. Tipp-Fehler werden schnell zur Stolperfalle wenn Hostnamen nicht mit dem Namen im <em>KDC<\/em> \u00fcbereinstimmen oder etwaige lokale <em>Hosts<\/em>-Dateien auf einem Linux System den Namen anders aufl\u00f6sen als der <em>DNS<\/em>. Einfacher ist es hier den Windows DNS zu verwenden da dieser sowieso Voraussetzung f\u00fcr eine funktionierende Dom\u00e4ne ist. Die Pros richten h\u00e4ufig einen zus\u00e4tzlichen <em>Bind9 DNS<\/em> Server auf einem Linux System als <em>Slave-DNS<\/em> mit entsprechendem Zonen-Transfer vom <em>Windows DNS Server<\/em> ein.<\/li>\n<li>Auf der Linuxmaschine sollte man die Reihenfolge der Namensaufl\u00f6sung in <em>\/etc\/host.conf<\/em> beachten <em>(!)<\/em><br \/>\n<em>Samba<\/em> und <em>Winbind<\/em> verwenden abh\u00e4ngig von der Konfiguration trotz angegebener Reihenfolge der Namensaufl\u00f6sung manchmal trotzdem die <em>Hosts<\/em>-Datei oder den <em>DNS<\/em> daher sollte das Subnetz und die Dom\u00e4nennamen-Aufl\u00f6sung in <em>\/etc\/networks<\/em> identisch mit denen des <em>Realms<\/em> sein. Wenn <em>\/etc\/hosts<\/em> zus\u00e4tzlich verwendet wird dann in <em>[IP] [FQDN] [HOSTNAME]<\/em> Notation z.B.<\/p>\n<pre>192.168.1.1 myhost.snakeoil.org myhost<\/pre>\n<p>weil Samba und Winbind sich manchmal pingelig anstellen wenn ein <em>[FQDN]<\/em> erwartet wird aber nur ein <em>[HOSTNAME]<\/em> zur\u00fcckkommt.<\/li>\n<li>Ein DHCP Server, am besten mit dynamischer Hostnamen-Aktualisierung sodass jeder Host im Sub-Netz bekannte f\u00fcr alle verbindliche Namen erh\u00e4lt. Es funktioniert prinzipiell unter den Linux Maschinen auch mit stinknormaler lokaler <em>Hosts<\/em>-Aufl\u00f6sung wer hier allerdings nicht pr\u00e4zise ist kann sich u.U. ins Knie schie\u00dfen.<\/li>\n<li>Alle Maschinen des <em>Realms<\/em> (Dom\u00e4ne) m\u00fcssen per <em>NTP<\/em> korrekt zeit-synchronisiert laufen weil <em>Kerberos<\/em> keine <a href=\"http:\/\/en.wikipedia.org\/wiki\/Clock_skew\">Clock skews<\/a> duldet und u.U. dann Tickets verweigert obwohl die <em>Credentials<\/em> korrekt sind.<\/li>\n<li>Auf allen Maschinen des <em>Relams<\/em> mu\u00df die <em>\/etc\/services<\/em> Datei vorhanden und korrekte, identische Eintr\u00e4ge enthalten zumindest f\u00fcr die Dienste die \u00fcber Kerberos authentifiziert werden sollen, also in unserem Fall z.B:\n<pre>...\nnetbios-ns 137\/tcp # NETBIOS Name Service\nnetbios-ns 137\/udp\nnetbios-dgm 138\/tcp # NETBIOS Datagram Service\nnetbios-dgm 138\/udp\n...\nmicrosoft-ds 445\/tcp # Microsoft Naked CIFS\nmicrosoft-ds 445\/udp\n...\nnfs 2049\/tcp # Network File System\nnfs 2049\/udp # Network File System\n...<\/pre>\n<p>Eigentlich sollte diese Datei \u00fcberall gleich sein aber dies kann insbesonders dann wichtig werden wenn verschiedene, exotische Distributionen verwendet werden bei denen sich manche Portnummern evtl. unterscheiden. Debian und Ubuntu machen hier naturgem\u00e4\u00df keine sonderlichen Probleme ansonsten sollte man zumindest einen <em>diff<\/em> machen um sicher zu gehen. Solche Fehlkonfiguration der <em>services<\/em>-Datei k\u00f6nnen nat\u00fcrlich ignoriert werden wenn die betreffenden Dienstnamen nicht \u00fcber Kerberos authentifiziert werden.<\/li>\n<\/ul>\n<p><!--nextpage--><\/p>\n<h1>Auf dem Windows Server<\/h1>\n<p>Doch bevor es an die Linux Maschine geht m\u00fcssen wir einige Vorbereitungen auf dem <em>Windows Server<\/em> treffen. Dort sollten die Windows Komponenten <em>Server for NIS<\/em> und <em>Identity Management for Unix<\/em> installiert sein, die man auf der Windows Server Installations CD findet. Der einfachste Weg ist hier:<\/p>\n<p style=\"padding-left: 30px;\"><em>Start<br \/>\n&gt;&gt; Control Panel<br \/>\n&gt;&gt; Add or Remove Programs<br \/>\n&gt;&gt; Add\/Remove Windows Components<br \/>\n&gt;&gt; Active Directory Services<br \/>\n&gt;&gt; Identity Management for UNIX<br \/>\n&gt;&gt; Administration Components<br \/>\n&gt;&gt; Server for NIS<\/em><\/p>\n<p>und optional kann man z.B. noch den NFS Server installieren wer einen solchen Dienst unter Windows betreiben m\u00f6chte:<\/p>\n<p style=\"padding-left: 30px;\"><em>Other Network File &amp; Print Services<br \/>\n&gt;&gt; Microsoft Services for NFS<\/em><\/p>\n<p>Die Installation sorgt u.A. daf\u00fcr dass das <em>Active Directory<\/em> um dass sogenannte <em>RFC2307 Schema<\/em> erweitert wird, auf diese Weise werden Benutzer und Gruppen der Dom\u00e4ne (<em>SID<\/em>) den entsprechenden lokalen Unix Benutzer und Gruppen IDs (<em>UID &amp; GID<\/em>) zugeordnet. Man kann sich das so vorstellen das in der <em>LDAP<\/em> Datenbank weitere Spalten in einer Tabelle eingerichtet werden um zus\u00e4tzliche Informationen abzuspeichern.<br \/>\nDie R2 Variante des Windows 2003 Servers soll Teile dieses Schemas bereits in seiner <em>LDAP<\/em> Datenbank enthalten, da aber diese scheinbar nicht vollst\u00e4ndig ist, wie in diversen Foren berichtet wird, ist eine Installation dieser Komponenten unabdingbar. Keine Sorge, die Integrit\u00e4t des Active Directory bleibt vollkommen erhalten, die besagten Komponenten sind auch keine Hicky-Hacky-Tools sondern stammen vom Microsoft h\u00f6chstpers\u00f6nlich.<\/p>\n<p><a href=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/ServerForNIS.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-127\" src=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/ServerForNIS.png\" alt=\"ServerForNIS\" width=\"966\" height=\"715\" srcset=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/ServerForNIS.png 966w, http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/ServerForNIS-300x222.png 300w, http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/ServerForNIS-624x461.png 624w\" sizes=\"auto, (max-width: 966px) 100vw, 966px\" \/><\/a><\/p>\n<p>Links sieht man die installierte Komponente welche im Benutzerdialog rechts ein weiteres Tab zur Verf\u00fcgung stellt um Unix Einstellungen f\u00fcr Benutzer &amp; Gruppen der Dom\u00e4ne vorzunehmen. Diese werden vom <em>winbind<\/em> Dienst auf dem Linux System verwendet um einen Dom\u00e4nenbenutzer einer <em>NIS-Domain<\/em> zuzuordnen, die in unserem Fall identisch mit dem Arbeitsgruppennamen der <em>Active Directory<\/em>-Dom\u00e4ne ist. Ggfs. kann man noch zus\u00e4tzliche Daten wie z.B. <em>Login Shell<\/em> oder <em>Home Directory<\/em> angeben.<\/p>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nDa das im Netz oft gerne durcheinander geworfen wird, f\u00fcr Windows Server Varianten bis einschlie\u00dflich <b>Windows Server 2003<\/b> hei\u00dft diese Komponente <b>Microsoft Windows Services for UNIX<\/b>, in der <b>Samba<\/b> Dokumentation h\u00e4ufig als <b>sfu<\/b> abgek\u00fcrzt und ab <b>Windows Server 2003 R2<\/b> wurde es anschlie\u00dfend umbenannt in <b>Subsystem for UNIX-based Applications<\/b>. Letzteres scheint sich in der Verwendung dennoch zu unterscheiden da in der Samba Dokumentation diese explizit als <b>rfc2307<\/b> bezeichnet wird. Man sollte also wissen welche der beiden man einsetzen m\u00f6chte abh\u00e4ngig von der Windows Server Version die man einsetzt. Im Folgenden beziehen wir uns hier auf das <b>rfc2307<\/b> Schema.<\/p><\/blockquote>\n<p>Quellen:<br \/>\n<a href=\"&quot;http:\/\/de.wikipedia.org\/wiki\/Microsoft_Windows_Services_for_UNIX\">Microsoft Windows Services for UNIX<\/a><br \/>\n<a href=\"http:\/\/blogs.msdn.com\/b\/sfu\/archive\/2007\/04\/12\/services-for-unix-vs-windows-server-2003-r2-unix-interoperability.aspx\">Services for UNIX vs Windows Server 2003 R2 UNIX Interoperability<\/a><br \/>\n<a href=\"http:\/\/blog.scottlowe.org\/2006\/08\/08\/linux-active-directory-and-windows-server-2003-r2-revisited\/\">Linux, Active Directory, and Windows Server 2003 R2 Revisited<\/a><br \/>\n<a href=\"http:\/\/www.suacommunity.com\/Implement_Configure_NFS.aspx#Configuring%202307\/AD%20for%20Unix%20IDs\">Configuring 2307\/AD for Unix IDs<\/a><br \/>\n<a href=\"http:\/\/www.samba.org\/samba\/docs\/man\/Samba-HOWTO-Collection\/idmapper.html#id2607771\">IDMAP and NSS Using LDAP from ADS with RFC2307bis Schema Extension<\/a><br \/>\n<a href=\"https:\/\/blogs.technet.microsoft.com\/filecab\/2010\/05\/13\/using-kerberos-security-with-server-for-nfs\/\">Using Kerberos security with Server for NFS (also good explanation how root UID is bound to a user in AD)<\/a><br \/>\n<!--nextpage--><\/p>\n<h1>Der Linux Host<\/h1>\n<p>Ich gehe beim Linux Host von <em>Ubuntu<\/em> aus aber <em>Debian<\/em> sollte hier genauso funktionieren. In meinem Test Setup hatte ich gemischte Linux Maschinen (<em>Debian<\/em> &amp; <em>Ubuntu<\/em>) verwendet. Andere Kombinationen sollten aber auch funktionieren k\u00f6nnen sich dann allerdings f\u00fcr andere Distributionen ggfs. in der Konfiguration anders gestalten.<br \/>\nUm also unseren Linux Host in den <em>snakeoil.org<\/em> Realm zu bringen installiert man zun\u00e4chst die <em>winbind<\/em> &amp; <em>krb5-user<\/em> Pakete, <em>winbind<\/em> dient in erste Linie dazu Benutzer und Gruppen aus dem <em>Realm<\/em> den Linux Maschinen bekannt zu machen. Wer zus\u00e4tzlich <em>Samba<\/em> als Dateifreigabe verwenden m\u00f6chte kann vorher noch <em>samba-common<\/em> installieren, darauf gehe ich hier aber zun\u00e4chst nicht n\u00e4her ein. Zwar installiert <em>winbind<\/em> auch <em>libkrb5<\/em> aber zus\u00e4tzlich brauchen wir noch ein paar Tools dazu:<\/p>\n<pre>me@myComputer:~$ sudo apt-get install \\\nwinbind \\\nlibpam-winbind \\\nlibnss-winbind \\\nkrb5-user \\\nkrb5-config \\\nlibpam-krb5<\/pre>\n<p>Dann legen wir die <em>\/etc\/samba\/smb.conf<\/em> Datei an die <em>winbind<\/em> mitteilt wo was zu finden ist:<\/p>\n<pre>me@myComputer:~$ cat \/etc\/samba\/smb.conf\n\n[global]\nnetbios name = [HOSTNAME]\nrealm = SNAKEOIL.ORG\nworkgroup = SNAKEOIL\nsecurity = ADS\nencrypt passwords = yes\npassword server = *\nidmap config * : backend = tdb\nidmap config * : range = 1-9999\nidmap config SNAKEOIL : backend = ad\nidmap config SNAKEOIL : schema_mode = rfc2307\nidmap config SNAKEOIL : range = 10000-19999\nwinbind nss info = rfc2307\nwinbind enum users = yes\nwinbind enum groups = yes\nwinbind offline logon = yes\npreferred master = no\nwinbind nested groups = Yes\nwinbind use default domain = Yes\nmax log size = 50\nlog file = \/var\/log\/samba\/log.%m\nlog level = 3\nallow trusted domains = No\nclient use spnego = Yes\nkerberos method = secrets and keytab\ndedicated keytab file = \/etc\/krb5.keytab\nwinbind refresh tickets = true\nname resolve order = lmhosts host\n...<\/pre>\n<p>Anschlie\u00dfend geben wir noch den <em>Kerberos<\/em>-Bibliotheken folgende Konfiguration:<\/p>\n<pre>me@myComputer:~$ cat \/etc\/krb5.conf\n\n[libdefaults]\n\tticket_lifetime = 36000\n\tdefault_realm = snakeoil.org\n\tdns_lookup_kdc = true\n\n\t\t# The following krb5.conf variables are only for MIT Kerberos.\n\tkrb4_config = \/etc\/krb.conf\n\tkrb4_realms = \/etc\/krb.realms\n\tkdc_timesync = 1\n\tccache_type = 4\n\tforwardable = true\n\tproxiable = true\n\n\t\t# The following encryption type specification will be used by MIT Kerberos\n\t\t# if uncommented.  In general, the defaults in the MIT Kerberos code are\n\t\t# correct and overriding these specifications only serves to disable new\n\t\t# encryption types as they are added, creating interoperability problems.\n\t\t#\n\t\t# Thie only time when you might need to uncomment these lines and change\n\t\t# the enctypes is if you have local software that will break on ticket\n\t\t# caches containing ticket encryption types it doesn't know about (such as\n\t\t# old versions of Sun Java).\n\t\t#\n\t\t#\tdefault_tgs_enctypes = des3-hmac-sha1\n\t\t#\tdefault_tkt_enctypes = des3-hmac-sha1\n\t\t#\tpermitted_enctypes = des3-hmac-sha1\n\n\tdefault_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 des-cbc-crc des-cbc-md5 des-cbc-md4\n\tdefault_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 des-cbc-crc des-cbc-md5 des-cbc-md4\n\tpermitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 des-cbc-crc des-cbc-md5 des-cbc-md4\n\n\t# The following libdefaults parameters are only for Heimdal Kerberos.\n\tv4_instance_resolve = false\n\tv4_name_convert = {\n\t\thost = {\n\t\t\trcmd = host\n\t\t\tftp = ftp\n\t\t}\n\t\tplain = {\n\t\t\tsomething = something-else\n\t\t}\n\t}\n\tfcc-mit-ticketflags = true\n\n[realms]\n\tSNAKEOIL.ORG = {\n\t\tkdc = dc.snakeoil.org\n\t\tadmin_server = dc.snakeoil.org\n\t\tkpasswd_server = dc.snakeoil.org\n\t\tkpasswd_protocol = SET_CHANGE\n\t\tdefault_domain = dc.org\n\t}\n\n[domain_realm]\n\t*.snakeoil.org = SNAKEOIL.ORG\n\t.snakeoil.org = SNAKEOIL.ORG\n\tsnakeoil.org = SNAKEOIL.ORG\n\n[login]\n\tkrb4_convert = true\n\tkrb4_get_tickets = false\n\n[appdefaults]\n\tpam = {\n\t   debug = false\n\t   ticket_lifetime = 3600\n\t   renew_lifetime = 3600\n\t   forwardable = true\n\t   krb4_convert = false\n\t}\n\n[logging]\n\tdefault = FILE:\/var\/log\/krb5.log\n\tkdc = FILE:\/var\/log\/krb5_kdc.log\n<\/pre>\n<p>Unter den Konfigurationen <em>[realms]<\/em> &amp; <em>[domain_realm]<\/em> sollte man beim <em>Realm<\/em>-Namen die Gro\u00df- &amp; Kleinschreibung beachten. Nun k\u00f6nnen wir wenn alles stimmt die Linux Maschine in die Dom\u00e4ne bringen mit:<\/p>\n<pre>me@myComputer:~$ sudo service winbind restart\nme@myComputer:~$ sudo net ads join -U Administrator<\/pre>\n<p>Wobei man nicht zwingend das <em>Administrator<\/em>-Konto des <em>DCs<\/em> nehmen muss, jedes <em>Dom\u00e4nen-Administrator<\/em>-Konto sollte daf\u00fcr reichen.<\/p>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nHier ist die Rede von Konten aus der Dom\u00e4ne des <b>Windows<\/b> Servers also des <b>Realms<\/b>. Ein lokales <b>Administrator<\/b>-Konto kann durchaus parallel mit einem anderen Passwort koexistieren. Diese sollten nicht verwechselt werden.<\/p><\/blockquote>\n<p>Anschlie\u00dfend wird man nach dem Passwort dieses Kontos gefragt, sollte alles glatt gegangen sein k\u00f6nnen wir mit <em>wbinfo<\/em> erstmal pr\u00fcfen ob wir es in die Dom\u00e4ne geschafft haben:<\/p>\n<pre>me@myComputer:~$ wbinfo -t\nchecking the trust secret for domain SNAKEOIL via RPC calls succeeded<\/pre>\n<p>Erh\u00e4lt man diese Meldung dann sind wir schonmal einen gro\u00dfen Schritt weiter, es bedeutet das die Linux Maschine nun ein Mitglied der Dom\u00e4ne ist. Nun kann man noch pr\u00fcfen ob Benutzer &amp; Gruppen aus dem <em>Realm<\/em> auf der Linux Maschine verf\u00fcgbar sind.<\/p>\n<pre>me@myComputer:~$ # f\u00fcr Benutzer\nme@myComputer:~$ wbinfo -u\nadministrator\nguest\nsupport_388945a0\nkrbtgt\niusr_mydc\niwam_mydc\n...\n\nme@myComputer:~$ # &amp; Gruppen\nme@myComputer:~$ wbinfo -g\nhelpservicesgroup\ntelnetclients\nwins users\ndomain computers\ndomain controllers\nschema admins\nenterprise admins\ncert publishers\ndomain admins\ndomain users\ndomain guests\ngroup policy creator owners\nras and ias servers\ndnsadmins\ndnsupdateproxy\niis_wpg\ncertsvc_dcom_access\ndhcp users\ndhcp administrators\nsqlserver2005mssqluser$ragnarok$sqlexpress\nwsus reporters\nwsus administrators\n...<\/pre>\n<p>Zwar sind Benutzer &amp; Gruppen der Dom\u00e4ne jetzt \u00fcber Winbind f\u00fcr die Linux Maschine abrufbar das bedeutet aber noch nicht das diese auch verwendet werden k\u00f6nnen. Denn Winbind dient in erster Linie dazu die Verbindung zur Dom\u00e4ne zu gew\u00e4hrleisten und die ID Mappings zu regeln, damit die Benutzer und Gruppen der Dom\u00e4ne auch auf der Linux Maschine verwendbar sind m\u00fcssen diese erst in der Liste der gew\u00f6hnliche Benutzer des Linux Systems auftauchen:<\/p>\n<pre>me@myComputer:~$ getent passwd\nroot:x:0:0:root:\/root:\/bin\/bash\ndaemon:x:1:1:daemon:\/usr\/sbin:\/bin\/sh\nbin:x:2:2:bin:\/bin:\/bin\/sh\nsys:x:3:3:sys:\/dev:\/bin\/sh\n...<\/pre>\n<p>Leider sind am Ende der Liste noch keine Dom\u00e4nen-Benutzer sichtbar. Um das zu bewerkstelligen f\u00fcgen wir in der <em>nsswitch.conf<\/em>-Datei noch <em>winbind<\/em> zur Auflistung der Benutzer &amp; Gruppen unter <em>passwd<\/em> und <em>group<\/em> hinzu, normalerweise sieht diese so oder so \u00e4hnlich aus:<\/p>\n<pre>me@myComputer:~$ cat \/etc\/nsswitch.conf \n# \/etc\/nsswitch.conf\n#\n# Example configuration of GNU Name Service Switch functionality.\n# If you have the `glibc-doc-reference' and `info' packages installed, try:\n# `info libc \"Name Service Switch\"' for information about this file.\n\npasswd:         compat\ngroup:          compat\nshadow:         compat\n\nhosts:          files dns wins mdns4\n\nnetworks:       files dns\n\nprotocols:      db files\nservices:       db files\nethers:         db files\nrpc:            db files\n\nnetgroup:       nis<\/pre>\n<p>Wir \u00e4ndern diese Zeilen wie folgt um:<\/p>\n<pre>...\npasswd:         compat winbind\ngroup:          compat winbind\n...<\/pre>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nDamit diese Einstellungen wirksam sind ist das Paket <b>libnss-winbind<\/b> erforderlich.<\/p><\/blockquote>\n<p>Der lokalen <em>PAM<\/em> Authentifizierung der Linux Maschine machen wir die Benutzer der Dom\u00e4ne ebenfalls zug\u00e4nglich, dazu integriert man auch dort <em>Winbind<\/em> per:<\/p>\n<pre>me@myComputer:~$ pam-auth-update<\/pre>\n<p>Anschlie\u00dfend setzt man, im folgende Dialog, die Option <em>Winbind NT\/Active Directory authentication<\/em><\/p>\n<p><a href=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/Winbind2PAM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-131\" src=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/Winbind2PAM.png\" alt=\"Winbind2PAM\" width=\"603\" height=\"291\" srcset=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/Winbind2PAM.png 603w, http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/Winbind2PAM-300x144.png 300w\" sizes=\"auto, (max-width: 603px) 100vw, 603px\" \/><\/a><\/p>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nSollte das gew\u00fcnschte PAM Modul nicht auftauchen mu\u00df man ggfs. noch das Paket <b>libpam-winbind<\/b> installieren.<\/p><\/blockquote>\n<p>Das \u00fcberpr\u00fcfen wir mit einem Blick in <em>\/etc\/pam.d\/common-auth<\/em>:<\/p>\n<pre>me@myComputer:~$ cat \/etc\/pam.d\/common-auth \n#\n# \/etc\/pam.d\/common-auth - authentication settings common to all services\n#\n\n...\n\n# here are the per-package modules (the \"Primary\" block)\nauth\t[success=2 default=ignore]\tpam_unix.so nullok_secure\nauth\t[success=1 default=ignore]\tpam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass\n...<\/pre>\n<p>Man sieht hier dass das Modul <em>pam_winbind.so<\/em> samt <em>Kerberos<\/em> Bibliotheken eingef\u00fcgt wurde.<\/p>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nEin hartn\u00e4ckiger Bug im <b>libpam-winbind<\/b> Paket kann u.U. eine erfolgreiche Anmeldung verhindern, n\u00e4hmlich dann wenn die Kerberos Schl\u00fcsseltabelle in <b>\/etc\/krb5.keytab<\/b> lediglich Zugriffsberechtigungen f\u00fcr den Benutzer <b>root<\/b> enth\u00e4lt.<\/p>\n<pre>-rw------- 1 root root 1.1K Oct 27 20:28 \/etc\/krb5.keytab<\/pre>\n<p>In der Regel sollte das auch so sein, funtkioniert aber nicht zuverl\u00e4ssig. (vgl. <b>Samba 4.1.13+dfsg-2<\/b>)<br \/>\nEin Workaround besteht darin auch der Gruppe <b>root<\/b> zumindest Leseberechtigungen zu erteilen. Das klingt zwar seltsam funtkioniert aber zumindest unter Debian basierten Systemen tats\u00e4chlich.<\/p>\n<pre>me@myComputer:~$ chmod g+r \/etc\/krb5.keytab<\/pre>\n<p>In Internet findet man auch oft einen Workaround der empfiehlt die <b>krb5_auth krb5_ccache_type=FILE<\/b> Argumente aus der Zeile:<\/p>\n<pre>auth [success=1 default=ignore] pam_winbind.so <span style=\"color: #ff0000;\">krb5_auth krb5_ccache_type=FILE<\/span> cached_login try_first_pass<\/pre>\n<p>zu entfernen allerdings funktioniert dann der Signle-SignOn Mechanismus \u00fcber GSSAPI bei Kerberos Authentifizierung nicht mehr weil Winbind logischerweise, aufgrund des fehlenden Arguments, diese gar nicht mehr vornimmt.<\/p><\/blockquote>\n<p>Allerdings bekommt man beim <em>getent<\/em> Aufruf noch keine Dom\u00e4nen-Benutzer zu sehen weil diese daf\u00fcr auf dem <em>Windows Server<\/em> erstmal konfiguriert sein m\u00fcssen, doch dazu sp\u00e4ter mehr.<br \/>\nIm folgenden <em>Aftermath<\/em> beleuchten wir die einzelnen Konfigurationsoptionen der <em>smb.conf<\/em> im Detail.<\/p>\n<p>Quellen:<br \/>\n<a href=\"https:\/\/blogs.iis.net\/brian-murphy-booth\/the-biggest-mistake-serviceprincipalname-s\"> https:\/\/blogs.iis.net\/brian-murphy-booth\/the-biggest-mistake-serviceprincipalname-s<\/a><br \/>\n<a href=\"https:\/\/www.google.com\/search?q=WBC_ERR_AUTH_ERROR+request+wbcLogonUser+WBC_ERR_AUTH_ERROR\">Google: request wbcLogonUser WBC_ERR_AUTH_ERROR NT_STATUS_CONNECTION_DISCONNECTED<\/a><br \/>\n<a href=\"https:\/\/bugzilla.samba.org\/show_bug.cgi?id=10490\">Samba Bugzilla #10490<\/a><br \/>\n<a href=\"https:\/\/bugs.launchpad.net\/ubuntu\/+source\/samba\/+bug\/1310919\"> Launchpad Bug #1310919<\/a><br \/>\n<!--nextpage--><\/p>\n<h1>Aftermath<\/h1>\n<p>Erfahrene Benutzer welche die Samba Konfiguration auswendig kennen k\u00f6nnen diesen Teil \u00fcberspringen allerdings werden hier einige interessante Stolperfallen der <em>smb.conf<\/em> Datei behandelt.<\/p>\n<ul>\n<li><em>netbios name<\/em><br \/>\nF\u00fcr [<em>HOSTNAME<\/em>] setzt man den <em>DNS Hostnamen<\/em> ein dieser ist identisch mit dem <em>Netbios<\/em>-Namen. Hier wird auch deutlich wieso die Namenaufl\u00f6sung so penibel beachten werden mu\u00df.<\/li>\n<li><em>workgroup = SNAKEOIL<\/em><br \/>\nEin <em>Realm<\/em> ist nat\u00fcrlich keine <em>Workgroup<\/em> aber der Arbeitsgruppen-Name erf\u00fcllt hier die Aufgabe als Abk\u00fcrzung f\u00fcr den <em>Realm<\/em>-Namen zu fungieren daher sollte dieser auch korrekt gesetzt sein.<\/li>\n<li><em>security = ADS<\/em><br \/>\nVeranlasst <em>Winbind<\/em> und <em>Samba<\/em> im <em>Active Directory<\/em> Modus zu agieren.<\/li>\n<li><em>encrypt passwords = yes<\/em><br \/>\nF\u00fcr <em>Windows<\/em> Versionen h\u00f6her als <em>98<\/em> und <em>NT 4.0 SP3<\/em> werden verschl\u00fcsselte Passw\u00f6rter verwendet. Wer mit steinalten fr\u00fcheren Versionen von <em>Windows<\/em> rumhantiert sollte hier <em>no<\/em> setzen denn diese beherrschen die Passwortverschl\u00fcsselung nicht. Gemischte Umgebungen sind aber nicht m\u00f6glich denn jeder <em>Windows Client<\/em> der Verschl\u00fcsselung anfordert wird sich weigern Passw\u00f6rter im Klartext \u00fcber den Draht zu senden. Pikanterweise speichert <em>Winbind<\/em> selbst alle Passw\u00f6rter in seinen <em>Credentials Cache<\/em> als Klartext ab. Wer schon immer mal wissen wollte was Windows so als <em>Machine Credentials<\/em> verwendet kann sich diese so anschauen:<\/p>\n<pre>sudo apt-get install tdb-tools\ntdbdump \/var\/lib\/samba\/secrets.tdb<\/pre>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nGelingt es einem Angreifer diese Dateien zu kapern kann man den ganzen <b>Realm<\/b> getrost als kompromitiert betrachten und wegschmei\u00dfen. Diese Dateien sollten daher nur f\u00fcr den <b>root<\/b>-Benutzer zugriffsf\u00e4hig sein.<br \/>\nDort finden sich noch weitere Datenbanken f\u00fcr die <b>Gruppenbeziehungen<\/b>, <b>Registry<\/b>-Eintr\u00e4ge, Informationen zu Freigaben, etc.<\/p><\/blockquote>\n<\/li>\n<li><em>password server = *<\/em><br \/>\nHier wird normalerweise der Hostname des Passwort-Servers angegeben, bei einer adequaten Namensaufl\u00f6sung kann man <em>Winbind<\/em> durch <b>*<\/b> aber auch veranlassen den Passwort-Server selbst im <em>Realm<\/em> zu ermitteln. Dies kann in <em>Load Balancing<\/em>-Szenarios sinnvoll sein wenn neben dem <em>PDC<\/em> noch ein <em>BDC<\/em> Server l\u00e4uft oder mehrere parallele <em>DCs<\/em>.<\/li>\n<li><em>idmap config &#8230;<\/em><br \/>\nHier nun der interessante Teil. Damit die <em>IDs<\/em> der lokalen Benutzer &amp; Gruppen des Linux Hosts nicht mit denen aus dem <em>Active Directory<\/em> kollidieren werden zwei Konfigurationen definiert. Einmal <em>idmap config * : &#8230;<\/em> als Standarteinstellung welche immer verwendet wird wenn keine andere Konfiguration ermittelt werden konnte, als Backend verwendet sie eine tdb Datenbank und der Bereich der erlaubten <em>IDs<\/em> erstreckt sich von 1-9999.<\/p>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nUnter Linux verwenden Benutzer und Gruppen getrennte sich \u00fcberlappende Zahlenbereiche von <b>1&#8230;n<\/b> w\u00e4hrend Windows einen Zahlenbereich f\u00fcr beides verwendet.<\/p><\/blockquote>\n<p>Die anderen <em>idmap config SNAKEOIL : &#8230;<\/em> Einstellungen sollen als Backend das <em>Active Directory<\/em> verwenden. Hier wird auch deutlich wieso die korrekte Definition des Arbeitsgruppennamens f\u00fcr den <em>Realm<\/em> so wichtig ist, man kann hier nicht einfach irgendeinen Namen angeben z.B. (<em>idmap config BLAH : &#8230;<\/em> oder <em>idmap config MEH : &#8230;<\/em>) denn dann versucht Winbind den <em>Realm<\/em> \u00fcber diese Arbeitsgruppennamen auch aufzul\u00f6sen, was scheitern d\u00fcrfte da der dazugeh\u00f6rige Realm wahrscheinlich nicht existiert.<br \/>\nDesweiteren m\u00f6chten wir dass <em>Winbind<\/em> das <em>RFC2307<\/em> Schema, welches wir in der Vorbereitung unseres Windows Server installiert hatten, verwendet um Linux relevante Information aus dem <em>Active Directory<\/em> zu verwenden. Der Zahlenbereich f\u00fcr Benutzer und Gruppen aus dem <em>Realm<\/em> schlie\u00dft sich direkt dem Zuvorliegenden an.<\/p>\n<blockquote><p><span style=\"color: #ff0000;\">2xAchtung!<\/span><br \/>\nZahlenbereiche aus unterschiedlichen <b>idmap<\/b> Zuordnungen (vgl. <b>*<\/b>, <b>SNAKEOIL<\/b>) d\u00fcrfen sich <span style=\"text-decoration: underline;\">auf gar keinen Fall<\/span> \u00fcberlappen sonst veranstaltet <b>Winbind<\/b> \u00e4u\u00dferst verst\u00f6rende Dinge.<\/p><\/blockquote>\n<\/li>\n<li><em>winbind nss info = rfc2307<\/em><br \/>\nObwohl diese Einstellung scheinbar \u00fcberfl\u00fcssig ist weil wir diese bereits in<\/p>\n<pre>idmap config SNAKEOIL : schema_mode = rfc2307<\/pre>\n<p>angegeben haben mu\u00df man diese offenbar dennoch explizit definieren. In einigen Foren wird von seltsamen Problemen berichtet wenn man diese Einstellung wegl\u00e4sst.<\/li>\n<li><em>winbind enum &#8230; = yes<\/em><br \/>\nDiese Einstellung erm\u00f6glicht die Auflistung von Benutzern &amp; Gruppen des <em>Active Directory<\/em> durch den Aufruf der <em>setgrent(), getgrent()<\/em> Funktionen. Durch <em>getent<\/em> kann man das ausprobieren z.B.:<\/p>\n<pre>me@myComputer:~$ # Benutzer auflisten\nme@myComputer:~$ getent passwd\n...\nme@myComputer:~$ # oder Gruppen\nme@myComputer:~$ getent group\n...<\/pre>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nHier gibt es einige bekannte Bugs abh\u00e4ngig von der <b>Samba<\/b> Version, u.U. kann es sein das Gruppen nicht angezeigt werden. Bevor man verzweifelt sollte man testen ob <b>Winbind<\/b> wirklich keine Verbindung zur Dom\u00e4ne bekommt oder ob einfach nur der <b>getent<\/b> Aufruf aufgrund des Bugs nicht klappt aber z.B. <b>wbinfo -u<\/b> bzw. <b>wbinfo -g<\/b> trotzdem Benutzer &amp; Gruppen der Dom\u00e4ne korrekt anzeigen.<\/p><\/blockquote>\n<\/li>\n<li><em>winbind offline logon = yes<\/em><br \/>\nHiermit wird Winbind erlaubt Benutzer via <em>PAM Login<\/em> auch aus seinem <em>Credentials Cache<\/em> (vgl. <em>\/var\/lib\/samba\/*.tdb<\/em>) zu authentifizieren ohne zwingend auf eine Antwort eines <em>DCs<\/em> zu warten.<\/li>\n<li><em>preferred master = no<\/em><br \/>\nNein, unsere Linux Maschine ist lediglich ein Dom\u00e4nenmitglied.<\/li>\n<li><em>winbind nested groups = Yes<\/em><br \/>\nAktiviert die Verwendung von verschachtelten Gruppenzugeh\u00f6rigkeiten wie das unter Windows \u00fcblich ist.<\/li>\n<li><em>winbind use default domain = Yes<\/em><br \/>\nDie Differenzierung von Benutzer- &amp; Gruppennamen der lokalen Linux Maschine und denen des <em>Active Directory<\/em> kann man anhand der Notation treffen. Die der Linux Maschine werden wie gew\u00f6hnlich notiert z.B. <em>root, daemon, bin, sys, &#8230;<\/em> w\u00e4hrend Benutzer &amp; Gruppennamen des <em>Realms<\/em> hingegen in der Schreibweise <b>[DOMAIN]\\[USER]<\/b> oder <b>[DOMAIN]\\[GROUP]<\/b> angegeben werden, wie das bei Windows Maschinen auch \u00fcblich ist, z.B. <em>SNAKEOIL\\Administrator<\/em>.<br \/>\nDa der Backslash aber unter Linux auf dem <em>Terminal<\/em> f\u00fcr gew\u00f6hnlich das <a href=\"http:\/\/www.gnu.org\/software\/bash\/manual\/bashref.html#Escape-Character\">Escaping<\/a> einleitet kann man sich auf zwei Arten behelfen. Entweder man bleibt bei der langen Schreibweise und definiert den Trenn-Char um z.B.<\/p>\n<pre>winbind separator = '+'<\/pre>\n<p>Dann w\u00e4re analog die Schreibweise: <em>SNAKEOIL+Administrator<\/em> oder man verwendet die Kurzschreibweise indem man die Namen aus dem <em>Realm<\/em> so behandelt als w\u00e4ren es gew\u00f6hnliche Linux Benutzer die zur lokalen Maschine geh\u00f6ren also <em>Administrator<\/em>. Dazu bestimmt man mit <em>winbind use default domain = Yes<\/em> einen Standart-<em>Realm<\/em> der immer verwendet wird wenn nicht explizit anders angegeben.<\/p>\n<blockquote><p><span style=\"color: #ff0000;\">2xAchtung!<\/span><br \/>\nDie Verwendung von <b>winbind use default domain = Yes<\/b> kann sich nachteilig auswirken wenn Benutzer mit identischen Namen in beiden Dom\u00e4nen auftauchen z.B. ein lokaler Linux Benutzer namens <b>&#8220;Administrator&#8221;<\/b> und gleichzeitig ein Benutzer im <b>Realm<\/b> als <b>&#8220;SNAKEOIL\\Administrator&#8221;<\/b> existiert, logischerweise kann <b>Winbind<\/b> solche Konflikte nicht aufl\u00f6sen da nun zwei Benutzer mit identischem Namen aber unterschiedlichen <b>IDs<\/b> existieren, in diesem Fall ist die lange geschw\u00e4tzige Notation in jedem Fall erforderlich. F\u00fcr gew\u00f6hnlich kollidieren jedoch die angelegten Standart-Benutzernamen einer Linux-Installation nicht mit Standart-Benutzernnamen einer Windows-Installation.<\/p><\/blockquote>\n<\/li>\n<li><em>allow trusted domains = No<\/em><br \/>\nBei Vertrauensstellung von Dom\u00e4nen k\u00f6nnen ungewollte Authentifizierungskonstellationen auftreten z.B. einem Benutzer aus einer entfernten, vertrauten Dom\u00e4ne k\u00f6nnen ggfs. automatisch Rechte in der lokalen Dom\u00e4ne einger\u00e4umt werden die durch die Vertrauensstellung entstehen. Um dies zu unterbinden werden vertraute Dom\u00e4nenstellungen auf dem Dom\u00e4nenmitglied mit dieser Einstellung ignoriert.<\/li>\n<li><em>client use spnego = Yes<\/em><br \/>\nErm\u00f6glicht grunds\u00e4tzlich <em>Kerberos<\/em>-Authentifizierung.<\/li>\n<li><em>kerberos method = secrets and keytab<\/em><br \/>\nW\u00e4hrend normalerweise <em>Credentials<\/em> von <em>Winbind<\/em> nur in seinen Datenbanken gepuffert werden kann man mit dieser Anweisung sicherstellen das diese zus\u00e4tzlich in der Datei <em>\/etc\/krb5.keytab<\/em> gespeichert werden. Das kann sinnvoll sein wenn man Kerberos noch in anderen Authentifizierungkonstellationen verwenden m\u00f6chte evtl. auch ohne <em>Winbind<\/em> dann ist diese Einstellung zu empfehlen um den Kerberos Bibliotheken Zugriff auf die Schl\u00fcsseltabelle zu gew\u00e4hren. Die Einstellung ist hier nur vorsorglich gew\u00e4hlt und f\u00fcr den Betrieb eines Linux-Dom\u00e4nenmitglieds per <em>Winbind<\/em> nicht zwingend erforderlich.<\/li>\n<li><em>dedicated keytab file = \/etc\/krb5.keytab<\/em><br \/>\nHier gibt man explizit die Datei f\u00fcr die <em>Kerberos<\/em>-Schl\u00fcsseltabelle an. Die Angabe <em>\/etc\/krb5.keytab<\/em> ist ein h\u00e4ufig verwendeter Pfad in den Standarteinstellungen von vielen <em>Daemons<\/em> fast aller <em>Debian<\/em>-basierten Distributionen. Man sollte sich also gut \u00fcberlegen ob man diese Datei an andere exotischere Pl\u00e4tze verlegt.<\/li>\n<li><em>winbind refresh tickets = true<\/em><br \/>\nNach erfolgreicher <em>Kerberos<\/em>-Authentifzierung erh\u00e4lt man ein zeitlich beschr\u00e4nktes <em>Ticket<\/em> welches den Zugriff auf die kontrollierte <em>Resource<\/em> gew\u00e4hrt. Nach Ablauf dieser Zeitspanne wird der Zugriff wieder gesperrt wenn das <em>Ticket<\/em> nicht erneuert wird z.B. bei l\u00e4ngeren Phasen von Inaktivit\u00e4t. Mit dieser Einstellung wird <em>Winbind<\/em> angewiesen abgelaufene <em>Tickets<\/em> zu erneuern.<\/li>\n<\/ul>\n<p>Quellen:<br \/>\n<a href=\"http:\/\/samba.2283325.n4.nabble.com\/idmap-ad-group-id-mapping-tp4634421p4634507.html\">idmap config &#8230; : schema_mode vs winbind nss info<\/a><\/p>\n<p><!--nextpage--><\/p>\n<h1>Use cases<\/h1>\n<h4>Benutzer || Gruppen des Realms zu Besitzern von Dateien oder Ordnern machen<\/h4>\n<p>M\u00f6chte man nun auf der Linux Maschine Benutzer oder Gruppen zu Besitzern von Dateien oder Ordnern machen geht man zun\u00e4chst auf den <em>Windows Server<\/em> in die Eigenschaften, z.B. der Gruppe <em>Domain Users<\/em>, auf das Tab <em>Unix Attributes<\/em> und w\u00e4hlt unter <em>NIS Domain<\/em> unseren Arbeitsgruppennamen aus:<\/p>\n<p><a href=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/DomainUsers.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-138\" src=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/DomainUsers.png\" alt=\"DomainUsers\" width=\"407\" height=\"467\" srcset=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/DomainUsers.png 407w, http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/DomainUsers-261x300.png 261w\" sizes=\"auto, (max-width: 407px) 100vw, 407px\" \/><\/a><\/p>\n<p>F\u00fcr die GID sollte sofort eine <em>ID<\/em> aus unserem definierten Zahlenbereich erscheinen. Mit <em>OK<\/em> best\u00e4tigen, dieser Schritt ist f\u00fcr jeden Benutzer bzw. Gruppe nur einmal notwendig.<\/p>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nWurde dieser Schritt einmal gemacht wird das <em>Mapping<\/em> zwischen der <em>UID<\/em> bzw. <em>GID<\/em> und der <em>SID<\/em> f\u00fcr immer festgelegt und sollte auch so beibehalten werden. \u00c4nderungen sind zwar nachtr\u00e4glich, theoretisch m\u00f6glich aber man sollte das vermeiden oder nur machen wenn man ganz genau wei\u00df was man da tut. Die Nebeneffekte solcher Aktionen k\u00f6nnen erhebliche Nachwirkungen bereiten. Im Zweifelsfall sollte man lieber ein neues <em>Mapping<\/em> mit neuen Benutzer- oder Gruppennamen einrichten.<\/p><\/blockquote>\n<p>Anschlie\u00dfend k\u00f6nnen wir unsere konfigurierte Beispielgruppe auf der Linux Maschine verwenden:<\/p>\n<pre>me@myComputer:~$ mkdir myFolder\nme@myComputer:~$ chown me:domain\\ users myFolder\nme@myComputer:~$ ls -l .\ntotal 4,0K\ndrwxr-xr-x 1 me   domain users       196 Mai  5 19:17 myFolder<\/pre>\n<p>Man beachte das etwaige <em>Spaces<\/em> in Benutzer oder Gruppennamen unter <em>Linux<\/em> durch einen <em>Backslash escape&#8217;d<\/em> werden oder man setzt den Namen in Anf\u00fchrungszeichen. Sollte <em>Winbind<\/em> nicht laufen oder keine Verbindung zum <em>Realm<\/em> bestehen kann dieser Name nicht korrekt aufgel\u00f6st werden und die <em>Linux<\/em> Maschine f\u00e4llt auf die Anzeige der <em>GID<\/em> zur\u00fcck:<\/p>\n<pre>me@myComputer:~$ ls -l .\ntotal 4,0K\ndrwxr-xr-x 1 me   10000              196 Mai  5 19:17 myFolder<\/pre>\n<p>Das ist aber behoben sobald eine Verbindung zum <em>Realm<\/em> wieder hergestellt werden kann.<\/p>\n<h4>Benutzer || Gruppen des Realms f\u00fcr Berechtigungen in Samba Freigaben verwenden<\/h4>\n<p>Bei der Verwendung von Freigaben auf der Linux Maschine m\u00f6chte man manchmal auch Freigaben erstellen f\u00fcr welche bestimmte Gruppen des Realms eine Zugriffsberechtigung erhalten sollen. Hier ist die <em>Syntax<\/em> f\u00fcr Benutzer oder Gruppennamen zu beachten. Enth\u00e4lt der Name ein <em>Space<\/em> so setzt man diesen am Besten in Anf\u00fchrungszeichen. Gruppennamen unterscheiden sich bei <em>Samba<\/em> in besonderer Weise durch ein vorangestelltes <em>@<\/em>-Zeichen. Hat man beides also eine Gruppe in dessen Name auch <em>Spaces<\/em> enthalten sind mu\u00df man beides kombinieren in der Notation: <b>@&#8221;GRUPPENNAME MIT SPACES&#8221;<\/b>, in einer <em>smb.conf<\/em> stellt sich das z.B. so dar:<\/p>\n<pre>[myFolder]\n\tcomment = myFolder is only for domain users!\n\tpath = \/home\/me\/myFolder\n\tcreate mask = 0664\n\tdirectory mask = 0775\n\tforce group = @\"domain users\"\n\twrite list = @\"domain users\"<\/pre>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nBerechtigungen sind auf zwei Ebenen aktiv. Einmal die Berechtigung der Freigabe bei der man den Zugriff f\u00fcr Benutzer &amp; Gruppen der Freigabe bestimmen kann und dann nochmal auf Dateiebene wo der Zugriff logischerweise z.B. f\u00fcr die gew\u00fcnschte Gruppe ebenfalls erlaubt sein mu\u00df. Gew\u00e4hrt man nur in einer der beiden Ebenen (vgl. <em>smb.conf<\/em> &amp; <em>chmod<\/em>) den Zugriff wird dieser nat\u00fcrlich fehlschlagen.<\/p><\/blockquote>\n<h4>Benutzer des Realms als Login auf der Linux Maschine<\/h4>\n<p>Nun kann man noch einen Schritt weiter gehen und Benutzer des Realms auch dazu verwenden sich an der Linux Maschine anzumelden. Analog zu den Gruppen w\u00e4re zuerst der gleiche Konfigurationschritt f\u00fcr Benutzer durchzuf\u00fchren, dazu geht man wieder in die Eigenschaften des betreffenden Benutzers in das Tab <em>Unix Attributes<\/em>:<\/p>\n<p><a href=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/DomainUserProps.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-139\" src=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/DomainUserProps.png\" alt=\"DomainUserProps\" width=\"407\" height=\"503\" srcset=\"http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/DomainUserProps.png 407w, http:\/\/3ronco.vahanus.net\/wp-content\/uploads\/sites\/8\/2014\/11\/DomainUserProps-242x300.png 242w\" sizes=\"auto, (max-width: 407px) 100vw, 407px\" \/><\/a><\/p>\n<p>Und setzt die <em>NIS Domain<\/em> und zus\u00e4tzlich die <em>Shell<\/em> und den <em>Home Path<\/em>. Zwar bietet <em>Samba<\/em> M\u00f6glichkeiten den <em>Home Path<\/em> per Skript automatisch zu erzeugen aber zu Testzwecken machen wir das hier mal von Hand:<\/p>\n<pre>me@myComputer:~$ sudo mkdir \/home\/IamAdomainUser\nme@myComputer:~$ sudo chown IamAdomainUser:domain\\ user \/home\/IamAdomainUser<\/pre>\n<p>M\u00f6chte man ein beim ersten Login eines Benutzers automatisch den <em>Home<\/em>-Ordner erzeugen f\u00fcgt man der <em>\/etc\/pam.d\/common-session<\/em> Datei folgendes als ersten aktiven Eintrag hinzu:<\/p>\n<pre>...\nsession required    pam_mkhomedir.so umask=0077 skel=\/etc\/skel\n# here are the per-package modules (the \"Primary\" block)\n...\n# end of pam-auth-update config<\/pre>\n<blockquote><p><span style=\"color: #ff0000;\">Achtung!<\/span><br \/>\nDie beide Kommentare markieren den Anfang und das Ende des Konfigurationsblocks der von <b>pam-auth-update<\/b> verwaltet wird. Sollten \u00c4nderungen innerhalb des Blocks gemacht werden gehen diese wieder nach einem Aufruf des Kommandos verloren!<\/p><\/blockquote>\n<p>Nachdem wir die Beispielgruppe <em>Domain Users<\/em> und unseren Beispielbenutzer <em>IamAdomainUser<\/em> im <em>snakeoil.org Realm<\/em> per NIS unserer Linux Maschine bekannt gemacht haben sollten wir diese nun auch per <em>getent<\/em> Aufruf in der Liste der lokalen Linux Benutzer &amp; Gruppen zu sehen bekommen.<\/p>\n<pre>me@myComputer:~$ getent passwd\n...\nIamAdomainUser:*:10103:10000:test user:\/home\/IamAdomainUser:\/bin\/bash<\/pre>\n<p>Tauchen die Benutzer auf k\u00f6nnen sich diese nun z.B. per <em>SSH<\/em> oder sogar via <em>XDMCP<\/em> anmelden:<\/p>\n<pre>you@AnotherComputer:~$ ssh IamAdomainUser@myComputer.snakeoil.org\nWelcome to SnakeOil\nyou@myComputer's password: *********<\/pre>\n<p>Analog dazu m\u00fc\u00dfte man doch die Gruppen in gleicher Weise auflisten k\u00f6nnen?<br \/>\nIm Prinzip ja &#8230; aber<\/p>\n<pre>me@myComputer:~$ getent group\n...\nme@myComputer:~$ # Gruppen bleiben unsichtbar scheinen aber dennoch da zu sein z.B.\nme@myComputer:~$ ls -l .\ntotal 4,0K\ndrwxr-xr-x 1 me   domain users       196 Mai  5 19:17 myFolder<\/pre>\n<p>Wie im Aftermath erw\u00e4hnt kann es bei einigen <em>Samba<\/em> Versionen durch einen Bug dazu kommen das diese Eintr\u00e4ge nicht angezeigt werden das mu\u00df aber nicht zwangweise bedeuten das diese nicht da w\u00e4ren denn beim setzen von Dateiberechtigungen konnte man sehen das <em>Winbind<\/em> auch Gruppennamen richtig anzeigt daher ist eher davon auszugehen das <em>getent<\/em> Dom\u00e4neneintr\u00e4ge bei der Gruppenauflistung offenbar ignoriert.<\/p>\n<h4>Logins \u00fcber SSH ohne Passwort (Single-SignOn)<\/h4>\n<p>Wenn ein Host, der ebenfalls Mitglied der Dom\u00e4ne ist, den <em>SSH<\/em> Dienst anbietet so l\u00e4\u00dft sich f\u00fcr Benutzer der Dom\u00e4ne auch ein passwortloses Anmelden erm\u00f6glichen insofern sie \u00fcber <em>Winbind<\/em> bzw. <em>Kerberos<\/em> im <em>Realm<\/em> bereits authentifiziert sind. Auf dem entsprechenden Host, der den SSH Dienst anbietet, aktiviert man in <em>\/etc\/ssh\/sshd_config<\/em> folgende Zeilen:<\/p>\n<pre>...\n# Kerberos options\nKerberosAuthentication yes\n#KerberosGetAFSToken no\nKerberosOrLocalPasswd yes\nKerberosTicketCleanup yes\n\n# GSSAPI options\nGSSAPIAuthentication yes\nGSSAPICleanupCredentials yes\n...<\/pre>\n<p>Allerdings wird auf diese Weise allen Benutzern der Dom\u00e4ne eine passwortlose Anmeldung gestattet was u.U. etwas riskant sein k\u00f6nnte im Hinblick auf etwaige Gast-Konten. Wer zus\u00e4tzlich <em>pam_mkhomedir.so<\/em> konfiguriert hat, erzeugt vorher sogar noch ein <em>Home-Environment<\/em> f\u00fcr Benutzer die u.U. gar nicht in der Lage sein sollen sich anzumelden. Daher ist es hier empfehlenswert den Zugriff auf bestimmte Gruppen zu beschr\u00e4nken zumindest f\u00fcr den <em>SSH<\/em> Dienst, dazu kann man in <em>\/etc\/ssh\/sshd_config<\/em> mit der <em>AllowGroups MYGROUP1 MYGROUP2 &#8230;<\/em> Anweisung nur solchen Gruppen Zugriff gew\u00e4hren die in der Lage sein sollen eine Anmeldung durchzuf\u00fchren denkbar w\u00e4re hier u.A. einer Gruppe der Dom\u00e4ne (z.B. <em>Domain Users<\/em>) den Zugriff zu gestatten.<\/p>\n<p>Quellen:<br \/>\n<a>http:\/\/ubuntuforums.org\/showthread.php?t=2152487<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Heute m\u00f6chte ich die Anbindung eines Linux Host als vollwertiges Dom\u00e4nenmitglied in eine Windows Server 200x Active Directory Dom\u00e4ne behandeln. Dabei kommt einem vermutlich Samba in den Sinn jedoch dient dies eher der Dateifreigabe in einem Netzwerk, bei einfachen Windows-Arbeitsgruppen Netzwerken ist dies auch recht schnell bewerkstelligt allerdings mit einigen Einschr\u00e4nkungen. Die Benutzer und Gruppen, [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":164,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[18,39,14,15,29,16,17,30],"class_list":["post-115","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bb","tag-active-directory","tag-administration","tag-domain-realm","tag-kerberos","tag-linux","tag-samba","tag-winbind","tag-windows"],"_links":{"self":[{"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=\/wp\/v2\/posts\/115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=115"}],"version-history":[{"count":55,"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=\/wp\/v2\/posts\/115\/revisions"}],"predecessor-version":[{"id":914,"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=\/wp\/v2\/posts\/115\/revisions\/914"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=\/wp\/v2\/media\/164"}],"wp:attachment":[{"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=115"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/3ronco.vahanus.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}