全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1366
推到 Plurk!
推到 Facebook!

分散式COM如何通過防火牆

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-22 11:18:08 IP:61.221.xxx.xxx 未訂閱
此為轉貼資料 分散式COM如何通過防火牆 http://www.china-pub.com/computers/emook/1182/info.htm 分散式COM如何通過防火牆 作者:張勇 發佈時間:2001/08/28 文章摘要: 這篇文章主要介紹如果配置分散式元件物件模型(DCOM)通過防火牆。首先假設讀者已經熟悉TCP和UDP協定,並理解防火牆的一些基本概念。還有下面介紹的埠限制技術將工作在Windows NT環境下,Windows 95目前不支援該功能(但是不用擔心,大部分情況下不需要)。 -------------------------------------------------------------------------------- 正文: 分散式COM如何通過防火牆 1、引言 這篇文章主要介紹如果配置分散式元件物件模型(DCOM)通過防火牆。首先假設讀者已經熟悉TCP和UDP協定,並理解防火牆的一些基本概念。還有下面介紹的埠限制技術將工作在Windows NT環境下,Windows 95目前不支援該功能(但是不用擔心,大部分情況下不需要)。還有一點注意的是,本文討論的很多內容也適用於那些使用動態埠的遠端程序呼叫(RPC)系統。 2、實現原理 不像大部分Internet應用程式都是採用固定的TCP或UDP埠,DCOM在運行的時候給每個服務於DCOM物件的可執行進程動態的賦予一個TCP埠和一個UDP埠。儘管一個進程可以容納2000個客戶和50000個物件,每個要和該進程中的物件進行通信的客戶都是通過相同TCP或UDP埠。用戶端使用DCOM的服務控制管理者(SCM)提供的服務來得到一個特定物件相關的埠。SCM總是運行在電腦的一個固定的網路埠上,通常對於TCP和UDP都是135號埠。SCM也提供多個基於RPC(不是基於DCOM/ORPC)的服務,他們用於處理下列操作,如:"爲我生成一個新的COM類物件,並告訴我它在哪個TCP和UDP埠上","我擁有一個介面指標,告訴我到哪里用它"等等。關於進程和DCOM協定的一個更詳細的解釋可以參見分散式物件協定--DCOM/1.0。 DCOM的動態埠分配特點給程式師提供了很大的自由度,並且也免除了管理員配置應用程式埠和解決多個應用程式競爭一個埠的麻煩。不幸的是,因爲DCOM缺省的情況下是在1024-65535之間隨機選擇埠給應用程式的,導致防火牆的配置比較麻煩。如果爲了使用DCOM,把這個範圍的埠都放開的話,那麽就存在著嚴重的安全漏洞。微軟的開發者認識到這點,並實現了一個功能來允許你限制DCOM分配埠的範圍。 有一點要提示的,在DCOM中回調功能不是在同一個連接上處理的。當一個伺服器向客戶發起了一個回調,它産生了一個新的到用戶端的連接,在這個獨立的通道上發送調用方法。換句話說,DCOM將回調看作任何其他的客戶/伺服器調用一樣,除了"客戶"變成了伺服器,"伺服器"實際上是客戶。某些情況下(比較少見),如果你的防火牆限制了只許指定的埠從內部連到外部,你需要在用戶端配置埠限制。 注意,如果你要在防火牆的環境中用回調功能,你必須使用TCP。原因是:當伺服器對客戶發起了一個調用,源埠不在允許的範圍中。因此,當客戶向伺服器的源埠回復資訊時,被防火牆拒絕。而這對於TCP則不算什麽問題,因爲大部分防火牆都跟蹤TCP連接,允許連接的雙向通信,不管源埠配置,只要這個埠來自於防火牆內部的機器。 最後要注意的是,客戶必須能夠以真實的IP位址連到伺服器。不能在防火牆上使用地址轉換功能。這是因爲DCOM將原始IP位址存在介面配置包中,如果客戶不能連到包中的地址,那麽就導致通信失敗。 3、具體的配置方法: 3.1 配置DCOM,只許使用TCP 下面是各個系統平臺間採用的協定 平臺 協定 Windows NT4.0 ?---à Windows NT4.0 UDP Windows NT5.0 ?--à Any TCP(*) Windows 95/98 ?---à Any TCP DCOM for UNIX ?---à Any TCP l 在WindowsNT4.0客戶嘗試連到非WinNT4.0平臺的DCOM伺服器情況下,嘗試通過UDP連接需要花費30-45秒的延時。Win95、Win98和WinNT5.0、DCOM for Linux(包括微軟的DCOM for Linux産品和AG的Entrex産品)總是使用TCP協定。 WindowsNT4.0通常都採用UDP協定,因爲測試表明某些情況下UDP要比TCP性能好些。但是要想讓UDP應用通過防火牆並且不影響安全是很困難的。所以首先要確保採用在所有Windows NT上缺省使用TCP協定。方法是:在HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc註冊表項的DCOM協定列表中,將"NCACN_IP_TCP"放在最上層。要想刪除連接TCP伺服器的30-45秒的延時,需要在Windows NT的用戶端也進行想用的設置。 WindowsNT5.0的DCOM實現缺省採用的就是TCP,因爲不可能在UDP上實現SSL和SNEGO安全協定。 3.2 限制TCP埠的範圍 所有與設置DCOM埠範圍的註冊表項都在下面列出了,他們都在HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet主鍵下(需要手動生成)。注意:只需要在伺服器端的機器上設置,用戶端會在SCM的控制下自動選擇。 還有,必須用regedt32.exe來配置下面的註冊項,regedit.exe當前還不支援REG_MULTI_SZ類型。但你改變了下面的註冊項後,必須重新啓動機器。 名字 類型 值 描述 Ports REG_MULTI_SZ 每行制訂一個埠範圍3000-40005142 一個或多個埠範圍 PortsInternetAvailable REG_SZ Y 總是設置爲Y UseInternetPorts REG_SZ Y或N 設置爲Y,則Ports中的數值表示允許使用的埠範圍。設置爲N,則Ports重的數值表示不允許使用的埠範圍 強烈推薦:設定埠號>5000的一個許可範圍。埠號低於5000可能正在被其他應用程式使用,從而産生衝突。 3.3 限定特定應用程式的Internet訪問許可權 可以控制DCOM應用程式通過指定的埠範圍來訪問Internet。步驟如下: (1) 改變上面註冊表項UseInternetPorts爲N,以至於DCOM物件伺服器(RPC伺服器)不能自動通過這些埠。重新啓動機器 (2) 將下面的代碼片斷加入到DCOM物件服務應用程式的CoInitializeEx()前面。 RPC_POLICY rp; p.Length = sizeof (RPC_POLICY); rp.EndpointFlags = RPC_C_USE_INTERNET_PORT; rp.NICFlags = RPC_C_BIND_TO_ALL_NICS; hr = RpcServerUseAllProtseqsEx (RPC_C_PROTSEQ_MAX_REQS_DEFAULT,NULL,&rp); (3) 將rpcrt4.lib加入到Makefile文件的link命令行中。 3.4 配置防火牆 在你的伺服器和Internet之間的防火牆需要配置如下: (1) 禁止所有外部到你的伺服器的進入流量 (2) 允許從所有客戶到你的伺服器的TCP 135埠(UDP 135)的進入流量 (3) 允許從所有客戶到你伺服器在Ports範圍中的TCP埠的進入流量 (4) 如果正在使用回調功能,配置允許連接起始於你的伺服器所有TCP的所有相關埠的訪問。 警告:包含在WindowsNT4.0 Service Pack4中的DCOMCNFG工具也提供手段配置埠範圍,不需要直接編輯註冊表項。但是不好的是,使用該工具經常導致許多RPC應用程式在下次重啓機器後工作不正常。如果發生這種事情,刪除HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet註冊表項,重新啓動機器。 作者會員名:greatzy ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-05-03 22:36:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!