Linux Benutzerdatenbank mit Active Directory über LDAP

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
andbaum
Beiträge: 17
Registriert: 13.10.2004 15:15:52

Linux Benutzerdatenbank mit Active Directory über LDAP

Beitrag von andbaum » 09.03.2006 09:57:25

Hallo zusammen!

Ich habe folgendes Problem:
In einem Netzwerk (mit Active Directory) soll ein squid Proxy (unter sarge) laufen. Die Benutzerdatenbank des Proxys soll dabei über LDAP um die Benutzer des AD erweitert werden (nsswitch.conf)

libnss-ldap und pam-ldap sind installiert und imho richtig konfiguriert.

jetzt das kuriose:

Code: Alles auswählen

# getent passwd
liefert lediglich die Benutzer aus /etc/passwd.

bei einem

Code: Alles auswählen

# strace -v getent passwd
sehe ich aber, dass er alle Benutzer aus dem AD richtig ausliest:

Code: Alles auswählen

[...]
read(4, "\2d\204\0\0\0m\4#CN=benutzer1,CN=Users,DC="..., 116) = 116
time([1141871063])                      = 1141871063
select(1024, [4], [], NULL, NULL)       = 1 (in [4])
read(4, "0\204\0\0\0z\2\1", 8)          = 8
read(4, "\2d\204\0\0\0q\4\'CN=benutzer2,CN=Users"..., 120) = 120
time([1141871063])                      = 1141871063
select(1024, [4], [], NULL, NULL)       = 1 (in [4])
read(4, "0\204\0\0\0~\2\1", 8)          = 8
read(4, "\2d\204\0\0\0u\4+CN=benutzer3,CN=U"..., 124) = 124
time([1141871063])                      = 1141871063
[...]
(Die Namen hab ich jeweils in Benutzerx umbenannt)

Hat jemand eine Ahnung, warum da kein write auftaucht, wie es sein sollte?

Die lokalen Benutzer werden ja auch auf stdout geschrieben:

Code: Alles auswählen

[...]
write(1, "root:x:0:0:root:/root:/bin/bash\n", 32) = 32
write(1, "daemon:x:1:1:daemon:/usr/sbin:/b"..., 38) = 38
write(1, "bin:x:2:2:bin:/bin:/bin/sh\n", 27) = 27
write(1, "sys:x:3:3:sys:/dev:/bin/sh\n", 27) = 27
[...]
Danke für die Hilfe,
Andreas
Zuletzt geändert von andbaum am 09.03.2006 15:43:16, insgesamt 1-mal geändert.

andbaum
Beiträge: 17
Registriert: 13.10.2004 15:15:52

Beitrag von andbaum » 09.03.2006 14:25:10

noch eine info:

ich habe nscd schon deinstalliert

wenn ich mich am linux rechner mit einem AD account anmelden will, vermerkt auth.log

Code: Alles auswählen

sshd[7249]: nss_ldap: could not search LDAP server - Bad search filter
hilft das weiter?
Zuletzt geändert von andbaum am 09.03.2006 15:42:45, insgesamt 1-mal geändert.

andbaum
Beiträge: 17
Registriert: 13.10.2004 15:15:52

Beitrag von andbaum » 09.03.2006 14:38:31

noch mehr infos:

Code: Alles auswählen

# egrep -v '^(#|$)' /etc/libnss-ldap.conf
@(#)$Id: ldap.conf,v 2.41 2005/03/23 08:30:16 lukeh Exp $
host ipadress
base dc=mydomain,dc=de
ldap_version 3
binddn CN=myuser,CN=Users,DC=mydomain,DC=de
bindpw mypasswd
port 389
scope one
nss_base_passwd CN=Users,DC=mydomain,DC=de
nss_base_shadow CN=Users,DC=mydomain,DC=de
nss_base_group CN=Group,DC=mydomain,DC=de

nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_attribute uid sAMAccountName #msSFUName
nss_map_attribute homeDirectory msSFUHomeDirectory
nss_map_objectclass posixGroup Group
nss_map_attribute cn sAMAccountName #msSFUName
nss_map_attribute uniqueMember member
pam_filter objectclass=user
pam_login_attribute sAMAccountName
pam_password ad

Code: Alles auswählen

# egrep -v '^(#|$)' /etc/ldap/ldap.conf
BASE dc=mydomain,dc=de
URI ldap://host.mydomain.de

PS: ich habe ipadress, mydomain, myuser, mypasswd (alle werte i. o.) geändert. der ldap host steht in /etc/hosts

andbaum
Beiträge: 17
Registriert: 13.10.2004 15:15:52

Beitrag von andbaum » 10.03.2006 08:57:19

hat denn niemand hier im forum eine idee?

ich glaube allmählich, dass es gar nicht möglich ist, einen win2003 ad server abzufragen?!
ich habe noch etwas rumgebastelt, aber es funktioniert immer noch nicht.


libnss-ldap.conf schaut jetzt so aus:

Code: Alles auswählen

#  egrep -v '^(#|$)' /etc/libnss-ldap.conf
 @(#)$Id: ldap.conf,v 2.41 2005/03/23 08:30:16 lukeh Exp $
host myw2003server
base dc=mydomain,dc=de
ldap_version 3
binddn CN=myuser,CN=Users,DC=mydomain,DC=de
bindpw mypass
port 389
scope sub
pam_password ad
nss_base_passwdou=Users,dc=mydomain,dc=de?sub
nss_base_shadowou=Users,dc=mydomain,dc=de?sub
nss_base_group  ou=Group,dc=mydomain,dc=de?sub
nss_base_hosts  ou=Hosts,dc=mydomain,dc=de?sub
nss_base_servicesou=Services,dc=mydomain,dc=de?sub
nss_base_networksou=Networks,dc=mydomain,dc=de?sub
nss_base_protocolsou=Protocols,dc=mydomain,dc=de?sub
nss_base_rpc    ou=Rpc,dc=mydomain,dc=de?sub
nss_base_ethersou=Ethers,dc=mydomain,dc=de?sub
nss_base_netmasksou=Networks,dc=mydomain,dc=de?sub
nss_base_bootparamsou=Ethers,dc=mydomain,dc=de?sub
nss_base_aliasesou=Aliases,dc=mydomain,dc=de?sub
nss_base_netgroupou=Netgroup,dc=mydomain,dc=de?sub
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_attribute uid sAMAccountName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute shadowLastChange pwdLastSet
nss_map_objectclass posixGroup group
nss_map_attribute uniqueMember member
pam_login_attribute sAMAccountName
pam_filter objectclass=User
ich habe alles scopes versucht, hat aber nichts geholfen :-(

ich frage mich immer noch, warum getent passwd die AD struktur lesen kann, aber nicht weiterverarbeitet:

Code: Alles auswählen

# getent passwd Administrator
braucht ca 2 sekunden, gibt aber nichts aus

aber

Code: Alles auswählen

# strace -v -s 5000 getent passwd
zeigt ja, dass der account gelesen wurde?!?!

Code: Alles auswählen

[...]
time([1141926632])                      = 1141926632
select(1024, [4], [], NULL, NULL)       = 1 (in [4])
read(4, "0\204\0\0\1(\2\1", 8)          = 8
read(4, "\2d\204\0\0\1\37\4)CN=Administrator,CN=Users,DC=mydomain,DC=de0\204\0\0\0\3560\204\0\0\0<\4\vobjectClass1\204\0\0\0)\4\3top\4\6person\4\24organizationalPerson\4\4user0\204\0\0\0\31\4\2cn1\$time([1141926632])                      = 1141926632
select(1024, [4], [], NULL, NULL)       = 1 (in [4])
[...]
wenn ich jetzt einen

Code: Alles auswählen

# ssh -l linuxuser linuxserver
mache, kann ich einloggen

Code: Alles auswählen

# tail /var/log/auth.log
sshd[7427]: Accepted keyboard-interactive/pam for linuxuser from ::ffff:myclientip port 34608 ssh2
sshd[7430]: (pam_unix) session opened for user linuxuser by (uid=0)
aber

Code: Alles auswählen

# ssh -l Administrator 10.110.1.217
bringt in auth.log:

Code: Alles auswählen

sshd[7435]: Illegal user Administrator from ::ffff:myclientip
irgendwelche ideen?

Antworten