Sun ONE logo      上一個      目錄      索引      下一個     

Sun ONE Web Server 6.1 管理員指南

第 9 章
控制對伺服器的存取

本章論述可以用來控制對 Administration Server 以及您 Web 網站上的檔案或目錄進行存取的各種方法。例如,對於 Administration Server,您可以指定誰對安裝在某台機器上的所有伺服器具有完全控制權限,誰對其中一個或多個伺服器具有部分控制權限。您必須先經由 LDAP 資料庫啟用分散式管理並在其中設定一個管理群組,然後才能對 Administration Server 使用存取控制。本章假定您已經配置了分散式管理並在 LDAP 資料庫中定義了使用者和群組。

您還應該確定 Web 伺服器的安全性,如「Web 容器與 Web 應用程式之基於 J2EE 的安全性」和「使用證書和金鑰」中所述。

本章包含下列小節:


何為存取控制?

存取控制允許您決定:

您可以控制對整個伺服器、部分伺服器或您 Web 網站上的檔案或目錄的存取。您可以透過建立一個稱為存取控制項目 (ACE) 的規則階層來允許或拒絕存取。每個 ACE 均指定該伺服器是否應該檢查階層中的下一個 ACE。您建立的 ACE 的集合稱為存取控制清單 (ACL)。

依預設,伺服器具有一個包含多個 ACL 的 ACL 檔案。為某個進來的請求確定了要使用的虛擬伺服器後,Sun ONE Web Server 將檢查是否為該虛擬伺服器配置了任何 ACL。如果找到適用於目前請求的 ACL,Sun ONE Web Server 將評估其 ACE 以確定是否應該允許存取。

是否允許存取基於以下事項:

為使用者/群組設定存取控制

您可以僅允許特定的使用者或群組存取您的 Web 伺服器。使用者/群組存取控制需要使用者輸入使用者名稱和密碼,然後才能存取伺服器。伺服器會將用戶端證書中的資訊或用戶端證書本身與一個目錄伺服器項目進行比對。

Administration Server 僅使用基本認證。如果希望在 Administration Server 上進行用戶端認證,必須手動編輯 obj.conf 中的 ACL 檔案,將方法變更為 SSL。

使用者群組認證由為伺服器配置的目錄服務執行。如需更多詳細資訊,請參閱配置目錄服務部分。目錄服務執行存取控制用到的資訊可以透過任何以下一種來源獲得:

當伺服器使用外部基於 LDAP 的目錄服務時,它支援對伺服器實例的以下類型的使用者/群組認證方法:

當伺服器使用內部基於檔案的目錄服務時,它支援的對伺服器實例的使用者/群組認證方法包括:

使用者/群組認證要求使用者在存取 Administration Server 或 Web 網站上的檔案和目錄之前先認證其身份。使用認證,使用者可以透過輸入使用者名稱和密碼、使用用戶端證書或摘要認證 Plug-in 來確認其身份。使用用戶端證書需要加密。如需有關加密和使用用戶端證書的資訊,請參閱「Web 容器與 Web 應用程式之基於 J2EE 的安全性」。

預設認證

預設認證是首選方法。「預設」設定將使用 obj.conf 檔案中的預設方法;如果 obj.conf 檔案中沒有設定方法,將使用「基本」認證。如果核取 [Default],ACL 規則將不會在 ACL 檔案中指定方法。如果選擇 [Default],您只需編輯 obj.conf 檔案中的一行文字即可很容易地變更所有 ACL 的方法。

基本認證

基本認證需要使用者輸入使用者名稱和密碼才能存取您的 Web 伺服器或 Web 網站。此為預設設定。您必須在 LDAP 資料庫 (如 Sun ONE Directory Server) 或檔案中建立並儲存使用者和群組清單。您使用的目錄伺服器不能與您的 Web 伺服器安裝在相同的伺服器根目錄下;您也可以使用安裝在遠端機器上的目錄伺服器。

當使用者嘗試存取具有使用者/群組認證的 Administration Server 或 Web 網站上的資源時,Web 瀏覽器將顯示一個對話方塊,要求使用者輸入使用者名稱和密碼。伺服器將收到加密或未加密的資訊,這取決於是否為您的伺服器開啟了加密。


備註

如果使用不帶 SSL 加密的基本認證,將在網路中以未加密的文字形式傳送使用者名稱和密碼。網路封包可能會被截取,並且使用者名稱和密碼可能會被盜用。當基本認證與 SSL 加密和/或主機/IP 認證結合使用時會獲得最佳效果。使用摘要認證可以避免此問題。


當使用者向伺服器認證其身份時,將顯示以下對話方塊:

按一下 [OK] 後,使用者將看到以下內容:

您可以自訂未經授權的使用者在 [Access Denied Response] 頁面中收到的被拒存取訊息。

SSL 認證

使用安全性證書,伺服器可以用兩種方式確認使用者的身份:

當您將伺服器設定為使用證書資訊來認證用戶端時,伺服器將:

要求對特定資源的存取控制進行用戶端認證與要求對伺服器的所有連線進行用戶端認證不同。如果您將伺服器設定為要求對所有連線進行用戶端認證,則用戶端只需要提供由可信任的 CA 核發的有效證書。如果您將伺服器的存取控制設定為使用 SSL 方法來認證使用者和群組,則用戶端需要:

當您要求為存取控制進行用戶端認證時,需要為您的 Web 伺服器啟用 SSL 密碼。若要瞭解啟用 SSL 的方式,請參閱「使用證書和金鑰」。

為了成功存取經過 SSL 認證的資源,用戶端證書必須來自 Web 伺服器信任的 CA。如果 Web 伺服器的 certmap.conf 檔案被配置為將瀏覽器中的用戶端證書與目錄伺服器中的用戶端證書進行比對,則需要在該目錄伺服器中發佈用戶端證書。不過,certmap.conf 檔案也可以配置為僅將證書中的選取資訊與目錄伺服器項目進行比對。例如,您可以將 certmap.conf 檔案配置為僅將瀏覽器證書中的使用者 ID 和電子郵件位址與目錄伺服器項目進行比對。若要瞭解有關 certmap.conf 和證書對映的更多資訊,請參閱「使用證書和金鑰」。


備註

只有 SSL 認證方法要求對 certmap.conf 檔案進行修改,這是因為需要依據 LDAP 目錄來檢查證書。而要求對伺服器的所有連線進行用戶端認證則不必如此。如果您選擇使用用戶端證書,則應該增加 magnus.conf 檔案中 AcceptTimeout 指令的值。


摘要認證

可以將 Sun ONE Web Server 6.1 配置為使用基於 LDAP 或基於檔案的目錄服務執行摘要認證。

摘要認證允許使用者基於使用者名稱與密碼進行認證,而無需將使用者名稱與密碼作為清除文字傳送。瀏覽器使用使用者的密碼和 Web 伺服器提供的某些資訊,利用 MD5 演算法來建立摘要值。

當伺服器使用基於 LDAP 的目錄服務執行摘要認證時,在伺服器端上,也使用摘要認證 Plug-in 計算此摘要值,並與用戶端提供的摘要值進行比對。如果這些摘要值匹配,使用者將通過認證。要進行這種認證,您的目錄伺服器需要存取清除文字形式的使用者密碼。Sun ONE Directory Server 具有一個可逆的密碼 Plug-in,它使用對稱的加密演算法以加密形式儲存資料,這些資料可在稍後被解密成原來的形式。只有 Directory Server 保存了資料的金鑰。

對於基於 LDAP 的摘要認證,您需要啟用 Sun ONE Web Server 6.1 隨附的可逆密碼 Plug-in 和特定的摘要認證 Plug-in。若要配置 Web 伺服器以處理摘要認證,請設定 dbswitch.conf 檔案中資料庫定義的 digestauth 特性。

伺服器將嘗試基於指定的 ACL 方法認證 LDAP 資料庫,如表 9-1 所示。如果未指定 ACL 方法,當要求進行認證時,伺服器將使用摘要認證或基本認證;當不要求進行認證時,伺服器將使用基本認證。此為首選方法。

表 9-1  摘要認證的不同情況

ACL 方法

認證資料庫支援摘要認證

認證資料庫不支援摘要認證

「預設」

未指定

摘要和基本

基本

「基本」

基本

基本

「摘要」

摘要

錯誤

使用 method = digest 處理 ACL 時,伺服器將嘗試依以下步驟進行認證:

安裝摘要認證 Plug-in

對於使用基於 LDAP 之目錄服務的摘要認證,您需要安裝摘要認證 Plug-in。此 Plug-in 在伺服器端計算摘要值,並將該值與用戶端提供的摘要值進行比對。如果這些摘要值匹配,使用者將通過認證。

如果您使用的是基於檔案的認證資料庫,則不需要安裝摘要認證 Plug-in。

在 UNIX 上安裝摘要認證 Plug-in

摘要認證 Plug-in 包含一個共用程式庫,該程式庫在下面兩個檔案中均可找到:

若要在 UNIX 上安裝摘要認證 Plug-in,請執行下列步驟:

  1. 確定此共用程式庫與 Sun ONE Directory Server 位於同一伺服器機器上。
  2. 確定您瞭解 Directory Manager 密碼。
  3. 修改 libdigest-plugin.ldif 檔案,將對 /path/to 的所有參照變更為安裝了摘要認證 Plug-in 共用程式庫的位置。
  4. 若要安裝 Plug-in,請輸入以下指令:
  5. % ldapmodify -D "cn=Directory Manager" -w password -a < libdigest-plugin.ldif

在 Windows 上安裝摘要認證 Plug-in

您需要將 Sun ONE Web Server 安裝中的數個 .dll 檔案複製到 Sun ONE Directory Server 伺服器機器上,以便 Sun ONE Directory Server 能夠使用摘要認證 Plug-in 正確啟動。

若要在 Windows 上安裝摘要認證 Plug-in,請執行下列步驟:

  1. 存取 Sun ONE Web Server 安裝中的共用程式庫,其位於:
  2. [server_root]\bin\https\bin

  3. 複製以下檔案:
    • nsldap32v50.dll
    • libspnr4.dll
    • libplds4.dll
  4. 將這些檔案貼上到以下任一位置:
    • \Winnt\system32
    • Sun ONE Directory Server 的安裝目錄:[server_root]\bin\sldap\server
將 Sun ONE Directory Server 設定為使用 DES 演算法

對儲存摘要密碼的屬性進行加密需要使用 DES 演算法。

若要將 Sun ONE Directory Server 設定為使用 DES 演算法,請執行下列步驟:

  1. 啟動 Sun ONE Directory Server 主控台。
  2. 開啟 iDS 5.0 實例。
  3. 選擇 [Configuration] 標籤。
  4. 按一下 Plug-in 旁邊的 + 號。
  5. 選取 DES Plug-in。
  6. 選擇 [Add] 以增加一個新屬性。
  7. 輸入 iplanetReversiblePassword
  8. 按一下 [Save]。
  9. 重新啟動 Sun ONE Directory Server 實例。

    備註

    若要在 iplanetReversiblePassword 屬性中為使用者設定一個摘要認證密碼,您的輸入必須包含 iplanetReversiblePasswordobject 物件。


其他認證

您可以使用存取控制 API 建立自訂認證方法。

為主機/IP 設定存取控制

您可以限制對 Administration Server 或 Web 網站上檔案和目錄的存取,方法為僅限使用特定電腦的用戶端才能存取它們。您可以指定要允許或拒絕其存取的電腦的主機名稱或 IP 位址。可以使用萬用字元型樣指定多台電腦或整個網路。使用主機/IP 認證來存取檔案或目錄對使用者來說是一個無縫的程序。使用者可以立即存取檔案和目錄而無需輸入使用者名稱或密碼。

由於可能有多個使用者使用某台特定的電腦,因此主機/IP 認證與使用者/群組認證結合使用時會更有效。如果同時使用這兩種認證方法,則存取時將要求提供使用者名稱和密碼。

主機/IP 認證不要求在您的伺服器上配置 DNS。如果選擇使用主機/IP 認證,您必須在網路中執行 DNS 並將您的伺服器配置為使用該 DNS。您可以透過 Server Manager [Performance Tuning] 頁面中的 [Preferences] 標籤,在您的伺服器上啟用 DNS。

啟用 DNS 會降低 Sun ONE Web Server 的效能,因為伺服器將不得不查找 DNS。為降低 DNS 查找對伺服器效能的影響,請僅為存取控制和 CGI 解析 IP 位址,而不要為每個請求都解析 IP 位址。若要實現此目的,請將 iponly=1 增加至 obj.conf 檔案的 AddLog fn="flex-log" name="access"

使用存取控制檔案

對 Administration Server 或您 Web 網站上的檔案或目錄使用存取控制時,這些設定將儲存在一個副檔名為 .acl 的檔案中。存取控制檔案儲存在 install_dir/httpacl 目錄中,其中 install_dir 是伺服器的安裝位置。例如,如果將伺服器安裝在 /usr/Sun/Servers 中,則 Administration Server 和您伺服器上配置的每個伺服器實例的 ACL 檔案都將位於 /usr/Sun/Servers/httpacl/ 中。

主 ACL 檔名為 generated-https-server-id.acl;而臨時工作檔案的名稱為 genwork-https-server-id.acl。如果使用 Sun ONE Administration Server 來配置存取,您將擁有這兩個檔案。但是,如果您要進行更複雜的限定,可以建立多個檔案並在 server.xml 檔案中參照這些檔案。還有數個功能只能透過編輯這些檔案才能取得,例如,基於一天中的某個時間或一週中的某一天來限定對伺服器的存取。

您也可以手動建立和編輯 .acl 檔案,以便使用 API 來自訂存取控制。如需有關使用存取控制 API 的更多資訊,請參閱「Programmer's Guide」。

如需有關存取控制檔案及其語法的更多資訊,請參閱「ACL 檔案語法」。

配置 ACL 使用者快取記憶體

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

透過 magnus.conf 中的 ACLUserCacheSize 參數,您可以配置快取記憶體中所能保留的最大項目數。此參數的預設值為 200。新項目將增加至清單的開頭,當快取記憶體達到其最大大小時,將再循環清單末尾的項目以建立新項目。

您還可以使用 magnus.conf 中的參數 ACLGroupCacheSize 來設定每個使用者項目所能快取的最大群組成員數。此參數的預設值為 4。遺憾的是,群組中非成員關係的使用者不會被快取,這將導致每個請求都要進行數個 LDAP 目錄存取。

如需有關 ACL 檔案指令的更多資訊,請參閱「Sun ONE Web Server 6.1 NSAPI Programmer's Guide」。


存取控制的工作方式

當伺服器收到對某個頁面的請求時,將使用 ACL 檔案中的規則來確定是否允許存取。這些規則可以參照傳送該請求的電腦的主機名稱或 IP 位址。還可以參照儲存在 LDAP 目錄中的使用者和群組。

例如,以下 ACL 檔案包含 Administration Server (admin-serv) 的兩個預設項目,以及一個允許「admin-reduced」群組中的使用者存取 [Administration Server] 中 [Preferences] 標籤的項目。

version 3.0;

# 以下「es-internal」規則保護諸如

# 圖示和影像等與 Sun ONE Web Server 相關的檔案。

# 這些「es-internal」規則不應該修改。

  acl "es-internal";

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

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

# 以下「default」規則適用於

# Sun ONE Web Server 的整個文件目錄。在本範例中,這些規則被設定為

# 允許目錄伺服器中的「所有」使用者

# 讀取、執行、列示和取得資訊,

# 但「所有」使用者都不能寫入或刪除任何檔案。

# 存取該 Web 伺服器的文件目錄的所有用戶端都需要

# 提供使用者名稱和密碼,因為本範例

# 使用了「基本」認證

# 方法。用戶端必須位於目錄伺服器中才能

# 存取此預設目錄,因為不在目錄伺服器中的「任何使用者」都

# 將被拒,而位於目錄伺服器中的「所有使用者」都將被

# 允許存取。

  acl "default";

  authenticate (user,group) {

     database = "default";

     method = "basic";

  };

  deny (all)

  (user = "anyone") ;

  allow (read,execute,list,info)

  (user = "all") ;

# 以下規則將拒絕不在目錄伺服器中的任何使用者以及

# 位於目錄伺服器中但不在 GroupB 中的任何使用者

# 存取「Web」目錄。

# 只有 GroupB 中的使用者才能讀取、執行、列示

# 以及取得資訊。GroupA 無法存取

# 「Web」目錄,儘管 (在下面的 ACL 規則中) 它們

# 能夠存取「my_stuff」目錄。此外,GroupB 的成員

# 無法寫入或刪除檔案。

  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");

# 以下規則將拒絕不在目錄伺服器中的任何使用者

# 以及位於目錄伺服器中但

# 其使用者 ID 不是「SpecificMemberOfGroupB」的任何使用者進行存取。此設定中的 ACL 規則

# 還要求使用者連線自

# 特定的 IP 位址。規則中的 IP 位址設定

# 是可選的;增加它是為了取得額外的

# 安全性。此外,此 ACl 規則還具有一個自訂的

# 提示「Presentation Owner」。此自訂提示出現在

# 用戶端瀏覽器的使用者名稱和密碼

# 對話方塊中。

  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") ;

# 以下 ACL 規則將拒絕不在目錄伺服器中的任何使用者

# 以及位於目錄伺服器中但不在

# GroupA 或 GroupB 中的任何使用者存取「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

Sun ONE Web Server 將首先檢查整個伺服器的存取控制。如果整個伺服器的 ACL 設定為 [Continue],伺服器將檢查目錄 my_stuff 的 ACL。如果存在某個 ACL,伺服器將檢查該 ACL 中的 ACE,然後移至下一個目錄。此程序將繼續,直至找到的某個 ACL 拒絕存取,或者到達所請求 URL 的最後 ACL (在此情況下為檔案 presentation.html)。

若要使用 Server Manager 為本範例設定存取控制,可以僅為該檔案建立一個 ACL,也可以為指向該檔案的每個資源都建立一個 ACL。也就是說,一個用於整個伺服器,一個用於 my_stuff 目錄,一個用於 my_stuff/web 目錄,一個用於該檔案。


備註

如果有多個匹配的 ACL,伺服器將使用匹配的最後一個 ACL 描述。由於 uri ACL 是最後一個匹配的描述,因此會忽略 default ACL。



設定存取控制

本節描述限定對您 Web 網站上檔案或目錄進行存取的程序。您可以為所有伺服器設定全域存取控制規則,也可以為特定的伺服器個別設定。例如,人力資源部門可以建立 ACL,允許所有通過認證的使用者檢視其自己的薪金資料,但是僅允許負責薪金的人力資源人員更新資料。

您可以透過 Administration Server 為所有伺服器設定全域存取控制。選取存取控制選項部分詳細描述了每個選項。


備註

必須先配置並啟用分散式管理,然後才能建立全域存取控制。


設定全域存取控制

若要為所有伺服器建立或編輯全域存取控制,請執行下列步驟:

  1. 存取 [Administration Server] 並選擇 [Global Settings] 標籤。
  2. 按一下 [Restrict Access] 連結。
  3. 從下拉式清單選取管理伺服器 (https-admserv)。
  4. 按一下 [Create ACL] 和 [Go] 按鈕。
  5. 螢幕上將出現 [Access Control Rules for uri=/https-admserv/] 頁面:

    [Access Control Rules] 頁面
    顯示 [Access Control Rules] 頁面的圖。

    Administration Server 具有兩行不能編輯的預設存取控制規則。

  6. 核取 [Access control is on] (如果尚未選取)。
  7. 若要將一個預設 ACL 規則增加至該表的底部一列,請按一下 [New Line] 按鈕。
  8. 若要將某個存取控制限定與其前面的存取控制限定交換位置,請按一下向上箭頭。

    若要將某個存取控制限定與其後面的存取控制限定交換位置,請按一下向下箭頭。

  9. 按一下 [Users/Groups] 欄中的 [anyone]。
  10. [User/Group] 頁面將顯示在下面的框架中:

    [User/Group] 頁面
    顯示 [User/Group] 頁面的圖。

  11. 選取您要允許其存取的使用者和群組,然後按一下 [Update]。
  12. 按一下 [Group] 和 [User] 的 [List] 將提供清單供您從中選擇。

  13. 按一下 [From Host] 欄中的 [anyplace]。
  14. 輸入允許其存取的主機名稱和 IP 位址,然後按一下 [Update]。
  15. 按一下 [Programs] 欄中的 [all programs]。
  16. Programs
    顯示 [Programs] 頁面的圖。

  17. 選取 [Program Groups],或在 [Program Items] 欄位中輸入您要允許存取的特定檔名,然後按一下 [Update]。
  18. (可選) 按一下 [Extra] 欄下的 x 符號以增加一個自訂的 ACL 表示式。
  19. 核取 [Continue] 欄 (如果尚未依預設選取)。
  20. 伺服器將評估下一行,然後才確定是否允許該使用者存取。建立多行限定時,請將限定依一般到特定的順序排列。

  21. (可選) 按一下 [Response when denied] 以將使用者導向到其他 URL 或 URI。
  22. 輸入絕對 URL 或相對 URI 的路徑,然後按一下 [Update]。
  23. 按一下 [Submit] 以將新的存取控制規則儲存在 ACL 檔案中。

    備註

    按一下 [Revert] 將移除剛建立的所有設定。


設定伺服器實例的存取控制

使用 Server Manager,您可以建立、編輯或刪除特定伺服器實例的存取控制。


備註

如果要刪除,您不應該刪除 ACL 檔案中的所有 ACL 規則。至少要保留一個 ACL 檔案,並且其中至少要包含一個 ACL 規則,才能啟動伺服器。刪除所有 ACL 規則並重新啟動伺服器將導致語法錯誤。


若要為某個伺服器實例建立存取控制,請執行下列步驟:

  1. 存取 [Server Manager] 並選取要為其建立或編輯 ACL 的伺服器實例。
  2. 從 [Server Manager] 選擇 [Preferences] 標籤。
  3. 按一下 [Restrict Access] 連結。
  4. 在 [Option] 欄下,選擇以下選項之一:
    • [Add],然後輸入 ACL 檔案位置
    • [Edit],然後從下拉式功能表選取 ACL 檔案
    • [Delete],然後從下拉式功能表選取 ACL 檔案
    • 螢幕上將出現 [Access Control List Management] 頁面,其中提供了三個選項:

      [Access Control List Management] 頁面


      顯示 [Access Control List Management] 視窗的圖。

  5. 選取以下選項之一:
    • [Pick a resource],指定檔案或目錄的萬用字元型樣 (例如 *.html),選擇要限定的目錄或檔名,或瀏覽以查找某個檔案或目錄。
    • [Pick an existing ACL],從您已啟用的所有 ACL 清單中選取。尚未啟用的現有 ACL 不會顯示在此清單中。
    • [Enter the ACL name],允許建立已命名 ACL。只有您瞭解 ACL 檔案才能使用此選項。如果要將已命名 ACL 套用至資源,您需要手動編輯 obj.conf 檔案。
    • 表 9-2 描述了您可以使用的資源萬用字元。

      表 9-2  伺服器資源萬用字元

      資源萬用字元

      涵義

      default

      在安裝程序中建立的一個已命名 ACL,用於限定寫入存取,使得只有 LDAP 目錄中的使用者可以發佈文件。

      Entire Server

      一個規則集,用於確定對整個 Web 網站 (包括已執行的任何虛擬伺服器) 的存取。若要限定對某個虛擬伺服器的存取,請指定其文件根的路徑。

      /usr/sun/server4/docs/cgi-bin/*

      控制對 cgi-bin 目錄中所有檔案和目錄的存取。您必須指定一個絕對路徑。在 Windows 上,該路徑必須包括磁碟機代號。

      uri="/sales"

      控制對文件根中 sales 目錄的存取。若要指定 URI,請建立一個已命名 ACL。

  6. 按一下 [Edit Access Control]。
  7. 螢幕上將出現 [Access Control Rules for: (伺服器實例)] 頁面。

    [Access Control Rules] 頁面


    顯示 [Access Control Rules] 頁面的圖。

  8. 核取 [Access control is on] (如果尚未選取)。
  9. 若要建立或編輯此伺服器實例的 ACL,請按一下 [Action] 欄中的 [Deny]。
  10. [Allow /Deny] 頁面將顯示在下面的框架中:

    [Allow /Deny] 頁面


    顯示 [Allow/Deny] 頁面的圖。

  11. 選取 [Allow] (如果尚未依預設選取),然後按一下 [Update]。
  12. 按一下 [Users/Groups] 欄中的 [anyone]。
  13. [User/Group] 頁面將顯示在下面的框架中:

    [User/Group] 頁面


    顯示 [User/Group] 頁面的圖。

  14. 選取您要允許其存取的使用者和群組,然後按一下 [Update]。
  15. 按一下 [Group] 和 [User] 的 [List] 將提供清單供您從中選擇。

  16. 按一下 [From Host] 欄中的 [anyplace]。
  17. 輸入允許其存取的主機名稱和 IP 位址,然後按一下 [Update]。
  18. 按一下 [Rights] 欄中的 [all]。
  19. [Access Rights] 頁面


    顯示 [Access Rights] 頁面的圖。

  20. 選取以下選項之一,然後按一下 [Update]:
    • [All Access Rights]
    • [Only the following rights],然後為該使用者核取所有適當的權限
  21. (可選) 按一下 [Extra] 欄下的 x 符號以增加一個自訂的 ACL 表示式。
  22. 核取 [Continue] 欄 (如果尚未依預設選取)。
  23. 伺服器將評估下一行,然後才確定是否允許該使用者進行存取。建立多行限定時,請將限定依一般到特定的順序排列。

  24. (可選) 按一下 [Response when denied] 以將使用者導向到其他 URL 或 URI。
  25. 輸入絕對 URL 或相對 URI 的路徑,然後按一下 [Update]。
  26. 按一下 [Submit] 以將新的存取控制規則儲存在 ACL 檔案中。

  27. 備註

    按一下 [Revert] 將移除剛建立的所有設定。


  28. 為每個要建立存取控制的伺服器實例重複執行上述全部步驟。
  29. 完成後,按一下 [Apply]。
  30. 選取硬式啟動/重新啟動或動態套用。

您也可以基於每個虛擬伺服器啟用 ACL 設定。若要瞭解如何進行此作業,請參閱「編輯虛擬伺服器的存取控制清單」。


選取存取控制選項

以下各節描述在設定存取控制時可以選取的各種選項。對於 Administration Server,頭兩行為預設設定,無法編輯。

設定動作

您可以指定當請求匹配存取控制規則時伺服器要執行的動作。

伺服器將檢查整個存取控制表示式 (ACE) 清單以確定存取許可權。例如,第一個 ACE 通常為拒絕所有使用者。如果第一個 ACE 設定為 [Continue],伺服器將檢查清單中的第二個 ACE,如果該 ACE 匹配,將使用下一個 ACE。如果核取 [Continue],則將拒絕所有使用者存取該資源。伺服器將繼續檢查清單,直至找到某個不匹配的 ACE,或者找到某個匹配但未設定為 [Continue] 的 ACE。最後一個匹配的 ACE 將確定是否允許存取。

指定使用者和群組

使用使用者和群組認證時,將提示使用者輸入使用者名稱和密碼,然後才能存取在存取控制規則中指定的資源。

Sun ONE Web Server 將檢查儲存在 LDAP 伺服器 (如 Sun ONE Directory Server) 或內部基於檔案的認證資料庫中的使用者和群組的清單。

您可以允許或拒絕資料庫中的每個使用者進行存取,也可以使用萬用字元型樣允許或拒絕特定使用者進行存取,還可以從使用者和群組的清單中選取允許或拒絕進行存取的使用者。

指定 [From Host]

您可以基於請求來自的電腦限定對 Administration Server 或 Web 網站的存取。

如果選取 [Only from] 選項,請在 [Host Names] 或 [IP Addresses] 欄位中輸入萬用字元型樣或以逗號分隔的清單。依主機名稱進行限定比依 IP 位址進行限定更靈活:如果變更了某個使用者的 IP 位址,您不需要更新此清單。但是,依 IP 位址進行限定更可靠:如果某個連線用戶端的 DNS 查找失敗,將無法使用主機名稱限定。

您只能在萬用字元型樣中使用 * 萬用字元以匹配電腦的主機名稱或 IP 位址。例如,若要允許或拒絕特定領域中的所有電腦,您可以輸入匹配該領域中所有主機的萬用字元型樣,如 *.sun.com。您可以為存取 Administration Server 的超級使用者設定不同的主機名稱和 IP 位址。

對於主機名稱,* 必須取代名稱中的整個部分。也就是說,*.sun.com 可以接受,但 *users.sun.com 無法接受。當 * 出現在主機名稱中時,它必須是最左側的字元。例如,*.sun.com 可以接受,但 users.*.com 無法接受。

對於 IP 位址,* 必須取代位址中的整個位元組。例如,198.95.251.* 可以接受,但 198.95.251.3* 無法接受。當 * 出現在 IP 位址中時,它必須是最右側的字元。例如,198.* 可以接受,但 198.*.251.30 無法接受。

限定對程式的存取

對程式的存取只能由 Administration Server 來限定。透過限定對程式的存取,可以僅允許指定的使用者檢視 [Server Manager] 頁面並確定他們是否能夠配置該伺服器。例如,您可以允許某些管理員配置 Administration Server 的 [Users & Groups] 區段,而不允許他們存取 [Global Settings]。

您可以配置不同的使用者存取不同的功能領域。一旦為某個使用者設定了對若干選取功能領域的存取權限,當該使用者登入時,只有您授權該使用者存取的那些功能領域的 [Administration Server] 頁面才可見。

設定存取權限

伺服器實例的存取權限只能由 Server Manager 設定。存取權限可以限定對您 Web 網站上檔案和目錄的存取。除了允許或拒絕所有存取權限外,您還可以指定一個允許或拒絕部分存取權限的規則。例如,您可以授予使用者對您檔案的唯讀存取權限,這樣他們可以檢視資訊,但不能變更檔案。

撰寫自訂表示式

您可以為 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 檔案語法」和「參照 obj.conf 中的 ACL 檔案」。

關閉存取控制

如果您取消核取 [Access control is on] 選項,將收到一個提示,詢問是否要刪除 ACL 中的記錄。按一下 [OK] 後,伺服器將從 ACL 檔案中刪除該資源的 ACL 項目。

如果要停用 ACL,可以在檔案 generated-https-server-id.acl 中每行的開頭放置一個 # 符號,註釋掉 ACL 行。

在 Administration Server 中,您可以為特定伺服器實例建立和啟用存取控制,而為其他伺服器停用存取控制 (依預設為停用)。例如,您可以透過 Administration Server 拒絕對 [Server Manager] 頁面的所有存取。對於依預設啟用了分散式管理且禁用了存取控制的任何其他伺服器,管理員仍可以存取和配置這些伺服器,但不能配置 Administration Server。


備註

此存取控制將附加在位於為分散式管理設定的管理員群組中的使用者上。Administration Server 首先檢查使用者 (非超級使用者) 是否位於管理員群組中,然後評估存取控制規則。


拒絕存取時回應

拒絕存取時,Sun ONE Web Server 提供以下預設訊息:「FORBIDDEN.Your client is not allowed access to the restricted object」。您可以在存取被拒時選擇其他回應。也可以為每個存取控制物件建立不同的訊息。

若要變更為特定 ACL 傳送的訊息,請執行下列步驟:

  1. 按一下 [ACL] 頁面中的 [Response when denied] 連結。
  2. 在下面的框架中核取 [Respond with the following file]。
  3. 輸入絕對 URL 或相對 URI 的路徑,然後按一下 [Update]。
  4. 確定使用者對他們被重新導向至的 URL 或 URI 具有存取權限。

  5. 按一下 [Update]。
  6. 在上面的框架中按一下 [Submit] 以提交存取控制規則。


限制對伺服器中區域的存取

本節描述一些常用的對 Web 伺服器及其內容的存取限定。每個程序的步驟都詳述了需要執行的特定動作;但是,您仍需要完成「設定伺服器實例的存取控制」中描述的所有步驟。

本節描述了以下程序:

限定對整個伺服器的存取

您可能希望為某個群組中的使用者授予存取權限,以便允許他們從某個子領域中的電腦存取伺服器。例如,公司某部門可能有一個伺服器,您僅希望來自網路特定子領域中電腦的使用者能夠對其進行存取。

使用針對伺服器實例設定存取控制的描述步驟,您需要:

  1. 使用 Server Manager 選取該伺服器實例。
  2. 選擇 [Preferences] 標籤。
  3. 按一下 [Restrict Access] 連結。
  4. 選擇要編輯的 ACL 檔案。
  5. 挑選整個伺服器資源,然後按一下 [Edit Access Control]。
  6. 增加一個新規則以拒絕所有使用者進行存取。
  7. 增加另一個新規則以允許特定群組的存取。
  8. 輸入允許存取的電腦主機名稱的萬用字元型樣。
  9. 例如,*.employee.sun.com

  10. 取消選取 [Continue]。
  11. 按一下 [Submit] 和 [Apply] 以提交和套用所做的變更。

限定對目錄 (路徑) 的存取

您可以允許某個群組中的使用者讀取或執行目錄及其子目錄中的應用程式和檔案 (這些內容由該群組的所有者控制)。例如,專案經理可以更新狀態資訊,供專案團隊複查。

若要限制對伺服器上目錄的存取 (使用針對伺服器實例設定存取控制的描述步驟),您需要:

  1. 使用 Server Manager 選取該伺服器實例。
  2. 選擇 [Preferences] 標籤。
  3. 按一下 [Restrict Access] 連結。
  4. 選擇要編輯的 ACL 檔案。
  5. 瀏覽 [Pick a Resource] 區段並選取您要限定的目錄。
  6. 將顯示伺服器文件根中的目錄。選取目錄後,[Editing] 下拉式清單將顯示該目錄的絕對路徑。


    備註

    如果要檢視伺服器根中的所有檔案,請按一下 [Options],然後核取 [List files as well as directories]。


  7. 按一下 [Edit Access Control]。
  8. 建立一個新規則並保留預設設定,以拒絕任何位置的任何使用者進行存取。
  9. 建立另一個新規則,允許某個特定群組中的使用者僅具有讀取和執行權限。
  10. 建立第三行以允許某個特定使用者具有所有權限。
  11. 取消選取第二行和第三行的 [Continue],然後按一下 [Update]。
  12. 按一下 [Submit] 和 [Apply] 以提交和套用所做的變更。

該檔案或目錄的絕對路徑將建立在文件根目錄中。ACL 檔案中的項目將如下所示:acl "path=d:\sun\suitespot\docroot1\sales/";

限定對 URI (路徑) 的存取

您可以使用 URI 控制對 Web 伺服器上單一使用者內容的存取。URI 是相對於伺服器文件根目錄的路徑和檔案。如果您要經常重新命名或移動伺服器的全部或部分內容 (例如,為了調整磁碟空間),則使用 URI 可以方便地管理這些內容。如果您還有其他文件根,這也是一種很好的處理存取控制的方法。

若要限制對 URI 的存取 (使用針對伺服器實例設定存取控制的描述步驟),您需要:

  1. 使用 Server Manager 選取該伺服器實例。
  2. 選擇 [Preferences] 標籤。
  3. 按一下 [Restrict Access] 連結。
  4. 在 [ACL name] 區段的 [Type] 中輸入要限定的 URI。
  5. 例如︰uri=/my_directory

  6. 按一下 [Edit Access Control]。
  7. 建立一個新規則,允許所有使用者進行讀取。
  8. 建立另一個新規則,允許目錄的所有者進行存取。
  9. 同時取消核取第一個和第二個規則的 [Continue]。
  10. 按一下 [Submit] 和 [Apply] 以提交和套用所做的變更。

將相對於文件根建立該 URI 的路徑。ACL 檔案中的項目將如下所示:acl "uri=/my_directory";

限定對檔案類型的存取

您可以限制對伺服器或 Web 網站上的檔案類型的存取。例如,您可能希望僅允許特定使用者建立在您伺服器上執行的程式。任何使用者都將能夠執行程式,但僅有群組中的特定使用者能夠建立或刪除程式。

若要限制對檔案類型的存取 (使用針對伺服器實例設定存取控制的描述步驟),您需要:

  1. 使用 Server Manager 選取該伺服器實例。
  2. 選擇 [Preferences] 標籤。
  3. 按一下 [Restrict Access] 連結。
  4. 按一下 [Pick a resource] 區段中的 [Wildcard],然後輸入一個萬用字元型樣。
  5. 例如,*.cgi。

  6. 按一下 [Edit Access Control]。
  7. 建立一個新規則,允許所有使用者進行讀取。
  8. 建立另一個規則,僅允許某個特定群組進行寫入和刪除。
  9. 按一下 [Submit] 和 [Apply] 以提交和套用所做的變更。

對於檔案類型限定,您應該保持兩個 [Continue] 方塊均被核取。當傳入對某個檔案的請求時,伺服器將首先檢查該檔案類型的 ACL。

obj.conf 中將建立一個 PathCheck 函式,它可能包含檔案或目錄的萬用字元型樣。ACL 檔案中的項目將如下所示:acl "*.cgi";

基於一天中的某個時間限定存取

您可以將對伺服器的寫入和刪除存取限定為僅允許在指定的時間或指定的日期進行。使用此方式可以防止使用者在工作時間內發佈文件,此時其他使用者可能正在存取檔案。

若要基於一天中的某個時間對存取進行限制 (使用針對伺服器實例設定存取控制的描述步驟),您需要:

  1. 使用 Server Manager 選取該伺服器實例。
  2. 選擇 [Preferences] 標籤。
  3. 按一下 [Restrict Access] 連結。
  4. 從 [Pick a resource] 中的下拉式清單選取整個伺服器,然後按一下 [Edit Access Control]。
  5. 建立一個新規則,授予所有使用者讀取和執行權限。
  6. 這意味著如果某個使用者要增加、更新或刪除檔案或目錄,將不會套用此規則,伺服器將搜尋另一個匹配的規則。

  7. 建立另一個新規則,拒絕所有使用者進行寫入和刪除。
  8. 按一下 X 連結,建立一個自訂表示式。
  9. 輸入允許進行存取的一週中的哪些天以及一天中的哪些時間。
  10. 範例:

    user = "anyone" and
    dayofweek = "sat,sun" or
    (timeofday >= 1800 and
    timeofday <= 600)

    建立自訂表示式時,[Users/Groups] 和 [From Host] 欄位中將顯示訊息「Unrecognized expressions」。

  11. 按一下 [Submit] 和 [Apply] 以提交和套用所做的變更。

自訂表示式中的任何錯誤都將產生一條錯誤訊息。請進行更正並再次提交。

基於安全性限定存取

從 Sun ONE Web Server 6.1 開始,您可以為同一個伺服器實例配置 SSL 偵聽套接字和非 SSL 偵聽套接字。基於安全性限定存取允許您為僅應透過安全通道傳輸的資源建立保護。

若要基於安全性對存取進行限制 (使用針對伺服器實例設定存取控制的描述步驟),您需要:

  1. 使用 Server Manager 選取該伺服器實例。
  2. 選擇 [Preferences] 標籤。
  3. 按一下 [Restrict Access] 連結。
  4. 從 [Pick a resource] 中的下拉式清單選取整個伺服器,然後按一下 [Edit Access Control]。
  5. 建立一個新規則,授予所有使用者讀取和執行權限。
  6. 這意味著如果某個使用者要增加、更新或刪除檔案或目錄,將不會套用此規則,伺服器將搜尋另一個匹配的規則。

  7. 建立另一個新規則,拒絕所有使用者進行寫入和刪除。
  8. 按一下 X 連結,建立一個自訂表示式。
  9. 輸入 ssl="on"
  10. 範例:

    user = "anyone" and ssl="on"

  11. 按一下 [Submit] 和 [Apply] 以提交和套用所做的變更。

自訂表示式中的任何錯誤都將產生一條錯誤訊息。請進行更正並再次提交。

在分散式管理中保證存取控制的安全

本節列示了在啟用分散式管理後,為在 Sun ONE Web Server 6.1 中保證存取控制的安全所需執行的其他工作。

保證資源的存取安全

PathCheck 指令在 generated.https-server-id.acl 檔案中的 https-server-id 物件標籤中的出現順序可能會授予並不希望的資源存取權限。若要防止發生這種情況,請編輯 <server-root>/generated.https-server-id.acl 檔案,指定要求進行存取控制的程式群組清單 (以逗號分隔),如下所示:

在以下行之下:

allow (all)

user=<username> and program=<program group, program group...>;

增加以下行:

deny absolute (all)

user=<username> and program!=<program group, program group...>;

保證伺服器實例的存取安全

為配置 Sun ONE Web Server 6.1 以控制對伺服器實例的存取,請編輯 <server-root>/httpacl/*.https-admserv.acl 檔案並指定要授予其存取控制權限的使用者。範例:

acl "https-<instance>";

authenticate (user,group) {

database = "default";

method = "basic";

};

deny absolute (all) user != "UserA";

啟用基於 IP 的存取控制

如果參考 ip 屬性的存取控制項目位於與 Administration Server 相關的 ACL 檔案 (gen*.https-admserv.acl) 中,請完成下面的步驟 (1) 和 (2)。

如果參考 ip 屬性的存取控制項目位於與某個伺服器實例相關的 ACL 檔案中,請僅為該特定 ACL 完成下面的步驟 (1)。

  1. 編輯 <server-root>/httpacl/gen*.https-admserv.acl 檔案,除了 usergroup 外,再將 ip 增加至認證清單,如下所示:
  2. acl "https-admserv";

    authenticate (user,group,ip) {

    database = "default";

    method = "basic";

    };

  3. 增加以下存取控制項目:
  4. deny absolute (all) ip !="ip_for_which_access_is_allowed";

    範例:

    acl "https-admserv";

    authenticate (user,group,ip) {

    database = "default";

    method = "basic";

    };

    deny absolute (all) ip !="205.217.243.119";


使用動態存取控制檔案

伺服器內容很少由一個使用者完全管理。您可能需要允許一般使用者存取配置選項的某個子集,以便使他們能夠進行所需的配置,而無需授權他們存取 Sun ONE Web Server。配置選項的子集儲存在動態配置檔案中。

本節描述了以下主題:

使用 .htaccess 檔案

Sun ONE Web Server 支援 .htaccess 動態配置檔案。您可以透過使用者介面或手動變更配置檔案來啟用 .htaccess 檔案。支援 .htaccess 的檔案位於 server_root/plugins/htaccess 目錄中。這些檔案包括一個 Plug-in,使您可以使用 .htaccess 檔案以及一個用於將 .nsconfig 檔案轉換為 .htaccess 檔案的程序檔。

您可以將 .htaccess 檔案與伺服器的標準存取控制結合起來使用。不管 PathCheck 指令的順序如何,標準存取控制始終在任何 .htaccess 存取控制之前套用。當使用者/群組認證為「基本」時,請勿要求使用標準和 .htaccess 存取控制認證使用者。您可以透過標準伺服器存取控制使用 SSL 用戶端認證,還可以透過 .htaccess 檔案要求 HTTP 「基本」認證。

本節包括下列主題:

經由使用者介面啟用 .htaccess 檔案

若要將 Sun ONE Web Server 配置為使用 .htaccess 檔案,請執行下列步驟:

  1. 存取 [Server Manager] 並選取要為其啟用 .htaccess 的伺服器實例。
  2. 按一下螢幕頂部的 [Class Manager] 連結。
  3. 選取 [Content Mgmt] 標籤。
  4. 按一下 [.htaccess Configuration] 連結。
  5. 依以下方式選取要編輯的伺服器:
    • 選擇整個伺服器或從下拉式清單選擇某個特定的伺服器
    • 透過按一下 [Browse] 選擇要編輯的目錄和檔案
    • 透過按一下 [Wildcard] 選擇要編輯的萬用字元型樣
  6. 選取 [Yes] 以啟動 .htaccess。
  7. 輸入要增加 .htaccess 配置的檔名。
  8. 按一下 [OK]。
  9. 完成後,按一下 [Apply]。
  10. 選取硬式啟動/重新啟動或動態套用。

經由 magnus.conf 啟用 .htaccess

若要手動啟用伺服器以使用 .htaccess 檔案,需要先修改伺服器的 magnus.conf 檔案,以便載入、初始化和啟動 Plug-in。

  1. 開啟 server_root/https-server_name/config 檔案中的 magnus.conf
  2. 在另一個 Init 指令之後,增加以下行:
    • 對於 UNIX/Linux:
    • Init fn="load-modules" funcs="htaccess-init,htaccess-find"
      shlib="
      server_root/plugins/htaccess/htaccess.so" NativeThread="no"
      Init fn="htaccess-init"

    • 對於 Windows:
    • Init fn="load-modules" funcs="htaccess-init,htaccess-find,htaccess-register"
      shlib="
      server_root/plugins/htaccess/htaccess.dll" NativeThread="no"
      Init fn="htaccess-init"

    • 對於 HP:
    • Initfn="load-modules" funcs="htaccess-init,htaccess-find,htaccess-register" shlib="<server_root>/plugins/htaccess/htaccess.sl" NativeThread="no"

      Init fn="htaccess-init"

  3. (可選) 使最後一行為:
  4. Init fn="htaccess-init"[groups-with-users=yes]

  5. 按一下 [File /Save]。
  6. 開啟 obj.conf
  7. 增加 PathCheck 指令作為物件中的最後一個指令。
    1. 若要為某個虛擬伺服器管理的所有目錄啟動 .htaccess 檔案處理,請將 PathCheck 指令增加至 object.conf 檔案中的預設物件:
    2. <Object name="default">

      ...

      PathCheck fn="htaccess-find"

      </Object>

      .htaccess 處理應該是該物件中的最後一個 PathCheck 指令。

    3. 若要為特定伺服器目錄啟動 .htaccess 檔案處理,請將 PathCheck 指令放在 magnus.conf 中的相應定義中。
  8. 若要將 .htaccess 檔案命名為其他名稱而不是 .htaccess,則您必須使用以下格式在 PathCheck 指令中指定檔名:
  9. PathCheck fn="htaccess-find" filename="filename"


    備註

    下次使用 Administration Server 時,系統將警告您已經進行了手動編輯。按一下 [Apply] 以接受所做的變更。


將依照指定目錄中的 .htaccess 存取控制對伺服器進行後續存取。例如,若要限定對 .htaccess 檔案的寫入存取,請為這些檔案建立一個配置樣式,然後對該配置樣式套用存取控制。如需更多資訊,請參閱「套用配置樣式

將現有 .nsconfig 檔案轉換為 .htaccess 檔案

Sun ONE Web Server 6.1 具有一個 htconvert Plug-in,可用於將現有的 .nsconfig 檔案轉換為 .htaccess 檔案。系統已不再支援 .nsconfig 檔案。如果您一直使用的是 .nsconfig 檔案,則應該將這些檔案轉換為 .htaccess 檔案。

啟動後,htconvert 將在給定的 server.xml 檔案中搜尋 pfx2dirdocument-root 指令。找到的每個 .nsconfig 檔案都將轉換為 .htaccess 檔案。可以轉換多個 obj.conf 檔案,這取決於配置。


備註

如果存在現有的 .htaccess 檔案,則 htconvert 將產生一個 .htaccess.new 檔案並給出警告。如果 .htaccess.htaccess.new 已存在,該新檔案將命名為 .htaccess.new.new.new 會被重複附加。


htconvert Plug-in 目前僅支援 RestrictAccessRequireAuth 指令以及 <Files> 包裝。如果顯示的是 <Files> 而不是 <Files*>,程序檔將給出警告,並且表現出好像要對目錄中的所有檔案進行存取控制。

若要轉換檔案,請在指令提示下輸入您系統上的 Perl 的路徑、Plug-in 程序檔的路徑以及 server.xml 檔案的路徑。例如:

所有 .nsconfig 檔案都將轉換為 .htaccess 檔案,但是不會被刪除。

groups-with-users 選項可協助處理群組中的大量使用者。如果群組中有許多使用者,請執行下列步驟:

  1. 修訂使用者檔案的格式以列出某個使用者所屬的所有群組:
  2. username:password:group1,group2,group3,...groupn

  3. 修訂 AuthGroupFile 指令,使其指向與 AuthUserFile 相同的檔案。

或者,您也可以:

  1. 完全移除 AuthGroupFile 指令。
  2. 將以下內容增加至 magnus.conf 檔案的 Init fn=htaccess-init 行:

使用 htaccess-register

htaccess-register 是一個新函式,允許您建立自己的認證方法。像 Apache 一樣,您可以建立外部認證模群組並透過 htaccess-register 將其插入 .htaccess 模組。server_root/plugins/nsapi/htaccess 中提供了兩個範例模組。

您可以使用外部模組建立一個或多個新的指令。例如,可以指定用於認證的使用者資料庫。這些指令可能不會顯示在 <Limit><LimitExcept> 標籤中。

.htaccess 檔案範例

下面顯示了一個 .htaccess 檔案範例:

<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
AuthName mxyzptlk.kawaii.com
AuthUserFile /server_root/mxyz-docs/service.pwd
AuthGroupFile /server_root/mxyz-docs/service.grp

支援的 .htaccess 指令

本版支援以下 .htaccess 指令:

allow

語法

allow from host,其中:

該指令不必包含在 <Limit><LimitExcept> 範圍內,但通常會包含在內。

作用

允許存取指定的主機。通常顯示在 <Limit> 範圍內。

deny

語法

deny from host,其中:

該指令不必包含在 <Limit><LimitExcept> 範圍內,但通常會包含在內。

作用

拒絕存取指定的主機。通常顯示在 <Limit> 範圍內。

AuthGroupFile

語法

AuthGroupFile filename,其中 filename 為包含群組定義的檔案的名稱,群組定義的格式為:groupname:user user。

該指令不得顯示在 <Limit><LimitExcept> 範圍內。

作用

指定已命名群組檔案要用於某個 require group 指令中參照的任何群組定義。請注意,如果 AuthGroupFile 指令中指定的檔名與 AuthUserFile 指令中的檔名相同,將假定該檔案依以下格式包含使用者和群組:

username:DES-encrypted-password:comma-separated-list-of-groups

AuthUserFile

語法

AuthUserFile filename,其中:

該指令不得顯示在 <Limit><LimitExcept> 範圍內。

作用

指定已命名使用者檔案要用於在某個 require user 或 require valid-user 指令中參照的任何使用者名稱。

請注意,在 obj.conf 檔案中的 Init fn=htaccess-init 指令中使用 groups-with-users=yes,或指定具有相同檔名的 AuthGroupFile 指令,將導致該檔案被假定為使用以下格式:

username:DES-encrypted-password:comma-separated-list-of-groups

AuthName

語法

AuthName authentication realm,其中 authentication realm 是一個字串,用來識別與任何使用者認證請求相關聯的某個授權範圍。

該指令不得顯示在 <Limit><LimitExcept> 範圍內。

作用

authentication realm 字串一般顯示在用戶端的使用者名稱和密碼提示中。它可能影響用戶端使用者名稱和密碼的快取。

AuthType

語法

AuthType Basic。該指令不得顯示在 <Limit><LimitExcept> 範圍內。

作用

指定使用者認證方法為 HTTP 基本認證,這是目前支援的唯一方法。

<Limit>

語法

<Limit method method ...>

allow, deny, order, or require directives

</Limit>

其中 method 是 HTTP 方法,例如 GET、POST 或 PUT。此處可以使用 Web 伺服器瞭解的任何方法。

作用

將包含的指令僅套用於使用指定 HTTP 方法的請求。

<LimitExcept>

語法

<LimitExcept method method ...>

allow, deny, order, or require directives

</LimitExcept>

其中 method 是 HTTP 方法,例如 GET、POST 或 PUT。此處可以使用 Web 伺服器瞭解的任何方法。

作用

將包含的指令僅套用於與指定的 HTTP 方法不匹配的請求類型。

order

語法

Order ordering,其中 ordering 是以下順序之一:

該指令不必包含在 <Limit><LimitExcept> 範圍內,但通常會包含在內。

作用

require

語法

該指令不必包含在 <Limit><LimitExcept> 範圍內,但通常會包含在內。

作用

.htaccess 的安全性考量

依預設,對 HTTP PUT 的伺服器支援被停用。您可以使用 Class Manager 中 [Content Mgmt] 的 [Remote File Manipulation] 頁面來啟用 HTTP PUT。允許對包含 .htaccess 檔案的目錄進行 PUT 存取時要十分小心,因為這種存取允許取代這些檔案。可以透過限定存取防止對目錄中的所有檔案進行 PUT 存取。請參閱「限定對目錄 (路徑) 的存取」。


控制對虛擬伺服器的存取

Sun ONE Web Server 6.1 中的存取控制資訊可以來自於每台虛擬伺服器的 ACL 檔案和文件目錄中的 .htaccess 檔案。自 iPlanet Web Server 4.x 以來,.htaccess 系統並未發生變更。

您的 server.xml 檔案可以包含一個或多個 ACLFILE 標籤,這些標籤定義了一個與特定的標準 Sun ONE Web Server 6.x ACL 檔案相關聯的 ID。例如︰

<ACLFILE id="standard" file="standard.acl">

若要虛擬伺服器使用存取控制,您必須在一個或多個 ACL 檔案 ID 的「aclids」特性中建立對它們的參照。範例:

<VS aclids="standard">

此配置允許多個虛擬伺服器共用相同的 ACL 檔案。如果要求對虛擬伺服器進行使用者/群組認證,您必須將一個或多個 USERDB 標籤增加至其定義。這些 USERDB 標籤用於在您 ACL 檔案中的資料庫名稱與 dbswitch.conf 檔案中找到的實際資料庫之間建立一個連線。

以下範例將不具有「database」屬性的 ACL 對映至 dbswitch.conf 中的「default」資料庫:

<VS>

<USERDB id="default" database="default"/>

</VS>

經由虛擬伺服器存取資料庫

您可以在 dbswitch.conf 檔案中全域定義使用者認證資料庫。僅在伺服器啟動時才讀取此檔案。

dbswitch.conf 中 LDAP URL 的 baseDN 定義了對資料庫全部存取的全域根。這維護了向後相容性。對於大多數新的安裝,baseDN 將是空的。

dcsuffixdbswitch.conf 中 LDAP 資料庫的新屬性,它依據 Sun ONE LDAP 綱目定義 DC 樹的根。它是相對於 LDAP URL 中的 baseDN 定義的。顯示 dcsuffix 屬性時,LDAP 資料庫將與 Sun ONE LDAP 綱目相容,同時某些作業的行為將發生變更。如需有關 Sun ONE LDAP 綱目的更多資訊及範例,請參閱「The Sun ONE LDAP Schema」。

對於每個虛擬伺服器,您均可以定義一個或多個指向其中一個目錄的 USERDB 區段,還可以定義其他資訊。可以在 ACL 的資料庫參數中參照 USERDB 區段 ID。如果某個虛擬伺服器沒有 USERDB 區段,則基於使用者或群組的 ACL 將失敗。

USERDB 標籤在 ACL 的資料庫屬性和 dbswitch.conf 之間定義了一個額外的間接層。此間接層為伺服器管理員增加了必要的保護,使他們可以完全控制虛擬伺服器管理員能夠存取哪些資料庫。

如需有關 USERDB 的更多資訊,請參閱「User Database Selection」。

在使用者介面中指定 LDAP 資料庫

您在 dbswitch.conf 中定義了一個或多個使用者認證資料庫後,可以使用 Class Manager 來配置每個虛擬伺服器要用來進行認證的資料庫。您也可以使用 Class Manager 為要認證的虛擬伺服器增加 dbswitch.conf 中新建的資料庫定義。

若要指定虛擬伺服器應使用的 LDAP 資料庫,請執行下列步驟:

  1. 存取 [Server Manager] 並選取 [Virtual Server Class] 標籤。
  2. 按一下 [Virtual Server Class] 連結,從中可以指定伺服器樹檢視下列示的 LDAP 資料庫。
  3. 選取 [Virtual Servers] 標籤 (如果尚未顯示)。
  4. 按一下 [ACL Settings] 連結。
  5. 螢幕上將顯示 [ACL Settings for Virtual Servers] 頁面。

  6. 從 [Option] 欄中的下拉式清單選擇 [Edit] (如果尚未顯示)。
  7. 從您正在編輯的虛擬伺服器的 [Database] 欄中的下拉式清單,選取資料庫配置。
  8. 按一下 [OK]。
  9. 關閉 [Edit ACL Files] 視窗。
  10. 按一下 [Apply]。
  11. 選擇動態套用。

編輯虛擬伺服器的存取控制清單

虛擬伺服器的 ACL 是為該虛擬伺服器所在的伺服器實例建立的,虛擬伺服器 ACL 的設定將預設採用為該伺服器實例建立的設定。不過,您可以透過 Class Manager 來編輯每個虛擬伺服器的存取控制。您還可以使用此方法將新建的 ACL 檔案增加至虛擬伺服器。

若要編輯虛擬伺服器的 ACL 設定,請執行下列步驟:

  1. 存取 [Server Manager] 並選取 [Virtual Server Class] 標籤。
  2. 按一下 [Virtual Server Class] 連結,從中可以指定伺服器樹檢視下列示的 LDAP 資料庫。
  3. 選取 [Virtual Servers] 標籤 (如果尚未顯示)。
  4. 按一下 [ACL Settings] 連結。
  5. 從要變更的每個虛擬伺服器 [Option] 欄位中的下拉式清單,選擇 [Edit] 或 [Delete]。
  6. 按一下 [ACL File] 欄位中的 [Edit] 連結以顯示可用的 ACL 檔案。
  7. 選取要為該虛擬伺服器增加或刪除的一個或多個 ACL 檔案。
  8. 一個虛擬伺服器可以具有多個 ACL 檔案,因為它們可能具有多個文件根。

  9. 從下拉式清單選擇要與 ACL 清單相關聯的資料庫。
  10. (可選) 輸入 BaseDN。
  11. 完成變更後,按一下 [OK]。
  12. 按一下 [Apply]。
  13. 選取動態套用。


為基於檔案的認證建立 ACL

Sun ONE Web Server 6.1 支援使用基於檔案的認證資料庫,這些資料庫在平面檔中以文字格式儲存使用者和群組資訊。ACL 框架被設計為可以使用檔案認證資料庫。


備註

Sun ONE Web Server 6.1 不支援動態平面檔。平面檔資料庫將在伺服器啟動時載入。對這些檔案所做的任何變更僅在重新啟動伺服器時才能生效。


ACL 項目可以使用 database 關鍵字來參照使用者資料庫。例如:

acl "default";

authenticate (user) {

...

database="myfile";

...

};

可以在 server.xml 檔案中某個 VS USERDB 元素中參照 myfile 資料庫,其中該資料庫與 server-root/userdb/dbswitch.conf 檔案中的相應定義連結。範例:

<VS>

...

<USERDB id="myfile" database="myfiledb">

...

</VS>

server-root/userdb/dbswitch.conf 檔案中,有一個項目定義了檔案 auth-db 及其配置。範例:

directory myfiledb file

myfiledb:syntax keyfile

myfiledb:keyfile /path/to/config/keyfile

請參閱下表

為基於檔案認證的目錄服務建立 ACL

若要為基於檔案認證的目錄服務建立 ACL 項目,請執行下列步驟:

  1. 存取 [Server Manager] 並選取要為其建立或編輯 ACL 的伺服器實例。
  2. 從 [Server Manager] 選擇 [Preferences] 標籤。
  3. 按一下 [Restrict Access] 連結。
  4. 在 [Option] 欄下,從下拉式清單選擇 ACL 檔案,然後按一下 [Edit ACL]。
  5. 在上面框架中的 [Access Control Rules] 頁面中,按一下要編輯的 ACL 的 [Users/Groups] 連結。
  6. 在下面框架中的 [User/Group] 頁面中,從 [Authentication database] 下拉式清單選取 [keyfile]。
  7. 按一下 [Update]。
  8. 當您依據基於 keyfile 的檔案認證資料庫設定 ACL 時,dbswitch.conf 檔案使用相應 ACL 項目進行更新,如下面給出的範例項目:

    version 3.0;

    acl "default";

    authenticate (user) {

    prompt = "Sun One Web Server 6.1";

    database = "mykeyfile";

    method = "basic";

    };

    deny (all) user = "anyone";

    allow (all) user = "all";

為基於 .htaccess 認證的目錄服務建立 ACL

Sun ONE Web Server 支援基於 .htaccess 的平面檔認證。如果您一直使用的是 .htaccess 認證,則可以遷移現有資料檔案,而無需變更檔案認證資料庫。如使用 .htaccess 檔案中所述,.htaccess 使用者和群組資料可以儲存在單一檔案中,也可以分成兩個檔案 (一個儲存使用者資料,另一個儲存群組資料)。檔案認證資料庫支援這兩種現有格式。

若要為基於 htaccess 認證的目錄服務建立 ACL,請執行下列步驟:

  1. 存取 [Server Manager] 並選取要為其建立或編輯 ACL 的伺服器實例。
  2. 從 [Server Manager] 選擇 [Preferences] 標籤。
  3. 按一下 [Restrict Access] 連結。
  4. 在 [Option] 欄下,從下拉式清單選擇 ACL 檔案,然後按一下 [Edit ACL]。
  5. 在上面框架中的 [Access Control Rules] 頁面中,按一下要編輯的 ACL 的 [Users/Groups] 連結。
  6. 在下面框架中的 [User/Group] 頁面中,從 [Authentication database] 下拉式清單選取 [htaccess]。
  7. 按一下 [Update]。
  8. 當您依據基於 htaccess 的檔案認證資料庫設定 ACL 時,dbswitch.conf 檔案使用相應 ACL 項目進行更新,如下面給出的範例項目:

    version 3.0;

    acl "default";

    authenticate (user) {

    prompt = "Sun One Web Server 6.1";

    database = "myhtaccessfile";

    method = "basic";

    };

    deny (all) user = "anyone";

    allow (all) user = "all";

將現有 .htaccess 資訊遷移至檔案認證資料庫

若要在 Sun ONE Web Server 6.1 中將現有 .htaccess 資訊遷移至檔案認證資料庫,請執行下列步驟:

使用者檔案格式如下所示:

#user:password

群組檔案格式如下所示:

#group1:user1 user2

#group2:user3 user4


備註

成員名稱以空格分隔。


當 userfile 和 groupfile 具有相同的檔名時,它們將組合在一起。組合後的每一行語法如下所示:

#user:password:group1,group2


備註

欄之間以冒號分隔。


htaccess 資料庫範例

範例 1

#sample userfile (user/password "j2ee/j2eepwd" user/password "user1/user1pwd" )

j2ee:9hmjfRwNxvJLU

user1:wvQirF86BsjSk

範例 2

#sample group file

staff:j2ee user1

eng:j2ee

範例 3

#sample user/group file (username "j2ee", user password "j2eepwd")

j2ee:9hmjfRwNxvJLU:staff,eng

為基於摘要認證的目錄服務建立 ACL

檔案認證資料庫還支援一種檔案格式,適用於基於每個 RFC 2617 的摘要認證。此時將儲存一個基於密碼和領域的雜湊,且不維護清除文字密碼。

若要為基於摘要認證 (基於 digestauth) 的目錄服務建立 ACL,請執行下列步驟:

  1. 存取 [Server Manager] 並選取要為其建立或編輯 ACL 的伺服器實例。
  2. 從 [Server Manager] 選擇 [Preferences] 標籤。
  3. 按一下 [Restrict Access] 連結。
  4. 在 [Option] 欄下,從下拉式清單選擇 ACL 檔案,然後按一下 [Edit ACL]。
  5. 在上面框架中的 [Access Control Rules] 頁面中,按一下要編輯的 ACL 的 [Users/Groups] 連結。
  6. 在下面框架中的 [User/Group] 頁面中,從 [Authentication database] 下拉式清單選取 [digest]。
  7. 按一下 [Update]。
  8. 當您依據基於 digestauth 的檔案認證資料庫設定 ACL 時,dbswitch.conf 檔案使用相應 ACL 項目進行更新,如下面給出的範例項目:

    version 3.0;

    acl "default";

    authenticate (user) {

    prompt = "filerealm";

    database = "mydigestfile";

    method = "digest";

    };

    deny (all) user = "anyone";

    allow (all) user = "all";



上一個      目錄      索引      下一個     


Copyright 2004 Sun Microsystems, Inc. 版權所有。