gansterjo2
Goto Top

Anmeldung am Linux-Server als AD-Benutzer funktioniert obwohl der Benutzer keine Berechtigung hat

Hallo zusammen

Von meinem Arbeitgeber bekam ich den Auftrag, dass ich einen SLES-Server 11 SP1 in eine AD integrieren soll sprich, dass ich mit einem AD-Benutzer, der sich in einer definierten Gruppe befindet anmelden kann.

Kernel-Version 2.6.32.59-0.3-default
Pakete
samba-winbind 3.4.3-1.42.1
samba-winbind-32bit 3.4.3-1.42.1
yast2-samba-server 2.17.11-0.2.72
yast2-samba-client 2.17.18-0.5.5
samba 3.4.3-1.42.1
samba-32bit 3.4.3-1.42.1
pam_krb5 2.3.1-47.10.15
pam_krb5-32bit 2.3.1-47.10.15
krb5 1.6.3-133.48.48.1
krb5-32bit 1.6.3-133.48.48.1
krb5-client 1.6.3-133.48.48.1
nss_ldap 262-11.32.31.1
libwbclient0-32bit 343-1.42.1


Alle anderen Benutzer, die nicht in dieser Gruppe sind, sollten sich nicht anmelden können.

Kurioserweise können sich die anderen Benutzer trotzdem anmelden. Dabei erscheint die Meldung (auch, wenn sich die Benutzer in der richtigen Gruppe befinden):

Cannot convert group [...] to sid, please contact your administrator to see if group [...] is valid

Meine Frage ist nun, wo könnte der Hund begraben liegen bzw. was kann ich machen, damit sich die Benutzer anmelden können, wie gewünscht?

Vielen Dank

Gruss Gansterjo2

Content-ID: 242998

Url: https://administrator.de/contentid/242998

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

broecker
broecker 08.07.2014 um 10:05:27 Uhr
Goto Top
Moin,
da fehlt noch Information: ist der SLES schon Domänen-Member - also mit dem DC tatsächlich verbunden, daß die Pakete dafür installiert sind, heißt ja nicht, daß es auch so konfiguriert ist, /etc/samba/smb.conf könnte da ein Anhaltspunkt sein.
Weiterhin wäre der Domänen-Level interessant: in einer alten <=2003-Domäne wird meistens nur auf "zufällige" Übereinstimmung von Usernamen (ohne Domäne zu betrachten) und Passwort geprüft (NTLM?) - so kann jemand auf z.B. Laufwerksfreigaben zugreifen, ohne Mitglied zu sein.
HG
Mark
Gansterjo2
Gansterjo2 08.07.2014 um 10:20:57 Uhr
Goto Top
Hallo broecker

Der SLES 11 Server befindet sich bereits in der Domäne.
Wenn ich das Kommando 'wbinfo -p' eingebe erscheint die Meldung 'Ping to winbindd succeeded' auch biem Kommando 'wbinfo -g' werden alle Gruppen, die sich in der AD befinden aufgelistet.


[global]
        workgroup = DOMAIN
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        printcap cache time = 750
        cups options = raw
        map to guest = Bad User
        include = /etc/samba/dhcp.conf
        logon path = \\%L\profiles\.msprofile
        logon home = \\%L\%U\.9xprofile
        logon drive = P:
        usershare allow guests = No
        idmap gid = 10000-20000
        idmap uid = 10000-20000
        security = ADS
        realm = DOMAIN.LOCAL
        template homedir = /home/%D/%U
        template shell = /bin/bash
        winbind offline logon = yes
        winbind refresh tickets = yes
[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes
[profiles]
        comment = Network Profiles Service
        path = %H
        read only = No
        store dos attributes = Yes
        create mask = 0600
        directory mask = 0700
[users]
        comment = All users
        path = /home
        read only = No
        inherit acls = Yes
        veto files = /aquota.user/groups/shares/
[groups]
        comment = All groups
        path = /home/groups
        read only = No
        inherit acls = Yes
[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No
[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = @ntadmin root
        force group = ntadmin
        create mask = 0664
        directory mask = 0775


Gemäss der Eigenschaften des Domänencontrollers steht folgendes:
Domänenfunktionsebene: Windows Server 2008 R2
Gesamtstrukturebene: Windows Server 2008 R2


Freundliche Grüsse

Gansterjo2
Chonta
Lösung Chonta 08.07.2014, aktualisiert am 09.07.2014 um 14:31:00 Uhr
Goto Top
Hallo,

http://dozent.maruweb.de/material/samba.shtml

%S ist die Freigabe
und was soll %w sein?

valid users = @"DOMAIN\Domänen-Admins"

Sowas sollte da stehen.

template shell = /bin/bash

Das ermöglicht nebenbei die lokale Anmeldung am Server auf der Shell/Desktop. (jedem Domänennutzer)
Ansonsten ist bei keiner deiner Freigaben eine Gruppenbeschrenkung.
Geht ein chown root:domänengruppe irgendeine.txt?

Gruß

Chonta
Gansterjo2
Gansterjo2 08.07.2014 um 13:38:13 Uhr
Goto Top
Hallo zusammen

Ich habe das File smb.conf folgendermassen angepasst:

[homes]
        comment = Home Directories
        valid users = [Voller Domänenname]\[Gruppenname]
        browseable = No
        read only = No
        inherit acls = Yes

Zusätzlich führte ich den Befehl 'chown root:[Gruppenname] test.txt' durch. Das test.txt befand sich im Home-Verzeichnis des Roots.
Hier erschien die Meldung 'chown: invalid group: `root:[Gruppenname]'

Vielleicht hilft auch ein Ausschnitt aus dem pam_winbind.conf

[global]
        cached_login = yes
        krb5_auth = yes
        krb5_ccache_type = FILE

# turn on debugging
;debug = no

# turn on extended PAM state debugging
;debug_state = no

# request a cached login if possible
# (needs "winbind offline logon = yes" in smb.conf) 
;cached_login = no

# authenticate using kerberos
;krb5_auth = no

# when using kerberos, request a "FILE" krb5 credential cache type 
# (leave empty to just do krb5 authentication but not have a ticket
# afterwards)
;krb5_ccache_type =

# make successful authentication dependend on membership of one SID
# (can also take a name)
require_membership_of = [Gruppenname]

# password expiry warning period in days
;warn_pwd_expire = 14

# omit pam conversations
;silent = no

# create homedirectory on the fly
;mkhomedir = no

Gruss Gansterjo2
Chonta
Lösung Chonta 08.07.2014, aktualisiert am 09.07.2014 um 14:31:04 Uhr
Goto Top
Hallo,

welche Gruppe hast Du versucht beim chown? Nur die spezielle oder die domänen-admins.
Wenn die Domänenadmins gehen, dann reichen evtl die gepappten IDs nicht aus undmüssen erhöht werden.
Wenn keine domänengruppe auf Linuxebene aufgelöst werden kann, leigt es an dem uralt samba das du verwendest. 3.6.6 sollte gehen.
Geht bei mir in Verbindung mit 2012R2 DC.
Anpassungen für die Konfiguration gibt es hier einige im Forum.


browseable = No ist kontraproduktiv, wenn du für die Benutzer kiene Homeverzeichnisse willst, kommentiere die Freigabe als ganzes aus oder lösche diese Freigabe.

Gruß

Chonta
Gansterjo2
Gansterjo2 08.07.2014 um 14:42:50 Uhr
Goto Top
Hallo Chonta

Beim Befehl 'chown' verwendete ich eine Gruppe die es gar nicht gibt -.-

Was mich aber trotzdem erstaunt ist, dass obwohl eine falsche Gruppe in dem Pam-winbind Konfigurationsfile angegeben wurde, sich einfach 'fremde' benutzer anmelden können... Aus diesem Grund stellte ich die Frage, denn ich wollte das Problem beheben...

Gruss Gansterjo2
Gansterjo2
Gansterjo2 08.07.2014 um 14:53:06 Uhr
Goto Top
Hallo Zusammen

Lösung 1

Damit das Zusammenspiel von Linux-Server und Windows-AD funktioniert muss im PAM-Winbind Konfiguraitonsfile eine AD-Gruppe eingetragen werden, die existiert. Dann funktioniert Samba einwandfrei.

Es besteht aber immer noch die Frage, warum der Zugriff bei einer in der Windows-AD nicht vorhandenen Gruppe trotzdem den Zugriff zum Server zulässt.


Freundliche Grüsse

Gansterjo2
Chonta
Lösung Chonta 08.07.2014, aktualisiert am 09.07.2014 um 14:31:12 Uhr
Goto Top
Hallo,

das tu den Test mit einer Gruppe machst die nicht funktionieren kann ist natürlich kontraproduktiv.
Du musst natürlich eine echte Gruppe verwenden die auch klappen kann um festzustellen, ob das Linuxsystem überhapt mit den AD Gruppen umgehen kann, nur dann weist Du ob der Server wirklich in der Domäne ist oder nur halb halb= winbind kennt alles aber Linux kann mit AD Benutzern oder Gruppen nichts anfangen.

Ein Samba Server benimmt sich bei den Freigaben genauso wie ein Windowsrechner. Wenn man \\servername benutzt werden einem alle Freigaben angezeigt.
Wenn nun kein Zugriff verweigert beim Zugriff kommt, dann haut was mit deiner Konfiguration nicht hin oder das Mapping haut nicht hin.
Zum einen mit einer echten Gruppe das chown testen zum andern den Adressbereich für das Mappen ändern.
Der Bereich in dem Gemapt wird muss groß sein und die ID dürfen sich nicht mit LinuxuserIDs überschneiden, also schau nach in welchem Bereich dein Server mit useradd BenutzerID vergibt, der Mappingbereich muss höher sein!

valid users = [Voller Domänenname]\[Gruppenname]
So habe ich das nicht geschrieben, also bitte ändern in die von mir verwendete Schreibweise.

Hier eine smb.conf für AD und ein smbd 3.6.6

[global]

#####neu
bind interfaces only = yes
interfaces = IP/24
workgroup = DOMAIN
realm = domain.local
security = ADS
winbind refresh tickets = Yes
#winbind separator = \
idmap config * : backend = rid
idmap config * : range = 100000-1000000000
idmap config * : base_rid = 0

template shell = /bin/bash
winbind use default domain = Yes
#winbind enum users = Yes
#winbind enum groups = Yes
winbind nested groups = Yes
winbind expand groups = 10
client use spnego = yes
client use spnego principal = no
send spnego principal = no
encrypt passwords = true
nt acl support = yes
follow symlinks = yes
wide links = yes
unix extensions = no
printing = cups
printcap name = cups
load printers = yes
smb ports = 445
max protocol = SMB2
Vorteil du kannst die auf jedem Server verwenden und die ID sind überall gleich.
Deine Version funktioniert nur auf diesem einen Server, Daten die von dem Server zu einem anderen Server ausgetauscht werden und die ID mit übertragen haben dann auf dem anderen Server mitunter neue besitzer und Zugriffsrechte.

Hier für 3.5.6 (Unterscheidet sich von 3.6.6)
[global]
 
workgroup = DOMAIN
realm = domain.local
security = ADS
winbind refresh tickets = Yes
idmap backend = idmap_rid:FLF=0-1000000000
idmap uid = 100000-100000000
idmap gid = 100000-100000000
template shell = /bin/false
winbind use default domain = Yes
#winbind enum users = Yes
#winbind enum groups = Yes
winbind nested groups = Yes
winbind expand groups = 10
client use spnego = yes
encrypt passwords = yes
#nt acl support = yes
follow symlinks = yes
wide links = yes
unix extensions = no
load printers = no
smb ports = 445

Evtl brauchst Du Anstelle 445 den Port 139.

Gruß

Chonta

PS: Die einzigen Datien die ich bei Sambaeinrichtung angefasst habe und musste sind /etc/hosts (bei .local Windowsdomains) /etc/nsswitch (passwd und group auf copmpat windbind) und die smb.conf Debiansysteme allerdings.
Gansterjo2
Gansterjo2 08.07.2014 um 15:56:40 Uhr
Goto Top
Hallo,

Vielen Dank für die schnelle Antwort.... ich werde diese morgen ausprobieren und dementsprechend ein Feedback geben...

Gruss

Gansterjo2
Gansterjo2
Gansterjo2 09.07.2014 um 07:42:19 Uhr
Goto Top
Guten Morgen Chonta

Das File smb.conf sieht nun folgendermassen aus:
[global]
        workgroup = DOMAIN
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        printcap cache time = 750
        cups options = raw
        map to guest = Bad User
        include = /etc/samba/dhcp.conf
        logon path = \\%L\profiles\.msprofile
        logon home = \\%L\%U\.9xprofile
        logon drive = P:
        usershare allow guests = No
        idmap gid = 10000-20000
        idmap uid = 10000-20000
        security = ADS
        realm = DOMAIN.LOCAL
        template homedir = /home/%D/%U
        template shell = /bin/bash
        winbind offline logon = Yes
        winbind refresh tickets = Yes
        winbind use default domain = Yes
        winbind nested groups = Yes
        winbind expand groups = 10
        encrypt password = Yes
        client use spnego = Yes
        unix extensions = No
        load printers = No
        smb ports = 139
[homes]
        comment = Home Directories
        valid users = @"DOMAIN.LOCAL\gruppe-test"  
        browseable = Yes
        read only = No
        inherit acls = Yes
[profiles]
        comment = Network Profiles Service
        path = %H
        read only = No
        store dos attributes = Yes
        create mask = 0600
        directory mask = 0700
[users]
        comment = All users
        path = /home
        read only = No
        inherit acls = Yes
        veto files = /aquota.user/groups/shares/
[groups]
        comment = All groups
        path = /home/groups
        read only = No
        inherit acls = Yes
[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = Yes
[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = @ntadmin root
        force group = ntadmin
        create mask = 0664
        directory mask = 0775

In der Hosts-Datei hab ich auf dem Server nichts geändert und in der Datei nsswitch.conf waren die Anpassungen schon automatisch vom System eingetragen.

Mit dem Befehl 'chown root:gruppe-test text.txt' erscheint immer wieder die Meldung 'chown:invalid group: `gruppe-test'.

Gruss Gansterjo2
Chonta
Chonta 09.07.2014 um 09:26:20 Uhr
Goto Top
Ok,

invalid = Linux kennt die Gruppe nicht.

Die Frage geht überhaupt eine Gruppe oder ein Domänenbenutzer oder nicht?
Wenn einige gehen, dann ist für dein idmap (beide) die Range zu klein.
Wenn keine geht, dann bist Du der Domäne noch nicht sauber beigetreten.
Du solltest in der /etc/hosts die IP und die namen (fqdn und netbios) aller DCs hinterlegen.

Offt braucht ein Samba auch einen kompletten Server-neustart und dann geht es.

Da Du 2008 R2 DC im einsatz hast, empfehle ich Dir dringend Samba 3.6.6 zu verwenden und die Konfig nach meinem Beispiel zu verwenden, dann klapts auch.
Ich hatte mit Server 2012R2 DC und Samba < 3.6.6 Probleme.

Gruß

Chonta
Gansterjo2
Gansterjo2 09.07.2014 um 09:46:24 Uhr
Goto Top
Hallo Chonta

Danke für die schnelle Antwort.

Ich kann mich mit einem AD-Benutzer beim Server authentifizieren. Ich habe die Gruppen gestern abend richtig eingetragen...

Es stellt sich bei mir immer noch die Frage, weshalb sich die Benutzer am Server authentifizieren können, obwohl eine falsche Gruppe hinterlegt ist.

Gruss Gansterjo2
Chonta
Lösung Chonta 09.07.2014 aktualisiert um 14:31:24 Uhr
Goto Top
Hallo,

das authentifizieren geht für jdenden Benutzer ab dem Moment wo der Server Domänenmemmberist.
In den Freigaben und im Dateisystem kannst Du aber steuern ob der Zugriff auf eine Freigabe erlaubt ist oder nicht.


Wenn ssh nicht weiter abgesichert ist, kann sich bei der Einstellung emplate shell = /bin/bash auch jeder Domänenbenutzer per SSH mit seinem Benutzernamen und Passwort am Server anmelden.

Wenn bei valid users murks hinterlegt ist, dann greift das nicht.
Wenn Du wirklich eine .local domäne hast, dann muss die /etc/hosts noch angepasst werden.

Wenn Du über die Freigabeneinstellung und valid user nicht weiter kommst, könntest Du, wenn es denn funktionierne würde, einfach die Dateisystemrechte setzen, das other keinen Zugriff ahd das Verzeichniss hat und nur die eine Gruppe und root volle Rechte auf den Freigegebenen Ordner haben, dann bekommen alle die nicht aufgelößt werden können zugriff verweigert, weil das Dateisystem sagt "Du nicht!"

Damit die Gruppenmitgleidschaften aufgelöst werden (bei vershachtelten Gruppen) ist

winbind nested groups = Yes
winbind expand groups = 10

wichtig.

Gruß

Chonta
Gansterjo2
Gansterjo2 09.07.2014 um 11:23:06 Uhr
Goto Top
Hallo Chonta

Ok, demfall ist der Server im Falle einer ungültigen Gruppe für alle zugänglich.

Vielen Dank für deine Hilfe.

PS: es ist keine .local Domäne.

Gruss Gansterjo2