Sun Java System Web Proxy Server 4.0.4 管理指南

何為存取控制?

存取控制可讓您決定可存取 Proxy Server 的人員,以及他們可存取伺服器的哪些部分。您可以控制讓使用者存取整個伺服器或只存取伺服器的某些部分 (如目錄、檔案、檔案類型等)。在評估內送請求時,會依據稱為存取控制項目 (ACE) 的規則階層來決定存取。Proxy Server 將尋找相符的項目,以決定應授予存取權還是拒絕。每個 ACE 都會指定伺服器是否應該繼續到階層中的下一個項目。ACE 的集合稱為存取控制清單 (ACL)。當收到請求時,系統會檢查 obj.conf 檔案查看其中是否有參照 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 加密。請參閱第 5 章, 使用憑證和金鑰以取得有關啟用 SSL 的更多資訊。

若要成功地對採用 SSL 認證的資源進行存取,用戶端憑證必須來自 Proxy Server 所信任的 CA。如果將 Proxy Server 的 certmap.conf 檔案配置為將瀏覽器中的用戶端憑證與目錄伺服器中的用戶端憑證進行比對,則必須在此目錄伺服器中發佈用戶端憑證。不過,您也可以將 certmap.conf 檔案配置為只將憑證中所選取的資訊與目錄伺服器項目進行比對。例如,您可以將 certmap.conf 配置為只將瀏覽器憑證中的使用者 ID 和電子郵件地址,與目錄伺服器項目進行比對。如需有關 certmap.conf 和憑證對映的更多資訊,請參閱第 5 章, 使用憑證和金鑰。另請參閱「Sun Java System Web Proxy Server 4.0.4 Configuration File Reference」

摘要認證

您可以將 Proxy Server 配置為使用 LDAP 型或檔案型目錄服務來執行摘要認證。

摘要認證可讓使用者依據使用者名稱和密碼進行認證,但不需要以明文方式傳送使用者名稱和密碼。瀏覽器會利用使用者密碼和 Proxy Server 提供的某些資訊,使用 MD5 演算法來建立摘要值。

當伺服器使用 LDAP 型的目錄服務執行摘要認證時,也會使用摘要認證外掛程式在伺服器端計算此摘要值,並將計算結果與用戶端提供的摘要值進行比對。如果兩個摘要值相符,該使用者便通過認證。為了使這項功能得以正常運作,您的目錄伺服器必須能存取明文的使用者密碼。Sun Java System Directory Server 包含一個反向密碼外掛程式,使用對稱式加密演算法以加密形式儲存資料,稍後可解密成原來的形式。只有 Directory Server 保存了資料的金鑰。

對於 LDAP 型的摘要認證,您必須啟用隨附於 Proxy Server 的反向密碼外掛程式和摘要認證專用外掛程式。若要配置您的 Proxy Server 以處理摘要認證,請設定 dbswitch.conf 檔案中資料庫定義的 digestauth 特性,該檔案位於 server-root/userdb/

以下是 dbswitch.conf 檔案的範例。


directory default ldap://<host_name>:<port>
default:binddn cn=Directory Manager
default:encoded bindpw ***********
default:digestauth on


directory default ldap://<host_name>:<port>/
default:binddn cn=Directory Manager
default:encoded bindpw ***********
default:digestauthstate on

伺服器會嘗試依據指定的 ACL 方法來認證 LDAP 資料庫,如摘要認證所示。如果您未指定 ACL 方法,當需要進行認證時,伺服器會使用摘要認證或基本認證;當不需要進行認證時,伺服器則會使用基本認證。

下表列示認證資料庫支援和不支援的摘要認證。

表 8–1 產生摘要認證挑戰

ACL 方法 

認證資料庫支援 

認證資料庫不支援 

預設值 

未指定 

摘要和基本 

Basic (基本) 

Basic (基本) 

Basic (基本) 

Basic (基本) 

摘要 

摘要 

錯誤 

當處理設定 method=digestACL 時,伺服器會嘗試執行下列動作以進行驗證:

安裝摘要認證外掛程式

對於使用 LDAP 型之目錄服務的摘要認證,您必須安裝摘要認證外掛程式。此外掛程式會在伺服器端計算出一個摘要值,並將此摘要值與用戶端提供的摘要值進行比對。如果摘要值相符,使用者便通過認證。

如果您使用的是檔案型的認證資料庫,便不需要安裝摘要認證外掛程式。

在 UNIX 上安裝摘要認證外掛程式

摘要認證外掛程式包括一個共用程式庫和一個 ldif 檔案:

Procedure在 UNIX 上安裝摘要認證外掛程式

開始之前

    若要安裝外掛程式,請鍵入以下指令:

    % ldapmodify -D "cn=Directory Manager" -w password -a < libdigest-plugin.ldif

在 Windows 上安裝摘要認證外掛程式

您必須將數個 .dll 檔案從 Proxy Server 安裝複製到您的 Sun Java System Directory Server 伺服器電腦上,具備摘要外掛程式的 Directory Server 才能正確啟動。

Procedure在 Windows 上安裝摘要認證外掛程式

  1. 存取 Proxy Server 中的共用程式庫,位於 server-root \bin\proxy\bin

  2. nsldap32v50.dlllibspnr4.dlllibplds4.dll 檔案複製到適當的目錄中:

  3. 將這些檔案貼上到以下任一位置:

    • \Winnt\system32

      • Sun Java System Directory Server 安裝目錄: server-root\bin\sldap\server

將 Sun Java System Directory Server 設定為使用 DES 演算法

將儲存摘要密碼的屬性加密時,需要 DES 演算法。

Procedure將 Directory Server 設定為使用 DES 演算法

  1. 啟動 Sun Java System Directory Server 主控台。

  2. 開啟您的 Sun ONE Directory Server 5.1 SP1 (或更高版本) 實例。

  3. 選擇 [Configuration] 標籤。

  4. 按一下外掛程式旁邊的 + 號。

  5. 選取 DES Plug-in。

  6. 選擇 [Add] 以增加一個新屬性。

  7. 鍵入 iplanetReversiblePassword

  8. 按一下 [Save]。

  9. 設定摘要認證密碼。


    備註 –

    伺服器會使用位於物件類別 iplanetReversiblePassword 中的 iplanetReversiblePassword 屬性。若要在使用者的 iplanetReversiblePassword 屬性中使用摘要認證密碼,輸入的項目中必須包括 iplanetReversiblePasswordobject 物件。

    您可以使用 ldapmodify 或 Directory Server 管理介面完成此作業。


    使用 ldapmodify

    建立 digest.ldif 檔案以儲存 LDAP 指令。增加密碼的程序共有兩個步驟。

    1. 將物件類別增加至 digest.ldif

      該檔案如下所示 (您可以根據 Directory Server 的使用者和 ACL 建立多個 ldif 檔案):


      dn:uid=user1,dc=india,dc=sun,dc=com
      changetype:modify
      add:objectclass
      objectclass:iplanetReversiblePasswordobject
      
      dn:uid=user1,dc=india,dc=india,dc=sun,dc=com
      changetype:modify
      add:iplanetReversiblePassword
      iplanetReversiblePassword:user1
    2. # ldapmodify -D “cn={CN_Value}” -w <password> -a <ldif_file_name>

  10. 重新啟動您的 Sun Java System Directory Server 實例,並驗證使用者屬性是否已增加至 Directory Server 資料庫。

其他認證

您可以使用存取控制 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 檔案參照這些檔案。有幾個功能只能透過編輯檔案的方式才能發揮功效,例如根據一天中的時間或一週中的日期限制存取伺服器的行為。

如需有關存取控制檔案及其語法的更多資訊,請參閱第 18 章, ACL 檔案語法如需有關 server.xml 的更多資訊,請參閱「Sun Java System Web Proxy Server 4.0.4 Configuration File Reference」

配置 ACL 使用者快取記憶體

依預設,Proxy Server 會將使用者和群組認證結果快取到 ACL 使用者快取記憶體中。您可以控制 ACL 使用者快取的有效時間長度,方法是在 magnus.conf 檔案中使用 ACLCacheLifetime 指令。每次參照快取中的某個項目時,都會計算其有效時間並與 ACLCacheLifetime 比對檢查。如果該項目的有效時間大於或等於 ACLCacheLifetime,則不使用該項目。預設值為 120 秒。將該值設定為 0 (零) 將關閉快取記憶體。如果將其設定為一個較大的值,則每次變更 LDAP 項目時,都可能需要重新啟動 Proxy Server。例如,如果將該值設定為 120 秒,Proxy Server 可能在兩分鐘的時間內,與 LDAP 伺服器不同步。僅當 LDAP 目錄不經常變更時才設定一個較大的值。

使用 magnus.conf 的參數 (ACLUserCacheSize) 就可以配置快取記憶體中可保留的項目上限。此參數的預設值為 200。新的項目會增加至清單開頭,而且當快取記憶體的大小達到最大值時,位於此清單尾端的項目會回收以建立新的項目。

您也可以使用 magnus.conf 參數 (ACLGroupCacheSize),設定每個使用者項目可以在快取記憶體內保留的最大群組成員數。此參數的預設值為 4。如果某使用者不是群組中的成員,就不會將其快取至記憶體中,如此將導致每次有請求時都需要存取數次 LDAP 目錄。

使用用戶端憑證控制存取

如果您的伺服器上已啟用 SSL,就可以將用戶端憑證與存取控制結合使用。您必須指定需要有用戶端憑證才能存取特定資源。當在您的伺服器上啟用這項功能時,擁有憑證的使用者只有在第一次嘗試存取限定資源時,才需要輸入使用者名稱和密碼。一旦建立使用者身份之後,伺服器便會將其登入名稱和密碼對映至該特定的憑證。此後,當使用者存取需要有用戶端認證才能存取的資源時,就不需要再輸入其登入名稱或密碼。

當使用者嘗試存取限定資源時,其用戶端就會將用戶端憑證傳送給伺服器,伺服器便會將該憑證與對映清單檢查核對。如果該憑證屬於您已授予存取權的使用者,則該使用者即可存取資源。

要求用戶端認證以控制對特定資源進行存取的作法,與要求所有針對伺服器的連線需經用戶端認證不同。此外請注意,對所有 SSL 連線要求用戶端憑證,並不會自動將憑證對映至資料庫內的使用者。若要設定此對映,您必須指定需要有用戶端憑證才能存取指定的資源。