-
Notifications
You must be signed in to change notification settings - Fork 52
use:winbind
This document describes how to set up Winbind via NSS and PAM, allowing a SmartOS zone to lookup and authenticate against an Active Directory service.
Many thanks go to Faithlife Engineering. This guide is based on their "Winbind in SmartOS" series here:
- https://ops.faithlife.com/winbind-in-smartos-part-i-the-basics/
- https://ops.faithlife.com/winbind-in-smartos-part-ii-running-in-base-64/
- https://ops.faithlife.com/winbind-in-smartos-part-iii-polishing/
See their posts for more detailed information and further configuration, though
note that with the new samba-compat32 package there is no need for any of the
hacks listed.
The current implementation of NSS and PAM in illumos requires that all libraries are 32-bit. This causes issues with SmartOS images that target 64-bit binaries.
In order to work around this limitation, there is a special package available on certain 64-bit images that bundle Samba libraries from a 32-bit package set. The first step is to install this package:
$ pkgin -y install samba-compat32For Kerberos authentication the mit-krb5 package is required:
$ pkgin -y install mit-krb5Configuration of the various files will naturally be site-specific, but these examples have been used in a proof of concept, so should work with the correct settings for your network.
For this example network we're using the following settings:
- Realm:
EXAMPLE.SMARTOS.ORG - Workgroup:
EXAMPLE
It is assumed that DNS has already been configured for KDC lookups.
Edit /opt/local/etc/krb5.conf:
[libdefaults]
default_realm = EXAMPLE.SMARTOS.ORG
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
EXAMPLE.SMARTOS.ORG = {
default_domain = example.smartos.org
}
[domain_realm]
pdc = EXAMPLE.SMARTOS.ORG
Now we can create a Kerberos ticket using kinit for a valid AD user:
$ kinit administrator
Password for administrator@EXAMPLE.SMARTOS.ORG:
Warning: Your password will expire in 41 days on Wed Jan 13 10:20:32 2021
$You can verify the Kerberos ticket using klist:
$ klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@EXAMPLE.SMARTOS.ORG
Valid starting Expires Service principal
12/02/20 10:21:00 12/02/20 20:21:00 krbtgt/EXAMPLE.SMARTOS.ORG@EXAMPLE.SMARTOS.ORG
renew until 12/03/20 10:20:58Now we can join to the domain using the Kerberos credentials with the net
command. The host we're connecting from has the hostname testhost in this
example:
$ net join -k
Using short domain name -- EXAMPLE
Joined 'TESTHOST' to dns domain 'example.smartos.org'With the host joined to the domain, we can now start the winbind service:
$ svcadm enable svc:/pkgsrc/samba:winbindAt this point we should be able to verify that winbind lookups function
correctly using wbinfo. If not you will need to diagnose the issue before
continuing.
$ wbinfo -u
guest
administrator
krbtgt
$ wbinfo -g
enterprise admins
group policy creator owners
dnsupdateproxy
domain controllers
...
$ wbinfo -i administrator
administrator:*:10500:10513::/home/administrator:/usr/bin/bashName services can be configured to perform lookups through winbind.
First, edit /etc/nsswitch.conf and add winbind to the list of backends for
each service required. This will normally just be passwd and group:
passwd: files winbind
group: files winbind
In order for the nss(4) to locate the support for each backend it looks for a
shared library named nss_<backend>.so.1 in the library lookup path. As the
32-bit library is shipped in non-standard /opt/local/lib/i386 directory we
need to add that path:
$ crle -c /var/ld/ld.config -l /lib:/usr/lib:/opt/local/lib/i386If nscd, the name service cache, is running then it will need to be
restarted:
$ svcadm restart svc:/system/name-service-cache:defaultNow lookups using tools such as getent(1M) and id(1M) should show AD users and
groups. Make sure that you are using the system tools and not GNU counterparts
installed in /opt/local/bin as they do not support NSS:
$ PATH=/usr/bin:$PATH
$ getent passwd administrator
administrator:*:10500:10513::/home/administrator:/usr/bin/bash
$ id krbtgt
uid=10502(krbtgt) gid=10513(domain users)As noted in the Faithlife documents, configuring PAM is a delicate operation,
however the below configuration for /etc/pam.conf should at least provide a
working configuration to start from:
other auth requisite pam_authtok_get.so.1
other auth required pam_dhkeys.so.1
other auth required pam_unix_cred.so.1
other auth sufficient /opt/local/lib/samba/security/i386/pam_winbind.so use_first_pass
other auth required pam_unix_auth.so.1
other account sufficient /opt/local/lib/samba/security/i386/pam_winbind.so use_first_pass
other account requisite pam_roles.so.1
other account required pam_unix_account.so.1
other session required pam_unix_session.so.1
other session required /opt/local/lib/samba/security/i386/pam_winbind.so
other password required pam_dhkeys.so.1
other password sufficient /opt/local/lib/samba/security/i386/pam_winbind.so
other password requisite pam_authtok_get.so.1
other password requisite pam_authtok_check.so.1
other password required pam_authtok_store.so.1
pkgsrc is a registered trademark of The NetBSD Foundation, Inc.
About
- Releases / Versioning
- Upgrading Instances
- Git Workflow
- Quarterly Release Changes
- Repository Migrations
Usage Guides
Package Development
External Links