Debian 6.0 AD Integration

7

Trotz mehrerer Fragen dazu, z. B. Linux unter Windows AD Domain, möchte ich wissen, wie Debian 6.0 Squeeze mit Open Source oder auf andere Weise kostenlos für Tools zur kommerziellen Nutzung in AD integriert werden kann

BEARBEITEN : Nur Tools, deren (Sicherheits-) Updates über apt bereitgestellt werden, sind zulässig.

Bisher habe ich in der Lage , die tatsächlichen Benutzer erhalten Authentifizierung Arbeit über Kerberos, zum Beispiel die Protokolle zeigen , dass der Benutzername / Passwort - Prüfung erfolgreich, aber der Benutzer ist nicht in der Lage Login finden Sie unter Protokollauszug unten;

BEARBEITEN : Protokoll aktualisiert mit Pam Debug on:

May 12 10:06:33 debian-6-master login[10601]: pam_krb5(login:auth): pam_sm_authenticate: entry (0x0)
May 12 10:06:33 debian-6-master login[10601]: pam_krb5(login:auth): (user test.linux) attempting authentication as [email protected]
May 12 10:06:36 debian-6-master login[10601]: pam_krb5(login:auth): user test.linux authenticated as [email protected]
May 12 10:06:36 debian-6-master login[10601]: pam_krb5(login:auth): pam_sm_authenticate: exit (success)
May 12 10:06:36 debian-6-master login[10601]: pam_unix(login:account): could not identify user (from getpwnam(test.linux))
May 12 10:06:36 debian-6-master login[10601]: pam_krb5(login:account): pam_sm_acct_mgmt: entry (0x0)
May 12 10:06:36 debian-6-master login[10601]: pam_krb5(login:account): (user test.linux) retrieving principal from cache
May 12 10:06:36 debian-6-master login[10601]: pam_krb5(login:account): pam_sm_acct_mgmt: exit (success)
May 12 10:06:36 debian-6-master login[10601]: pam_env(login:session): No such user!?
May 12 10:06:36 debian-6-master login[10601]: pam_env(login:session): No such user!?
May 12 10:06:36 debian-6-master login[10601]: pam_krb5(login:session): pam_sm_open_session: entry (0x0)
May 12 10:06:36 debian-6-master login[10601]: pam_krb5(login:session): (user test.linux) getpwnam failed for test.linux
May 12 10:06:36 debian-6-master login[10601]: pam_krb5(login:session): pam_sm_open_session: exit (failure)
May 12 10:06:36 debian-6-master login[10601]: pam_unix(login:session): session opened for user test.linux by LOGIN(uid=0)
May 12 10:06:36 debian-6-master login[10601]: User not known to the underlying authentication module
May 12 10:06:36 debian-6-master login[10601]: PAM 1 more authentication failure; logname=LOGIN uid=0 euid=0 tty=/dev/tty3 ruser= rhost=

Mein ldap.confsieht so aus:

base dc=ad,dc=domain
uri ldap://10.10.10.10
ldap_version 3
binddn [email protected]
bindpw password
scope sub
pam_password ad
nss_base_passwd dc=ad,dc=domain?sub
nss_base_shadow dc=ad,dc=domain?sub
nss_base_group dc=ad,dc=domain?sub? &(objectCategory=group)(gidnumber=*)
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_objectclass posixGroup group
nss_map_attribute gecos cn
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute uniqueMember member
pam_sasl_mech DIGEST-MD5

nsswitch.conf::

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

hosts:          files dns ldap
networks:       files ldap

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis ldap

passwd_compat: files ldap
group_compat: files ldap
shadow_compat: files ldap

Alle /etc/pam.dsind wie erstellt von pam-auth-update, alle drei (Kerberos, Unix und LDAP) Authentifizierungsmethoden ausgewählt.

Ich kann anhand der Paketerfassung bestätigen, dass die LDAP-Suchergebnisse die Benutzerinformationen korrigieren, wie unten als manuelles ldapsearchErgebnis gezeigt:

dn: CN=Linux\, test,OU=SpecialAccounts,OU=FI1-Helsinki,OU=EMEA,OU=_Managed Are
 as,DC=ad,DC=domain
objectClass: top
objectClass: person
objectClass: domainanizationalPerson
objectClass: user
cn: Linux, test
sn: Linux
givenName: test
distinguishedName: CN=Linux\, test,OU=SpecialAccounts,OU=FI1-Helsinki,OU=EMEA,
 OU=_Managed Areas,DC=ad,DC=domain
instanceType: 4
whenCreated: 20110407131914.0Z
whenChanged: 20110511125854.0Z
displayName: Linux, test
uSNCreated: 4144737
uSNChanged: 4638378
name: Linux, test
objectGUID:: wwZt/MX/K0S36BL4bS2w+g==
userAccountControl: 66048
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 129489044965699903
lastLogoff: 0
lastLogon: 129495915807176914
pwdLastSet: 129466559550934238
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAAzXxBZqg31mUH5TsrkisAAA==
accountExpires: 9223372036854775807
logonCount: 35
sAMAccountName: test.linux
sAMAccountType: 805306368
userPrincipalName: [email protected]
lockoutTime: 0
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=ad,DC=domain
dSCorePropagationData: 20110407131916.0Z
dSCorePropagationData: 16010101000000.0Z
lastLogonTimestamp: 129488989872488561
uid: test.linux
msSFU30Name: test.linux
msSFU30NisDomain: ad
uidNumber: 10002
gidNumber: 10000
unixHomeDirectory: /home/test.linux
loginShell: /bin/sh

# refldap://DomainDnsZones.ad.domain/DC=DomainDnsZones,DC=ad,DC=domain

# refldap://ForestDnsZones.ad.domain/DC=ForestDnsZones,DC=ad,DC=domain

# refldap://ad.domain/CN=Configuration,DC=ad,DC=domain

# pagedresultscookie=
  1. Mit einem korrekten Benutzernamen und Passwort bekomme ich MOTD und eine Nachricht User not known to the underlying authentication module
  2. Mit einem falschen Benutzernamen bekomme ich Login incorrect
  3. Mit einem korrekten Benutzernamen, aber einem falschen Passwort werde ich SASL/DIGEST-MD5 authentication startedgefolgtLogin incorrect

Auf dem AD wird ein Windows 2k8 (r2) -Server ausgeführt. Alle Debian-Pakete stammen von apt.

Irgendwelche Ideen sind sehr willkommen.

EDIT 2 : Wie unten vorgeschlagen, habe ich sssdmit ähnlichen Ergebnissen versucht , jetzt wird das Passwort zweimal abgefragt und das Protokoll zeigt:

May 12 14:53:06 debian-6-master login[11389]: pam_sss(login:auth): authentication failure; logname=LOGIN uid=0 euid=0 tty=/dev/tty3 ruser= rhost= user=test.linux
May 12 14:53:06 debian-6-master login[11389]: pam_sss(login:auth): received for user test.linux: 10 (User not known to the underlying authentication module)
May 12 14:53:14 debian-6-master login[11389]: pam_krb5(login:auth): user test.linux authenticated as [email protected]
May 12 14:53:14 debian-6-master login[11389]: pam_unix(login:account): could not identify user (from getpwnam(test.linux))
May 12 14:53:15 debian-6-master login[11389]: pam_sss(login:account): Access denied for user test.linux: 10 (User not known to the underlying authentication module)
May 12 14:53:15 debian-6-master login[11389]: pam_env(login:session): No such user!?
May 12 14:53:15 debian-6-master login[11389]: pam_env(login:session): No such user!?
May 12 14:53:15 debian-6-master login[11389]: pam_krb5(login:session): (user test.linux) getpwnam failed for test.linux
May 12 14:53:15 debian-6-master login[11389]: pam_unix(login:session): session opened for user test.linux by LOGIN(uid=0)
May 12 14:53:15 debian-6-master login[11389]: User not known to the underlying authentication module

EDIT 3 :

Wenn ich sssdim Vordergrund mit Debug-Level auf 5 laufe , zeigt das Protokoll:

(Fri May 13 13:50:33 2011) [sssd[nss]] [nss_cmd_endpwent] (4): Terminating request info for all accounts
(Fri May 13 13:50:33 2011) [sssd[nss]] [nss_cmd_getpwnam] (4): Requesting info for [test.linux] from [<ALL>]
(Fri May 13 13:50:33 2011) [sssd[nss]] [nss_cmd_getpwnam] (2): No matching domain found for [test.linux], fail!
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_cmd_authenticate] (4): entering pam_cmd_authenticate
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): command: PAM_AUTHENTICATE
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): domain: (null)
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): user: test.linux
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): service: login
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): tty: /dev/tty3
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): ruser: (null)
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): rhost: (null)
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): authtok type: 1
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): authtok size: 8
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): newauthtok type: 0
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): newauthtok size: 0
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): priv: 1
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_print_data] (4): cli_pid: 12507
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_reply] (4): pam_reply get called.
(Fri May 13 13:50:34 2011) [sssd[pam]] [pam_reply] (4): blen: 8
(Fri May 13 13:50:34 2011) [sssd[nss]] [nss_cmd_endpwent] (4): Terminating request info for all accounts
(Fri May 13 13:50:34 2011) [sssd[nss]] [nss_cmd_getpwnam] (4): Requesting info for [test.linux] from [<ALL>]
(Fri May 13 13:50:34 2011) [sssd[nss]] [nss_cmd_getpwnam] (2): No matching domain found for [test.linux], fail!
Kimvais
quelle
Es scheint, dass es vielen Menschen gelungen ist, Winbind anstelle von LDAP zu verwenden. Ist das wirklich der richtige Weg?
Kimvais
Wenn es nicht klar geworden ist, würde Ich mag diese , ohne Arbeit bekommen irgendwelchen Komponenten von Drittanbietern - dh nur Sachen mit , die über offizielle Squeeze - Repositories verfügbar ist.
Kimvais

Antworten:

5

Ich würde empfehlen, sssd zu verwenden. Dies ist ein Standard - Paket in Debian Squeeze und macht das Leben viel einfacher. Bei der Installation von sssd sollten Sie gefragt werden, welche Authentifizierungsmethoden verwendet werden sollen. Treffen Sie dort Ihre Auswahl, und die Skripte nsswitch.conf und pam.d werden automatisch aktualisiert. Sie müssen einige Details zu Ihrer AD-Domain zur Hand haben, aber dann sollten Sie sie trotzdem kennen (z. B. welcher DC verwendet werden soll und wie der Kerberos-Realm-Name lautet usw.).

Glauben Sie mir, ich habe viel recherchiert (und einige der diesbezüglich auf dieser Website gestellten Fragen stammen von mir), und sssd ist die Antwort. Es funktioniert sogar gut für Laptops, da die Anmeldeinformationen zwischengespeichert werden und Sie die Eigenschaften des Caches bestimmen können.

Hier ist unsere sssd.conf-Datei mit einigen Kommentaren:

# SSSD configuration generated using /usr/lib/sssd/generate-config
[sssd]
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
domains = your.domain

[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
debug_level = 8

[pam]
reconnection_retries = 3
debug_level = 8

[domain/<your.domain>]
; Using enumerate = true leads to high load and slow response
enumerate = false
cache_credentials = true
#entry_cache_timeout = 60

id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
#access_provider = ldap

ldap_uri = ldap://you.domain.controller
ldap_search_base = CN=Users,DC=your,DC=domain
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/ssl/certs/ca-certificates.crt
ldap_default_bind_dn = cn=LDAPsearch,CN=Users,dc=your,dc=domain
ldap_default_authtok_type = password
ldap_default_authtok = <password for LDAPsearch>
ldap_pwd_policy = none
ldap_user_object_class = user
ldap_group_object_class = group
ldap_user_home_directory = unixHomeDirectory

krb5_kdcip = your.domain.controller
krb5_realm = <kerberos realm name>
krb5_changepw_principle = kadmin/changepw
krb5_auth_timeout = 15

Dies basiert auf der Verwendung der UNIX-Dienste in Windows Server 2008 (das jetzt ein wesentlicher Bestandteil davon ist und in 2k3 und früheren Versionen ein Add-In war).

Im Gegensatz zu anderen LDAP-Systemen benötigt AD eine authentifizierte Sitzung, bevor Daten abgerufen werden können. Wir haben einen speziellen Benutzer namens LDAPsearch erstellt, um dies zu erleichtern. Dies kann jedoch wahrscheinlich auch mit dem tatsächlichen Domänenbenutzer durchgeführt werden.

Bei der Konfiguration von Benutzern müssen Sie deren UNIX-Dienstdetails (Ausgangsverzeichnis, Benutzer-ID und Mitgliedschaft in der primären Gruppe) einrichten. Dies ist jedoch sehr einfach.

Natürlich können Sie eine andere Suchbasis verwenden und Filter hinzufügen, um sicherzustellen, dass Benutzer Mitglieder bestimmter Gruppen usw. sind. Lesen Sie einfach die Manpage für sssd.

wolfgangsz
quelle
Versuchte es, installiert sssdund bindend für NSS und Pam, aber keine Hilfe. :(
Kimvais
Aus Ihrer zweiten Bearbeitung kann ich ersehen, dass die eigentliche Authentifizierung einwandfrei funktioniert hat ('Benutzer test.linux authentifiziert als [email protected]'). Es scheint, dass das Problem vielleicht darin besteht, dass der Benutzer kein lokales Konto hat? Wenn Sie die Dokumentation lesen, gibt es auch Möglichkeiten, dies zu überwinden, aber Sie müssen verschiedene Dateien in /etc/pam.d/
wolfgangsz
@wolfgangsz: Ja, so weit bin ich auch ohne SSSD gekommen und es ist Teil des gesamten Geschäfts - alle Konten müssen von LDAP abgerufen werden. Haben Sie Dokumentationshinweise?
Kimvais
Sie können die Kontoinformationen von LDAP abrufen, der Benutzer muss jedoch über ein lokales Konto verfügen. Und wenn er keinen hat, müssen Sie einen erstellen. Es gibt einige Websites, die Anweisungen zum Konfigurieren von PAM bieten (z. B. Erstellen eines Basisordners usw. bei erfolgreicher Anmeldung). Leider habe ich derzeit keine Links.
Wolfgangsz
Sind Sie sicher, @wolfgangsz - dies scheint etwas anderes zu suggerieren linuxforums.org/forum/red-hat-fedora-linux/…
Kimvais
0

Schauen Sie sich Ebenso offen an . Viel weniger herumspielen ist notwendig, obwohl eine emulierte Windows-Registrierung nicht gerade meine Vorstellung von einer guten Zeit ist. Aber die neueren Versionen sind ziemlich solide geworden, es ist einen Blick wert.

Shane Madden
quelle
Ich konnte keinen kostenlosen Download-Link oder keine Lizenz auf der Website finden. Sind Sie sicher, dass dieses Tool für die kommerzielle Nutzung kostenlos ist ?
Kimvais
Ja, es ist GPL-lizenziert (Ubuntu und Red Hat zum Beispiel nehmen es in ihre Hauptpaket-Repositorys auf und unterstützen es vollständig). Es sieht so aus, als ob der Download auf ihrer Website eine Registrierung erfordert, was ärgerlich ist.
Shane Madden
Hmm, ok also jetzt bleibt die Frage, wie man das Ding apt-getirgendwo raus bringt.
Kimvais
0

Ebenso beliebt ist, aber ich habe in letzter Zeit Centrify Express für alle meine Linux-Boxen in meinem Arbeitslabor verwendet und es war großartig. Es wird mit einer eigenen Version von SAMBA geliefert. Die Einrichtung ist so einfach wie die Installation des RPM (lesen Sie jedoch unbedingt das PDF).

churnd
quelle
0

In diesem Thread gab es eine ähnliche Frage , und das OP brachte die Arbeit winbinddazu, die Suche nach Benutzernamen und UID sowie die pam_krb5Kennwortauthentifizierung durchzuführen. Auf diese Weise laufen jetzt mehrere Squeeze-Server.

Alle notwendigen Teile sind in Debian. Es sind keine Repositorys von Drittanbietern oder nicht sicherheitsaktualisierten Aktualisierungen erforderlich.

Mike Renfro
quelle
0

SSSD könnte die Antwort sein, obwohl ich es noch nicht benutzt habe, also weiß ich es nicht. Was ich verwendet habe, ist Winbind von Samba3x und das hat ziemlich gut funktioniert. Das Problem bei der direkten Konfiguration von Kerberos und LDAP besteht zumindest für mich darin, dass Sie dann die UID / GID und das Home-Verzeichnis für alle vorhandenen Benutzer neu füllen und zwei Datenwelten in AD / LDAP verwalten müssen, was nicht gut zu sein schien Nutzung der Zeit. winbind macht die nativen AD-Gruppen verfügbar, gibt sein Computerkonto in Kerberos neu ein usw. Der einzige Nachteil ist, dass es auf Hostnamen mit maximal 15 Zeichen besteht, um eine seltsame Art von Netbios-Kompatibilität aufrechtzuerhalten, von der ich nicht überzeugt bin, dass sie tatsächlich existiert oder für irgendetwas von Bedeutung ist In Fenstern wird der Daemon nicht mehr immer wieder eingeklemmt und muss neu gestartet werden, was einen funktionierenden OOB-Zugriff erfordert. In Kombination mit pam_mkhomedir und pam_access werden Konten automatisch ausgefüllt und Sie können bei Bedarf einschränken, wer Zugriff auf welche Hosts hat. Beachten Sie, dass Benutzernamen und Gruppen mit Leerzeichen an überraschend vielen Stellen funktionieren, einige Tools wie pam_access access.conf jedoch nicht mit Gruppen mit Leerzeichen funktionieren.

mtinberg
quelle