久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Netfilter

來(lái)自站長(zhǎng)百科
Ahbaybface討論 | 貢獻(xiàn)2011年8月15日 (一) 11:52的版本
(差異) ←上一版本 | 最后版本 (差異) | 下一版本→ (差異)
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

netfilter是由Rusty Russell提出的Linux 2.4內(nèi)核防火墻框架,該框架既簡(jiǎn)潔又靈活,可實(shí)現(xiàn)安全策略應(yīng)用中的許多功能,如數(shù)據(jù)包過(guò)濾、數(shù)據(jù)包處理、地址偽裝、透明代理、動(dòng)態(tài)網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT),以及基于用戶及媒體訪問(wèn)控制(Media Access Control,MAC)地址的過(guò)濾和基于狀態(tài)的過(guò)濾、包速率限制等。

netfilter框架[ ]

netfilter提供了一個(gè)抽象、通用化的框架,作為中間件,為每種網(wǎng)絡(luò)協(xié)議(IPV4、IPv6等)定義一套鉤子函數(shù)。Ipv4定義了5個(gè)鉤子函數(shù),這些鉤子函數(shù)在數(shù)據(jù)報(bào)流過(guò)協(xié)議棧的5個(gè)關(guān)鍵點(diǎn)被調(diào)用,也就是說(shuō),IPv4協(xié)議棧上定義了5個(gè)“允許垂釣點(diǎn)”。在每一個(gè)“垂釣點(diǎn)”,都可以讓netfilter放置一個(gè)“魚(yú)鉤”,把經(jīng)過(guò)的網(wǎng)絡(luò)包(Packet)釣上來(lái),與相應(yīng)的規(guī)則鏈進(jìn)行比較,并根據(jù)審查的結(jié)果,決定包的下一步命運(yùn),即是被原封不動(dòng)地放回IPv4協(xié)議棧,繼續(xù)向上層遞交;還是經(jīng)過(guò)一些修改,再放回網(wǎng)絡(luò);或者干脆丟棄掉。

netfilter的關(guān)鍵技術(shù)[ ]

netfilter主要采用連線跟蹤(Connection Tracking)、包過(guò)濾(Packet Filtering)、地址轉(zhuǎn)換、包處理(Packet Mangling)4種關(guān)鍵技術(shù)。

連線跟蹤[ ]

連線跟蹤是包過(guò)濾、地址轉(zhuǎn)換的基礎(chǔ),它作為一個(gè)獨(dú)立的模塊運(yùn)行。采用連線跟蹤技術(shù)在協(xié)議棧低層截取數(shù)據(jù)包,將當(dāng)前數(shù)據(jù)包及其狀態(tài)信息與歷史數(shù)據(jù)包及其狀態(tài)信息進(jìn)行比較,從而得到當(dāng)前數(shù)據(jù)包的控制信息,根據(jù)這些信息決定對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的操作,達(dá)到保護(hù)網(wǎng)絡(luò)的目的。

當(dāng)下層網(wǎng)絡(luò)接收到初始化連接同步(Synchronize,SYN)包,將被netfilter規(guī)則庫(kù)檢查。該數(shù)據(jù)包將在規(guī)則鏈中依次序進(jìn)行比較。如果該包應(yīng)被丟棄,發(fā)送一個(gè)復(fù)位(Reset,RST)包到遠(yuǎn)端主機(jī),否則連接接收。這次連接的信息將被保存在連線跟蹤信息表中,并表明該數(shù)據(jù)包所應(yīng)有的狀態(tài)。這個(gè)連線跟蹤信息表位于內(nèi)核模式下,其后的網(wǎng)絡(luò)包就將與此連線跟蹤信息表中的內(nèi)容進(jìn)行比較,根據(jù)信息表中的信息來(lái)決定該數(shù)據(jù)包的操作。因?yàn)閿?shù)據(jù)包首先是與連線跟蹤信息表進(jìn)行比較,只有SYN包才與規(guī)則庫(kù)進(jìn)行比較,數(shù)據(jù)包與連線跟蹤信息表的比較都是在內(nèi)核模式下進(jìn)行的,所以速度很快。

包過(guò)濾[ ]

包過(guò)濾檢查通過(guò)的每個(gè)數(shù)據(jù)包的頭部,然后決定如何處置它們,可以選擇丟棄,讓包通過(guò),或者更復(fù)雜的操作。

地址轉(zhuǎn)換[ ]

網(wǎng)絡(luò)地址轉(zhuǎn)換源(NAT)分為(Source NAT,SNAT)和目的NAT(Destination NAT, DNAT)2種不同的類型。SNAT是指修改數(shù)據(jù)包的源地址(改變連接的源IP)。SNAT會(huì)在數(shù)據(jù)包送出之前的最后一刻做好轉(zhuǎn)換工作。地址偽裝(Masquerading)是SNAT的一種特殊形式。DNAT 是指修改數(shù)據(jù)包的目標(biāo)地址(改變連接的目的IP)。DNAT 總是在數(shù)據(jù)包進(jìn)入以后立即完成轉(zhuǎn)換。端口轉(zhuǎn)發(fā)、負(fù)載均衡和透明代理都屬于DNAT。

包處理[ ]

利用包處理可以設(shè)置或改變數(shù)據(jù)包的服務(wù)類型(Type of Service, TOS)字段;改變包的生存期(Time to Live, TTL)字段;在包中設(shè)置標(biāo)志值,利用該標(biāo)志值可以進(jìn)行帶寬限制和分類查詢。

netfilter分類[ ]

Netfilter主要通過(guò)表、鏈實(shí)現(xiàn)規(guī)則,可以這么說(shuō),Netfilter是表的容器,表是鏈的容器,鏈?zhǔn)且?guī)則的容器,最終形成對(duì)數(shù)據(jù)報(bào)處理規(guī)則的實(shí)現(xiàn)。

詳細(xì)地說(shuō),Netfilter/IPTables的體系結(jié)構(gòu)可以分為三個(gè)大部分:

  • Netfilter的HOOK機(jī)制

Netfilter的通用框架不依賴于具體的協(xié)議,而是為每種網(wǎng)絡(luò)協(xié)議定義一套HOOK函數(shù)。這些HOOK函數(shù)在數(shù)據(jù)報(bào)經(jīng)過(guò)協(xié)議棧的幾個(gè)關(guān)鍵點(diǎn)時(shí)被調(diào)用,在這幾個(gè)點(diǎn)中,協(xié)議棧將數(shù)據(jù)報(bào)及HOOK函數(shù)標(biāo)號(hào)作為參數(shù),傳遞給Netfilter框架。

對(duì)于它在網(wǎng)絡(luò)堆棧中增加的這些HOOK,內(nèi)核的任何模塊可以對(duì)每種協(xié)議的一個(gè)或多個(gè)HOOK進(jìn)行注冊(cè),實(shí)現(xiàn)掛接。這樣當(dāng)某個(gè)數(shù)據(jù)報(bào)被傳遞給Netfilter框架時(shí),內(nèi)核能檢測(cè)到是否有任何模塊對(duì)該協(xié)議和HOOK函數(shù)進(jìn)行了注冊(cè)。若注冊(cè)了,則調(diào)用該模塊的注冊(cè)時(shí)使用的回調(diào)函數(shù),這樣這些模塊就有機(jī)會(huì)檢查、修改、丟棄該數(shù)據(jù)報(bào)及指示Netfilter將該數(shù)據(jù)報(bào)傳入用戶空間的隊(duì)列。

這樣,HOOK提供了一種方便的機(jī)制:在數(shù)據(jù)報(bào)通過(guò)Linux內(nèi)核的不同位置上截獲和操作處理數(shù)據(jù)報(bào)。

  • IPTables基礎(chǔ)模塊

PTables基礎(chǔ)模塊實(shí)現(xiàn)了三個(gè)表來(lái)篩選各種數(shù)據(jù)報(bào),具體地講,Linux2.4內(nèi)核提供的這三種數(shù)據(jù)報(bào)的處理功能是相互間獨(dú)立的模塊,都基于Netfilter的HOOK函數(shù)和各種表、鏈實(shí)現(xiàn)。這三個(gè)表包括:filter表,nat表以及mangle表。

  • 具體功能模塊
  • 數(shù)據(jù)報(bào)過(guò)濾模塊
  • 連接跟蹤模塊(Conntrack)
  • 網(wǎng)絡(luò)地址轉(zhuǎn)換模塊(NAT)
  • 數(shù)據(jù)報(bào)修改模塊(mangle)
  • 其它高級(jí)功能模塊

相關(guān)條目[ ]

參考來(lái)源[ ]