• 沒有找到結果。

實作之協防應用程式架構

在文檔中 中 華 大 學 (頁 38-43)

第五章、 平台與協防應用服務實作

5.3 實作之協防應用程式架構

圖 5-6:Packet Filter Message Generator 程式畫面

並在 PAA 的程式畫面的”Publish Msg”按鈕中設計了一個開啟檔案對話窗,

以供使用者快速選擇欲發佈應用服務。

5.3.1 虛擬閘道伺服器

現 在 的 區 域 網 路 設 備 多 為 交 換 器 , 交 換 器 的 特 性 是 依 照 封 包 中 MAC Address,將封包由快取中所記錄的實體 Port 轉送到對應的 Port,而如果未能將 區域網路中的封包導向到具有協防系統的節點,則協防系統無法監聽與攔截網 路封包。如圖 5-8 所示。由於先前研究是在 IDS/IPS 系統上,其位於閘道伺服器 前端。所以傳輸的封包會經由 IDS/IPS 主機記錄後傳送至網際網路,由於我們 希望能更深入區域網路中。大多數的 switch 都無 Mirror Port 功能,使用在區域 網路中要達到監聽功能更加困難。

如果無法監聽到區域網路中傳送的封包,將使得網路協防系統的覆蓋率大 幅的下降,對於能有效進行協防的節點僅能限於 Router 或 Gateway 上。加上各 廠商所開發的 Router 與 Gateway 平台皆不相同。難以擴大協防範圍。將使協防 系統流為形式。

為解決在 Switch 下無法監聽的問題,我們利用虛擬閘道伺服器的技巧,在 有 Switch 的環境下,不更動 Switch 設定,而透過 ARP 與 RARP 的機制。將自 已變成虛擬閘道伺服器。當封包要傳送時,會自動的將封包先送至虛擬閘道伺 服器,再由虛擬閘道伺服器偱正常路徑傳送至直實閘道伺服器。

圖 5-8:正常傳輸路徑

在不影響現有的網路運作的情況下,我們在虛擬閘道伺服器中設計以 ARP 欺騙的機制,使區域網路中主機將虛擬閘道伺服器視為合法閘道伺服器,並欺 騙真實的閘道伺服器。將虛擬主機視為合法的區網主機,此時仍可保持網路的 正常運作而且使其它用處於同一區網內的主機視為真實的閘道伺服器,使得 Switch 在收到封包時,會先轉送至虛擬主機,再由虛擬主機進行分析與過濾 後,再將封包轉送至真實閘道伺服器或丟棄。在如圖 5-9 所示。

圖 5-9:虛擬傳輸路徑

其原理是在 ARP 封包中,將 ARP 封包的來源 IP 位址填入真實閘道伺服器 的 IP,但其來源 MAC 位址填入虛擬主機的 MAC,當網路中的電腦要傳送至網 際網路時,發出 ARP Request 封包時,虛擬伺服器就會發送假的 ARP 封包給予 欲連線的主機。而欲連線的主機收到偽造封包時,則會認為 ARP 封包是正確 的,而在傳送封包時,在其目的端 MAC 位址則填入虛擬伺服器的 MAC 位址,

傳得封包在傳輸至真實閘道伺服器之前會先傳送至虛擬伺服器。另一個問題是 我們已經讓連出封包能經過虛擬伺服器送至網際網路,而回應的封包也要能流 經虛擬伺服器,所以我們將 ARP 封包中,填入區域網路裡的主機 IP 位置,但 其 MAC 位址填入虛擬閘道伺服器之 MAC 位址,傳送給真實閘道伺服器,當回 應的封包送回給真實閘道伺服器時,會先送至虛擬閘道伺服器。使得區域網路 中的電腦在雙向的封包傳送時,能夠正常的傳送封包,使得網路不致中斷。

在先前的研究中,基於分散式協防架構中的成員並非閘道伺服器或路由 器,是無法防禦其區域網路。在我們的方法中所需的虛擬閘道伺服器是讓協防 系統的節點透過 ARP 欺騙的方式。讓節點所扮演的角色介於 IDS 與 IPS 中間。

由於有前述的好處,在本平台中設計 IDS 或 IPS 應用服務皆具有相當大的彈 性。本論文實作後面的範例為封包監聽功能就是 IDS 所扮演的角色。而攔截功 能就是 IPS 中的其中一種特性。透過虛擬伺服器機制,虛擬伺服器停擺時,將 不會發出偽造的 ARP 封包,及正在傳輸中的封包會找尋不到目的地,而重新發 送 ARP 封包,則可取得正確的閘道伺服器位址。經過一小段的網路中斷後,即 可恢復正常傳輸,所以本方法結合了 IDS 與 IPS 優良的特性。當防禦系統無法 正常運作時。網路功能依然保持正常。

5.3.2 封包監聽與攔截系統

在本系統中,封包監聽是非常重要的一環,由於系統提供連線記錄,及後 續的封包攔截皆由此系統提供此服務,本系統加入 P2P 網路的節點的網路具有 封包監聽攔截功能,透過 Winpcap 函式庫讓網卡進入監聽模式,以接收虛擬閘 道伺服器所偽裝後,監聽區網內的鄰居及真實閘道伺服器傳送的封包。經由協 防系統監聽封包的過程中,同時記錄區域網路與外部網路的連線資訊,並對正 常封包進行 Forward 的動作,並對異常封包執行攔截動作,本實作之封包設定 為資料長度為 0 之封包,如 SYN、ACK、FIN ACK 等封包予以記錄。如圖 5-10 所示。

圖 5-10:封包攔截與監聽記錄

5.3.3 Winpcap 開發元件函式庫功能說明

Function pcap_open_live(Device:String; SnapLen:LongWord; Promisc:boolean;

To_ms:integer; var errstr:String) : ppcap; 啟動 winpcap。

Function pcap_read(p:Pcap;cnt:integer;CallBack:Tpcap_handler;User: pointer ):

integer; 讀取封包。

Function pcap_stats (P: pPcap;ps: PPcap_stat) : integer; 取得狀態。

Function pcap_setbuff (p : Ppcap; dim: integer) : integer; 設定 Buffer 大小。

Procedure pcap_close (var p : ppcap); 關閉 winpcap。

Function pcap_lookupdev(var ErrStr:string) : pchar; 找尋網路卡。

Function pcap_loop(P:Ppcap;cnt:integer;Callback:Tpcap_handler;

user:pointer ) : integer; 循環讀取。

Function pcap_datalink(P:PPcap) : integer; 資料連結。

Function pcap_getwinversion(var verstr:string) : Twinversion; 取得 windows 版 本。

Function Pcap_getAdapternames(Delimiter:char;var ErrStr:string):string; 取 得 網路卡名稱。

Function Pcap_GetAdapternamesEx (NameList, DescList: TStringList; var ErrStr:string):integer; 取得網路卡名稱 EX。

Function Pcap_GetDriverVersion: string ;取得驅動程式版本。

Function Pcap_GetPacketVersion: string ;取得封包版本。

Function Pcap_GetIPAddresses (AdapterName: string ; var IPArray, MaskArray, BcastArray: IPAddrArray; var ErrStr:string): integer ;取得網卡 IP 位址。

Function Pcap_SetMinToCopy (P: pPcap ; nbytes: integer) : integer;

Function Pcap_GetMacAddress (P: pPcap; var ErrStr:string): TMacAddr ;取得 網卡 MAC 位址。

應用程式的開發以 Winpcap 所提供的函式開發。

在文檔中 中 華 大 學 (頁 38-43)

相關文件