Sun Java logo     上一页      目录      索引      下一页     

Sun logo
Sun Java System Web Proxy Server 4.0.1 管理指南 

第 8 章
控制对服务器的访问

本章介绍如何控制对 Administration Server 及由 Proxy Server 提供的数据的访问。可以限制对服务器提供的所有数据或其提供的特定 URL 的访问。例如,可以指定只有特定的人才能访问某些 URL,或指定这些人以外的人才能够查看文件。可以允许所有客户机访问 HTTP 的 URL,但对 FTP 的访问做出限制。还可以基于主机名或域名限制对 URL 的访问。例如,当 Proxy Server 为多个内部 Web 服务器提供服务,但只希望特定人员才可以访问存储在其中一台服务器上的保密研究项目时,就可以这样做。

必须先启用分布式管理并在 LDAP 数据库中配置管理组,才能对 Administration Server 使用访问控制。使用本章中信息的前提条件是已完成了上述任务。

本章包括以下部分:


什么是访问控制?

可以通过访问控制来确定哪些人可以访问 Proxy Server 及这些人可以访问服务器的哪些部分。可以控制允许对整个服务器进行访问,还是只允许对服务器的某些部分(如目录、文件、文件类型等)进行访问。对收到的请求进行评估时,将根据有次序的一系列规则(称为访问控制条目 (ACE))来确定访问权限。Proxy Server 通过寻找匹配的条目来决定是应允许还是应拒绝访问。每个 ACE 都指定了服务器是否应继续检查分层结构中的下一个条目。ACE 的集合称为访问控制表 (ACL)。收到请求后,Proxy Server 将在 obj.conf 文件中查找对某个 ACL 的引用,然后使用该 ACL 来确定访问权限。默认情况下,服务器具有一个 ACL 文件,其中包含多个 ACL。

根据以下条件允许或拒绝访问:

本节包括以下主题:

用户-组的访问控制

可以只允许特定的用户或组访问服务器。用户-组访问控制要求用户先输入用户名和口令,然后才能访问服务器。服务器会将客户机证书中的信息或客户机证书本身与某个目录服务器条目进行比较。

Administration Server 只使用基本验证。如果要求在 Administration Server 上进行客户机验证,必须手动编辑 obj.conf 中的 ACL 文件,将方法更改为 SSL。

用户-组验证由为服务器配置的目录服务执行。有关更多信息,参见配置目录服务

目录服务用来实现访问控制的信息可以来自以下资源之一:

当服务器使用基于 LDAP 的外部目录服务时,对于服务器实例将支持以下类型的用户-组验证方法:

当服务器使用基于文件的内部目录服务时,对于服务器实例支持的用户-组验证方法将包括:

用户-组验证要求用户先证明自己的身份,才能进行访问。进行验证时,用户通过输入用户名和口令、使用客户机证书或摘要验证插件来证明自己的身份。使用客户机证书时需要加密。

默认验证

默认验证是首选方法。"Default" 设置使用 obj.conf 文件中的默认方法,如果 obj.conf 中没有设置,将使用 "Basic"。如果选中 "Default",ACL 规则将不会在 ACL 文件中指定方法。如果选择 "Default",则只需对 obj.conf 文件中的一行进行编辑即可方便地更改所有 ACL 的方法。

基本验证

基本验证要求用户先输入用户名和口令,然后才能访问服务器。这是默认设置。必须在 LDAP 数据库(如 Sun Java System Directory Server)或某个文件中创建并存储一个用户和组的列表。所使用的目录服务器安装到的服务器根目录必须不同于 Proxy Server 的服务器根目录,或必须使用安装在远程计算机上的目录服务器。

当用户尝试访问要求进行用户-组验证的资源时,会收到要求输入用户名和口令的提示。服务器收到上述信息时它们可能已加密,也可能未加密,具体取决于是否为服务器启用了加密(即启用了 SSL)。


注意

如果使用无 SSL 加密的基本验证,则将以不加密的文本形式在网络中发送用户名和口令。网络包可能会被截取,因此用户名和口令可能会被盗用。基本验证与 SSL 加密和/或主机-IP 验证结合使用时效果最佳。使用摘要验证可以避免此问题。


验证后用户将看到以下内容:

可以自定义显示给未经授权的用户的消息。有关更多信息,参见访问被拒绝时的响应

SSL 验证

使用安全性证书,服务器可以用两种方式确认用户的身份:

将服务器配置为使用证书信息来验证客户机时,服务器将:

为控制对特定资源的访问而要求进行客户机验证和要求对与服务器的所有连接进行客户机验证是不同的。如果将服务器配置为对所有连接都要求进行客户机验证,则客户机只能提供由可信 CA 颁发的有效证书。如果将服务器配置为使用 SSL 方法进行对用户和组的验证,则必须满足以下条件:

要求通过访问控制进行客户机验证时,必须为 Proxy Server 启用 SSL 加密算法。有关启用 SSL 的更多信息,参见使用证书和密钥

要成功访问要求进行 SSL 验证的资源,客户机证书必须来自 Proxy Server 信任的 CA。如果将 Proxy Server 的 certmap.conf 文件配置为将浏览器中的客户机证书与目录服务器中的客户机证书进行比较,则必须在该目录服务器中发布客户机证书。不过,certmap.conf 文件也可以配置为仅将证书中的选定信息与目录服务器条目进行比较。例如,可以将 certmap.conf 配置为只将浏览器证书中的用户 ID 和电子邮件地址与目录服务器条目进行比较。有关 certmap.conf 和证书映射的更多信息,参见使用证书和密钥。另参见 Proxy Server Configuration File Reference

摘要验证

可以将 Proxy Server 配置为使用基于 LDAP 或文件的目录服务来执行摘要验证。

摘要验证使用户能够基于用户名和口令进行验证,但不必以明文形式发送用户名和口令。浏览器使用用户的口令和 Proxy Server 提供的某些信息,通过 MD5 算法创建摘要值。

当服务器使用基于 LDAP 的目录服务来执行摘要验证时,还将在服务器端使用摘要验证插件计算此摘要值,并将该值与客户机提供的摘要值进行比较。如果这些摘要值相匹配,用户将通过验证。要进行这种验证,目录服务器必须能够访问明文形式的用户口令。Sun Java System Directory Server 自带一个双向口令插件,它使用对称加密算法以加密形式存储数据,以后可以将数据解密为其原来的形式。只有 Directory Server 保存了数据的密钥。

对于基于 LDAP 的摘要验证,必须启用该双向口令插件和 Proxy Server 自带的摘要验证专用插件。要将 Proxy Server 配置为可以处理摘要验证,请在 dbswitch.conf 文件(位于 server_root/userdb/)中设置数据库定义的 digestauth 属性。

服务器将尝试基于指定的 ACL 方法验证 LDAP 数据库,如表 8-1 所示。如果不指定 ACL 方法,要求进行验证时服务器将使用摘要验证或基本验证,不要求进行验证时服务器将使用基本验证。

下表列出了验证数据库支持和不支持的摘要验证。

表 8-1 摘要验证盘问数据生成

ACL 方法

验证数据库支持

验证数据库不支持

默认

未指定

摘要和基本

基本

基本

基本

基本

摘要

摘要

错误

method=digest 的情况下处理 ACL 时,服务器将尝试通过以下方式进行验证:

安装摘要验证插件

对于使用基于 LDAP 的目录服务的摘要验证,必须安装摘要验证插件。此插件将计算服务器端的摘要值,并将该值与客户机提供的摘要值进行比较。如果这些摘要值相匹配,用户将通过验证。

如果使用的是基于文件的验证数据库,则不需要安装摘要验证插件。

在 UNIX 上安装摘要验证插件

摘要验证插件包含一个共享库,在下面的两个文件中都可以找到它:

在 UNIX 上安装摘要验证插件

  1. 确保此共享库所在的服务器计算机便是安装 Sun Java System Directory Server 的服务器计算机。
  2. 确保知道 Directory Manager 的口令。
  3. 修改 libdigest-plugin.ldif 文件,将所有对 /path/to 的引用更改为安装了摘要验证插件共享库的位置。
  4. 要安装插件,请输入以下命令:
  5. % ldapmodify -D "cn=Directory Manager" -w password -a < libdigest-plugin.ldif

在 Windows 上安装摘要验证插件

必须将若干个 .dll 文件从 Proxy Server 安装复制到 Sun Java System Directory Server 服务器计算机,Directory Server 才可以与摘要插件一起正常启动。

在 Windows 上安装摘要验证插件

  1. 访问 Proxy Server 以下目录中的共享库:
  2. server_root\bin\proxy\bin

  3. 复制以下文件:
    • nsldap32v50.dll
    • libspnr4.dll
    • libplds4.dll
  4. 将这些文件粘贴到以下任一位置:
    • \Winnt\system32
    • Sun Java System Directory Server 的安装目录:server_root\bin\sldap\server
将 Sun Java System Directory Server 设置为使用 DES 算法

对存储摘要口令的属性进行加密需要使用 DES 算法。

将 Directory Server 设置为使用 DES 算法

  1. 启动 Sun Java System Directory Server Console。
  2. 打开 iDS 5.0 实例。
  3. 选择 "Configuration" 选项卡。
  4. 单击插件旁的 + 号。
  5. 选择 DES 插件。
  6. 选择 "Add" 添加一个新属性。
  7. 输入 iplanetReversiblePassword
  8. 单击 "Save"。
  9. 重新启动 Sun Java System Directory Server 实例。

    要在 iplanetReversiblePassword 属性中为用户设置摘要验证口令,输入的内容必须包括 iplanetReversiblePasswordobject 对象。


其他验证

可以使用访问控制 API 创建自定义验证方法。

主机-IP 的访问控制

可以限制对 Administration Server 及其文件和目录的访问,只将它们提供给使用特定计算机的客户机。可以指定想要允许或拒绝其访问的计算机的主机名或 IP 地址。使用主机-IP 验证来访问文件或目录对用户来说是一个无缝的过程。用户不必输入用户名或口令就可立即访问文件和目录。

因为可能会有一个以上用户都在使用某台计算机,所以将主机-IP 验证与用户/组验证结合使用效果更佳。如果同时使用这两种验证方法,则访问时将要求提供用户名和口令。

主机-IP 验证不要求在服务器上配置 DNS(域名服务)。如果选择使用主机-IP 验证,则网络中必须正在运行 DNS,且已将服务器配置为使用 DNS。要启用 DNS,请访问服务器的 Server Manager,单击 "Preferences" 选项卡,然后单击 "Configure System Preferences"。将会显示 DNS 设置。

启用 DNS 会使 Proxy Server 的性能下降,因为服务器将被迫执行 DNS 查找。为减小 DNS 查找对服务器性能的影响,可以只为访问控制和 CGI 解析 IP 地址,而不是为每个请求都解析 IP 地址。如果要这样做,则请在 obj.conf 中进行以下指定:

AddLog fn="flex-log" name="access" iponly=1

使用访问控制文件

对 Administration Server 或其上的文件或目录使用访问控制时,这些设置将存储在一个扩展名为 .acl 的文件中。访问控制文件存储在目录 server_root/httpacl 中,其中 server_root 为服务器的安装位置。例如,如果将服务器安装在 /usr/Sun/Servers 中,则 Administration Server 和您服务器上配置的每个服务器实例的 ACL 文件将位于 /usr/Sun/Servers/httpacl/ 中。

主 ACL 文件为 generated-proxy-serverid.acl。临时工作文件为 genwork-proxy-serverid.acl。如果使用 Administration Server 配置访问,则将会有这两个文件。不过,如果想要进行更复杂的限制,则可以创建多个文件,然后在 server.xml 文件中引用这些文件。还有几个特性只能在编辑这些文件时才能使用。例如,有一个特性可以基于一天中的某个时间或一周中的某一天来限制对服务器的访问。

有关访问控制文件及其语法的更多信息,参见 ACL 文件语法。有关 server.xml 的更多信息,参见 Proxy Server Configuration File Reference

配置 ACL 用户高速缓存

默认情况下,Proxy Server 会将用户和组验证结果存放在 ACL 用户高速缓存中。可以使用 magnus.conf 文件中的 ACLCacheLifetime 指令来控制 ACL 用户高速缓存的有效时间。每次引用高速缓存中的某个条目时,都将计算其寿命并检查 ACLCacheLifetime。如果该条目的寿命大于或等于 ACLCacheLifetime,则不再使用它。默认值为 120 秒。将该值设置为 0(零)将关闭高速缓存。如果将此值设置得很大,则每次更改 LDAP 条目时可能都需要重新启动 Proxy Server。例如,如果将此值设置为 120 秒,则在长达两分钟的时间内,Proxy Server 可能会与 LDAP 目录不同步。仅当 LDAP 目录不经常更改时才设置一个较大的值。

使用 magnus.conf 的参数 ACLUserCacheSize 可以配置高速缓存中最多可以保留的条目数。此参数的默认值为 200。新条目将添加到列表的开头,当高速缓存达到其最大大小时,列表末尾的条目将被删除以便容纳新条目。

还可以使用 magnus.conf 的参数 ACLGroupCacheSize 来设置每个用户条目最多可以高速缓存的组成员资格数。此参数的默认值是 4。遗憾的是,组中用户的非成员资格将不会被高速缓存,这将导致每个请求都要对 LDAP 目录进行多次访问。

使用客户机证书控制访问

如果在服务器上启用了 SSL,则可以将客户机证书与访问控制联用。要这样做就必须指定访问特定资源时将要求提供客户机证书。如果在服务器上启用了此特性,则拥有证书的用户只需在其首次尝试访问受限资源时输入其名称和口令。用户的身份一经建立,服务器就会将其登录名和口令映射到该特定证书。从这时起,用户在访问需要进行客户机验证的资源时将不再需要输入其登录名或口令。当用户尝试访问受限资源时,其客户机将向服务器发送客户机证书,服务器将依照其映射列表对证书进行核对。如果该证书属于已获得访问授权的用户,则将为其提供该资源。


为控制对特定资源的访问而要求进行客户机验证和要求对与服务器的所有连接进行客户机验证是不同的。此外还请注意,对所有 SSL 连接都要求提供客户机证书时,系统并不会自动将证书映射到数据库中的用户。要这样做就必须指定访问指定的资源时将要求提供客户机证书。



访问控制如何工作

当服务器收到对某个页面的请求时,将使用 ACL 文件中的规则来判断是否应允许访问。这些规则可以引用发送该请求的计算机的主机名或 IP 地址,还可以引用 LDAP 目录中存储的用户和组。

下面的示例介绍了 ACL 文件可能会包含的内容,并提供了访问控制规则的示例。

version 3.0;

# The following "es-internal" rules protect files such

# as icons and images related to Sun Java System Web Proxy Server.

# These "es-internal" rules should not be modified.

  acl "es-internal";

  allow (read, list, execute,info) user = "anyone";

  deny (write, delete) user = "anyone";

# The following rules deny access to the directory "web"

# to everyone not in the directory server and deny everyone

# in the directory server who is not in GroupB.

# Only the users in GroupB are allowed read, execute, list,

# and info permissions. GroupA cannot gain access to the

# directory "web" even though (in the ACL rule below) they

# can access the directory "my_stuff". Furthermore, members

# of GroupB cannot write or delete files.

  acl "path=/export/user/990628.1/docs/my_stuff/web/";

  authenticate (user,group) {

     database = "default";

     method = "basic";

  };

  deny (all)

  (user = "anyone");

  allow (read,execute,list,info)

  (group = "GroupB");

# The following rule denies everyone not in the directory

# server and denies everyone in the directory server except

# users with the ID of "SpecificMemberOfGroupB". The ACL rule

# in this setting also has a requirement that the user

# connect from a specific IP address. The IP address setting

# in the rule is optional, and has been added for extra

# security. Also, this ACL rule has a Customized prompt

# of "Presentation Owner". This Customized prompt appears

# in the username and password dialog box in the client's

# browser.

  acl "path=/export/user/990628.1/docs/my_stuff/web/presentation.html";

  authenticate (user,group) {

     database = "default";

     method = "basic";

     prompt = "Presentation Owner";

  };

  deny (all)

  (user = "anyone" or group = "my_group");

  allow (all)

  (user = "SpecificMemberOfGroupB") and

  (ip = "208.12.54.76");

# The following ACL rule denies everyone not in the directory

# server and everyone in the directory server except for

# GroupA and GroupB access to the directory "my_stuff"

  acl "path=/export/user/990628.1/docs/my_stuff/";

  authenticate (user,group) {

     database = "default";

     method = "basic";

  };

  deny (all)

  (user = "anyone");

  allow (read,execute,list,info)

  (group = "GroupA,GroupB");

例如,如果某个用户请求访问以下 URL:http://server_name/my_stuff/web/presentation.html

Proxy Server 将先检查整个服务器的访问控制。如果整个服务器的 ACL 的设置为 "Continue",则服务器将查找目录 my_stuff 的 ACL。如果存在某个 ACL,服务器将检查该 ACL 中的 ACE,然后继续移动到下一个目录。此过程将继续,直至找到的某个 ACL 拒绝了访问,或到达所请求的 URL(在本例中是文件 presentation.html)的最后一个 ACL。

要使用 Server Manager 为本例设置访问控制,可以仅为该文件创建一个 ACL,也可以为指向该文件的每个资源都创建一个 ACL。也就是说,一个用于整个服务器,一个用于 my_stuff 目录,一个用于 my_stuff/web 目录,一个用于该文件。


如果有一个以上匹配的 ACL,服务器将使用最后一个匹配的 ACL 语句。



设置访问控制

本节介绍施加访问限制的步骤。可以设置针对所有服务器的全局访问控制规则,也可以设置只针对特定服务器的访问控制规则。例如,人力资源部门可以创建一些 ACL,这些 ACL 允许所有通过验证的用户查看其自己的工资单数据,但只将以更新数据为目的的访问权限授予负责工资单的人力资源部门人员。

本节包括以下主题:


必须先配置并激活分布式管理,才可以设置全局访问控制。


设置全局访问控制

设置所有服务器的访问控制
  1. 访问 Administration Server 并单击 "Global Settings" 选项卡。
  2. 单击 "Administer Access Control" 链接。
  3. 从下拉式列表中选择管理服务器 (proxy-admserv),单击 "Go" 装入数据,然后单击 "New ACL"(或 "Edit ACL")。
  4. 出现提示时进行验证。将显示 "Access Control Rules For" 页面。Administration Server 有两行默认的访问控制规则,它们是无法编辑的。
  5. 选择 "Access Control Is On"(如果尚未选择)。
  6. 要将一个默认 ACL 规则添加到该表的最后一行,请单击 "New Line" 按钮。要更改访问控制限制的位置,单击上箭头或下箭头。
  7. 单击 "Users/Groups" 列中的 "Anyone"。下部框中将显示 "User/Group" 页面。
  8. 选择允许其访问的用户和组,然后单击 "Update"。单击 "Group" 或 "User" 的 "List" 按钮时将会提供列表供您从中选择。有关上述设置的更多信息,参见联机帮助。另参见指定用户和组
  9. 单击 "From Host" 列中的 "Anyplace"。下部框中将显示 "From Host" 页面。
  10. 指定允许其访问的主机名和 IP 地址,然后单击 "Update"。有关上述设置的更多信息,参见联机帮助。另参见指定 "From Host"
  11. 单击 "Programs" 列中的 "All"。下部框中将显示 "Programs" 页面。
  12. 选择 "Program Groups" 或在 "Program Items" 字段中输入允许其访问的具体文件名,然后单击 "Update"。有关上述设置的更多信息,参见联机帮助。另参见限制对程序的访问
  13. (可选)单击 "Extra" 列中的 "X" 可以添加自定义 ACL 表达式。下部框中将显示 "Customized Expressions" 页面。有关更多信息,参见编写自定义表达式
  14. 选中 "Continue" 列中的复选框(如果尚未将其选中)。服务器将对下一行限制进行评判,然后才能确定是否允许该用户进行访问。创建多行限制时,请按先笼统后具体的顺序进行创建。
  15. (可选)单击垃圾箱图标可从访问控制规则中删除相应行。
  16. (可选)单击 "Response When Denied" 链接可指定用户在访问被拒绝时会收到的响应。下部框中将显示 "Access Deny Response" 页面。选择所需的响应,视需要指定其他信息,然后单击 "Update"。有关上述设置的更多信息,参见访问被拒绝时的响应
  17. 单击 "Submit" 将新的访问控制规则存储在 ACL 文件中,或单击 "Revert" 将页面中的元素重置为更改前所具有的值。

设置服务器实例的访问控制

使用 Server Manager 可以创建、编辑或删除特定服务器实例的访问控制。如果是进行删除,请勿删除 ACL 文件中的全部 ACL 规则。至少要保留一个 ACL 文件,并且其中至少要包含一个 ACL 规则,以便启动服务器。删除所有 ACL 规则并重新启动服务器将导致语法错误。

设置服务器实例的访问控制
  1. 访问服务器实例的 Server Manager,然后单击 "Preferences" 选项卡。
  2. 单击 "Administer Access Control" 链接。
  3. 使用以下方法之一选择一个 ACL:
    • "Select A Resource" 将显示使用 ACL 限制访问的资源。从下拉式列表中选择一个资源,或单击 "Regular Expression" 来指定一个正则表达式。有关更多信息,参见 Proxy Server 管理指南中的管理模板和资源
    • "Select An Existing ACL" 将列出所有启用的 ACL。未启用的现有 ACL 将不会显示在此列表中。从下拉式列表中进行选择。
    • 可以通过 "Type In The ACL Name" 创建名称式 ACL。只有在熟悉 ACL 文件时才适合使用此选项。如果要对资源应用名称式 ACL,则必须手动编辑 obj.conf。有关更多信息,参见 ACL 文件语法
  4. 单击相应的 "Edit" 按钮。将显示 "Access Control Rules For" 页面。
  5. 选择 "Access Control Is On"(如果尚未选择)。
  6. 要将一个默认 ACL 规则添加到该表的最后一行,请单击 "New Line" 按钮。要更改访问控制限制的位置,单击上箭头或下箭头。
  7. 要编辑此服务器实例的 ACL,请单击 "Action" 列中的操作。下部框中将显示 "Allow/Deny" 页面。
  8. 选择 "Allow"(如果尚未选择它作为默认值),然后单击 "Update"。有关 "Allow" 或 "Deny" 的更多信息,参见设置操作
  9. 单击 "Users/Groups" 列中的 "Anyone"。下部框中将显示 "User/Group" 页面。
  10. 选择允许其访问的用户和组,指定验证信息,然后单击 "Update"。单击 "Group" 或 "User" 的 "List" 按钮时将会提供列表供您从中选择。有关上述设置的更多信息,参见联机帮助。另参见指定用户和组
  11. 单击 "From Host" 列中的 "Anyplace"。下部框中将显示 "From Host" 页面。
  12. 指定允许其访问的主机名和 IP 地址,然后单击 "Update"。有关上述设置的更多信息,参见联机帮助。另参见指定 "From Host"
  13. 单击 "Rights" 列中的 "All"。下部框中将显示 "Access Rights" 页面。
  14. 指定此用户的访问权限,然后单击 "Update"。有关更多信息,参见限制对程序的访问
  15. (可选)单击 "Extra" 列中的 "X" 可以添加自定义 ACL 表达式。下部框中将显示 "Customized Expressions" 页面。有关更多信息,参见编写自定义表达式
  16. 选中 "Continue" 列中的复选框(如果尚未将其选中)。服务器将对下一行限制进行评判,然后才能确定是否允许该用户进行访问。创建多行限制时,请按先笼统后具体的顺序进行创建。
  17. (可选)单击垃圾箱图标可从访问控制规则中删除相应行。请勿删除 ACL 文件中的所有 ACL 规则。至少要保留一个 ACL 文件,并且其中至少要包含一个 ACL 规则,以便启动服务器。如果删除了 ACL 文件中的所有 ACL 规则,然后尝试重新启动服务器,则会收到语法错误。
  18. (可选)单击 "Response When Denied" 链接可指定用户在访问被拒绝时会收到的响应。下部框中将显示 "Access Deny Response" 页面。选择所需的响应,视需要指定其他信息,然后单击 "Update"。有关上述设置的更多信息,参见访问被拒绝时的响应
  19. 单击 "Submit" 将新的访问控制规则存储在 ACL 文件中,或单击 "Revert" 将页面中的元素重置为更改前所具有的值。


选择访问控制选项

以下主题介绍设置访问控制时可以选择的各种选项。对于 Administration Server,头两行被设置为默认值,无法进行编辑。

本节包括以下主题:

设置操作

可以指定当请求符合访问控制规则时服务器执行的操作。

服务器将逐一检查访问控制条目 (ACE) 列表来确定访问权限。例如,第一个 ACE 通常为拒绝每个用户。如果将第一个 ACE 设置为 "Continue",则服务器将检查列表中的第二个 ACE,如果该 ACE 匹配,则将使用下一个 ACE。如果未选择 "Continue",将拒绝任何用户访问该资源。服务器将继续向下检查列表,直到找到不匹配的 ACE 或虽然匹配但未设置为 "Continue" 的 ACE。最后一个匹配的 ACE 将确定是允许还是拒绝访问。

指定用户和组

使用用户和组验证时,将提示用户输入用户名和口令,然后才能访问在访问控制规则中指定的资源。

Proxy Server 将检查存储在 LDAP 服务器(如 Sun Java System Directory Server)或基于文件的内部验证数据库中的用户和组的列表。

可以允许或拒绝数据库中每个用户的访问,也可以使用通配符模式允许或拒绝特定用户的访问,还可以从用户和组的列表中选择允许或拒绝其访问的用户。

用户界面中的 "Access Control Rules For" 页面将为 "Users/Groups" 显示以下元素。

指定 "From Host"

可以基于发出请求的计算机限制对 Administration Server 的访问。

用户界面中的 "Access Control Rules For" 页面将为 "From Host" 显示以下元素。

如果选择 "Only From" 选项,请在 "Host Names" 或 "IP Addresses" 字段中输入通配符模式或以逗号分隔的列表。按主机名进行限制比按 IP 地址进行限制更灵活。如果某个用户的 IP 地址发生变化,将不需要更新此列表。不过,按 IP 地址进行限制更可靠。如果针对已连接客户机进行的 DNS 查找失败,将无法使用主机名限制。

对于匹配计算机的主机名或 IP 地址的通配符模式,将只能使用 * 通配符表示法。例如,要允许或拒绝访问特定域中的所有计算机,可以输入匹配该域中所有主机的通配符模式,如 *.example.com。可以为访问 Administration Server 的超级用户设置不同的主机名和 IP 地址。

对于主机名,* 必须替换名称中的整个部分。也就是说,*.example.com 是可以接受的,但 *users.example.com 是不可接受的。当 * 出现在主机名中时,它必须是最左侧的字符。例如,*.example.com 是可以接受的,但 users.*.com 是不可接受的。

对于 IP 地址,* 必须替换地址中的整个字节。例如,198.95.251.* 是可以接受的,但 198.95.251.3* 是不可接受的。当 * 出现在 IP 地址中时,它必须是最右侧的字符。例如,198.* 是可以接受的,但 198.*.251.30 是不可接受的。

限制对程序的访问

对程序的访问只能通过 Administration Server 进行限制。通过限制对程序的访问可以只允许指定的用户查看 Server Manager 页面,并确定他们是否有权配置该服务器。例如,可以允许一些管理员配置 Administration Server 的 "Users and Groups" 部分,但拒绝其访问 "Global Settings" 部分。

可以配置不同的用户来访问不同的功能域。一旦用户获得了对若干选定功能域的访问权限,在其登录后,即可使用且只能够使用这些功能域的 Administration Server 页面。

用户界面中的 "Access Control Rules For" 页面将为 "Programs" 显示以下元素。

设置访问权限

服务器实例的访问权限只能由 Server Manager 设置。访问权限限制对服务器上文件和目录的访问。除了允许或拒绝所有访问权限外,还可以指定规则来允许或拒绝部分访问权限。例如,可以向用户授予只读文件访问权限,这样他们可以查看信息,但不能更改文件。

用户界面中的 "Access Control Rules For" 页面将为 "Rights" 显示以下元素。

编写自定义表达式

可以为 ACL 输入自定义表达式。只有在熟悉 ACL 文件的语法和结构时,才适合选择此选项。有若干特性只有在编辑 ACL 文件或创建自定义表达式时才可以使用。例如,可以基于一天中的某个时间和/或一周中的某一天来限制对服务器的访问。

以下自定义表达式显示了如何基于一天中的某个时间及一周中的某一天来限制访问。本示例假定 LDAP 目录中有两个组。"Regular" 组可以在星期一至星期五每天上午 8:00 至下午 5:00 之间进行访问。"Critical" 组可以在任何时间进行访问。

allow (read)
{
  (group=regular and dayofweek="mon,tue,wed,thu,fri");
  (group=regular and (timeofday>=0800 and timeofday<=1700));
  (group=critical)
}

有关有效语法和 ACL 文件的更多信息,参见 ACL 文件语法

禁用访问控制

取消选定 "Access Control Rules For" 页面上标签为 "Access Control Is On" 的选项时,将会收到一个提示,询问是否要删除 ACL 中的记录。如果单击 "OK",将从 ACL 文件中删除该资源的 ACL 条目。

如果想取消激活 ACL,可以通过在文件 generated-proxy-serverid.acl 中每个 ACL 行的开头添加 # 符号,使 ACL 行变为注释。

在 Administration Server 中,可以为特定服务器实例创建和启用访问控制,而为其他服务器禁用访问控制(默认设置)。例如,可以通过 Administration Server 拒绝对 Server Manager 页面的任何访问。在启用分布式管理并为其他服务器禁用访问控制(默认设置)的情况下,管理员仍可以访问和配置这些服务器,但不能配置 Administration Server。

访问被拒绝时的响应

Proxy Server 提供了访问被拒绝时的默认消息,需要时可以自定义这一响应。也可以为每个访问控制对象创建不同的消息。

默认情况下,对于 Administration Server,用户收到的将是 server_root/httpacl/admin-denymsg.html 中包含的 "Permission Denied" 消息。

更改 "Access Denied" 消息
  1. 单击 "Access Control Rules For" 页面上的 "Response When Denied" 链接。
  2. 选择所需的响应,视需要输入其他信息(确保用户可以访问将其重定向到的响应),然后单击 "Update"。
  3. 单击 "Submit" 保存所做更改,或单击 "Revert" 将页面中的元素的值重置为更改前所具有的值。


限制对服务器区域的访问

本节介绍一些常用的对服务器及其内容的访问限制。每个过程的步骤详细说明了必须执行的具体操作。不过,仍然必须完成以下部分中介绍的步骤:设置服务器实例的访问控制

本节包括以下主题:

限制对整个服务器的访问

可能需要为某个组中的用户授予访问权限,这些用户从子域中的计算机访问服务器。例如,公司某部门可能有一个服务器,您只希望来自网络特定子域中的计算机的用户能够对其进行访问。

限制对整个服务器的访问

按照设置服务器实例的访问控制中介绍的步骤(参见设置服务器实例的访问控制)执行以下操作:

  1. 访问服务器实例的 Server Manager。
  2. 在 "Preferences" 选项卡上,单击 "Administer Access Control" 链接。
  3. 从下拉式列表中选择整个服务器,单击 "Select",然后单击相应的 "Edit" 按钮。将显示 "Access Control Rules For" 页面。
  4. 添加一个新规则以拒绝所有用户的访问。
  5. 添加另一个新规则以允许特定组的访问。
  6. 使用 "From Host" 指定想要限制的主机名和 IP 地址。
  7. 单击 "Submit" 保存所做更改。

限制对目录(路径)的访问

可以允许某个组中的用户读取或运行由该组的所有者控制的目录中的应用程序、子目录及文件。例如,项目经理可以更新状态信息,供项目组查看。

限制对目录的访问

按照设置服务器实例的访问控制中介绍的步骤(参见设置服务器实例的访问控制)执行以下操作:

  1. 访问服务器实例的 Server Manager。
  2. 在 "Preferences" 选项卡上,单击 "Administer Access Control" 链接。
  3. 从下拉式列表中选择所需的资源,然后单击 "Edit"。
  4. 创建一个新规则并保留默认设置,以拒绝任何位置的任何用户的访问。
  5. 创建另一个新规则,允许特定组中的用户只具有读权限和执行权限。
  6. 再创建一个新规则,允许特定用户拥有全部权限。
  7. 取消选定后两个规则的 "Continue"。
  8. 单击 "Submit" 保存所做更改。

限制对文件类型的访问

可以限制对文件类型的访问。例如,可能想只允许特定用户创建在服务器上运行的程序。任何用户都可以运行程序,但只有组中的指定用户才可以创建或删除程序。

限制对文件类型的访问

按照设置服务器实例的访问控制中介绍的步骤(参见设置服务器实例的访问控制)执行以下操作:

  1. 访问服务器实例的 Server Manager。
  2. 在 "Preferences" 选项卡上,单击 "Administer Access Control" 链接。
  3. 单击 "Select A Resource" 部分中的 "Regular Expression",然后指定正则表达式。例如:*.cgi
  4. 单击 "Edit"。
  5. 创建一个新规则,为所有用户授予读权限。
  6. 创建另一个规则,仅为指定组授予写权限和删除权限。
  7. 单击 "Submit" 保存所做更改。

对于文件类型限制,应使两个 "Continue" 复选框都保持选中状态。收到对某个文件的请求时,服务器将先检查该文件类型的 ACL。

将在 obj.conf 中创建一个 PathCheck 函数,其中可以包含文件或目录的通配符模式。ACL 文件中的条目将如下所示:acl"*.cgi";

基于一天中的某个时间限制访问

可以将对服务器的写访问和删除访问限制为只允许在指定的时间或指定的日期进行。

基于一天中的某个时间限制访问

按照设置服务器实例的访问控制中介绍的步骤(参见设置服务器实例的访问控制)执行以下操作:

  1. 访问服务器实例的 Server Manager。
  2. 在 "Preferences" 选项卡上,单击 "Administer Access Control" 链接。
  3. 从 "Select A Resource" 部分中的下拉式列表选择整个服务器,然后单击 "Edit"。
  4. 创建一个新规则,为所有用户授予读权限和执行权限。这意味着,如果某个用户想要添加、更新或删除文件或目录,将不会应用此规则,服务器将搜索另一个匹配的规则。
  5. 创建另一个新规则,拒绝为所有用户授予写权限和删除权限。
  6. 单击 "X" 链接,创建一个自定义表达式。
  7. 输入允许在一周中的哪些天及一天中的哪些时间进行访问。例如:
  8. user = "anyone" and
    dayofweek = "sat,sun" or
    (timeofday >= 1800 and
    timeofday <= 600)

  9. 单击 "Submit" 保存所做更改。只要自定义表达式中存在错误,就会产生错误消息。请进行更正并再次提交。

基于安全性限制访问

可以为同一服务器实例配置 SSL 和非 SSL 侦听套接字。基于安全性限制访问使您可以为只应通过安全通道传输的资源创建保护。

基于安全性限制访问

按照设置服务器实例的访问控制中介绍的步骤(参见设置服务器实例的访问控制)执行以下操作:

  1. 访问服务器实例的 Server Manager。
  2. 在 "Preferences" 选项卡上,单击 "Administer Access Control" 链接。
  3. 从 "Select A Resource" 部分中的下拉式列表选择整个服务器,然后单击 "Edit"。
  4. 创建一个新规则,为所有用户授予读权限和执行权限。这意味着,如果某个用户想要添加、更新或删除文件或目录,将不会应用此规则,服务器将搜索另一个匹配的规则。
  5. 创建另一个新规则,拒绝为所有用户授予写权限和删除权限。
  6. 单击 "X" 链接,创建一个自定义表达式。
  7. 输入 ssl="on"。例如:
  8. user = "anyone" and ssl="on"

  9. 单击 "Submit" 保存所做更改。只要自定义表达式中存在错误,就会产生错误消息。请进行更正并再次提交。


保护对资源的访问

本节介绍在启用分布式管理后,为通过 Proxy Server 保护访问控制所必须执行的其他任务。

本节包括以下主题。

保护对服务器实例的访问

要配置 Proxy Server 来控制对服务器实例的访问,请编辑 server_root/httpacl/*.proxy-admserv.acl 文件来指定要向其授予访问控制权限的用户。例如:

acl "proxy-server_instance";
authenticate (user,group) {
database = "default";
method = "basic";
};
deny absolute (all) user != "UserA";

启用基于 IP 的访问控制

如果引用 ip 属性的访问控制条目位于与 Administration Server 有关的 ACL 文件 (gen*.proxy-admserv.acl) 中,请完成下面的步骤 1 和步骤 2。

如果引用 ip 属性的访问控制条目位于与某个服务器实例有关的 ACL 文件中,请只为该 ACL 完成下面的步骤 1。

启用基于 IP 的访问控制
  1. 编辑 server_root/httpacl/gen*.proxy-admserv.acl 文件,除了在验证列表中添加 usergroup 外,还要再添加 ip,如下所示:
  2. acl "proxy-admserv";
    authenticate (user,group,ip) {
    database = "default";
    method = "basic";
    };

  3. 添加以下访问控制条目:
  4. deny absolute (all) ip !="ip_for_which_access_is_allowed";

    例如:

    acl "proxy-admserv";
    authenticate (user,group,ip) {
    database = "default";
    method = "basic";
    };
    deny absolute (all) ip !="205.217.243.119";


创建基于文件验证的 ACL

Proxy Server 支持使用基于文件的验证数据库,这些数据库在平面文件中以文本格式存储用户和组信息。ACL 框架被设计为可以使用文件验证数据库。


Proxy Server 不支持动态平面文件。平面文件数据库将在服务器启动时装入。对这些文件所做的任何更改仅在重新启动服务器时才能生效。


本节包括以下主题:

ACL 条目可以使用 database 关键字来引用用户数据库。例如:

acl "default";
  authenticate (user) {
...
  database="myfile";
...
};

server_root/userdb/dbswitch.conf 文件包含定义文件验证数据库及其配置的条目。例如:

directory myfiledb file
myfiledb:syntax keyfile
myfiledb:keyfile /path/to/config/keyfile

下表列出了文件验证数据库支持的参数。

表 8-2 文件验证数据库支持的参数

参数

描述

syntax

(可选)值为 keyfiledigest。如果未指定,默认值将是 keyfile

keyfile

syntax=keyfile 时是必需的)包含用户数据的文件的路径。

digestfile

syntax=digest 时是必需的)包含摘要验证用户数据的文件的路径。


注意

文件验证数据库文件中行的最大长度是 255。如果任何行的长度超过此限制,服务器将无法启动,并会在日志文件中记录错误。



在尝试使用基于文件的验证数据库设置 ACL 前,请确保已配置了基于文件的验证目录服务。有关更多信息,参见配置目录服务


创建基于文件验证的目录服务的 ACL

创建基于文件验证的目录服务的 ACL
  1. 访问服务器实例的 Server Manager。
  2. 在 "Preferences" 选项卡上,单击 "Administer Access Control" 链接。
  3. 从下拉式列表中选择 ACL 文件,然后单击 "Edit"。
  4. 在 "Access Control Rules For" 页面中,单击想要编辑的 ACL 条目的 "Users/Groups" 链接。下部框中将显示 "User/Group" 页面。
  5. 在 "Authentication Database" 下的下拉式列表中指定密钥文件数据库。
  6. 单击 "Update",然后单击 "Submit" 保存所做更改。

依据基于密钥文件的文件验证数据库设置 ACL 时,将使用 ACL 条目(如下面给出的样例条目)更新 dbswitch.conf 文件:

version 3.0;
acl "default";
authenticate (user) {
     prompt = "Sun Java System Proxy Server 4.0";
     database = "mykeyfile";
     method = "basic";
};
deny (all) user = "anyone";
allow (all) user = "all";

创建基于摘要验证的目录服务的 ACL

文件验证数据库还支持适用于摘要验证的、基于 RFC 2617 的文件格式。将存储基于口令和领域的散列,而不会保留明文口令。

创建基于摘要验证的目录服务的 ACL
  1. 访问服务器实例的 Server Manager。
  2. 在 "Preferences" 选项卡上,单击 "Administer Access Control" 链接。
  3. 从下拉式列表中选择 ACL 文件,然后单击 "Edit"。
  4. 在 "Access Control Rules For" 页面中,单击想要编辑的 ACL 的 "Users/Groups" 链接。下部框中将显示 "User/Group" 页面。
  5. 在 "Authentication Database" 下的下拉式列表中指定摘要数据库。
  6. 单击 "Update",然后单击 "Submit" 保存所做更改。

依据基于摘要验证的文件验证数据库设置 ACL 时,将使用 ACL 条目(如下面给出的样例条目)更新 dbswitch.conf 文件:

version 3.0;
acl "default";
authenticate (user) {
     prompt = "filerealm";
     database = "mydigestfile";
     method = "digest";
};

deny (all) user = "anyone";
allow (all) user = "all";



上一页      目录      索引      下一页     


文件号码 819-3162。版权所有 2005 Sun Microsystems, Inc. 保留所有权利。