| Ben Love on 26 Mar 2010 16:56:35 -0700 |
|
* Mike Leone wrote on [2010-03-24 22:57:55 -0400]:
> I'm trying to configure lib-nss to use OpenLDAP against my Active
> Directory. But I seem to be having lots of problems even getting it to
> bind properly.
From an earlier message of yours, it sounds like you are also using
samba and are joining the machine to the domain. We do this at work a
lot. These are (roughly) the steps we use to set up a new box.
We do this with a stock install of Debian Stable or Ubuntu. I'm not
sure of the edition of Ubuntu, but /etc/debian_version says 5.0. The
domain controllers are Windows 2003R2 or some such. I don't know
exactly, and I don't think it matters. If you find it does, I can ask.
Most of these steps are run as root (obviously).
$ apt-get install krb5-user
$ apt-get install winbind
<create smb.conf>
$ cat /etc/samba/smb.conf
[global]
# AD AUTH
security = ADS
workgroup = COMPANY
realm = COMPANY.COM
password server = domaincontrollers.company.com
use kerberos keytab = true
client use spnego = true
# WINBIND
#idmap domains = COMPANY
idmap config COMPANY: default = true
idmap config COMPANY: backend = rid
idmap config COMPANY: range = 70000-100000
winbind cache time = 600
winbind enum users = true
winbind enum groups = true
winbind use default domain = true
winbind refresh tickets = true
template shell = /bin/bash
template homedir = /home/%u
# OTHER
dns proxy = false
# LOGGING
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
# PAM AUTH
encrypt passwords = true
obey pam restrictions = true
pam password change = true
unix password sync = true
# passwd program = /usr/bin/passwd %u
# passwd chat = *Enter\snew\s*\spassword:* %n\n
# *Retype\snew\s*\spassword:* %n\n
# *password\supdated\ssuccessfully* .
<create krb5.conf>
$ cat /etc/krb5.conf
[libdefaults]
default_realm = COMPANY.COM
default_keytab_name = FILE:/etc/krb5.keytab
ticket_lifetime = 24000
# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
[realms]
COMPANY.COM = {
kdc = domaincontrollers.company.com
admin_server = domaincontrollers.company.com
}
[domain_realm]
company.com = COMPANY.COM
.company.com = COMPANY.COM
[login]
krb4_convert = true
krb4_get_tickets = false
<user = AD account with permission to join machines to the domain>
$ net -U <user> ads join
<sometimes this breaks. if so, delete the machine account from AD
completely and try again>
<edit nsswitch.conf to add winbind to group and passwd>
$ head -3 /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
shadow: compat
<test winbind/nss/AD integration with getent>
$ getent passwd
<SNIP: lots of output, including AD users>
$ getend group
<SNIP: lots of output, including AD groups>
<fix PAM to use pam_winbind/pam_mkhomedir>
<see PAM documentation for more info. many of these options are beyond
the scope of this>
$ cat /etc/pam.d/common-account
account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 new_authtok_reqd=done default=ignore] pam_winbind.so
account requisite pam_deny.so
account required pam_permit.so
$ cat /etc/pam.d/common-auth
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE
auth requisite pam_deny.so
auth required pam_permit.so
$ cat /etc/pam.d/common-session
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session required pam_unix.so
session required pam_mkhomedir.so umask=0077 skel=/etc/skel
<you should be able to log in now with an AD user who the box has never
seen before>
<as AD user>
<AD users should have a krb5 credential cache now>
$ klist
<SNIP: output confirming valid krb ticket>
<as root again>
$ apt-get install ldap-utils
$ apt-get install libsasl2-modules-gssapi-mit
$ cat /etc/ldap/ldap.conf
BASE dc=company,dc=com
URI ldap://domaincontrollers.company.com
SASL_MECH GSSAPI
<as AD user again>
<now you can use the kerberos credentials to talk to AD>
$ ldapsearch '(objectClass=User)'
<SNIP: waaaayyy too much output>
<as root again>
<last thing is to get SSH to take/user kerberos credentials>
$ tail -3 /etc/ssh/sshd_config
# GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
I hope that helps. I may have forgotten something, but ask and I'll
remember.
Ben
--
Ben Love
http://www.kylimar.com/
Attachment:
signature.asc ___________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug
|
|