Mac OS X Leopard与目录服务(AD/OD)集成宝典(10)-完

来源:互联网 发布:java获取 string编码 编辑:程序博客网 时间:2024/05/01 10:29

10. 利用AD为其它Mac OS X服务

 

    前面介绍了如何在Mac OS X服务器上提供目录服务,以及通过AD提供更大的控制用户和计算机. 在管理计算机和组之上,Mac OS X服务器可以提供多个服务利用AD的用户账号. Mac OS X服务器不仅可以利用AD认证用户,而且通过绑定服务器和AD的Kerberos realm, 可以扩展SSO到其它的Mac OS X服务器服务.

     这一节, 将学习利用AD提供OD服务的SSO.

A. 绑定到AD加入Kerberos


    为了利用AD的认证用户使用服务器服务, 需要绑定服务器到AD域并加入到Kerberos realm. 绑定允许服务器使用AD认证请求,而加入Kerberos为一些服务打开SSO.

    这里不重复过程,参见第7节(A的1-4步).

B. 文件服务:AFP

     你应该希望Mac用户登录后自动得到存取文件共享的认证.

    苹果文件服务不需要任何额外配置来使用AD认证. 只需绑定AFP服务器到AD并加入Kerberos realm.

    利用下面的步骤来验证AFP服务.

1. 用AD用户登录

2. 确认初始化了Kerberos票据, (复习4节的B部分)

3. 在Finder中, 从"Go"菜单选择"Connect to Server...",键入服务器地址, 应该不用认证就可以得到共享列表.

4. 同样, 检查Kerberos票据, 应该有另一个afpserver服务票据.

    在登录时有多个方法自动安装网络共享, 如果客户机绑定到主OD然后是AD服务器, 你可以在Login偏好中为OD用户组和计算机添加共享.
  
     也可以运行登录脚本来初始化连接:
1. 使用本地管理员登录客户端

2. 在Terminal中, 在/Library/Management/login.sh文件中加入:
open afp://services.apple.edu/Users

3. 是这个脚本可执行
sudo chmod a+x /Library/Management/login.sh

4. 使它在登录时运行(一行代码)
sudo defaults write /var/root/Library/Preferences/com.apple.loginwindow LoginHook “/Library/Management/login.sh”

5. 使用Ad用户登陆,系统会自动安装这个网络共享,而不需要用户参与.

C. 文件服务: SMB


    SMB服务可以在Server Admin的SMB中打开. 和AFP类似. 不需要额外的配置才能使用AD认证和SSO.绑定SMB到AD并加入Kerberos realm,然后在Server Admin中打开Windows服务.只要是用户使用AD账号登录就可以做到SSO存取文件服务.
     为了检验Windows服务使用SSO, 重复上面的步骤,把相应的部分改为:smb://your.server.edu

D. 文件服务: FTP

     FTP文件服务可以在Server Admin中打开. 与AFP和SMB服务类似, 无须特殊配置. 简单地绑定FTP服务器到AD和加入Kerberos realm, 然后打开FTP服务.

   Mac OS X没有内置的Kerberos化的FTP客户端. 软件Fetch支持GSSAPI到FTP. 而且Fetch和Mac OSX的KDC工作很好, 目前在xftpd中有一个错误,当FTP用户使用从AD得到的一个可前递的票据时连接会失败.如果希望使FTP用户可以得到SSO,使用Kerberos应用(/System/Library/CoreServices/Kerberos.app)改变默认的Kerberos的偏好为不使用可前递的票据. 参考第8节的C部分如何从目录服务强制这个偏好.

    也可以参考下面的"安全Shell"的关于SFTP的部分. SFTP是FTP的一个安全的替代, 而且可以使用AD和OD的KDC的SSO.

E. 文件服务: WebDAV

     利用Mac OS X服务器上的Apache,  可以提供WebDAV文件服务. 利用绑定到AD和加入AD Kerberos的realm, 可以让这个服务成为SSO.

    为了打开SSO存取WebDAV服务, 需要在服务器上创建SSL的web网站.

1. 在Server Admin中, 找到Web>Sites并选择默认wen站点.

2. 编辑默认的站点,改变以下设置:
General:
. 域名: 你的服务器的FQDN(或者是服务器的CNAME)
Port: 443

Options:
. 打开WebDAV.

Security:
. 打开SSL
. 证书: 选择默认的自签字的证书.(self-signed certificate).

3. 保存并运行网站服务.

4. 使用AD用户登录到客户机并检查你的初始的Kerberos票据.

5. 在Finder中, 从"Go"菜单选择"Connect toServer..."输入服务器地址"https://your.server.edu". 必须使用全域名.你会得到一个从服务器来的证书失效的警告信息(因为那个自签字的证书). 点击"Continue”后,共享应该被自动安装而不需要认证.

6. 再检验Kerberos票据, 应该*没*有多出来一个票据, 因为现在使用仅仅浏览权限访问站点.

7. 在服务器上, 在/Library/WebServer/Documents/里创建一个新目录Secret. 复制一个文件或者创建一个子目录(为了可以看到访问成功).

8. 在Terminal里, 改变它的访问权限以使可以让WebDAV管理:
sudo chown www /Library/WebServer/Documents/Secret

9. 进入Server Admin > Web >Sites> Your Site > Realms, 点击"+"按钮生成一个新realm. 给它一个名字,设置认证到"Kerberos", 并设置全路径到那个目录(译者注:/Library/WebServer/Documents/Secret).注意, 基本的认证方法总是可用的不支持SSO,  但是AD不支持摘要认证.

10. 点击"Users & Groups"按钮添加一个AD用户或者组到Users表, 给它Browse和读/写权利, 保存.

11. 返回到客户机, 如果WebDAV共享已经安装了, 就重新连接WebDAV, 找到"Secret"目录, 目录中的内容应该显示, 而且一个http票据会出现在kerberos里.

12. 删除Kerberos票据, 解除WebDAV共享, 然后重新安装WebDAV, 确认无法看到Secret目录的内容(因为没有Kerberos TGT).

F. 安全的Shell


     对于多数服务器, 你可能想限制SSH访问, 而不是打开SSO访问. 对于簇的头节点, 可能有数百的基于目录服务的用户需要shell访问服务器.

    Kerberos认证在Mac OS X中是默认禁止的, 因为它强迫用户等待Kerberos TGT认证登录. 为了使SSH客户打开Kerberos认证:
1. 编辑/etc/ssh_config文件:
sudo nano /etc/ssh_config

2. 去掉注释下面一行并改变值为 "yes".
GSSAPIAuthentication yes

3. 按Control+X退出编辑器, 键入y来保存.

    SSH在Mac OS X服务器上默认打开,这个服务可以打开或关闭它: Server Admin > [server name] > Settings > General.

     为了检验SSH服务允许SSO访问, 做下面的AD绑定:

1. 用AD用户登录, 检查初始的Kerberos票据(4节, B部分)

2. 在Terminal里, 从File菜单选择"Connect to Server..."
(译者注: 应该是菜单Shell > New Remote Connection...)

3. 在Service中, 选择"Secure Shell(ssh)"

4. 在Server列表中, 找到你的Secure Shell服务器.

5. 填入AD用户的短名(shortname), 然后点击连接. 无须进一步认证就可以连接成功. 在Kerberos中应该可以看到"host"服务票据.
    Mac OS X服务器的Secure Shell也默认提供Secure FTP(sftp), 不需要附加的设置。

    为了验证,实施下面步骤:
1. 用AD用户登录, 检查初始的Kerberos票据(4节, B部分)

2. 在Terminal里, 从File菜单选择"Connect to Server..."
(译者注: 和前面一样,应该是菜单Shell > New Remote Connection...)

3. 在Service中, 选择"色簇热File Transfer (sftp)"

4. 在Server列表中, 找到你的Secure Shell服务器.

5. 填入AD用户的短名(shortname), 检查选择"SFTP(Automatic)"作为连接协议, 然后点击连接. 无须进一步认证就可以连接成功. 在Kerberos中应该可以看到"host"服务票据.

G. 邮件服务

    Email可能使最常使用的基于服务器的仵了, 而且它在很多机构中都是相当重要的. 不幸的是,它也是通过数据包嗅探非法获取密码最普遍使用的服务.通过SSL获得安全的客户-服务连接可以解决这个问题, 强制高强度密码也是一个好办法. 通过实施支持SSO的Kerberos的KDC,可以完全避免用户的密码在网上传输. Mac OS X服务器提供基于Postfix和Cyrus(SMTP, POP和IMAP)的邮件服务,而且内置的SPAM和病毒控制.

   用户的邮件信息都储存在每个用户的目录服务记录中. Mac OSX服务器对一个给定用户寻找"apple-user-mailattribute"来确定用户是否可以访问服务器上的邮件服务.因为这是一个Apple特殊的属性, 一般地需要扩展AD架构来利用AD认证使用Mac OS X的邮件服务.但是如果你在邮件服务器上实施了SACL(Sevice Access Control List),SACL将覆盖mailAttribute.所以添加用户和组到邮件的SACL并赋予访问权限就可以了.

     依照下面的步骤配置Mac OS X服务器的邮件服务来获得AD服务器支持的SSO:

1. 在Server Admin > mail > Settings, 激活"POP, IMAP, 和SMTP"

2. 在高级和Security项中, 打开为POP, IMAP, 和SMTP的kerberos认证, 保存并激活服务.

3. 在Server Admin > [Server name] > Settings > Access里, 选择"For Seleted ervice below".

4. 点击Mail服务, 点击"Allow only user and groups below".

5. 点击”+“按钮在Users/Groups抽屉里, 把希望的用户和组拖到"Name"栏下, 完成后保存.

6. 在客户端使用Ad账号登录并运行Mail程序. 生成一个POP账号配置成AD用户. 空出要求填入密码的地方.当Mail尝试配置的时候会自动从Kerberos认证填入. 对于向外服务器, 选择"Use Authentication",同样只填用户名而空出密码.

7. 在退出之前, 在Kerberos程序里检查有一个pop和smtp服务票据.

8. 在Mail程序的偏好 > Acounts里, 生成另外一个账号使用IMAP. 检查是否得到一个IMAP票据.

     提示: 查看最后的资源部分参考相关文章看如何创建邮件账号捆棒. 邮件账号捆棒对于部署用户邮件提供方便.

H. VPN

    VPN提供给用户在家里或者其它地方以任何一个网络连接,包括Internet, 建立安全连接到LAN. 从用户的角度,VPN就象一个专用的私有连接. VPN技术同时允许企业和分公司通过Internet建立安全的连接通讯.通过Internet的VPN连接就如同不同地点间的广域网.

   Mac OS X提供VPN, DHCP和DNS服务--所有网关需要的服务. Mac OSX服务器的VPN同时支持Kerberos认证(仅限于L2TP). 所以在Mac客户端可以对SSO支持.下面举例来说名在一个绑定到AD并加入Kerberos realm的Mac OS X服务器上如何配置VPN支持SSO.

1. 配置VPN: Server Admin > [your server] > VPN > Settings > L2TP. 例如:
. 打开L2TP over IPSec
. 开始IP: 10.0.4.50
. 结束IP: 10.0.4.59
. PPP认证: kerberos
. IPsec认证: Shared Secret
2. 在"Client Information"标签下, 设置如下:
DNS服务器: 10.0.4.1
搜索域: apple.edu
网络路由定义:
  • Address: 10.0.4.0
  • Mask: 255.255.255.0
  • Type: Private

 

3. 保存设置并启动服务.

4. 使用AD用户登录客户机, 在System Preference中打开Newtork.

5. 按"+"添加一个网络界面, 选择"VPN"和"L2TP over IPsec"作为VPN类型. 点击"Create"按钮。
6. 提供服务器地址, 可以在用户名处留空. 点击"Authentication Settings"按钮并按如下设置:
  • User Authentication: Kerberos
  • Machine Authentication: Shared Secret (type in the shared secret)


7. 点击OK关闭Authentication Settings面板. 点击"Apply"来保存, 点击连接按钮. 这个连接应该不用任何额外的认证, 一个"vpn"票据会出现在Kerberos程序中.

I. Xgrid

    Xgrid是一种使部署和管理网格计算简化的工具, 只在Mac OS X和Mac OS X服务器上有.Xgrid准许管理把一组计算机分组或分簇, 并允许用户把复杂计算任务方便地分配到一组计算机(本地或/和远程),或者是临时的网格或者是中央管理的簇.

   在一个网格中, 认证发生会好多次: 当一个代理加入到一个网格时, 在代理和控制器之间发生; 当客户端发送一个任务请求时,发生在客户和控制器之间; 当控制器把任务分配到代理时, 发生在控制器和所有代理之间. Kerberos认证可以使这些工作都对用户透明而且安全.利用Mac OS X服务器和一群客户端, 可以方便快速地形成强大的计算阵容并仅仅使用现有技术投资和AD架构.

    注: 这个练习需要你安装有Xcode 3.0或者更高.

    跟着下面的步骤看如何配置SSO:

1. 运行Server Admin并选中服务器的Xgrid服务, 点击工具栏中的"General"按钮.

2. 点击右下方的”Configure Xgrid Service...“按钮,跟着向导来生成一个网格. 当显示配置网络文件时, 在目录服务管理员的用户名和密码处留空.

3. 点击继续来结束向导安装. Xgrid服务(代理和控制器)会被打开.

4. 在客户端绑定到AD并登录AD用户.

5. 在Sharing偏好里, 打开Xgrid服务, 然后点击Configuration按钮. 选择你的服务器作为控制器, 并且总是接受任务. 点击OK后, 选择"Single Sign On"作为认证方法. 关闭系统偏好.

6. 打开在/Application/Server/里的Xgrid Admin程序.如果客户端和服务器在同一个子网中,应该自动显示连接到你的Xgrid服务器. 否则点击"Add Controller"按钮把你的服务器地址填入,点击连接, 选择"Single Sign On"作为认证方法.


7. 在概览标签中,可以看到当前所有可供使用的处理. 在Agents标签中, 可以看到客户端和服务器. 现在最小化Xgrid Admin程序.

8. 在客户端, 找到"/Developer/Examples/Xgrid/GridMandelbrot/"并双击Gridmandelbrot.xcode文件来打开这个Xcode工程文件. 点击"Build and Go"按钮.

9. 它会自动提示连接到一个控制器. 选择你的Xgrid控制器, 然后选择使用Single Sign On证件. 它将自动开始提交任务到控制器. 然后, 控制器会把任务发布给每一个代理, 回收结果, 然后把结果返回到你的库护短程序显示.


10. 返回到Xgrid Admin程序查看CPU的使用情况和代理的状态以及任务状态.


11. 在Kerberos程序中检查票据, 应该有Xgrid服务票据. 认证发生了好多次, 在你的代理和控制器之间, 控制器和代理之间,客户端和控制器之间, 还有Xgrid Admin程序和控制器之间. 你一次密码也不用输入, 而这些都是Kerberos控制的.

J. 控制服务的访问


     绑定目录服务的一个负面影响是, 一旦绑定到服务器, 那么任何DS用户都可以马上使用所有的服务. 显然这不受欢迎, 而这就是SACLs(service Access Control List)的用途.

   SACLs区分对待不同的用户和组是否允许使用什么服务. SACLs可以在Server Admin里配置, 并且在本地目录存储中形成组.每一个SACL组(命名为com.apple.access_service)包括有权使用服务的本地或者DS用户和组的一个列表.你可以实施同样的限制到所有服务, 或者对于没有服务分别设置.

    SACLs也可以实施到客户机,来限制什么用户可以在机器上登录. 有关详细情况, 查看资源部分.

1. 在Server Admin > [server name] > Access > Services里, 选择"For the selected services below"单选项.

2. 点击那个要被限制的服务.

3. 选择"Allow only users and groups below"单选项.

4. 点"+"按钮并在弹出的抽屉里拖动有权限的用户和组到"Name"列上.

5. 完成后点"Save"按钮.


6. 在另外一个Mac OS X机器上, 尝试使用一个没有被允许的用户访问该服务, 它将不会被允许访问. 对于不同的服务, 客户可能得到一个错误信息或者是连接失败的提示.