通过Solaris与Active Directory的集成,Solaris可以使用Windows 2003 R2/ 2008 Active Directory来进行用户登录验证。以下是简要配置过程。

需要说明的是,系统上最好配置NTP时间同步。当系统时间差异过大时会导致AD用户无法登录Solaris的问题。

测试环境

域控制器1:
Windows 2003R2 SP2
Hostname = win2003r2dc1
IP Address = 10.0.22.20
Domain = test.local 域控制器2:
Windows 2003R2 SP2
Hostname = win2003r2dc2
IP Address = 10.0.22.30
Domain = test.local Solaris10客户端:
Solaris10 U10
Hostname = solaris10
IP Address = 10.0.22.40

1. Win2003R2活动目录安装

1.1 域控制器1(win2003r2dc1)安装活动目录

击“开始”-“运行”,输入dcpromo。单击“确定”,弹出活动目录安装向导:

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

点“下一步”

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

选择“新域的域控制器”/“在新林中的域”

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

选择“否,只在这台计算机上安装并配置DNS”/ 输入域名:test.local

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

接受缺省值,点“下一步”

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

接受缺省值/ 根据情况选择权限

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

输入密码 / 选择“下一步”

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

插入win 2003 r2安装光盘,按提示完成AD安装。

1.2 域控制器2(win2003r2dc1)安装活动目录

与域控制器安装配置活动目录类似,击“开始”-“运行”,输入dcpromo。单击“确定”,弹出活动目录安装向导:

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

域控制器类型选择“现有域的额外域控制器”,然后会提示配置DNS客户端。

在 开始-> 控制面板->网络连接->本地连接->属性 处配置DNS,首选DNS:10.0.22.30备用DNS:10.0.22.20,然后回到Active Directory安装向导点 下一步。

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

输入administrator及密码 / 输入域名test.local

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

接受缺省值,

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

输入密码,然后插入win2003r2安装光盘,直到Active Directory安装配置完成。

2. 安装配置DNS

2.1 安装DNS

域控制器1 在安装配置Active Directory时已经安装了DNS,下面需要在域控制器2上安装DNS。

在  开始->控制面板->添加删除程序->添加删除windows组件->网络服务->详细信息 中选择 DNS,然后插入window2003R2光盘安装DNS.

2.2 配置DNS

2.2.1  域控制器1(win2003r2dc1)上配置DNS

  • 在DNS上创建一个反向查找域

开始->控制面板->DNS 打开DNS操作界面,然后 反向查找区域->新建区域

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

选择 主要区域,

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

选择 至所有所有域控制器 / 输入网络ID 10.0.22

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

选择 安全动态更新,完成反向域创建。

  • 配置DNS区域属性

在_msdcs.test.local, test.local, 10.0.22.x Subnet上修改属性如下:

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

检查 常规属性/  增加名称服务器 win2003dc2.test.local

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

在 区域复制/通知 中选择 在“名称服务器”选项卡中列出的服务器。

  • 配置DNS客户端

开始-> 控制面板->网络连接->本地连接->属性 处配置DNS,首选DNS:10.0.22.20, 备用DNS:10.0.22.30

2.2.2 域控制器2(win2003r2dc2)上配置DNS

正常情况下,DNS信息已经自动复制到域控制器2上。只需按照 2.2.1步骤2 修改区域属性即可。

3. 安装Identity management for unix

在域控制器1和域控制器2上安装Identity management for unix:

开始->控制面板->添加删除程序->添加删除windows组件

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

在Active Directory服务的详细信息中选择Identity Management for UNIX, 然后插入win2003r2安装光盘安装。

4. Active Directory 配置

以下操作只在域控制器1上操作即可。

4.1 创建UnixServers组织单位

在 Active Directory 用户和计算机 界面,test.local->新建->组织单位 UnixServers.

4.2 UnixServers中创建Solaris客户端用户

在UnixServers中创建以Solaris客户端主机名为用户名的用户。注意此处创建的是用户而不是计算机。

test.local->UnixServer->新建->用户

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

用户名 host-solaris主机名,输入密码 ERGpass01,选择 密码永不过期。

4.3 创建Unix Users用户组

test.local->Users->新建->组, 新建 Unix Users用户组,修改用户组Unix Attributes, NIS Domain: test, GID: 10001

Solaris与Windows Active Directory集成-LMLPHP

4.4 创建Proxy用户

test.local->Users->新建->用户,

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

输入密码 Proxypass01,修改用户密码为永不过期。

5. 为Solaris客户端创建kerberos keytab

5.1安装windows server 2003 SP2 Support Tools

从windows网站下载support tools,按提示安装。

5.2创建kerberos keytab文件

C:\Program Files (x86)\Support Tools>ktpass.exe -princ HOST/solaris10.test.local@TEST.LOCAL -mapuser TEST\host-solaris10 -crypto DES-CBC-MD5 +DesOnly -pass ERGpass01 -ptype KRB5_NT_PRINCIPAL -out c:\solaris10.keytab

Targeting domain controller: win2003dc1.test.local
Using legacy password setting method
Successfully mapped HOST/solaris10.test.local to host-solaris10. Key created.
Output keytab to c:\solaris10.keytab:
Keytab version: 0x502
keysize 63 HOST/solaris10.test.local@TEST.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno
5 etype 0x3 (DES-CBC-MD5) keylength 8 (0x91bc01fd073d8fbc)
Account host-solaris10 has been set for DES-only encryption.

密码为创建Solaris主机用户时的密码:ERGpass01

6. 配置Solaris10客户端

6.1 配置DNS

  • /etc/resolv.conf文件
root@solaris10 # more /etc/resolv.conf
domain test.local
search test.local
nameserver 10.0.22.20
nameserver 10.0.22.30
  • /etc/hosts文件
root@solaris10 # more /etc/hosts
#
# Internet host table
#
::1 localhost
127.0.0.1 localhost
10.0.22.40 solaris10.test.local solaris10 loghost
  • /etc/defaultdomain

    root@solaris10 # more /etc/defaultdomain
    test.local

6.2 配置Kerberos

6.2.1 把5.2创建的keytab文件传输到Solaris客户端/etc/krb5目录下,并重命名为krb5.keytab.

6.2.2修改/etc/krb5/krb5.conf文件

root@solaris10 # more /etc/krb5/krb5.conf
[libdefaults]
default_realm = TEST.LOCAL
dns_lookup_kdc = true
verify_ap_req_nofail = false [realms]
TEST.LOCAL = {
kdc = win2003r2dc1.test.local
kdc = win2003r2dc2.test.local
admin_server = win2003r2dc1.test.local
} [domain_realm]
.test.local = TEST.LOCAL [logging]
default = FILE:/var/krb5/kdc.log
kdc = FILE:/var/krb5/kdc.log
kdc_rotate = {
period = 1d
version = 10
} [appdefaults]
kinit = {
renewable = true
forwardable= true
}

6.3 配置LDAP Client

6.3.1 初始化LDAP Client

在Solaris Client上执行以下命令,红色部分根据实际配置修改。

ldapclient manual \
-a credentialLevel=proxy \
-a authenticationMethod=simple \
-a proxyDN=cn=ProxyUser,cn=Users,dc=test,dc=local \
-a proxyPassword=Proxypass01 \
-a defaultSearchBase=dc=test,dc=local \
-a domainName=test.local \
-a "defaultServerList=10.0.22.20, 10.0.22.30" \
-a attributeMap=group:userpassword=userPassword \
-a attributeMap=group:memberuid=memberUid \
-a attributeMap=group:gidnumber=gidNumber \
-a attributeMap=passwd:gecos=cn \
-a attributeMap=passwd:gidnumber=gidNumber \
-a attributeMap=passwd:uidnumber=uidNumber \
-a attributeMap=passwd:homedirectory=unixHomeDirectory \
-a attributeMap=passwd:loginshell=loginShell \
-a attributeMap=shadow:shadowflag=shadowFlag \
-a attributeMap=shadow:userpassword=userPassword \
-a objectClassMap=group:posixGroup=group \
-a objectClassMap=passwd:posixAccount=user \
-a objectClassMap=shadow:shadowAccount=user \
-a serviceSearchDescriptor=passwd:dc=test,dc=local?sub \
-a serviceSearchDescriptor=group:dc=test,dc=local?sub

6.3.2 修改/etc/nsswitch.conf文件

执行ldapclient manual命令时,系统会自动更新nsswitch.conf文件,将ldap加入到文件中。由于我们只用LDAP做用户验证,因此需要修改nsswitch.conf文件如下:

root@solaris10 # cp /etc/nsswitch.files /etc/nsswitch.conf

修改/etc/nsswitch.conf:
passwd: files ldap
group: files ldap
hosts: files dns
ipnodes: files dns 其它不变

6.3.3 重启ldap client服务

root@solaris10 # svcadm restart ldap/client

6.4 配置PAM

修改/etc/pam.conf文件如下:

......
#
# Default definitions for Authentication management
# Used when service name is not explicitly mentioned for authentication
#
other auth requisite pam_authtok_get.so.1
other auth required pam_dhkeys.so.1
other auth sufficient pam_krb5.so.1
other auth required pam_unix_cred.so.1
other auth required pam_unix_auth.so.1
......
#
# Default definition for Account management
# Used when service name is not explicitly mentioned for account management
#
other account requisite pam_roles.so.1
other account sufficient pam_unix_account.so.1
other account required pam_ldap.so.1
......

6.5配置SSH

此步骤是为了避免可能出现的配置LDAP后SSH登录慢的问题。

在/etc/ssh/sshd_config文件中增加:
LookupClientHostnames no 然后重启SSH:
# svcadm restart ssh

7. 配置solaris11客户端

Solaris11客户端配置与Solaris10配置相似。如未特殊说明,请参考Solaris10配置。

7.1 配置网络相关参数

IP地址:
# netadm enable -p ncp DefaultFixed
# ipadm create-ip net0
# ipadm create-addr -T static -a 10.0.22.50/24 net0/v4 defaultdomain:
# domainname test.local defaultrouter:
# route -p add default 10.0.22.253 dns client:
# svccfg -s svc:/network/dns/client setprop config/domain=test.local
# svccfg -s svc:/network/dns/client setprop config/search=test.local
# svccfg -s svc:/network/dns/client setprop config/nameserver=net_address:'(10.0.22.20 10.0.22.30)'
# svcadm enable dns/client

7.2 配置Kerberos

与Solaris10完全相同

7.3 配置LDAP Client

与Solaris10不同之处在于执行ldapclient manual命令后,修改nsswitch的方法不同。Solaris11采用以下方式:

svccfg -s svc:/system/name-service/switch delcust
svccfg -s svc:/system/name-service/switch setprop config/host='"files dns"'
svccfg -s svc:/system/name-service/switch setprop config/password='"files ldap"'
svccfg -s svc:/system/name-service/switch setprop config/group='"files ldap"'
svcadm refresh svc:/system/name-service/switch

7.4 配置PAM

Solaris11与Solaris10的PAM配置略有不同。在Solaris11上,缺省情况下/etc/pam.conf文件中已经没有任何配置信息,相关配置信息已经移到/etc/pam.d目录下,每个服务一个文件。但PAM配置信息仍然可以在/etc/pam.conf文件设置,Solaris11上PAM信息使用顺序是:

/etc/pam.conf for <service> entries
/etc/pam.d/<service>
/etc/pam.conf for "other" entries
/etc/pam.d/other

Solaris11上可以通过修改/etc/pam.d/other文件配置PAM:

# Default definitions for Authentication management
# Used when service name is not explicitly mentioned for authentication
#
auth definitive pam_user_policy.so.1
auth requisite pam_authtok_get.so.1
auth required pam_dhkeys.so.1
auth sufficient pam_krb5.so.1
auth required pam_unix_auth.so.1
auth required pam_unix_cred.so.1
......
# Default definition for Account management
# Used when service name is not explicitly mentioned for account management
# pam_tsol_account(5) returns PAM_IGNORE if the system is not configured
# with Trusted Extensions (TX) enabled. In TX environments some PAM services
# run in the Trusted Path where pam_tsol_account(5) isn't applicable so in
# those cases, like gdm(1m) or xscreensaver(1), PAM stacks are delivered
# in /etc/pam.d which exclude pam_tsol_account(5). pam_tsol_account(5) does
# need to run in the Trusted Path for ensuring remote hosts connecting to the
# global zone have a CIPSO host type.
#
account requisite pam_roles.so.1
account definitive pam_user_policy.so.1
account sufficient pam_unix_account.so.1
account required pam_tsol_account.so.1
account required pam_ldap.so.1

8. 测试

在域控制器1上建立一个用户,测试使用此用户登录Solaris系统。

test.local->Users->新建->用户,

Solaris与Windows Active Directory集成-LMLPHPSolaris与Windows Active Directory集成-LMLPHP

输入用户密码,指定用户密码永不过期。

Solaris与Windows Active Directory集成-LMLPHP

修改用户UNIX Attributes。

如果配置正确,在AD中创建用户后,即可以以此用户登录Solaris客户端。

测试LDAP client配置:

root@solaris10 # getent passwd
jyu<BR>jyu:x:10000:10000:yujun:/export/home/jyu:/bin/bash

测试Kerberos验证:

root@solaris10 # kinit jyu

Password for jyu@TEST.LOCAL:

输入密码后,无任何输出即为成功。
05-02 14:57
查看更多