朱 琪
(阜陽(yáng)幼兒師范高等專科學(xué)校 科學(xué)與健康系 ,安徽 阜陽(yáng) 236015)
目前,許多企業(yè)和政府機(jī)構(gòu)都建立了自己的內(nèi)部網(wǎng)絡(luò)作為整個(gè)部門的信息系統(tǒng)骨干。全球信息和網(wǎng)絡(luò)安全問(wèn)題日益突出,大多數(shù)網(wǎng)絡(luò)安全機(jī)制,包括防火墻、入侵檢測(cè)、漏洞掃描、CA、VPN、反病毒等都不能有效地解決網(wǎng)絡(luò)安全問(wèn)題[1]。由于缺乏有效的解決方案,大多數(shù)用戶都采用將內(nèi)部網(wǎng)絡(luò)與外部公共網(wǎng)絡(luò)斷開(kāi)以保護(hù)私有信息。然而,這種方法也為信息交換帶來(lái)了不便,不利于發(fā)揮互聯(lián)網(wǎng)信息共享的功能。物理隔離技術(shù)是為了確保私有網(wǎng)絡(luò)的安全性,并實(shí)現(xiàn)私有網(wǎng)絡(luò)和公共網(wǎng)絡(luò)之間的信息交換[2]。內(nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)之間的物理隔離能夠真正保證內(nèi)部網(wǎng)絡(luò)信息的安全。此外,物理隔離為內(nèi)部網(wǎng)絡(luò)劃定了清晰安全的邊界,增強(qiáng)了網(wǎng)絡(luò)的可控性,便于內(nèi)部管理。鑒于目前嚴(yán)峻的網(wǎng)絡(luò)安全形勢(shì)以及物理隔離技術(shù)的優(yōu)勢(shì),國(guó)家保密部門發(fā)布《國(guó)家計(jì)算機(jī)信息系統(tǒng)網(wǎng)絡(luò)保密規(guī)定》,明確表示:涉及國(guó)家秘密的計(jì)算機(jī)信息系統(tǒng)不應(yīng)直接或間接地連接到互聯(lián)網(wǎng)或其他公共信息網(wǎng)絡(luò)[3]。根據(jù)這一規(guī)定,政府和一些企業(yè)必須在私有網(wǎng)絡(luò)和公共網(wǎng)絡(luò)之間實(shí)現(xiàn)物理隔離。目前,物理隔離技術(shù)已經(jīng)成為電子政務(wù)、電子商務(wù)和國(guó)家重要網(wǎng)絡(luò)中必須采用的一項(xiàng)技術(shù)。因此,設(shè)計(jì)高性能、高可靠性物理隔離技術(shù)的網(wǎng)絡(luò)隔離器對(duì)于改善網(wǎng)絡(luò)安全狀況和保護(hù)網(wǎng)絡(luò)信息安全具有重要意義。
在物理隔離系統(tǒng)中,內(nèi)部網(wǎng)絡(luò)不應(yīng)該直接或間接地連接到外部公共網(wǎng)絡(luò)(一般是指互聯(lián)網(wǎng))。為了實(shí)現(xiàn)不同安全級(jí)別網(wǎng)絡(luò)之間的數(shù)據(jù)交換,隔離系統(tǒng)需要中斷內(nèi)部網(wǎng)絡(luò)與外部網(wǎng)絡(luò)的連接,取消對(duì)TCP/IP協(xié)議的支持,不依賴于操作系統(tǒng),并采取訪問(wèn)控制、認(rèn)證、內(nèi)容過(guò)濾等安全檢查機(jī)制。基于雙網(wǎng)物理隔離的需求,本文設(shè)計(jì)了物理網(wǎng)絡(luò)隔離系統(tǒng)的框架,以確保內(nèi)部網(wǎng)絡(luò)信息的安全。雙網(wǎng)物理隔離系統(tǒng)的框架如圖1所示。
圖1 雙網(wǎng)物理隔離系統(tǒng)框架設(shè)計(jì)
隔離器需要實(shí)現(xiàn)物理隔離功能,因此要將網(wǎng)絡(luò)通信協(xié)議的每一層斷開(kāi)。TCP/IP參考模型是目前廣泛使用的網(wǎng)絡(luò)通信協(xié)議族,由四個(gè)協(xié)議層組成:數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。在實(shí)現(xiàn)協(xié)議層的斷開(kāi)之前,需要將物理鏈路斷開(kāi)。
實(shí)現(xiàn)物理鏈路的斷開(kāi):當(dāng)內(nèi)部網(wǎng)絡(luò)需要傳輸數(shù)據(jù)時(shí),外部網(wǎng)絡(luò)與雙網(wǎng)物理隔離系統(tǒng)的物理鏈路就會(huì)斷開(kāi),而內(nèi)部網(wǎng)絡(luò)則會(huì)保持與隔離系統(tǒng)的連接,內(nèi)部網(wǎng)絡(luò)將數(shù)據(jù)傳輸?shù)礁綦x系統(tǒng)進(jìn)行處理,然后內(nèi)部網(wǎng)絡(luò)與隔離系統(tǒng)的物理鏈路就會(huì)斷開(kāi),而外部網(wǎng)絡(luò)與隔離系統(tǒng)進(jìn)行連接,此時(shí)隔離系統(tǒng)將內(nèi)部網(wǎng)絡(luò)的數(shù)據(jù)傳輸?shù)酵獠烤W(wǎng)絡(luò)。
實(shí)現(xiàn)TCP/IP協(xié)議棧的斷開(kāi):TCP/IP協(xié)議棧的數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層以及應(yīng)用層斷開(kāi)實(shí)質(zhì)上就是數(shù)據(jù)包封裝的逆過(guò)程。一個(gè)包含數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層頭部的數(shù)據(jù)包格式如圖2所示。
以太網(wǎng)頭部IP頭部TCP頭部應(yīng)用層頭部原始數(shù)據(jù)以太網(wǎng)尾部
圖2數(shù)據(jù)包格式
當(dāng)數(shù)據(jù)包從內(nèi)部(或外部)網(wǎng)絡(luò)進(jìn)入雙網(wǎng)物理隔離系統(tǒng)時(shí),隔離系統(tǒng)會(huì)先對(duì)數(shù)據(jù)包進(jìn)行TCP/IP協(xié)議棧的斷開(kāi),即將圖2數(shù)據(jù)包中以太網(wǎng)頭部尾部、IP頭部、TCP頭部以及應(yīng)用層頭部剝離。剩下的原始數(shù)據(jù)經(jīng)過(guò)隔離器處理后,又會(huì)被重新封裝并轉(zhuǎn)發(fā)到外部(或內(nèi)部)網(wǎng)絡(luò)。這樣的操作可以預(yù)防針對(duì)協(xié)議層的網(wǎng)絡(luò)攻擊,從而保護(hù)了信息的安全。
為了保證雙網(wǎng)物理隔離系統(tǒng)的數(shù)據(jù)傳輸?shù)乃俣?,本系統(tǒng)使用PCIe(Peripheral Component Interconnect Express)總線[4]來(lái)連接系統(tǒng)的各個(gè)部分。PCIe是一種高速串行計(jì)算機(jī)擴(kuò)展總線標(biāo)準(zhǔn),是舊標(biāo)準(zhǔn)PCI總線的擴(kuò)展版本。與舊標(biāo)準(zhǔn)相比,PCIe具有較高的最大系統(tǒng)總線吞吐量、較小的管腳數(shù)、更好的總線設(shè)備擴(kuò)展性能、更詳細(xì)的錯(cuò)誤檢測(cè)和報(bào)告機(jī)制(Advanced Error Reporting,AER[5]),并支持本地?zé)岵灏喂δ?。本雙網(wǎng)物理隔離系統(tǒng)采用Linux操作系統(tǒng),其原因在于Linux系統(tǒng)具有以下的優(yōu)勢(shì):Linux內(nèi)核實(shí)現(xiàn)了完備且詳細(xì)的網(wǎng)絡(luò)協(xié)議棧;開(kāi)源的特性為L(zhǎng)inux提供了大量的軟件資源;Linux的驅(qū)動(dòng)程序易于編寫和修改;Linux運(yùn)行效率高,對(duì)計(jì)算機(jī)的要求低;支持多任務(wù)、多用戶。
硬件架構(gòu)為雙網(wǎng)物理隔離系統(tǒng)提供了數(shù)據(jù)傳輸?shù)臈l件,也是保證信息安全、高效的基礎(chǔ)。硬件系統(tǒng)需要設(shè)置有較大的緩存來(lái),而且需要支持高速的數(shù)據(jù)傳輸,以確保網(wǎng)絡(luò)隔離系統(tǒng)的性能?;诟綦x系統(tǒng)的需求,本系統(tǒng)選擇以下的硬件構(gòu)成主要的硬件系統(tǒng):
● 邏輯控制芯片:采用FPGA芯片,型號(hào)為Intel Cyclone 10系列10CL016YU484C8G;
● 緩存芯片:采用由Integrated Device Technology公司生產(chǎn)的SRAM,型號(hào)是IDT71V416S/L;
● 橋接芯片:采用由PLX公司生產(chǎn)的PCIe芯片,型號(hào)是PEX 8696。
雙網(wǎng)物理隔離系統(tǒng)的硬件架構(gòu)如圖3所示。
圖3系統(tǒng)硬件架構(gòu)
在Linux環(huán)境下編寫驅(qū)動(dòng)程序的其中一種方法是:將驅(qū)動(dòng)程序作為內(nèi)核模塊來(lái)實(shí)現(xiàn)。這種方法不需要重新編譯內(nèi)核來(lái)添加新的驅(qū)動(dòng)程序。下面將給出動(dòng)程序模塊的主要實(shí)現(xiàn)過(guò)程。
3.1.1 加載/卸載驅(qū)動(dòng)程序模塊 加載模塊的主要代碼如下所示:
static int my_driver_init(void)
{ return 0;}
module_init(my_driver_init);
卸載模塊的主要代碼如下所示:
static void my_driver_exit(void)
{ return;}
module_exit(my_driver _exit);
3.1.2 注冊(cè)設(shè)備 Linux的設(shè)備文件通常保存在/dev文件夾,可以通過(guò)將參數(shù)寫入設(shè)備文件將參數(shù)傳遞給相應(yīng)的模塊。設(shè)備文件有兩種:字符文件和塊文件。字符文件是非緩沖的,而塊文件是緩沖的。字符文件允許逐字讀寫數(shù)據(jù),而塊文件只允許寫入整個(gè)數(shù)據(jù)塊。Linux系統(tǒng)有一種方法可以通過(guò)主設(shè)備號(hào)來(lái)識(shí)別設(shè)備文件,主設(shè)備號(hào)用于識(shí)別服務(wù)于設(shè)備文件或一組設(shè)備的模塊,以及用于識(shí)別主設(shè)備號(hào)指定的一組設(shè)備中的特定設(shè)備的次設(shè)備號(hào)。在驅(qū)動(dòng)程序代碼中,可以將這些數(shù)字定義為常量,也可以動(dòng)態(tài)分配。實(shí)現(xiàn)注冊(cè)字符設(shè)備的函數(shù)如下:
int register_chrdev (unsigned int major,
const char *name,
const struct fops);
file_operations *
3.1.3 指定設(shè)備名稱 注冊(cè)設(shè)備需要指定設(shè)備的名稱和主要編號(hào),然后將file_operations結(jié)構(gòu)與設(shè)備關(guān)聯(lián)。本系統(tǒng)所使用的Linux內(nèi)核版本是2.6.32,其file_operations的結(jié)構(gòu)定義如下:
struct file_operations {
struct module *owner;
loff_t (*llseek) (struct file *, loff_t, int);
ssize_t (*read) (struct file *, char *, size_t, loff_t *);
...... };
3.2.1 抓包程序設(shè)計(jì) 本系統(tǒng)使用數(shù)據(jù)包捕獲函數(shù)庫(kù)libpcap進(jìn)行抓包程序的設(shè)計(jì),該函數(shù)庫(kù)也可以用于數(shù)據(jù)包過(guò)濾、協(xié)議分析等場(chǎng)景。抓包程序的主要步驟如下所示:
● 綁定網(wǎng)絡(luò)設(shè)備:抓包的第一步是指定相關(guān)的硬件設(shè)備,即綁定網(wǎng)卡,可以使用libpcap函數(shù)庫(kù)中的函數(shù)pcap_lookupdev()實(shí)現(xiàn);
● 打開(kāi)網(wǎng)絡(luò)設(shè)備:綁定設(shè)備后,需要打開(kāi)網(wǎng)絡(luò)設(shè)備,創(chuàng)建一個(gè)嗅探會(huì)話,使用函數(shù)pcap_open_live()實(shí)現(xiàn);
由于缺少科學(xué)的激勵(lì)考核機(jī)制,忽視人的核心利益和心理需要,嚴(yán)重影響員工的工作積極性,忽視人的潛能釋放和長(zhǎng)遠(yuǎn)發(fā)展[2]。在用人方面缺乏科學(xué)的績(jī)效評(píng)價(jià)機(jī)制,提升往往取決于上司的個(gè)人好惡,使客觀、公平、公正的選人原則難以體現(xiàn),缺乏與績(jī)效考核掛鉤的收入分配機(jī)制。長(zhǎng)此以往,員工工作情緒低落,滿足感缺失,最終導(dǎo)致大量的人才流失。
● 設(shè)置過(guò)濾器:當(dāng)嗅探會(huì)話建立后,先使用函數(shù)pcap_compile()編譯過(guò)濾器,然后使用pcap_setfilter()設(shè)置過(guò)濾器;
● 捕獲數(shù)據(jù)包:本系統(tǒng)選擇函數(shù)pcap_loop()進(jìn)行抓包。
3.2.2 數(shù)據(jù)包剝離和封裝程序設(shè)計(jì) 捕獲數(shù)據(jù)包后就可以對(duì)數(shù)據(jù)包進(jìn)行協(xié)議層頭部的剝離操作,首先需要先定義協(xié)議層頭部的數(shù)據(jù)結(jié)構(gòu),然后才能對(duì)它們進(jìn)行類型轉(zhuǎn)換。數(shù)據(jù)鏈路層采用以太網(wǎng)協(xié)議,其頭部結(jié)構(gòu)包含了協(xié)議類型、源MAC地址和目的MAC地址;網(wǎng)絡(luò)層采用IP協(xié)議,主要結(jié)構(gòu)包括了版本號(hào)、源IP地址、目的IP地址等;傳輸層采用傳輸控制協(xié)議(TCP),主要的結(jié)構(gòu)有源端口號(hào)、目的端口號(hào)、序列號(hào)、檢驗(yàn)碼等等。實(shí)現(xiàn)類型轉(zhuǎn)換的主要代碼如下所示:
const struct ethernet_header *ether_header;
const struct ip_header *ip_header;
const struct tcp_header *tcp_header;
const char *payload;
ether_header = (struct ethernet_header*)(packet);
ip_header = (struct ip_header *)(packet + 14);
ipsize = IP_HL(ip)*4;
printf(“error ”);
return;}
tcp_header = (struct tcp_header *)(packet + 14 + ipsize);
tcpsize = TH_OFF(tcp)*4;
if (tcpsize < 20) {
printf(“error ”);
return;}
payload = (u_char *)(packet + 14 + size_ip + tcpsize);
以數(shù)據(jù)包從外部網(wǎng)絡(luò)進(jìn)入內(nèi)部網(wǎng)絡(luò)為例,數(shù)據(jù)包協(xié)議層的剝離和重新封裝過(guò)程如圖4所示。
圖4 數(shù)據(jù)包協(xié)議層剝離和封裝過(guò)程
a.發(fā)送前測(cè)試文本 b. 接收到的文本
圖6對(duì)比實(shí)驗(yàn)拓?fù)鋱D7數(shù)據(jù)傳輸效率對(duì)比結(jié)果
安全性和高效性是雙網(wǎng)物理隔離系統(tǒng)主要的兩個(gè)性能需求。由于篇幅有限,本小節(jié)僅對(duì)高效性的評(píng)估結(jié)果進(jìn)行闡述。首先,當(dāng)數(shù)據(jù)包從外部網(wǎng)絡(luò)(或內(nèi)部網(wǎng)絡(luò))經(jīng)過(guò)物理隔離系統(tǒng)到達(dá)內(nèi)部網(wǎng)絡(luò)(或外部網(wǎng)絡(luò))時(shí),需要對(duì)數(shù)據(jù)包的協(xié)議層頭部進(jìn)行剝離和封裝(如圖4),這一操作可能會(huì)破壞數(shù)據(jù)包中原始數(shù)據(jù)的完整性。對(duì)此,我們?cè)趦?nèi)部網(wǎng)絡(luò)隨機(jī)生成一個(gè)測(cè)試文本文件,并將該測(cè)試文件通過(guò)隔離系統(tǒng)發(fā)送到外部網(wǎng)絡(luò),評(píng)估結(jié)果如圖5所示。圖5a是發(fā)送前的文本,圖5b則是接收到的文本,對(duì)比結(jié)果圖可知,本文的隔離系統(tǒng)能夠保證數(shù)據(jù)包的完整性。
接下來(lái)利用對(duì)比實(shí)驗(yàn)對(duì)隔離系統(tǒng)的數(shù)據(jù)傳輸效率進(jìn)行評(píng)估,比較內(nèi)、外網(wǎng)絡(luò)直接相連接(如圖6a所示)以及內(nèi)、外網(wǎng)絡(luò)通過(guò)本隔離系統(tǒng)進(jìn)行連接(如圖6b所示)的平均時(shí)延,實(shí)驗(yàn)進(jìn)行50秒,時(shí)延的采樣周期是1秒,評(píng)估結(jié)果如圖7所示。從圖7可以看出,在內(nèi)外網(wǎng)之間引入本隔離系統(tǒng)會(huì)帶來(lái)額外的平均時(shí)延。但是由于平均時(shí)延的單位是毫秒,而且引入的時(shí)延并不多,因此本隔離系統(tǒng)并不會(huì)對(duì)數(shù)據(jù)傳輸帶來(lái)明顯的影響。
本文設(shè)計(jì)了基于信息安全的雙網(wǎng)物理隔離系統(tǒng),實(shí)現(xiàn)內(nèi)部網(wǎng)絡(luò)與外部網(wǎng)絡(luò)的物理隔離,保護(hù)了內(nèi)部網(wǎng)絡(luò)的信息安全。但是,本文僅僅完成了物理隔離系統(tǒng)的框架設(shè)計(jì),未來(lái)的研究工作主要對(duì)以下幾個(gè)方面進(jìn)行完善:增加常用協(xié)議的剝離和封裝功能,加入病毒、惡意軟件的檢測(cè)和防御模塊等等。