Winbind ist eine Software, mit deren Hilfe ein Linuxrechner in eine Windows-Domäne aufgenommen werden kann.
Die Anmeldung an diesem Rechner kann dann mit dem normalen Windows-benutzernamen und dem zugehörigen Passwort erfolgen.
Der aufzunehmende Rechner muss dem DNS-Server bekannt sein, dh. der Client muss von anderen per nslookup meinClient
auflösbar sein.
Dazu muss sich der Client per DHCP-Server eine IP ziehen und von diesem dem DNS-Server bekannt gemacht werden oder der Client erhält eine
statische IP-Adresse und wird manuell einmalig auf dem DNS-Server eingetragen.
dann als root die benötigte Software installieren:
apt-get install winbind libnss-winbind ntp libnss-winbind libpam-winbind krb5-user
Samba ist nicht nötig!!! Samba ist nur nötig, wenn Freigaben oder Drucker konfiguriert werden sollen.(siehe auch: SAMBA)
samba-common wird automatisch mit installiert.
dann die Zeit des Clients an die Domäne angleichen.(siehe auch ntp)
Die genaue Uhrzeit ist bei einer Domänenanbindung eines Linuxservers wichtig.
Bei mehr als 5 Minuten Zeitunterschied zwischen Client und Server wird die Authentifizierung vom Server standardmäßig abgelehnt.
typische Fehlermeldung : Timeskew to great
.
jetzt den bei der Installation gestarteten WINBIND-Dienst erstmal wieder stoppen :
/etc/init.d/winbind stop
jetzt die Datei /etc/nsswitch editieren:
passwd: files winbind group: files winbind # "compat winbind" geht meistens auch
jetzt die Datei /etc/samba/smb.conf editieren.
hier die eigenen gültigen Daten eintragen:
workgroup = MYNTDOM netbios name = myserver wins support = no wins server = 192.168.1.99 security = ADS winbind offline logon = yes winbind use default domain = yes winbind refresh tickets = yes winbind enum users = yes winbind enum groups = yes encrypt passwords = true password server = myDomcontr.my.dom.ain realm = MY.DOM.AIN idmap config MYNTDOM:range = 20000-30000 idmap config MYNTDOM:backend = ad idmap config * : backend = tdb # ab hier weitere Freigaben konfigurieren
jetzt die Datei /etc/krb5.conf editieren.
hier die eigenen gültigen Daten eintragen:
[libdefaults] default_realm = MY.DOM.AIN [realms] MY.DOM.AIN = { kdc = 192.168.1.90 admin_server = 192.168.1.90 kpasswd_server = 192.168.1.90 default_domain = MYNTDOM [domain_realms] .MYNTDOM = MY.DOM.AIN MYNTDOM = MY.DOM.AIN
jetzt die Datei /etc/pam.d/common-account editieren:
account sufficient pam_krb5.so account sufficient pam_winbind.so use_first_pass session required pam_mkhomedir.so skel=/etc/skel umask=0022 account required pam_unix.so use_first_pass
jetzt die Datei /etc/pam.d/common-auth editieren:
auth sufficient pam_krb5.so auth sufficient pam_winbind.so use_first_pass # wenn nur einer bestimmten Windowsgruppe Zugriff erlaubt sein soll, Zeile so abändern: # auth sufficient pam_winbind.so use_first_pass require_membership_of=myNTGroup1,myNTGroup2 auth required pam_unix.so nullok_secure use_first_pass
jetzt die Datei /etc/pam.d/common-session editieren:
session sufficient pam_krb5.so session sufficient pam_winbind.so session sufficient pam_mkhomedir.so session required pam_limits.so account required pam_unix.so
jetzt den Rechner in die Windowsdomäne aufnehmen und den Clientrechner neustarten:
net ads join –U administrator Enter administrators's password: <password von admin> net ads keytab create -U administrator Enter administrator's password: reboot
Nach dem Neustart sollte eine Anmeldung mit einem Domänenaccount möglich sein.
Benutzer
Zeige mir alle Benutzer der Domäne an:
wbinfo -u
Zeige mir alle Benutzer der Domäne an:
net ads user -U einDomänenbenutzer
oder:
net rpc shell -U domadmin -S mydomctrl user list
oder:
rpcclient -U domadmin mydomctrl -c enumdomusers
Zeige mir alle Domänenbenutzer deren samaccountname mit a beginnt und deren LDAP-Felder der Domäne an:
net ads search "(sAMAccountName=a*)" -U einDomänenbenutzer
Zeige mir alle deaktivierten Benutzer der Domäne an:
net ads search "(userAccountControl:1.2.840.113556.1.4.803:=514)" -U einDomänenbenutzer
Zeige mir alle gesperrten Benutzer der Domäne an:
net ads search "(&(&(sAMAccountType=805306368)(lockoutTime>=1)))" -U einDomänenbenutzer
Zeige mir alle Benutzer mit nicht ablaufendem Passwort an:
net ads search "(userAccountControl=66048)" samaccountname -U einDomänenbenutzer
Zeige mir die Mailadresse des Benutzers „Meier“ an:
net ads search "(samAccountname=meier)" name mail -U einDomänenbenutzer
Zeige mir alle Benutzer der Domäne und die lokalen Benutzer an:
getent passwd
Zeige mir die SID des Benutzers „doedel“ an:
wbinfo -n doedel
Zeige mir den Windowsbenutzernamen der SID „S-1-5-21-2025429265-861567501-839422115-1234“ an:
wbinfo -s SID S-1-5-21-2025429265-861567501-839422115-1234
Zeige mir die Unix-Benutzer-UID der Windows-SID „S-1-5-21-2025429265-861567501-839422115-1234“ an:
wbinfo -S SID S-1-5-21-2025429265-861567501-839422115-1234
Zeige mir die Windows-SID der Unix-Benutzer-UID „12345“ an:
wbinfo -U 12345
Zeige mir Infos von einem Benutzer an:
wbinfo -i doedel
oder:
net rpc shell -U domadmin -S mydomctrl user show doedel user edit description doedel
Gruppeninfos:
net rpc shell -U domadmin -S mydomctrl user info doedel
Prüfe ob der Benutzer gesperrt ist:
net rpc shell -U domadmin -S mydomctrl user edit autolock doedel quit #oder ganz einfach: su doedel password: xxx # dann gibts die Meldung: Your account has been locked. Please contact your System administrator su: Fehler bei Authentifizierung
Prüfe das Passwort eines Benutzers:
wbinfo -a doedel%seinPasswort
Zeige mir alle Benutzer der Domäne und ihre jeweilige AD-Gruppenmitgliedschaft an:
for i in `wbinfo -u`;do echo $i;id $i|tr , '\n'|nl;done
Füge einen Domänenbenutzer in eine lokale Gruppe ein:
usermod -aG www-data myNTUser
Erstelle von Linux aus einen Window-Domänenbenutzer myNTUser und aktiviere ihn:
net ads user add myNTUser -U domadmin%domadminpassword # setze jetzt das Passwort: net ads password myNTUser myNewP1ssw0rd-U domadmin%domadminpassword # oder net ads user add myNTUser -U domadmin%domadminpassword password=myNewP1ssw0rd flags=en # Benutzer muss danach noch aktiviert werden: net rpc shell -U domadmin%domadminpassword -S Domctlr user edit disabled myNTUser no exit # füge den Benutzer jetzt in die Gruppe myNTGroup ein: net rpc group addmem myntgroup myNTUser -u domadmin%domadminpassword -S Domctlr
Benutzerpasswort soll nicht mehr ablaufen:
net rpc shell -U domadmin%domadminpassword -S Domctlr user edit pwnoexp myNTUser yes exit
Teste indirekt ob der Benutzer doedel in einer NT-Gruppe myntgroup ist:
ntlm_auth --username=doedel --require-membership-of=MYNTDOM\\myntgroup
Gruppen
Zeige mir alle Gruppen der Domäne an:
wbinfo -g
Zeige mir alle Gruppen der Domäne per LDAP an:
net ads search "(objectCategory=group)" samaccountname -U einDomänenbenutzer
Zeige mir alle Gruppen der Domäne und die lokalen Gruppen an:
getent group
Zeige mir alle Gruppen an, in der der Benutzer „doedel“ Mitglied ist:
net rpc user info doedel -S myNTDomController -U user Enter user's password: geheim
Zeige mir alle Mitglieder der Gruppe „myNTGroup“ an:
net rpc group members myNTGroup -S myNTDomController -U einDomänenbenutzer
Füge den Benutzer doedel in die Domänengruppe Luschies ein:
net RPC group addmem "MYNTGROUP\Luschies" doedel -U domadm Enter domadm's password: geheim
Entferne den Benutzer doedel aus der Domänengruppe Luschies :
net RPC group delmem "MYNTGROUP\Luschies" doedel -U domadm Enter domadm's password: geheim
Zeige mit alle Benutzer mit den Gruppen-SIDS an:
net usersidlist
Die im AD gemachten Änderungen werden nicht vom winbind übernommen:
net cache flush /etc/init.d/winbind stop rm /var/cache/samba/* /etc/init.d/winbind start
dabei werden jedoch die IDs auf dem Linuxhost eventuell neu vergeben.
Computer, Dienste, Zeit, Verschiedenes
Füge einen Computer in eine Windowsgruppe ein:
echo meinpasswort | net rpc group addmem MeineGruppe meincomputer$ -S meindomctrl -U meinUser
Zeige mir alle Dienste auf einem Rechner (oder Server) an:
net rpc service list -S IPoderHostname -U einAdmin Enter einAdmin's password:
Zeige mir ob der Zeitdienst auf einem bestimmten Server ausgeführt wird:
net rpc service status w32time -S IPoderHostname -U einAdmin Enter einAdmin's password:
Stoppe den Zeitdienst auf dem Server:
net rpc service stop w32time -S IPoderHostname -U einAdmin Enter einAdmin's password:
Starte den Zeitdienst auf dem Server:
net rpc service start w32time -S IPoderHostname -U einAdmin Enter einAdmin's password:
Starte den Windowsrechner neu :
net rpc shutdown -r -t 120 -C "Rechner wird in 2 Minuten neu gestartet" -S IPoderHostname -U einAdmin Enter einAdmin's password:
Teste die Domänenverbindung:
wbinfo -t
Erstelle ein Kerberosticket mit WINBIND:
wbinfo -K domuser%seinPassword
Verhindere, dass einfache Benutzer sich interaktiv anmelden können;die Domänenauthentifizierung wird nur für SVN, Samba o.ä. gebraucht:
touch /etc/nologin
oder editiere die Datei /etc/pam.d/common-auth wie folgt:
auth sufficient pam_winbind try_first_pass require_membership_of=meineNTGruppe1,meineNTGruppe2
Registriere den Computer erneut im DNS:
net ads dns register
Registriere den Computer erneut im DNS mit einer bestimmten IP-Adresse (wichtig wenn der Rechner mehrere IPs hat):
net ads dns register -I 192.168.1.100
Erstelle einen Kerberostoken für einen Benutzer:
net ads keytab create -U meinBenutzer
Zeige mir allgemeine Infos an wo und wie der Rechner sich authentifiziert:
net ads info
Teste den Rechner auf Mitgliedschaft in der Domäne:
net ads testjoin
Wenn es Probleme gibt mit dem net
-Befehl kann man bsp. das Debugging wie folgt einschalten:
net -d 10 ads info
realm testen:
realm discover $(hostname -d) realm list net ads keytab list klist
smbcontrol all dump-domain-list
smb.conf neu einlesen:
smbcontrol all reload-config
wenn kerberos benutzt werden soll dann:
kerberos method = secrets and keytab
wenn winbind die ID eine Stunde statt 5 Minuten cachen soll dann:
winbind cache time = 3600
wenn auch verschachtelte Untergruppen durchsucht werden sollen, dann:
winbind nested groups = yes
Homeverzeichnis umbiegen:
template homedir = /daten/home/%D/%U
wenn auf allen Rechnern die selben GIDs verwendet werden sollen, dann auf allen Rechnern:
idmap backend = idmap_rid:MyNTDOM=10000-20000 idmap config MYNTDOM:range = 20000-30000
dadurch erhält beispielsweise ein Benutzer mit der SID: S-1-5-21-2025429265-861567501-839522115-1409
auf allen Linuxrechnern die ID:11409
. Das ist der letzte Teil der SID + der Wert von idmap uid
Das funktioniert aber nur mit Domänenbenutzern, die noch nie an dem Linuxechner angemeldet waren.
Sonst wird nähmlich die alte ID zwischengespeichert und weiterverwendet.
Dann muss man winbind stoppen und die Datei /var/cache/samba/winbindd_cache.tdb
löschen und winbind wieder neu starten.
auch sollte man alle Benutzer per getent passwd
angezeigt bekommen, sonst muss idmap_backend
auskommentiert werden.
Eintrag per sed in smb.conf machen:
sed -i '/^\[global]/a\winbind use default domain = yes' /etc/samba/smb.conf
erweiterte Dateiattribute unterstützen:
vfs objects = acl_xattr map acl inherit = Yes store dos attributes = Yes
Hoffentlich muss ich das nie zurückspielen.
TDB-Dateien sichern:
cd /var/lib/samba/ tdbbackup *.tdb
ID-Mapping sichern:
cd;mkdir backup net idmap dump /var/lib/samba/winbindd_idmap.tdb > backup/idmap.txt
net join kann auch so gemacht werden:
yast2 samba-client joindomain domain=MY.DO.MAIN user=myaduser password=geheim yast2 samba-client winbind enable #test mit: yast2 samba-client isdomainmember domain=MYNTDOMAIN
Suse fügt evtl. nicht die Parameter in der /etc/samba/smb.conf
hinzu:
winbind use default domain = yes winbind enum groups = yes winbind enum users = yes
dann also diese hinzufügen.
wenn auch noch die homedirs automatisch angelegt werden sollen, dann:
pam-config -a --mkhomedir
apt install sudo snmpd
wbinfo braucht Rootrechte zur Ausführung.
deshalb in der Datei /etc/sudoers
folgende Zeile einfügen:
Debian-snmp ALL = (root)NOPASSWD: /usr/bin/wbinfo -t
in der Datei /etc/snmp/snmpd.conf
folgende Zeile einfügen:
extend wbinfo /usr/bin/sudo /usr/bin/wbinfo -t
dann Snmpdienst neustarten:
systemctl restart snmpd
Danach sollte unter der OID 1.3.6.1.4.1.8072.1.3.2.3.1.4.6.119.98.105.110.102.111
oder ähnlich der Wert gleich 0 sein,
wenn wbinfo erfolgreich ist und 1 wenn es keine Verbindung zur Domäne hat oder Dienst aus ist.
Die OID kann abweichen und muss dann mit snmpwalk oder snmptester.exe ermittelt werden.
Danach kann in Prtg ein Sensor (SNMP Benutzerdef.) hinzugefügt werden.
Fehler:
Ein Benutzer wird im AD in eine Domänengruppe eingefügt.Dies wird aber nicht auf dem Linuxserver sichtbar.
Lösung:
Warten bis zum nächsten Tag.
oder:
Wenn die UserIDs auf dem Rechner egal sind, kann man die TDB-Dateien löschen und die Dienste neu starten.
Das Gefummel in der smb.conf mit den Cachewerten führt nicht zum Erfolg.
rm /var/cache/samba/*.tdb /etc/init.d/winbind restart /etc/init.d/samba restart getent passwd getent group | grep meineGruppe #Gegenprobe id meinDomuser | grep meineGruppe
Fehlersuche
/etc/init.d/winbind stop winbindd -d 6 -i -s /etc/samba/smb.conf
Fehler:
Nach dem Upgrade des Domänenlevels auf Windows 2008R2 können sich alte Linuxclients mittels Kerberos nicht mehr anmelden.
Fehlersuche
Auf dem Domänencontroller muss DES als Verschlüsselungsoption wieder eingeschaltet werden.
starte secpol.msc
Security Settings \ Local Policies \ Security Options \„Network security: Configure encryption types allowed for Kerberos“
hier alles anknipsen
Fehler:
Nach Installation von winbind auf debian 8 (jessie) werden trotz erfolgreichem netjoin keine Benutzer mit wbinfo -u
und wbinfo -g
angezeigt.
Fehlersuche
Eintrag in der /etc/samba/smb.conf
:
client ldap sasl wrapping = plain
danach Neustart der dienste erforderlich.
zurück