Sun Java System Portal Server 6 Secure Remote Access 管理指南 2004Q2 |
第 5 章
Netlet本章會介紹如何使用 Netlet 在使用者遠端桌面以及在您的企業內部網站中執行應用程式的伺服器之間,以安全的方式執行應用程式。若要配置 Netlet,請參閱第 11 章,「配置 Netlet」。
本章涵蓋下列主題:
Netlet 簡介Sun Java System Portal Server 軟體使用者可能希望在他們的遠端桌面上,以安全的方式執行最常使用或公司特定的應用程式。在您的平台上設定 Netlet 之後,您就可以安全存取這些應用程式。
Netlet 會讓使用者在不安全的網路上 (如網際網路) 安全執行共用 TCP/IP 服務。您可以執行 TCP/IP 應用程式 (例如 Telnet 和 SMTP)、HTTP 應用程式以及任何固定的連接埠應用程式。
您可以在 Netlet 上執行應用程式,如果其為 TCP/IP 架構或是其使用固定連接埠。
Netlet 元件
Netlet 所使用的各種元件會顯示在圖 5-1 中。
圖 5-1 Netlet 元件
位於 localhost 上的偵聽連接埠
此為用戶端機器上 Netlet applet 偵聽的連接埠。用戶端機器為 localhost。
Netlet Applet
Netlet applet 負責在遠端用戶端機器和企業內部應用程式 (例如 Telnet、Graphon 或 Citrix) 之間設定加密的 TCP/IP 通道。Applet 會將封包加密並將它們傳送至「閘道」,並將來自「閘道」的回應封包解密,然後將它們傳送至本機的應用程式。
對於靜態規則,當使用者登入入口網站時,會自動下載 Netlet applet。對於動態規則,會在使用者在相對應的動態規則連結上按一下時,下載 applet。有關靜態和動態規則的詳細資訊,請參閱規則類型。
若要在 Sun Ray 環境中執行 Netlet,請參閱在 Sun Ray 環境 中執行 Netlet。
Netlet 規則
Netlet 規則會將需要在用戶端機器上執行的應用程式映射至相應的目標主機。這表示 Netlet 只會在已傳送至連接埠 (於 Netlet 規則中定義) 的封包上運作。這可確保取得較大的安全性。
作為管理員,您需要為 Netlet 的功能運作配置一些規則。這些規則指定了各種詳細信息,例如要使用的加密、要呼叫的 URL、要下載的 applet、目標連接埠以及目標主機。當用戶端機器上的使用者透過 Netlet 提出請求時,這些規則會協助確定如何建立連線。請參閱定義 Netlet 規則,以取得詳細資訊。
Netlet 提供者
此為 Netlet 的 UI 元件。提供者允許使用者透過 Portal Server, Secure Remote Access 桌面配置必要的應用程式。會在提供者中建立連結,而使用者按一下連結以執行必要的應用程式。使用者也可以將桌面中動態規則的目標主機指定為 Netlet 提供者。請參閱定義 Netlet 規則。
EProxy
所有用戶端請求會透過 EProxy 傳送。EProxy 僅會處理 Netlet 請求,並會將任何其它請求傳送至 RProxy。EProxy 會剖析 Netlet 請求並將它們傳送至 Netlet 代理伺服器 (如果有啟用) 或直接傳送至目標主機。
Netlet 代理伺服器 (選擇性)
「閘道」可確保為遠端用戶端機器以及「閘道」之間提供一條安全通道。Netlet 代理伺服器為選用選項,您可以在安裝時選擇不安裝此代理伺服器。有關 Netlet 代理伺服器的資訊,請參閱使用 Netlet 代理伺服器。
目標連接埠
此連接埠為目標應用程式主機將用於偵聽的連接埠。
Netlet 使用方案
使用 Netlet 將會順序發生下列事件:
- 遠端使用者登入至 Portal Server, Secure Remote Access 桌面。
- 如果已經為使用者、角色或組織定義靜態 Netlet 規則,則將會自動下載 Netlet applet 至遠端用戶端。
如果已經為使用者、角色或組織定義動態規則,則使用者需要在 Netlet 提供者中配置必要的應用程式。當使用者按一下 Netlet 提供者中的應用程式連結時,將會下載 Netlet applet。有關靜態和動態規則的詳細資訊,請參閱定義 Netlet 規則。
- Netlet 會偵聽在 Netlet 規則中定義的本機連接埠。
- Netlet 會通過 Netlet 規則中指定的連接埠,設定遠端用戶端與主機之間的通道。
使用 Netlet
為了使 Netlet 在運作時能夠符合不同組織中各種使用者的需要,您必須執行下列動作:
- 依據使用者需求確定是否需要建立靜態或動態規則。請參閱規則類型。
- 從 Identity Server 管理主控台上的「服務配置」標籤中,定義 Netlet 範本中的全域選項。請參閱第 11 章,「配置 Netlet」。
- 確定規則是否以組織、角色或使用者為基礎,並視需要在每個層級中做出修改。有關組織、角色和使用者的詳細資訊,請參閱「Portal Server 管理指南」。
從遠端主機下載 Applet偶爾 URL 會傳回需要從遠端主機取得的內嵌 applet 之頁面。然而 Java 安全性不允許 applet 與非其下載處的主機通訊。若要允許 applet 透過本機網路埠與「閘道」通訊,您必須核取 Identity Server 管理主控台上的「下載 Applet」欄位並指定以下語法:
client port:server host:server port
其中
local-port 是 Netlet 偵聽來自 applet 流量的本機連接埠
server-host 是下載 applet 之處
server-port 是用來下載 applet 的連接埠
定義 Netlet 規則Netlet 配置是透過 Netlet 規則定義,其中 Netlet 規則是在 Identity Server 管理主控台中「SRA 配置」區段底下進行配置。可為組織、角色或使用者配置 Netlet 規則。如果 Netlet 規則用於角色或使用者,請在選取組織之後選取想要的角色或使用者。
表 5-1 列出 Netlet 規則中的欄位。
表 5-1 Netlet 規則中的欄位
參數
描述
值
規則名稱
指定此 Netlet 規則的名稱。您需要為每個規則指定唯一的名稱。如此當您在定義使用者存取特定規則時將會非常有用。請參閱定義存取 Netlet 規則,以取得詳細資訊。
加密密碼
定義加密密碼,或是指定使用者可從中選擇的密碼清單。
您選取的密碼將會在 Netlet 提供者中以清單的形式出現。使用者可以從清單中選擇需要的密碼。
預設 - 會使用 Netlet 管理主控台中指定的「預設 VM 原生密碼」和「預設 Java Plugin 密碼」。
URL
指定當使用者按一下 Netlet 提供者中的相關連結時,瀏覽器所開啟的 URL。瀏覽器會開啟應用程式的視窗,並連接至稍後在規則中指定的本機連接埠號的 localhost。
您需要指定一個相對的 URL。
Netlet 規則所呼叫之應用程式的 URL。例如,telnet://localhost:30000。
如果應用程式使用 applet 來呼叫應用程式,則指定一個 URL。
null - 如果應用程式不是由 URL 所啟動,或者不是被桌面所控制時,您所設定的欄位值。它一般適用於非以網路為基礎的應用程式。
下載 Applet
指出是否需要為此規則下載 applet。
False - 不下載 applet。
True - 使用回送連接埠從 Portal Server 機器中下載 applet。
以 local-port:server-host:server-port 格式詳細指定 applet,其中:
- local-port 表示用戶端上的目標連接埠。此連接埠必須與預設的回送連接埠不同。請參閱第 11 章,「配置 Netlet」,以取得詳細資訊。為每個規則指定唯一的 local port。
- server-host 是會從該處下載 applet 的伺服器名稱。
- server-port 代表伺服器上用來下載 applet 的連接埠。
如果要下載 applet,而且未指定伺服器,則會從 Portal Server 主機下載 applet。
延伸階段作業
此將控制 Netlet 為作用中時 Portal Server 階段作業的閒置逾時。
Enabled - 僅在 Netlet 為作用中且入口網站應用程式的其餘部分為閒置時,需要設置為這個值以保持入口網站階段作業作用中。
Disabled - 即使在 Netlet 應用程式為作用中但入口網站應用程式為閒置的情況下,階段作業閒置時間逾時則入口網站階段作業閒置時間愈時。
本機連接埠
Netlet 偵聽之用戶端上的連接埠。
local-port 的值必須唯一。您不能夠在一個以上的規則中指定某特定的連接埠號。
如果您要為多個連線指定多個主機,請指定多個本機連接埠。有關語法的資訊,請參閱包含多個主機連線的靜態規則。
對於 FTP 規則,本機連接埠值必須為 30021。
目標主機
Netlet 連線的接收者。
host - 接收 Netlet 連線的主機名稱。此欄位用於靜態規則。使用簡單的主機名稱 (例如 siroe) 或完全合格的 DNS 式主機名稱 (例如 siroe.mycompany.com)。因下列原因指定多個主機:
- 與每個指定主機建立連線。您需要為每個指定的主機指定相對應的用戶端以及目標連接埠。有關語法的資訊,請參閱包含多個主機連線的靜態規則。
- 嘗試連接至指定主機清單中任何可用的主機。有關語法的資訊,請參閱選擇多個主機的靜態規則。
TARGET - 在語法中指定 TARGET 的規則為動態規則。TARGET 表示一般使用者能夠在桌面的 Netlet 提供者中指定一台或多台必要的目標主機。
在單個規則中,不可以同時有靜態主機和 TARGET。
目標連接埠
目標主機上的連接埠
除了主機與目標主機以外,您必須指定目標連接埠。
您可以在有多個目標主機的情況下,指定多個目標連接埠。以下列格式指定多個連接埠:port1+port2+port3-port4+port5。
連接埠號之間的加號 (+) 指出用於單一目標主機的替代連接埠。
連接埠號之間的減號 (-) 為不同目標主機連接埠號的分隔符號。
Netlet 在此會嘗試依序使用 port1、port2 和 port3 連接至指定的第一台目標主機。如果此項操作失敗,Netlet 會嘗試以 port4 和 port5 依次連接至第二台主機。
您只可以為靜態規則配置多個連接埠。
「閘道」要從 Portal Server 取得階段作業通知時,新增下列指令行:
com.iplanet.am.jassproxy.trustAllServerCerts=true
至下列的特性檔中
Portal Server 上的 /etc/opt/SUNWam/config/AMConfig.properties
2. 重新啟動 Identity Server。
規則類型
根據規則中指定目標主機的方式,Netlet 規則類型有兩種。
靜態規則
靜態規則會將目標主機作為規則的一部分指定。如果您建立一項靜態規則,使用者將無法指定需要的目標主機。在下列範例中,sesta 為目標主機。
規則名稱
加密密碼
URL
下載 Applet
延伸階段作業
本機連接埠
目標主機
目標連接埠
ftpstatic
SSL_RSA_WITH_RC4_128_MD5
null
false
true
30021
sesta
21
您可以為靜態規則配置多個目標主機和連接埠。有關範例,請參閱包含多個主機連線的靜態規則。
動態規則
在動態規則中,不會將目標主機作為規則的一部分指定。使用者可以在 Netlet 提供者中指定必要的目標主機。在下列範例中,TARGET 為目標主機的萬用字元。
規則名稱
加密密碼
URL
下載 Applet
延伸階段作業
本機連接埠
目標主機
目標連接埠
ftpdynamic
SSL_RSA_WITH_RC4_128_MD5
null
false
true
30021
TARGET
21
加密密碼
根據加密密碼,可進一步將 Netlet 規則依如下分類:
有關 Netlet 支援的密碼清單,請參閱支援的密碼。
有關 Netlet 支援的密碼清單,請參閱支援的密碼。
支援的密碼
表 5-2 列出 Netlet 支援的密碼。
向下相容性
先前的 Portal Server 版本並不支援將密碼作為 Netlet 規則的一部分。為了向下相容不含密碼的現有規則,規則會使用預設的密碼。不含密碼的現有規則如下:
規則名稱
加密密碼
URL
下載 Applet
延伸階段作業
本機連接埠
目標主機
目標連接埠
Telnet
telnet://localhost:30000
false
true
30000
TARGET
23
將被解譯為:
規則名稱
加密密碼
URL
下載 Applet
延伸階段作業
本機連接埠
目標主機
目標連接埠
Telnet
預設密碼
telnet://localhost:30000
false
true
30000
TARGET
23
這類似於「加密密碼」欄位已選擇為「預設」的「管理員配置的規則」。請參閱指定預設加密密碼,以取得詳細資訊。
Netlet 規則範例
本節包括一些 Netlet 規則的範例,以說明 Netlet 的語法。
基本靜態規則
本規則支援從用戶端至機器 sesta 的 Telnet 連線。
規則名稱
加密密碼
URL
下載 Applet
延伸階段作業
本機連接埠
目標主機
目標連接埠
myrule
SSL_RSA_WITH_RC4_128_MD5
null
false
true
1111
sesta
23
其中
myrule 為規則的名稱。
SSL_RSA_WITH_RC4_128_MD5 表示要使用的密碼。
null 表示此應用程式不是由 URL 所啟動或透過桌面執行。
false 表示用戶端並不會下載 applet 以執行此應用程式。
true 表示當 Netlet 連線在作用中的情況下 Portal Server 不應逾時。
1111 為用戶端上的連接埠,Netlet 會在此偵聽來自目標主機的連線請求。
sesta 是 Telnet 連線上接收者主機的名稱。
23 是目標主機上用於連線的連接埠號,在本例中即為已知的 Telnet 連接埠。
桌面 Netlet 提供者並不會顯示連結,但是 Netlet 會自動在指定的連接埠 (1111) 上啟動與偵聽。指示使用者啟動用戶端軟體─此情形中為連接至 localhost 的 Telnet 階段作業。
例如,如果要啟動 Telnet 階段作業,用戶端需要在終端機 UNIX 指令行中鍵入下列字元:
包含多個主機連線的靜態規則
本規則支援從用戶端至兩台機器,即 sesta 和 siroe 的 Telnet 連線。
規則名稱
加密密碼
URL
下載 Applet
延伸階段作業
本機連接埠
目標主機
目標連接埠
myrule
SSL_RSA_WITH_RC4_128_MD5
null
false
true
1111
sesta
23
1234
siroe
23
其中
23 是目標主機上用於連線的連接埠號 - Telnet 的保留連接埠。
1111 為用戶端上的連接埠,Netlet 會在此偵聽來自第一個目標主機 sesta 的連線請求。
1234 為用戶端上的連接埠,Netlet 會在此偵聽來自第二個目標主機 siroe 的連線請求。
本規則中前六個欄位與在基本靜態規則中介紹的欄位相同。差別在於有三個欄位用於識別第二個目標主機。
當您在規則中新增額外的目標,您必須為每個新的目標主機新增三個欄位:local port、destination host 和 destination port。
注意
您可以有多組此三個欄位,以描述與每個目標主機的連線。如果遠端用戶端是以 UNIX 為基礎,則不可以使用低於 2048 的偵聽連接埠號,原因是數字較低的連接埠將會受到限制,並且您必須是超級使用者才能夠啟動偵聽程式。
此規則的作用與先前的規則相同。Netlet 提供者並不顯示任何連結,但是 Netlet 會自動在指定的兩個連接埠 (1111 和 1234) 上啟動與偵聽。使用者需要啟動用戶端軟體,此情形中為連接至連接埠 1111 或連接至連接埠 1234 (主機範例 2)上 localhost 的 Telnet 階段作業。
選擇多個主機的靜態規則
使用此規則以指定多個替代主機。如果與規則中第一個主機的連線失敗,Netlet 會嘗試連接指定的第二個主機,以此類推。
規則名稱
加密密碼
URL
下載 Applet
延伸階段作業
本機連接埠
目標主機
目標連接埠
gojoe
SSL_RSA_WITH_RC4_128_MD5
/gojoe.html
8000:gojoeserver:8080
true
10491
siroe+sesta
35+26+491-35+491
其中
10491 為用戶端上的連接埠,Netlet 會在此偵聽來自目標主機的連線請求。
Netlet 會嘗試以相同順序,在連接埠 35、26 和 491 上建立與 siroe 的連線,視何者可用而定。
如果無法建立與 siroe 的連線,Netlet 會嘗試以相同順序連接連接埠 35 和 491 上的 sesta。
呼叫 URL 的動態規則
此規則可以讓使用者配置必要的目標主機,讓使用者可以通過 Netlet 遠程登入不同主機。
規則名稱
加密密碼
URL
下載 Applet
延伸階段作業
本機連接埠
目標主機
目標連接埠
myrule
SSL_RSA_WITH_RC4_128_MD5
telnet://localhost:30000
false
true
30000
TARGET
23
其中
myrule 為規則的名稱。
SSL_RSA_WITH_RC4_128_MD5 表示要使用的密碼。
telnet://localhost:30000 為規則所呼叫的 URL。
false 表示將不會下載任何 applet。
Extend Session(true) 表示當 Netlet 連線在作用中的情況下 Portal Server 不應逾時。
30000 為用戶端上的連接埠,Netlet 會在此偵聽此規則的連線需求。
TARGET 表示使用 Netlet 提供者的使用者需要配置的目標主機。
23 是 Netlet 開啟的目標主機上的連接埠,在本例中為已知的 Telnet 連接埠。
若要在新增規則之後執行 Netlet
在新增規則之後,使用者必須完成某些步驟,使得 Netlet 能夠如預期般執行。使用者需要在用戶端執行下列動作:
下載 Applet 的動態規則
本規則定義從用戶端至動態配置的主機之間的 GO-Joe 連線。規則會從 applet 所在的伺服器上將 GO-Joe applet 下載至用戶端。
規則名稱
加密密碼
URL
下載 Applet
延伸階段作業
本機連接埠
目標主機
目標連接埠
gojoe
SSL_RSA_WITH_RC4_128_MD5
/gojoe.html
8000:gojoeserve:8080
true
3399
TARGET
58
其中
gojoe 是規則的名稱。
SSL_RSA_WITH_RC4_128_MD5 表示要使用的密碼。
例如 /gojoe.html 是包含 applet 的 HTML 頁面的路徑,路徑應與部署入口網站的網路容器的說明文件根目錄是相對的。
8000:server:8080 表示連接埠 8000 是用戶端上用來接收 applet 的目標連接埠,gojoeserve 是提供 applet 的伺服器名稱,而 8080 則是伺服器上的連接埠,applet 則從該處下載。
Extended Session(true) 表示當 Netlet 連線在作用中的情況下 Portal Server 不應逾時。
3399 為用戶端上的連接埠,Netlet 會在此偵聽此類型的連線請求。
TARGET 表示使用 Netlet 提供者的使用者需要配置的目標主機。
58 為 Netlet 所開啟的目標主機上的連接埠,在本例中為 GoJoe 的連接埠。連接埠 58 為目標主機偵聽其本身通訊的連接埠。Netlet 會將資訊從新的 applet 傳送至此連接埠。
Netlet 規則範例表 5-3 列出某些共用應用程式中的範例 Netlet 規則。
表格中有 7 欄,與 Netlet 規則的下列欄位相對應。規則名稱、URL、下載 Applet、本機連接埠、目標主機、目標連接埠。最後一欄包含規則的說明。
注意
表 5-3 並不會列出 Netlet 規則的「密碼」和「延伸階段作業」欄位。假設提供的範例中這兩個欄位是 "SSL_RSA_WITH_RC4_128_MD5" 和 "true"。
啟用 Netlet 記錄您可以啟用「閘道」服務中記錄 Netlet 相關活動的選項。請參閱啟用 Netlet 記錄。Identity Server 配置屬性記錄區段的「記錄位置」屬性中指定有目錄,系統將在其中建立日誌檔。
此日誌檔名稱有下列慣例:
srapNetlet_gateway-hostname_gateway-profile-name
Netlet 日誌會擷取下列資訊:
在 Sun Ray 環境中執行 Netlet如果您希望執行的應用程式將 applet 下載至 Sun Ray 環境中的用戶端機器上,您需要變更 HTML 檔。以下是一個範例檔案,您可以透過該檔案瞭解必須執行的修改。
新的 HTML 檔
<!-- @(#)citrix_start.html 2.1 98/08/17 Copyright (c) 1998 i-Planet, Inc., All rights reserved. -->
<html>
<script language="JavaScript">
var KEY_VALUES; // KEY_VALUES['key'] = 'value';
function retrieveKeyValues() {
KEY_VALUES = new Object();
var queryString = '' + this.location;
queryString = unescape(queryString);
queryString = queryString.substring((queryString.indexOf('?')) + 1);
if (queryString.length < 1) {
return false; }
var keypairs = new Object();
var numKP = 0;
while (queryString.indexOf('&') > -1) {
keypairs[numKP] = queryString.substring(0,queryString.indexOf('&'));
queryString = queryString.substring((queryString.indexOf('&')) + 1);
numKP++;
}
// Store what's left in the query string as the final keypairs[] data.
keypairs[numKP++] = queryString;
var keyName;
var keyValue;
for (var i=0; i < numKP; ++i) {
keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
while (keyValue.indexOf('+') > -1) {
keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
}
keyValue = unescape(keyValue);
// Unescape non-alphanumerics
KEY_VALUES[keyName] = keyValue;
}
}
function getClientPort(serverPort) {
var keyName = "clientPort['" + serverPort +"']";
return KEY_VALUES[keyName];
}
function generateContent() {
retrieveKeyValues();
var newContent =
"<html>\n"
+ "<head></head>\n"
+ "<body>\n"
+ "<applet code=\"com.citrix.JICA.class\" archive=\"JICAEngN.jar\" width=800 height=600>\n"
+ "<param name=\"cabbase\" value=\"JICAEngM.cab\">\n"
+ "<param name=\"address\" value=\"localhost\">\n"
+ "<param name=ICAPortNumber value="
+ getClientPort('1494')
+ ">\n"
+ "</applet>\n"
+ "</body>\n"
+ "</html>\n";
document.write(newContent);
}
</script>
<body onLoad="generateContent();">
</body>
</html>
拒絕的 HTML 檔:
<html>
<body>
<applet code="com.citrix.JICA.class" archive="JICAEngN.jar" width=800 height=600>
<param name="cabbase" value="JICAEngM.cab">
<param name="address" value="localhost">
<param name=ICAPortNumber value=1494>
</applet>
</body></html>