專利名稱:Ip日志系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種日志記錄系統(tǒng)及方法,尤其涉及一種IP日志記錄的系統(tǒng)及方法。
背景技術(shù):
對(duì)于連接到網(wǎng)絡(luò)上的Linux系統(tǒng)來說,防火墻是必不可少的防御機(jī)制,它只允許合法的網(wǎng)絡(luò)流量進(jìn)出系統(tǒng),而禁止其它任何網(wǎng)絡(luò)流量。為了確定網(wǎng)絡(luò)流量是否合法,防火墻依靠它所包含的由網(wǎng)絡(luò)或系統(tǒng)管理員預(yù)定義的一組規(guī)則。這些規(guī)則告訴防火墻某個(gè)流量是否合法以及對(duì)于來自某個(gè)源、至某個(gè)目的地或具有某種協(xié)議類型的網(wǎng)絡(luò)流量要做些什么。
網(wǎng)絡(luò)流量由IP信息包(簡稱信息包)組成。所述信息包是以流(Flow)的形式從源系統(tǒng)傳輸?shù)侥康牡叵到y(tǒng)的一些小塊資料,這些信息包有包頭,即在每個(gè)包前面所附帶的一些資料位,它們包含有關(guān)信息包的源、目的地和協(xié)議類型的信息。防火墻根據(jù)一組規(guī)則檢查這些頭,以確定接受哪個(gè)信息包以及拒絕哪個(gè)信息包,該過程稱為信息包過濾。
傳統(tǒng)的防火墻只是用來阻隔或拒絕信息包,少有將其用來進(jìn)行IP日志。如果用戶將防火墻的防御機(jī)制應(yīng)用于獲取用戶所需要的網(wǎng)絡(luò)信息,則只需要過濾極少的網(wǎng)絡(luò)流量即可達(dá)成該目的。
發(fā)明內(nèi)容本發(fā)明主要目的在于提供一種IP日志系統(tǒng),其將網(wǎng)絡(luò)防火墻與日志功能結(jié)合起來,可根據(jù)用戶的需求從網(wǎng)絡(luò)上獲取信息,并可阻塞不需要的信息,以減少網(wǎng)絡(luò)流量。
本發(fā)明另一目的在于提供一種IP日志方法,其可根據(jù)用戶的需求從網(wǎng)絡(luò)上獲取信息,并可阻塞不需要的信息,以減少網(wǎng)絡(luò)流量。
為實(shí)現(xiàn)上述的發(fā)明目的,本發(fā)明提供的IP日志系統(tǒng)包括有一日志模塊、一網(wǎng)絡(luò)過濾器(Netfilter)、一Klogd(Kernel Log Daemon)程序、一事件日志、一日志應(yīng)用程序接口(LoggingAPI)、一配置管理器以及一用戶接口。網(wǎng)絡(luò)過濾器是用于從網(wǎng)絡(luò)連接中獲取含有用戶所需求信息的信息包。日志模塊用于獲取信息包中的信息,并傳送給Klogd程序。Klogd程序則將日志模塊傳送過來的信息傳送至事件日志中作記錄。日志應(yīng)用程序接口可根據(jù)用戶從用戶接口所輸入的指令設(shè)定日志模塊的開或關(guān)。
本發(fā)明所提供的IP日志方法包括有如下步驟(i)從網(wǎng)絡(luò)中獲取信息包;(ii)將信息包與預(yù)定的匹配條件進(jìn)行匹配;(iii)當(dāng)信息包與預(yù)定的匹配條件不相匹配時(shí),阻塞該信息包;(iv)如果信息包與預(yù)定的匹配條件相匹配,檢查該信息包的有效負(fù)載;(v)獲取信息包中的信息;(vi)將所獲取的信息傳送至事件日志進(jìn)行記錄。
采用本發(fā)明IP日志方法,在獲取網(wǎng)絡(luò)信息時(shí),可有目的地只獲得包含該信息的網(wǎng)絡(luò)信息包,并阻塞那些不包含所需該信息的信息包,從而可有效降低網(wǎng)絡(luò)的流量。
圖1是本發(fā)明IP日志系統(tǒng)的架構(gòu)圖。
圖2是本發(fā)明IP日志方法的流程圖。
具體實(shí)施方式參閱圖1,是本發(fā)明IP日志系統(tǒng)100的架構(gòu)圖。在本發(fā)明的實(shí)施方式中,IP日志系統(tǒng)100包括有一日志模塊110、一網(wǎng)絡(luò)過濾器120、一Klogd程序130、一事件日志140、一日志應(yīng)用程序接口150、一配置管理器160以及一用戶接口170。該IP日志系統(tǒng)100的網(wǎng)絡(luò)過濾器120與網(wǎng)絡(luò)連接180相連接。
日志模塊110用于分析及處理網(wǎng)絡(luò)過濾器120所接收的信息包,從該信息包中獲取所需的信息并透過Klogd程序130傳送到事件日志140,其可以是使用者程序(User Space Program),或者是內(nèi)核(Kernel)。使用者程序易于調(diào)試,但是在該種模式下,資料包必須通過memcpy函數(shù)傳送給使用者程序,經(jīng)過處理后再傳至內(nèi)核。如果日志模塊采用的是內(nèi)核,則僅需在內(nèi)核內(nèi)分析資料的結(jié)構(gòu)。在性能上內(nèi)核模塊遠(yuǎn)優(yōu)于使用者程序,因此在本發(fā)明的實(shí)施方式中,日志模塊是采用內(nèi)核。上述memcpy函數(shù)是用來做拷貝,其可以拷貝任何數(shù)據(jù)類型的對(duì)象,并可以指定拷貝的資料長度。
在本發(fā)明的實(shí)施方式中,由于日志模塊110是采用內(nèi)核,因此采用getsockopt(獲取套接口選項(xiàng))和setsockopt(設(shè)置套接口選項(xiàng))來獲取和設(shè)置日志模塊110的配置。
網(wǎng)絡(luò)過濾器120在Linux內(nèi)核中的IPv4、IPv6和DECnet等網(wǎng)絡(luò)協(xié)議棧中都有實(shí)現(xiàn)。上述協(xié)議棧為了實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)過濾器120架構(gòu)的支持,在IP信息包在協(xié)議棧上的遍歷路線之中選擇了五個(gè)參考點(diǎn),在這五個(gè)參考點(diǎn)上,各引入了一行對(duì)NF_HOOK()宏函數(shù)的一個(gè)相應(yīng)的調(diào)用。這五個(gè)參考點(diǎn)被分別命名為PREROUTING、LOCAL-IN、FORWARD、LOCAL-OUT和POSTROUTING。網(wǎng)絡(luò)過濾器120是為協(xié)議棧中五個(gè)參考點(diǎn)中的一系列的“鉤子(hook)”,其本質(zhì)是一個(gè)nf_hookfn函數(shù)。這個(gè)函數(shù)將對(duì)在上述五個(gè)參考點(diǎn)被釣上來的IP信息包進(jìn)行初步的處理。這個(gè)“鉤子”用linux-2.4.19/include/linux/netfilter.h中定義的如下結(jié)構(gòu)予以描述struct nf_hook_ops{struct list_head list;nf_hookfn*hook;int pf;int hooknum;int priority;};網(wǎng)絡(luò)過濾器120的內(nèi)核部分提供了一個(gè)分析、處理信息包的架構(gòu),但是內(nèi)核部分代碼并不具體的去分析、處理信息包。具體的分析、處理的任務(wù)由日志模塊110來完成。內(nèi)核部分可以根據(jù)Table中記錄的規(guī)則(Rules)信息,來把信息包交給能夠處理的相應(yīng)的模塊。這些規(guī)則可確定某個(gè)流量是否合法以及對(duì)于來自某個(gè)源、至某個(gè)目的地或具有某種協(xié)議類型的網(wǎng)絡(luò)流量要做些什么。各個(gè)模塊起動(dòng)的時(shí)候,會(huì)主動(dòng)去向內(nèi)核代碼注冊(cè)。在這個(gè)注冊(cè)過程中,各模塊可通知內(nèi)核代碼,本模塊有一個(gè)目標(biāo)(Target)函數(shù),可以決定信息包的命運(yùn);或者是本模塊有一個(gè)匹配(Match)函數(shù),可以判定一個(gè)信息包是否符合規(guī)則的匹配要求。
目標(biāo)是由規(guī)則指定對(duì)與那些規(guī)則匹配的信息包執(zhí)行的操作。用戶可自定義各種目標(biāo)。下述為常用的一些目標(biāo)及其說明ACCEPT當(dāng)信息包與具有ACCEPT目標(biāo)的規(guī)則完全匹配時(shí),會(huì)被接受(允許它前往目的地),并且它將停止遍歷鏈(雖然該信息包可能遍歷另一個(gè)表中的其它鏈,并且有可能在那里被丟棄)。
DROP當(dāng)信息包與具有DROP目標(biāo)的規(guī)則完全匹配時(shí),會(huì)阻塞該信息包,并且不對(duì)它做進(jìn)一步處理。
REJECT該目標(biāo)的工作方式與DROP目標(biāo)相同,但它比DROP好。和DROP不同,REJECT不會(huì)在服務(wù)器和客戶機(jī)上留下死套接字。另外,REJECT將錯(cuò)誤消息發(fā)回給信息包的發(fā)送方。
匹配部分指定信息包與規(guī)則匹配所應(yīng)具有的特征(如源和目的地地址、協(xié)議等)。匹配分為兩大類通用匹配和特定于協(xié)議的匹配。下述為一些常用的通用匹配說明-p或--protocol該通用協(xié)議匹配用于檢查某些特定協(xié)議。協(xié)議示例有TCP、UDP、ICMP、用逗號(hào)分隔的任何這三種協(xié)議的組合列表以及ALL(用于所有協(xié)議),ALL是缺省匹配,可以在-p之后使用“!”符號(hào),它表示不與該項(xiàng)匹配。
-s或--source該源匹配用于根據(jù)信息包的源IP地址來與它們匹配。該匹配還允許對(duì)某一范圍內(nèi)的IP地址進(jìn)行匹配,可以在-s之后使用“!”符號(hào),表示不與該項(xiàng)匹配。缺省源匹配與所有IP地址匹配。
-d或--destination該目的地匹配用于根據(jù)信息包的目的地IP地址來與它們匹配。該匹配還允許對(duì)某一范圍內(nèi)IP地址進(jìn)行匹配,可以在-d之后使用“!”符號(hào),表示不與該項(xiàng)匹配。
除上述的一些常用匹配條件外,用戶亦可通過用戶接口170根據(jù)其實(shí)際需求自定義其它的匹配條件。
在本發(fā)明的實(shí)施方式中,是于PREROUTING參考點(diǎn)來實(shí)施IP日志。用戶需注冊(cè)一個(gè)連接跟蹤(CONNTRACK),其用于跟蹤連接,并知道在一個(gè)連接中信息包如何、在哪里相關(guān)聯(lián)。當(dāng)一個(gè)新的連接建立起來的時(shí)候,該連接跟蹤會(huì)將該新連接與連接跟蹤的條件進(jìn)行匹配。如果該新連接中的信息包符合連接跟蹤的條件,則其在PREROUTING參考點(diǎn)會(huì)被網(wǎng)絡(luò)過濾器120獲取。
Klogd程序130是一種信息記錄程序,其用于轉(zhuǎn)發(fā)日志模塊110所傳送過來的信息至事件日志140。事件日志140是用來記錄經(jīng)由Klogd程序130所傳送的日志信息。日志應(yīng)用程序接口150是用來設(shè)置日志模塊開或關(guān)以及顯示當(dāng)前的日志狀態(tài)。配置管理器160用于管理本發(fā)明IP日志系統(tǒng)中的各軟件與硬件,其能將各種任務(wù)應(yīng)用程序部署到不同位置中,并收集硬件與軟件組態(tài)信息。用戶接口170用于供用戶向本發(fā)明IP日志系統(tǒng)發(fā)送各種指令,其可以是命令行接口(Command Line Interface,CLI),亦可為Web接口。通過用戶接口170,用戶可以設(shè)定日志模塊的開或關(guān)。
參閱圖2,所示為本發(fā)明IP日志方法的流程圖。在步驟S201,網(wǎng)絡(luò)過濾器120從網(wǎng)絡(luò)上獲取各種信息包。在步驟S203,網(wǎng)絡(luò)過濾器120確定所接收的信息包是否與其預(yù)定的匹配條件相匹配。該預(yù)定的匹配條件包括通用協(xié)議匹配、源地址匹配以及目的地地址匹配。如果信息包與網(wǎng)絡(luò)過濾器120中的任何匹配條件都不相匹配,則在步驟S211,網(wǎng)絡(luò)過濾器120阻塞該信息包。在該種情形下日志模塊110不必對(duì)該信息包進(jìn)行處理,并通過阻塞不需要的信息包來達(dá)到減少網(wǎng)絡(luò)流量之目的。如果該信息包與網(wǎng)絡(luò)過濾器120中的匹配條件相匹配,在步驟S205,日志模塊110檢查通過網(wǎng)絡(luò)過濾器120的信息包的有效負(fù)載。在步驟S207,日志模塊110獲取信息包中的信息,并將其按照預(yù)定的格式進(jìn)行格式化。在步驟S209,日志模塊110將格式化后的信息傳送給Klogd程序130,并經(jīng)由Klogd程序130傳送至事件日志140進(jìn)行記錄。
權(quán)利要求
1.一種IP日志方法,用于根據(jù)預(yù)定的條件從網(wǎng)絡(luò)上記錄網(wǎng)絡(luò)信息,其特征在于該方法包括如下步驟(a)從網(wǎng)絡(luò)中獲取信息包;(b)將信息包與預(yù)定的匹配條件進(jìn)行匹配;(c)如果信息包與預(yù)定的匹配條件相匹配,獲取信息包中的信息;(d)將所獲取的信息傳送至事件日志進(jìn)行記錄。
2.如權(quán)利要求1所述的IP日志方法,其特征在于步驟(b)更包括有當(dāng)信息包與預(yù)定的匹配條件不相匹配時(shí),阻塞該信息包的步驟。
3.如權(quán)利要求1所述的IP日志方法,其特征在于匹配條件包括有源地址匹配。
4.如權(quán)利要求1所述的IP日志方法,其特征在于匹配條件包括有目的地地址匹配。
5.如權(quán)利要求1所述的IP日志方法,其特征在于匹配條件包括有通用協(xié)議匹配。
6.如權(quán)利要求1所述的IP日志方法,其特征在于步驟(b)之后更包括有檢查信息包有效負(fù)載的步驟。
7.一種IP日志系統(tǒng),用于根據(jù)預(yù)定的條件從網(wǎng)絡(luò)上記錄網(wǎng)絡(luò)信息,其特征在于該系統(tǒng)包括有一用于從網(wǎng)絡(luò)中根據(jù)預(yù)定的條件獲取信息包的網(wǎng)絡(luò)過濾器,一用于分析處理網(wǎng)絡(luò)過濾器所獲取的信息包以從該等信息包中獲取所需的信息的日志模塊,以及一用于記錄日志模塊所獲取的信息的事件日志。
8.如權(quán)利要求7所述的IP日志系統(tǒng),其特征在于該系統(tǒng)更包括有一Klogd程序,用于將日志模塊所獲得的信息傳送至事件日志。
9.如權(quán)利要求7所述的IP日志系統(tǒng),其特征在于該系統(tǒng)更包括有一用于設(shè)置日志模塊開關(guān)以及顯示當(dāng)前日志狀態(tài)的日志應(yīng)用程序接口。
10.如權(quán)利要求7所述的IP日志系統(tǒng),其特征在于該系統(tǒng)更包括有一用于供用戶發(fā)送各種指令的用戶接口。
11.如權(quán)利要求10所述的IP日志系統(tǒng),其特征在于用戶接口是命令行接口(Command Line Interface,CLI)。
12.如權(quán)利要求10所述的IP日志系統(tǒng),其特征在于用戶接口是Web接口。
13.如權(quán)利要求7所述的IP日志系統(tǒng),其特征在于該系統(tǒng)更包括有一用于管理系統(tǒng)中的軟件及硬件的配置管理器。
全文摘要
IP日志系統(tǒng)包括有一日志模塊、一網(wǎng)絡(luò)過濾器(Netfilter)、一Klogd(Kernel Log Daemon)程序、一事件日志、一日志應(yīng)用程序接口(Logging API)、一配置管理器以及一用戶接口。網(wǎng)絡(luò)過濾器是用于從網(wǎng)絡(luò)連接中獲取含有用戶所需求信息的信息包。日志模塊用于獲取信息包中的信息,并傳送給Klogd程序。Klogd程序則將日志模塊傳送過來的信息傳送至事件日志中作記錄。日志應(yīng)用程序接口可根據(jù)用戶從用戶接口所輸入的指令以設(shè)定日志模塊的開或關(guān)。
文檔編號(hào)G06F12/14GK1567258SQ0313962
公開日2005年1月19日 申請(qǐng)日期2003年6月24日 優(yōu)先權(quán)日2003年6月24日
發(fā)明者周星雨, 何唐 申請(qǐng)人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司