摘要:在對現(xiàn)有防火墻技術分析的基礎上,描述了一種基于Linux操作系統(tǒng)下iptables服務的小型防火墻系統(tǒng)。網(wǎng)絡管理員可以很方便地通過圖形用戶界面對其進行配置與管理。該系統(tǒng)具有很好的穩(wěn)定性與可擴展性,能很好地滿足小型企業(yè)局域網(wǎng)的安全需求。最后給出了該系統(tǒng)的實現(xiàn)。
關鍵詞:Linux;iptables;防火墻;圖形用戶界面
中圖分類號:TP393.08 文獻標識碼:A 文章編號:1672-1098(2009)02-0047-03
隨著計算機的普及和互聯(lián)網(wǎng)的發(fā)展,人們的工作、學習和生活已經(jīng)和網(wǎng)絡技術密不可分,網(wǎng)絡的安全問題日趨成為人們關注的焦點,防火墻作為一種最為有效地網(wǎng)絡安全產(chǎn)品得到了廣泛的應用。根據(jù)使用的技術不同主要可以將其分為包過濾防火墻、應用層網(wǎng)關防火墻。包過濾防火墻通過檢查數(shù)據(jù)包的地址、協(xié)議、端口等信息來決定是否允許此數(shù)據(jù)包通過。應用層網(wǎng)關防火墻通過自身復制傳遞數(shù)據(jù),檢查進出的數(shù)據(jù)包,防止在受信主機與非受信主機間直接建立聯(lián)系。與應用層網(wǎng)關防火墻相比,包過濾防火墻具有速度快、效率高的特點。Linux操作系統(tǒng)性能優(yōu)異、功能強大,其內(nèi)核中實現(xiàn)了防火墻組件Netfiher,并通過外部的iptables服務來進行配置。以Linux操作系統(tǒng)和Netfilter/iptables為基礎,來實現(xiàn)具有包過濾功能、圖形用戶界面的局域網(wǎng)防火墻。
1 防火墻的結構與功能分析
1.1防火墻系統(tǒng)網(wǎng)絡結構
防火墻就是內(nèi)部網(wǎng)絡與外部網(wǎng)絡之間的一道安全防護系統(tǒng)。通過對經(jīng)過的網(wǎng)絡數(shù)據(jù)包的掃描與分析,過濾掉一些網(wǎng)絡攻擊并阻止非授權用戶訪問內(nèi)部網(wǎng)絡。從而大大提高內(nèi)部網(wǎng)絡的安全(見圖1)。圖1中的防火墻就是采用了Netfiher/iptables機制的Linux服務器,服務器配置有兩塊網(wǎng)卡,其中一塊連接到外網(wǎng),另一塊與交換機(集線器)相連。這樣內(nèi)部的多臺主機就可以通過交換機(集線器)訪
1.2防火墻系統(tǒng)功能模塊
經(jīng)過對現(xiàn)有防火墻系統(tǒng)以及iptables的使用和分析,設計了防火墻系統(tǒng),包括登陸、基本參數(shù)設置、元素及規(guī)則定義、規(guī)則應用、地址掃描、文件管理和登陸設置模塊(見圖2)。
本防火墻系統(tǒng)包括最基本的包過濾和網(wǎng)絡地址轉換(NAT)功能,它可以滿足小型局域網(wǎng)安全性與網(wǎng)絡應用。在此基礎上添加了MAC地址綁定、自動掃描相鄰主機IP地址、基于時間的規(guī)則調(diào)度以及日志等較為實用的功能。
2 防火墻系統(tǒng)實現(xiàn)
2.1界面設計
Qt是跨平臺的基于C++語言的圖形用戶界面(GUI)工具包,它是TrollTeeh公司的標志產(chǎn)品。Qt能以漂亮的用戶界面,快速而有效地開發(fā)軟件。Qt又是一種跨平臺的GUI工具包,能確保軟件非常方便地應用于絕大多數(shù)的操作系統(tǒng),如Mi—crosoft Windows系列,Linux,Solaris,F(xiàn)reeBSD等。Qt類庫擁有超過400個c++類,同時還在不斷擴展。它封裝了用于端到端應用程序開發(fā)所需要的所有基礎結構。
采用了Qt庫來開發(fā)防火墻系統(tǒng)的圖形用戶界面,使用qt Designer設計了登陸界面、防火墻主界面、登陸設置界面、規(guī)則文件管理界面以及幫助界面。其中主界面是防火墻的核心界面,它提供了對主要功能的訪問和對參數(shù)的設置功能(見圖3)。
防火墻主界面包括五個標簽頁,能分別對防火墻基本參數(shù)和規(guī)則元素及過濾規(guī)則進行設置。頂部的功能按鈕提供了對不同服務功能模塊的訪問。
為了使界面中的多個對象之間協(xié)同工作,需要應用信號和槽來進行組件通信。信號和槽是一種高級接口,應用于對象之間的通信,它是Qt的核心特性,也是Qt區(qū)別于其它工具包的重要地方。信號和槽是Qt自行定義的一種通信機制,它獨立于標準的C/C++語言,因此要借助稱為MOC(Meta Ob-jeet Compiler)的Qt工具來正確的處理信號和槽,該工具是一個c++預處理程序,它為高層次的事件處理自動生成所需要的附加代碼。
2.2底層設計
系統(tǒng)底層需要完成保存用戶定義的規(guī)則及元素、實現(xiàn)多線程地址掃描、規(guī)則的應用以及規(guī)則文件的導入和導出等功能。分別進行如下說明:
(1)數(shù)據(jù)的保存定義了5個鏈表類:IpList、Group、GroupList、ServiceList和RuleList,用來保存用戶定義的IP地址、地址組、服務和防火墻規(guī)則。各個類提供了對用戶定義數(shù)據(jù)的添加、修改、刪除、查詢和排序等功能,通過程序界面的按鈕響應函數(shù)來調(diào)用對應功能。
(2)多線程地址掃描Qt提供了豐富的多線程編程支持,在Qt系統(tǒng)中與線程相關的最重要的類是QThread類,該類提供了創(chuàng)建一個新線程以及控制線程運行的各種方法。為了完成所需要的功能,可以從QThread類派生出自己的線程類,重載它的run()函數(shù)以實現(xiàn)自己需要的功能。為了實現(xiàn)多線程之間的通信,該派生類可以使用系統(tǒng)提供的信號與槽機制,因此它必須多繼承QThread類與QObject類。并聲明其信號和槽。
(3)規(guī)則的應用 將規(guī)則劃分為若干規(guī)則參數(shù),包括規(guī)則類型、源和目的地址、服務、時間調(diào)度參數(shù)以及對匹配數(shù)據(jù)包的操作,利用Qt系統(tǒng)函數(shù)system()執(zhí)行包含了各種參數(shù)的SHELL語句,通過它調(diào)用編寫好的SHELL腳本,向iptables中導入用戶所定義的防火墻規(guī)則。
(4)規(guī)則文件導入和導出 通過QFile類打開需要寫入或讀取的文件,再利用它構建QTextStr-eam字符流對象,通過對該對象的操作來逐行的寫入或讀取規(guī)則信息。
2.3時間調(diào)度的實現(xiàn)
Iptables在默認安裝時并不具備根據(jù)時間來進行規(guī)則匹配的功能,需要向Linux系統(tǒng)內(nèi)核的Netfilter添加時間匹配模塊time。可以使用Netfil,ter開發(fā)組提供的補丁包patch-o-matic來加入時間匹配模塊,對內(nèi)核進行重新配置并編譯所需要的模塊。之后再重新編譯安裝新版本的iptables程序,就可以實現(xiàn)基于時間的規(guī)則調(diào)度。
3 結束語
本文所設計的基于Iptables的Linux防火墻具有使用簡單、配置容易、功能強大等特點,可以滿足中小型企業(yè)網(wǎng)絡安全防護功能。若將功能再進一步擴展,如添加VPN等功能,即可成為具有大型企業(yè)級功能的防火墻。