これについてすでに複数の質問があるにもかかわらず、例えば Linux on Windows ADドメイン オープンソースを使用するか、商用ツールのみを無料で使用して、Debian 6.0 SqueezeをADと統合する方法を知りたい
[〜#〜] edit [〜#〜]:aptを介して(セキュリティ)アップデートが配信されるツールのみ許容できる。
これまでのところ、実際のユーザー認証をKerberos経由で動作させることができました。ログには、ユーザー名/パスワードのチェックは成功したが、ユーザーはログインできないことが示されています。以下のログの抜粋を参照してください。
[〜#〜] edit [〜#〜]:ログがpamデバッグで更新されました:
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=
私のldap.conf
は次のようになります:
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
すべての/etc/pam.d
はpam-auth-update
によって作成されたものであり、3つすべて(Kerberos、Unix、およびLDAP)の認証方法が選択されています。
パケットキャプチャから、LDAP検索結果がユーザー情報を修正していることを確認できます。これは、以下の手動のldapsearch
結果と同じです。
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=
User not known to the underlying authentication module
が表示されますLogin incorrect
を取得しますSASL/DIGEST-MD5 authentication started
の後にLogin incorrect
が続きます。ADはWindows2k8(r2)サーバーを実行しており、すべてのDebianパッケージはaptから取得したものです。
どんなアイデアでも大歓迎です。
EDIT 2:以下に示すように、sssd
で試してみたところ、同様の結果が得られました。パスワードが2回要求され、ログに次のように表示されます。
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
編集3:
デバッグレベルを5に設定してフォアグラウンドでsssd
を実行すると、ログに次のように表示されます。
(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!
Sssdの使用をお勧めします。これはDebiansqueezeの標準パッケージであり、作業を簡単にしますlot。 sssdをインストールすると、どの認証方法を使用するかを尋ねられるはずです。そこで選択すると、nsswitch.confとpam.dスクリプトが自動的に更新されます。 ADドメインに関するいくつかの詳細を手元に用意する必要がありますが、それでも、とにかくそれらを知っておく必要があります(たとえば、使用するDC、Kerberosレルム名など)。
私を信じてください、私はこれをたくさん研究しました(そしてこのサイトでこの点に関して尋ねられた質問のいくつかは私からのものです)、そしてsssdが答えです。資格情報がキャッシュされ、キャッシュの特性を判断できるため、ラップトップでもうまく機能します。
これがいくつかのコメント付きのsssd.confファイルです:
# 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
これは、Windows Server 2008でのUNIXサービスの使用に基づいています(これは現在、その不可欠な部分であり、2k3以前ではアドインでした)。
他のLDAPシステムとは異なり、ADはデータを取得する前に認証されたセッションを必要とします。これを容易にするためにLDAPsearchという名前の特別なユーザーを作成しましたが、実際のドメインユーザーでも実行できる可能性があります。
ユーザーを構成するときは、UNIXサービスの詳細(ホームディレクトリ、ユーザーID、およびプライマリグループメンバーシップ)を設定する必要がありますが、それは非常に簡単です。
もちろん、別の検索ベースを使用できます。また、フィルターを追加して、ユーザーが特定のグループなどのメンバーであることを確認することもできます。sssdのマニュアルページを読んでください。
SSSDはまだ使ったことがないので、答えかもしれません。私が使用したのはsamba3xのwinbindで、これはかなりうまく機能しました。少なくとも私にとっては、KerberosとLDAPを直接構成する際の問題は、既存のすべてのユーザーのUID/GIDとホームディレクトリを埋め戻し、AD/LDAPで2つのデータの世界を維持する必要があることです。時間の使用。 winbindは、ネイティブADグループを公開し、Kerberosでマシンアカウントのキーを再入力します。唯一の欠点は、15文字以下のホスト名を要求して、実際に存在するか何かに関係があると私が確信していない奇妙な種類のNetBIOS互換性を維持することです。 Windows内では、デーモンがくさびになり、再起動する必要があり、OOBアクセスが機能する必要があります。 pam_mkhomedirおよびpam_accessと組み合わせると、アカウントにhomedirが自動入力され、必要に応じて、誰がどのホストにアクセスできるかを制限できます。ユーザー名とスペースを含むグループは驚くほど多くの場所で機能しますが、pam_accessaccess.confなどの一部のツールはスペースを含むグループでは機能しないことに注意してください。
Likewise Open を見てください。エミュレートされたWindowsレジストリを使用することは、私の考えではありませんが、必要なことはほとんどありません。しかし、最近のバージョンはかなり堅実になっているので、一見の価値があります。
同様に人気がありますが、最近、ワークラボのすべてのLinuxボックスに Centrify Express を使用しています。これはすばらしいことです。独自のバージョンのSAMBAが付属しており、RPMをインストールするだけで簡単にセットアップできます(ただし、PDF)を必ずお読みください)。
このスレッドにも同様の質問がありました そしてOPはwinbind
と連携して、ユーザー名とUIDのルックアップを実行し、pam_krb5
パスワード認証用。現在、いくつかのスクイーズサーバーがそのように実行されています。
必要な部分はすべてDebianにあります。サードパーティまたはセキュリティが更新されていないリポジトリは必要ありません。