国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

開源Linux的嵌入式安全SOHO路由器設計

2015-11-19 09:27:28朱龍劉長君
關鍵詞:宿主機功能模塊內(nèi)核

朱龍,劉長君

(四川信息職業(yè)技術學院 圖書館,四川 廣元628040)

隨著互聯(lián)網(wǎng)的迅速發(fā)展,SOHO(小型辦公和家庭辦公)用戶數(shù)量迅速增加.為了向SOHO用戶提供低成本、高性能的網(wǎng)絡接入和網(wǎng)絡防護,小型路由器和防火墻產(chǎn)品應運而生[1].小型路由器和防火墻大多是在嵌入式平臺上運行比較成熟的商業(yè)軟件系統(tǒng),如Router OS,Mono Wall等.但使用商業(yè)軟件系統(tǒng)不可避免地會引入較高的軟件成本和版權問題.嵌入式系統(tǒng)發(fā)展到現(xiàn)在,其處理能力已經(jīng)較為強大.在此基礎上,本文在嵌入式平臺上,設計一款同時具備路由功能和防火墻功能的網(wǎng)絡接入設備,并對其網(wǎng)絡防護性能進行測試.

1 系統(tǒng)平臺分析

1.1 硬件平臺與交叉編譯

設計選用的硬件平臺為華恒公司的PPC860嵌入式開發(fā)板,包含核心板和基板.核心板搭載了MPC860處理器,16MB的SDRAM及4MB的FLASH存儲器;基板為用戶提供了外設接口,有10 MB以太網(wǎng)接口、100MB快速以太網(wǎng)接口,以及串口和用于調(diào)試的BDM口.

嵌入式開發(fā)過程中常用的開發(fā)方式是交叉編譯,即在宿主機上編寫程序,用交叉編譯、匯編、鏈接工具形成可執(zhí)行程序,然后在目標板上通過串口和以太網(wǎng)口以mount的方式下載宿主機中的可執(zhí)行程序并調(diào)試、運行[2].在本設計中,宿主機中所使用的編譯工具,是開發(fā)板自帶開發(fā)套件中用于Power PC處理器指令集的powerpc-gcc編譯器.在宿主機中用powerpc-gcc編譯器編譯、鏈接源程序,生成可用于開發(fā)板的可執(zhí)行程序,供開發(fā)板通過交叉編譯環(huán)境下載調(diào)試、運行.交叉編譯環(huán)境的搭建過程如下:

1)配置宿主機NFS(Network File System,網(wǎng)絡文件系統(tǒng))和TFTP服務器;

2)通過交換機建立宿主機到目標板的網(wǎng)絡連接(也可以用交叉線直連宿主機與目標板);

3)建立宿主機到目標板的串口連接;

4)通過minicom程序經(jīng)串口控制目標板,使其通過以太網(wǎng)口下載宿主機可執(zhí)行程序,調(diào)試、運行.

1.2 系統(tǒng)功能模塊分析

在設計的操作系統(tǒng)平臺選擇上,選用了2.4版本的Linux內(nèi)核.雖然2.6版本內(nèi)核已經(jīng)比較成熟,但其搶占內(nèi)核和崩潰恢復機制對本設計性能提高不大,因此選擇比較穩(wěn)定、驅動支持較好的2.4版本Linux內(nèi)核.在Linux內(nèi)核之上的軟件架構按照功能劃分為路由模塊和防火墻功能模塊.路由模塊采用的是Zebra-0.95a開源路由軟件,同時為用戶提供靈活的Telnet配置方式;防火墻功能模塊則是采用了Linux系統(tǒng)中常見的Netfilter/Iptables防火墻架構,通過Iptables工具配置防火墻規(guī)則,然后由Linux內(nèi)核中的Netfilter機制實現(xiàn)規(guī)則的應用.在系統(tǒng)軟件架構的最高層提供了用戶基于Web管理的方式[3-4].

圖1 系統(tǒng)功能模塊分析圖Fig.1 System function module diagram

通過頁面服務器Boa向用戶提供Web的配置界面,以便對防火墻規(guī)則和簡單路由進行配置,配置的實現(xiàn)則是由Boa執(zhí)行后臺CGI程序完成;Linux內(nèi)核及相應的功能模塊存儲在只讀的Cramfs文件系統(tǒng)中;用戶信息及路由、安全配置文件保存在讀寫的JFFS2文件系統(tǒng)中[5-6].系統(tǒng)軟件功能模塊分析,如圖1所示.

2 系統(tǒng)軟件的架構設計

2.1 Linux內(nèi)核剪裁

使用開源Linux內(nèi)核作為操作系統(tǒng),以避免采用商業(yè)軟件引入的軟件成本和版權問題.為避免出現(xiàn)軟件漏洞或安全問題,同時也出于對嵌入式硬件平臺Flash存儲器容量考慮,需要將2.4.18版本的Linux內(nèi)核進行剪裁,以滿足系統(tǒng)需求.

在內(nèi)核源碼路徑下運行make menuconfig命令可對Linux內(nèi)核進行剪裁.在剪裁過程中,保留了Power PC處理器支持、內(nèi)存管理、進程管理、系統(tǒng)中斷向量、文件系統(tǒng)支持等基本功能模塊,以及以太網(wǎng)口驅動、串口驅動、能源管理等擴展功能模塊.

在內(nèi)核剪裁過程中,需要保證剪裁的內(nèi)核對ramdisk、JFF2文件系統(tǒng)的支持[7].因為剪裁過的Linux內(nèi)核以ramdisk系統(tǒng)燒寫到開發(fā)板Flash存儲器中,對JFFS2文件系統(tǒng)的支持則是為了實現(xiàn)大容量Flash存儲器可讀寫文件系統(tǒng)擴展.在內(nèi)核剪裁過程中要保留Netfilter功能模塊;Netfilter功能模塊和Iptables防火墻配置軟件共同實現(xiàn)設計的防火墻功能[8].

2.2 Zebra路由模塊設計

Zebra是一個支持RIP,OSPF等路由協(xié)議,基于TCP/IP服務的開源路由軟件.Zebra支持IPv4和IPv6,在實際應用中,具有較強的可擴展性.Zebra提供了一個高質量的多服務路由引擎,它為每個路由協(xié)議提供交互接口,并支持通用客戶端命令.在設計中采用了Zebra0.95a作為路由功能模塊.

Zebra的源碼包中指定的用于編譯、重建的編譯器默認為適用于X86架構的gcc編譯器.在本設計中,要將Zebra路由軟件運行于PowerPC架構的嵌入式開發(fā)平臺上,因此在配置源碼之前,要對配置文件進行修改.在Zebra源碼路徑下用CC=/LinuxPPC/CDK/bin/PowerPC-gcc命令來指定配置源碼所使用的編譯器.其中,/LinuxPPC路徑為開發(fā)板所使用開發(fā)套件在宿主機中的安裝路徑,/LinuxPPC/CDK/bin/PowerPC-gcc指定了用于PowerPC架構處理器的C語言編譯器.

執(zhí)行Zebra源碼路徑下的configure配置腳本,并對配置過的源碼用make命令進行編譯,最后用make install命令完成安裝.Zebra安裝完成之后還要對其配置文件/usr/local/etc/zebra.conf進行修改,使之符合系統(tǒng)需求,同時修改相同路徑下的RIP,OSPF,BGP路由協(xié)議的配置文件.完成配置之后,以后臺守護進程的方式執(zhí)行Zebra路由軟件——zebra-d.這樣Zebra路由軟件就在開發(fā)板上運行,宿主機或者同一網(wǎng)段內(nèi)其他主機可以通過Telnet方式訪問并對其進行配置.Zebra路由模塊正常運行時,對其遠程Telnet登錄將出現(xiàn)用戶登錄密碼輸入提示.

2.3 Netfilter/Iptables防火墻模塊設計

在1.1版本的Linux內(nèi)核中提供了基本的包過濾功能,在經(jīng)歷過2.2版本Linux中的Ipchains防火墻機制之后,當前在2.4版本Linux內(nèi)核中使用的是Netfilter/Iptables機制的第三代包過濾防火墻.其中,Netfilter組件運行于內(nèi)核空間,是Linux內(nèi)核的一部分,這也是在進行Linux內(nèi)核剪裁過程中,要求保留Netfilter功能模塊的原因.它是由一些信息過濾表組成,包含了內(nèi)核用來控制數(shù)據(jù)包過濾處理的規(guī)則集.Iptables組件是一個防火墻規(guī)則配置工具,運行于用戶空間,Iptables向用戶提供一個命令行模式的防火墻規(guī)則管理工具,使用戶可以靈活準確的插入、修改、刪除數(shù)據(jù)包過濾表中的防火墻規(guī)則.

Iptables的板上移植過程與Zebra類似,首先通過指定開發(fā)板所用編譯器對源碼進行配置、編譯和重建,然后將生成的可執(zhí)行程序下載到開發(fā)板運行.

在防火墻功能模塊設計過程中,著重關注兩個要點:一是防火墻功能擴展;二是對防火墻規(guī)則沖突的檢測和避免.

2.3.1 Iptables功能模塊擴展 Iptables提供了一種靈活準確的防火墻規(guī)則配置方式,它支持部分基本的配置規(guī)則,例如數(shù)據(jù)包協(xié)議匹配、端口匹配和IP地址匹配等.但是在實際應用中對防火墻的配置需求更加復雜,例如字符串匹配的內(nèi)容過濾、連接數(shù)量匹配、防護策略時間規(guī)則和P2P數(shù)據(jù)包匹配等.這些復雜的防火墻規(guī)則實現(xiàn)是通過安裝特定的Netfilter/Iptables功能patch實現(xiàn)的.在本設計中使用的4種擴展規(guī)則模塊.

1)Iptables string match.這個patch中增加了CONFIG_IP_NF_MATCH_STRING,允許在一個數(shù)據(jù)包里匹配一個字符串,用來進行內(nèi)容過濾.

2)Iptables connlimit match.這個patch為Iptbales擴展了連接數(shù)量匹配,用于限制每個遠程IP地址的并發(fā)TCP連接數(shù)量.

3)Detects some P2Ppackets.這個patch可以匹配部分P2P數(shù)據(jù)包,用于控制網(wǎng)絡流量.這個patch結合連接跟蹤,與數(shù)據(jù)包調(diào)度器配合,用于P2P流量計算和整形.

4)Iptables time match:這個patch為Iptables增加時間匹配功能,允許對其他防護規(guī)則添加時間匹配選項,可以使規(guī)則在特定時間范圍內(nèi)啟動或關閉.

除了上述擴展功能模塊,用戶還可以通過指定協(xié)議類型、IP地址、端口號來自定義防護規(guī)則,設計的防火墻功能模塊可以滿足日常網(wǎng)絡防護的需求.

2.3.2 防火墻規(guī)則沖突檢測避免 Iptables提供防火墻規(guī)則配置,但是它只是順序執(zhí)行已有的防火墻規(guī)則,而不對規(guī)則沖突進行檢測.Iptables只對防火墻規(guī)則的語法格式進行檢查,如果防火墻規(guī)則前后對某一個數(shù)據(jù)包配置了接受和拒絕兩種策略,那么它將執(zhí)行先配置的策略,而不會提示規(guī)則沖突.為了避免出現(xiàn)這種配置過程中規(guī)則的前后沖突,在設計中使用了基于文本的規(guī)則沖突檢測避免機制[9-11].

在本設計中,防火墻基本設置是通過Web方式來配置的,頁面中采用單選框的形式保證了規(guī)則的一致性.因此,防火墻規(guī)則沖突主要存在于用戶自定義規(guī)則集中.用戶自定義規(guī)則主要包括六個字段:協(xié)議類型、源IP地址、源端口號、目的IP地址、目的端口號、策略.

規(guī)則沖突檢測避免機制工作原理:接收Iptables的配置命令,寫入防火墻規(guī)則腳本iptable.rules中,將自定義的規(guī)則字段存儲到rule結構體中.rule結構體定義如下所示.

所有規(guī)則的rule以鏈表的形式存儲.添加新自定義規(guī)則時,先逐項匹配鏈表中已有的規(guī)則,如果前5個字段一致,而policy字段不同,則說明新定義規(guī)則與已有規(guī)則沖突,需要修改;如果6個字段均一致,則說明新定義規(guī)則之前已經(jīng)定義,屬于冗余,可以刪除;如果前面兩種情況均不滿足,則說明此規(guī)則為新規(guī)則,將此規(guī)則添加到規(guī)則腳本中.

沖突檢測功能代碼示意如下:

其中:p_rule為指向已有規(guī)則鏈表的rule結構體類型指針;n_rule為用戶提交添加的nrule結構體類型變量;nrule與rule結構體類型定義區(qū)別在于nrule中沒有形成鏈表的next指針.通過這種基于文本的規(guī)則沖突檢測、避免機制避免防火墻規(guī)則集的二義性和冗余,為用戶提供準確添加自定義規(guī)則的環(huán)境.

2.4 Web配置模塊設計

2.4.1 Boa頁面服務器簡介 Zebra向用戶提供了基于Telnet的遠程配置方式,但是這種配置方式采用的是通用命令行,需要一定的網(wǎng)絡技術基礎.為了便于普通用戶對設備進行直觀簡單的配置,本設計為用戶提供了基于Web的頁面配置方式.

本設計向用戶提供了基于Web的配置方式,這首先需要一個Web頁面服務器.出于硬件平臺性能考慮,選用了再嵌入式開發(fā)中常用的頁面服務器Boa.它是一個單任務的HTTP服務器軟件,只能依次完成用戶的請求而不會fork出新的進程來處理并發(fā)的連接請求,但是可以fork出新進程供CGI(Common Gateway Interface,通用網(wǎng)關接口)程序運行;由于設備配置過程不需要并發(fā)機制,因此Boa頁面服務器符合設計需求[12].Boa頁面服務器的移植過程較簡單,可參考Zebra移植過程.

2.4.2 交互配置流程實現(xiàn) Boa向用戶提供前臺HTML配置頁面,同時負責接收用戶配置請求,以環(huán)境變量的方式傳遞給后臺CGI程序,由CGI程序解釋配置請求,并做出相應的配置動作[13].配置有如下5個具體過程(圖2).

圖2 交互配置過程示意圖Fig.2 Schematic diagram of interactive configuration process

1)表示Boa頁面服務器生成Web配置頁面,在遠程配置端由HTML瀏覽器解釋.

2)用戶向HTML頁面中以表單形式填寫配置信息,若配置信息不合法,則輸出警報,要求重新填寫;若配置信息合法,則將表單提交至Boa服務器.

3)Boa服務器將用戶配置信息以環(huán)境變量的方式傳遞給后臺CGI程序處理.CGI程序獲取用戶配置信息是通過讀取CONTENT_LENGTH環(huán)境變量實現(xiàn)的,CGI程序以字符串形式獲取用戶提交配置表單內(nèi)容,然后通過對字符串的處理來獲取并解釋用戶配置信息.

4)CGI進行系統(tǒng)調(diào)用,完成用戶請求配置后,以HTML代碼的形式向Boa服務器返回處理結果.CGI對用戶請求進行處理,得到相應配置命令,經(jīng)系統(tǒng)調(diào)用完成對路由功能或防火墻功能的配置.其中,在對防火墻功能配置過程中,系統(tǒng)調(diào)用之前要先調(diào)用前文所述防火墻規(guī)則沖突檢測、避免機制[14].

5)Boa服務器將CGI返回的處理結果傳送至用戶端HTML瀏覽器,向用戶顯示當次配置請求的處理結果.

2.4.3 應用配置例析 以對ICMP協(xié)議的操作為例,分析Web方式管理的工作過程.用戶通過瀏覽器向Boa服務器提交配置表單,在此處,表單內(nèi)容很簡單,包括兩個單選框,Y表示阻止ICMP協(xié)議,N表示允許ICMP協(xié)議,缺省狀況允許ICMP協(xié)議,用戶配置點選Y項,即阻止ICMP協(xié)議.即

Boa接收到表單提交信息后,調(diào)用表單action選項中指定的后臺CGI程序cfg來處理該配置表單信息,Boa以字符串形勢將表單信息傳遞給CGI程序cfg,cfg讀取環(huán)境變量,即

此時,in數(shù)組中的內(nèi)容:yn=0&&submit=submit.cfg讀取in[3],與“0”字符進行比對,如果匹配,則通過system系統(tǒng)調(diào)用執(zhí)行Iptables規(guī)則,iptables-A INPUT-p ICMP-j Drop;否則,執(zhí)行ACCEPT策略,然后將此條規(guī)則添加到規(guī)則腳本文件中保存.完成操作后,向Boa提交返回到用戶瀏覽器的HTML頁面,提示操作完成.WBM管理頁面,如圖3所示.

圖3 安全SOHO路由器Web管理頁面Fig.3 Secure SOHO router Web management page

3 系統(tǒng)性能測試

3.1 路由配置模塊測試

設計實現(xiàn)的路由功能模塊有兩種配置方式,可以通過Web管理(Web based management,WBM)配置方式進行配置,也可以通過Telnet方式進行配置.WBM配置方式較為直觀、簡單,但配置不如Telnet后的命令行方式靈活.為了對路由模塊的功能有更全面的了解,本部分測試是Telnet登陸設備之后的結果,而WBM配置測試是與防火墻功能模塊統(tǒng)一進行測試的.

圖4 配置模式下的命令列表Fig.4 Configuration mode command list

Telnet方式登陸設備之后,提供了類似思科路由的通用命令行配置界面:用戶模式、特權模式、配置模式.配置模式下的命令列表,如圖4所示.

測試結果表明:路由模塊可以正常工作,并且Telnet配置方式提供了類似思科路由器的通用命令行界面,配置方式靈活,功能完備.

3.2 防火墻基本規(guī)則測試

在對防火墻功能模塊的測試過程中,以防止外部網(wǎng)絡Ping入為例,對其基本防護規(guī)則進行了測試.

為了對外部網(wǎng)絡屏蔽內(nèi)網(wǎng)信息,防火墻基本規(guī)則中通常會拒絕外部網(wǎng)絡使用Ping命令嗅探內(nèi)部網(wǎng)絡信息.在本次測試中,在配置之前,外部計算機可以通過Ping命令嗅探到防火墻;在配置了丟棄ICMP協(xié)議數(shù)據(jù)之后,外部計算機用Ping命令嗅探防火墻提示請求超時錯誤.測試表明:本設計的防火墻功能模塊實現(xiàn)了基本的應用規(guī)則防護.

4 結束語

設計并實現(xiàn)一個基于開源Linux的,集成了路由功能和網(wǎng)絡防護功能的嵌入式網(wǎng)絡接入設備.在開發(fā)板上實現(xiàn)了路由功能模塊和防火墻功能模塊.然后,分別從路由配置模塊、防火墻基本規(guī)則設置兩個方面進行測試.結果表明:本設計可以為用戶提供直接靈活的配置方式,實現(xiàn)了路由功能和安全防護功能在同一開發(fā)平臺的集成,所得到的網(wǎng)絡設備可以滿足小規(guī)模網(wǎng)絡的接入和防護需求.

[1]游侃民,朱寧西.基于嵌入式Linux的SOHO路由器設計[J].微計算機信息,2009,25(11):19-31.

[2]褚文奎,樊曉光,黃培成.基于PowerPC處理器MPC8250的嵌入式Linux系統(tǒng)開發(fā)[J].計算機工程與設計,2006,27(1):179-181.

[3]彭濤,李聲晉,蘆剛,等.遠程設備監(jiān)控系統(tǒng)中嵌入式Web服務器的設計[J].機械與電子,2008(1):65-68.

[4]姚曉宇,趙晨.Linux內(nèi)核防火墻Netfilter實現(xiàn)與應用研究[J].計算機工程,2003,29(8):112-113,163.

[5]王磊,謝維波.AdHoc網(wǎng)絡在嵌入式Linux上的實現(xiàn)[J].華僑大學學報:自然科學版,2011,32(2):161-164.

[6]張祖鷹.嵌入式Linux系統(tǒng)的網(wǎng)絡實現(xiàn)究[J].船海工程,2009,38(增刊1):83-85.

[7]劉文峰,李程遠,李善平.嵌入式Linux操作系統(tǒng)的研究[J].浙江大學學報:工學版,2004,38(4):447-452.

[8]陳閎中.Linux在嵌入式操作系統(tǒng)中的應用[J].同濟大學學報:自然科學版,2001,29(5):564-566.

[9]張昭理,洪帆,肖海軍.一種防火墻規(guī)則沖突檢測算法[J].計算機工程與應用,2007,43(15):111-112.

[10]趙波,秦濤,張新有.嵌入式防火墻規(guī)則沖突檢測算法的實現(xiàn)[J].實驗科學與技術,2009,7(6):153-156.

[11]張國定,李隨意,張翰林,等.基于IPv6的SOHO寬帶路由器的軟件設計[J].河南教育學院學報:自然科學版,2008,17(2):33-34.

[12]張娟,張雪蘭.基于嵌入式Linux的GUI應用程序的實現(xiàn)[J].計算機應用,2003,23(4):11-13.

[13]王金東,趙海,韓光潔,等.基于SNMP的嵌入式系統(tǒng)Web管理模型[J].計算機工程,2005,31(1):39-40,59.

[14]郭松,謝維波.Linux下Proc文件系統(tǒng)的編程剖析[J].華僑大學學報:自然科學版,2010,31(5):515-520.

猜你喜歡
宿主機功能模塊內(nèi)核
萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
基于嵌入式Linux內(nèi)核的自恢復設計
Linux內(nèi)核mmap保護機制研究
虛擬網(wǎng)絡實驗室在農(nóng)村職校計算機網(wǎng)絡技術教學中的應用研究
嵌入式計算機軟件測試關鍵技術的思考
基于ASP.NET標準的采購管理系統(tǒng)研究
軟件導刊(2016年9期)2016-11-07 21:35:42
輸電線路附著物測算系統(tǒng)測算功能模塊的研究
M市石油裝備公服平臺網(wǎng)站主要功能模塊設計與實現(xiàn)
石油知識(2016年2期)2016-02-28 16:20:16
嵌入式計算機軟件測試關鍵技術研究
台州市| 都安| 锡林浩特市| 两当县| 石泉县| 青州市| 本溪| 六安市| 通江县| 太保市| 奉化市| 楚雄市| 龙江县| 临沂市| 西和县| 右玉县| 通榆县| 石首市| 确山县| 比如县| 泸西县| 平昌县| 天柱县| 浠水县| 巴彦淖尔市| 抚顺县| 玛曲县| 谷城县| 梨树县| 高碑店市| 梁河县| 湖州市| 马关县| 嘉荫县| 汉寿县| 新龙县| 神木县| 曲麻莱县| 手游| 武乡县| 太保市|