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

?

Netfilter/iptables狀態(tài)防火墻探析

2015-03-18 12:24:30
網(wǎng)絡(luò)安全和信息化 2015年8期
關(guān)鍵詞:內(nèi)核防火墻數(shù)據(jù)包

Netfilter組件也稱為內(nèi)核空間,是集成在內(nèi)核中的一部分,是Linux 防火墻架構(gòu)的核心,是各種與防火墻相關(guān)模塊的實(shí)現(xiàn)基礎(chǔ)。它是Linux內(nèi)核的一個(gè)子系統(tǒng),自身實(shí)現(xiàn)的只是一個(gè)通用的框架,不依賴于具體的協(xié)議。它的作用是定義、保存相應(yīng)的規(guī)則,以實(shí)現(xiàn)防火墻功能。而iptables組件是一種工具,也稱為用戶空間,用以插入、修改、刪除信息的過濾規(guī)則及其他配置。管理員可以通過iptables來設(shè)置適合當(dāng)前應(yīng)用環(huán)境的規(guī)則,而這些規(guī)則會(huì)保存在內(nèi)核空間中。

Netfilter通過提供一個(gè)鉤子(hook)函數(shù)通用接口來實(shí)現(xiàn)各個(gè)子模塊、各種協(xié)議對(duì)數(shù)據(jù)包的特殊處理。如果某個(gè)模塊需要對(duì)流經(jīng)網(wǎng)絡(luò)協(xié)議棧中的某些數(shù)據(jù)包進(jìn)行處理時(shí),它就需要向Netfilter系統(tǒng)注冊(cè)鉤子函數(shù),告訴Netfilter它所感興趣的數(shù)據(jù)包協(xié)議類型和處理的鉤子點(diǎn)。當(dāng)這些期待的數(shù)據(jù)包通過Netfilter框架中注冊(cè)過的鉤子點(diǎn)時(shí),相應(yīng)的鉤子函數(shù)就會(huì)被調(diào)用,在鉤子函數(shù)中就可以實(shí)現(xiàn)對(duì)數(shù)據(jù)包處理過程:丟棄或者更改數(shù)據(jù)包內(nèi)容。

狀態(tài)檢測(cè)機(jī)制工作原理

一般來說,每個(gè)網(wǎng)絡(luò)連接包括以下信息:源地址、目的地址、源端口和目的端口,協(xié)議類型、連接狀態(tài)(TCP協(xié)議)和超時(shí)時(shí)間等。防火墻通常把這些信息稱作狀態(tài),能夠檢測(cè)每個(gè)連接狀態(tài)的防火墻稱作狀態(tài)包過濾防火墻。它主要完成兩部分的工作,除了能夠完成簡(jiǎn)單包過濾防火墻的工作外,它還在內(nèi)存中維護(hù)一個(gè)跟蹤連接狀態(tài)的表,從而比簡(jiǎn)單包過濾防火墻具有更大的安全性。這些狀態(tài)可以一起使用,以便匹配數(shù)據(jù)包。這可以使得防火墻非常強(qiáng)壯和有效。以前,經(jīng)常打開1024以上的所有端口來放行應(yīng)答的數(shù)據(jù)?,F(xiàn)在,有了狀態(tài)檢測(cè)機(jī)制,就不需再這樣了。因?yàn)榭梢灾婚_放那些有應(yīng)答數(shù)據(jù)的端口,其他的都可以關(guān)閉,這樣就安全多了。

狀態(tài)檢測(cè)技術(shù)是基于動(dòng)態(tài)包過濾技術(shù)之上發(fā)展而來的新技術(shù)。這種防火墻加入了一種被稱為狀態(tài)檢測(cè)的模塊,它會(huì)在不影響網(wǎng)絡(luò)正常工作的情況下,采用抽取相關(guān)數(shù)據(jù)的方法對(duì)網(wǎng)絡(luò)通信的各個(gè)層進(jìn)行監(jiān)測(cè),并根據(jù)各種過濾規(guī)則作出安全決策。狀態(tài)檢測(cè)技術(shù)保留了包過濾技術(shù)對(duì)數(shù)據(jù)包的頭部、協(xié)議、地址、端口等信息進(jìn)行分析的功能,并進(jìn)一步發(fā)展為會(huì)話過濾功能。在每個(gè)連接建立時(shí),防火墻會(huì)為這個(gè)連接構(gòu)造一個(gè)會(huì)話狀態(tài),里面包含了這個(gè)連接數(shù)據(jù)包的所有信息,以后這個(gè)連接都基于這個(gè)狀態(tài)信息進(jìn)行。這種檢測(cè)方法的優(yōu)點(diǎn)是能對(duì)每個(gè)數(shù)據(jù)包的內(nèi)容進(jìn)行監(jiān)控,一旦建立了一個(gè)會(huì)話狀態(tài),則此后的數(shù)據(jù)傳輸都要以這個(gè)會(huì)話狀態(tài)作為依據(jù)。而且,會(huì)話狀態(tài)的保留是有時(shí)間限制的,在限制的范圍內(nèi)如果沒有再進(jìn)行數(shù)據(jù)傳輸,這個(gè)會(huì)話狀態(tài)就會(huì)被丟棄。

狀態(tài)檢測(cè)防火墻將屬于同一連接的所有數(shù)據(jù)包作為一個(gè)整體數(shù)據(jù)流來看待,建立連接狀態(tài)表。并將規(guī)則表與連接狀態(tài)表結(jié)合判斷,來對(duì)流經(jīng)防火墻的數(shù)據(jù)包進(jìn)行有效的過濾。狀態(tài)檢測(cè)技術(shù)可以對(duì)包的內(nèi)容進(jìn)行分析,從而擺脫了傳統(tǒng)防火墻僅局限于過濾包頭信息的弱點(diǎn),而且這種防火墻可以不必開放過多的端口,從而進(jìn)一步杜絕了可能因開放過多端口而帶來的安全隱患。

狀態(tài)檢測(cè)機(jī)制不再把數(shù)據(jù)包之間看作是無關(guān)的,它不再對(duì)單個(gè)數(shù)據(jù)包進(jìn)行處理,而是以連接會(huì)話為單位進(jìn)行檢測(cè)。它在協(xié)議棧底層截去數(shù)據(jù)包,然后分析這些數(shù)據(jù)包。并且將當(dāng)前數(shù)據(jù)包及其狀態(tài)信息和其前一時(shí)刻的數(shù)據(jù)包及其狀態(tài)信息進(jìn)行比較,從而得到該數(shù)據(jù)包的控制信息,達(dá)到保護(hù)網(wǎng)絡(luò)安全的目的??傊?,它的思想就是將屬于同一連接的所有數(shù)據(jù)包作為一個(gè)整體的數(shù)據(jù)流來看待。狀態(tài)檢測(cè)機(jī)制不對(duì)數(shù)據(jù)包進(jìn)行過濾處理,它只是跟蹤并記錄數(shù)據(jù)包的走向,數(shù)據(jù)報(bào)過濾、網(wǎng)絡(luò)地址轉(zhuǎn)換就是建立在狀態(tài)檢測(cè)基礎(chǔ)上的。由于狀態(tài)檢測(cè)機(jī)制是在內(nèi)核模式下進(jìn)行的,所以速度很快。

Netfilter/iptables防火墻系統(tǒng)使用連接跟蹤技術(shù)來實(shí)現(xiàn)狀態(tài)檢測(cè)功能。連接跟蹤作為一個(gè)獨(dú)立運(yùn)行的模塊,它是動(dòng)態(tài)包過濾、地址轉(zhuǎn)換的基礎(chǔ)。連接跟蹤機(jī)制依靠設(shè)置在Netfilter防火墻框架中的鉤子函數(shù),來檢查每一個(gè)有效的連接的狀態(tài),然后根據(jù)這些信息決定數(shù)據(jù)包是否可以通過防火墻。

連接跟蹤機(jī)制的核心是在協(xié)議棧底層為數(shù)據(jù)包建立連接狀態(tài)信息,通過識(shí)別數(shù)據(jù)包的狀態(tài),避免了包過濾防火墻僅考查數(shù)據(jù)包的IP地址和端口等幾個(gè)參數(shù)而不關(guān)心數(shù)據(jù)包之間相互聯(lián)系的缺點(diǎn)。在防火墻的核心部分建立動(dòng)態(tài)的連接狀態(tài)表,并將進(jìn)出網(wǎng)絡(luò)的數(shù)據(jù)當(dāng)成一個(gè)個(gè)的會(huì)話,利用狀態(tài)表跟蹤每一個(gè)會(huì)話狀態(tài)。連接跟蹤機(jī)制對(duì)每一個(gè)包的檢查不僅根據(jù)規(guī)則表更考慮了數(shù)據(jù)包是否符合會(huì)話所處的狀態(tài),這種方式可以帶來更高的效率、更有力的訪問控制和更強(qiáng)的安全能力。

當(dāng)數(shù)據(jù)包到達(dá)時(shí),防火墻的連接跟蹤機(jī)制根據(jù)連接狀態(tài)表中的信息來決定包的狀態(tài)。如果該IP包是屬于一個(gè)已經(jīng)建立的連接那么就直接越過協(xié)議棧中的規(guī)則檢測(cè)部分,交給上層協(xié)議處理。如果該IP包不屬于一個(gè)已經(jīng)建立的連接,那么轉(zhuǎn)入正常的規(guī)則檢測(cè)部分,然后根據(jù)規(guī)則檢測(cè)的結(jié)果決定對(duì)IP包的操作。同時(shí),連接狀態(tài)表的使用大大降低了把數(shù)據(jù)包偽裝成一個(gè)正在使用的連接的一部分的可能。

Netfilter/iptables防火墻的狀態(tài)檢測(cè)機(jī)制還能對(duì)應(yīng)用層的信息進(jìn)行檢查,即對(duì)特定類型的數(shù)據(jù)包中的數(shù)據(jù)進(jìn)行檢測(cè)。可以檢查ICMP報(bào)文所承載的數(shù)據(jù),可以檢查FTP、SMTP數(shù)據(jù)包中是否包含了不安全的命令,可以過濾HTTP協(xié)議的不安全的請(qǐng)求,甚至能實(shí)現(xiàn)簡(jiǎn)單的URL或關(guān)鍵字過濾。

連接跟蹤的實(shí)現(xiàn)

Netfilter的連接跟蹤模塊(nf_conntrack.ko)可以將進(jìn)入?yún)f(xié)議棧的報(bào)文建立連接,進(jìn)行連接跟蹤。因?yàn)槭褂脿顟B(tài)檢測(cè),所以如果沒有數(shù)據(jù)率限制時(shí),只需要檢測(cè)首包,也就是在連接跟蹤表中還未建立連接的報(bào)文。如果發(fā)現(xiàn)是狀態(tài)為已建立連接,不用匹配任何規(guī)則,直接放行。

在每一條數(shù)據(jù)包檢查路徑上,連接跟蹤、包過濾和地址轉(zhuǎn)換都注冊(cè)了相應(yīng)的鉤子函數(shù),并創(chuàng)建與之相關(guān)的數(shù)據(jù)結(jié)構(gòu),完成其功能。以防火墻轉(zhuǎn)發(fā)數(shù)據(jù)包為例,鉤子執(zhí)行功能點(diǎn)檢查的順序如下:連接跟蹤、目的地址轉(zhuǎn)換、包過濾、源地址轉(zhuǎn)換、連接跟蹤。

連接跟蹤在路徑上出現(xiàn)了兩次,所起作用是:在第一個(gè)點(diǎn)上創(chuàng)建連接跟蹤的結(jié)構(gòu),即連接跟蹤表(庫),這個(gè)結(jié)構(gòu)會(huì)在后面的目的地址轉(zhuǎn)換和包過濾中被使用;在第二個(gè)點(diǎn)上將連接跟蹤的結(jié)構(gòu)加載到系統(tǒng)的連接表中。

連接跟蹤表實(shí)際是一個(gè)以哈希散列值排列的雙向鏈表數(shù)組,用來描述所有的連接狀態(tài),鏈表記錄元素即為連接記錄所包含的數(shù)據(jù)包五元組及其它必需的狀態(tài)信息等,用來唯一標(biāo)識(shí)一個(gè)連接。連接跟蹤表是一塊內(nèi)存空間,采用了高效的插入、修改、移動(dòng)、刪除等算法,故匹配速度比規(guī)則集更高效更快速。連接跟蹤表的容量不是無限大,默認(rèn)值隨著硬件配置,特別是內(nèi)存大小而改變。實(shí)際上,百萬條記錄的連接跟蹤表也不會(huì)占用超過1GB的內(nèi)存。此外,默認(rèn)的防火墻最大連接跟蹤數(shù)目是有限制的,與Linux系統(tǒng)的體系結(jié)構(gòu)、內(nèi)存容量是有一定相關(guān)性的。當(dāng)然,如果認(rèn)為默認(rèn)的最大連接跟蹤數(shù)不足,是可以通過修改連接跟蹤模塊的參數(shù)值調(diào)整的。

連接跟蹤的四種狀態(tài)

無論是流入、轉(zhuǎn)發(fā),還是防火墻本地進(jìn)程產(chǎn)生的數(shù)據(jù)包,在到達(dá)網(wǎng)絡(luò)層之后,首先利用這個(gè)狀態(tài)檢測(cè)機(jī)制來查看連接跟蹤表是否具有該數(shù)據(jù)包的軌跡連接項(xiàng),如果沒有數(shù)據(jù)包的軌跡項(xiàng),就將為該數(shù)據(jù)包在連接跟蹤表中初始化一個(gè)軌跡項(xiàng),在此時(shí)將檢驗(yàn)該連接是否是某個(gè)期望的連接,如果是就將其狀態(tài)信息定義為相關(guān)連接,如果沒有相關(guān)性,就將其信息值定義為新建連接,數(shù)據(jù)包在連接跟蹤表中初始化對(duì)應(yīng)的軌跡項(xiàng)后繼續(xù)根據(jù)優(yōu)先級(jí)調(diào)用防火墻代碼處理;如果在連接跟蹤表中找到了對(duì)應(yīng)的軌跡項(xiàng),我們將把這個(gè)軌跡項(xiàng)定義為舊值,再根據(jù)這個(gè)舊值以及輸入的數(shù)據(jù)包的包類型,連接方向來確定一個(gè)新值,并用這個(gè)新值來更新連接跟蹤表。

簡(jiǎn)單說來,Netfilter在協(xié)議棧底層截取數(shù)據(jù)包進(jìn)行分析,并且將當(dāng)前數(shù)據(jù)包及其狀態(tài)信息和其前一時(shí)刻數(shù)據(jù)包及狀態(tài)信息進(jìn)行比較,得到該數(shù)據(jù)包控制信息。Linux內(nèi)核的連接跟蹤模塊將數(shù)據(jù)包的連接分為四個(gè)狀態(tài):NEW、ESTABLISHED、RELATED和INVALID。通過對(duì)這四種狀態(tài)的匹配,實(shí)現(xiàn)狀態(tài)化防火墻的所有功能。需要指明的是,這四種狀態(tài)是與協(xié)議無關(guān)的,即對(duì)TCP、UDP、ICMP 三種協(xié)議均有效,切記不可與面向連接的TCP狀態(tài)轉(zhuǎn)化機(jī)制相混淆。對(duì)這四種狀態(tài)的描述如下:

NEW,表示分組將要或已經(jīng)開始建立一個(gè)新的連接,或者是這個(gè)數(shù)據(jù)包和一個(gè)還沒有在兩端都有數(shù)據(jù)發(fā)送的連接有關(guān),它即將通過防火墻的安全規(guī)則進(jìn)行匹配了。顯而易見,此狀態(tài)的數(shù)據(jù)包必然與Netfilter規(guī)則集匹配,并經(jīng)此處理過程后建立連接跟蹤表。

ESTABLISHED,意思是分組是完全有效的,而且屬于一個(gè)已建立的連接,這個(gè)連接的兩端都已經(jīng)有數(shù)據(jù)發(fā)送。此狀態(tài)表明狀態(tài)檢測(cè)機(jī)制已經(jīng)看到兩個(gè)方向上的數(shù)據(jù)傳輸并且將不斷匹配它。處于ESTABLISHED狀態(tài)的連接很容易理解,只要發(fā)送數(shù)據(jù)包并接到應(yīng)答,連接就處于ESTABLISHED狀態(tài)。應(yīng)答數(shù)據(jù)包到達(dá)或通過防火墻,此連接就從NEW狀態(tài)轉(zhuǎn)變到ESTABLISHED狀態(tài)了。即使該數(shù)據(jù)包是ICMP錯(cuò)誤和重定向數(shù)據(jù)包,只要該數(shù)據(jù)包是請(qǐng)求包的回應(yīng)包,該連接的狀態(tài)都將轉(zhuǎn)變?yōu)镋STABLISHED狀態(tài)。

RELATED,說明分組正在建立一個(gè)新的連接,這個(gè)連接是和一個(gè)已建立的連接相關(guān)的。也就是說,當(dāng)一個(gè)連接和某個(gè)已處于ESTABLISHED狀態(tài)的連接有關(guān)系時(shí),就被認(rèn)為是RELATED狀態(tài)。RELATED是個(gè)比較麻煩的狀態(tài),這說明一個(gè)狀態(tài)要成為RELATED狀態(tài),則必須先有ESTABLISHED連接狀態(tài),這 個(gè)ESTABLISHED狀態(tài)再產(chǎn)生一個(gè)該連接以外的連接,這樣這個(gè)新的連接就處于RELATED狀態(tài),當(dāng)然前提是連接跟蹤模塊要能理解RELATED狀態(tài)。以FTP為例,每個(gè)FTP 由數(shù)據(jù)連接和控制連接組成,數(shù)據(jù)連接就是和控制連接有關(guān)聯(lián)的。如果沒有RELATED狀態(tài),數(shù)據(jù)連接是無法正確建立的。有了這個(gè)狀態(tài),ICMP特定類型的響應(yīng)、FTP傳輸?shù)炔拍艽┻^防火墻正常工作。一言以蔽之,這個(gè)RELATED狀態(tài)是某個(gè)處于ESTABLISHED狀態(tài)的數(shù)據(jù)包所期望的、也是被動(dòng)產(chǎn)生的,不屬于現(xiàn)在任何連接的新連接。

INVALID,表示分組對(duì)應(yīng)的連接是未知的,說明數(shù)據(jù)包不能被識(shí)別屬于哪個(gè)連接或沒有任何狀態(tài)。這就意味著這個(gè)包沒有己知的流或連接與之關(guān)聯(lián),也可能是它包含的數(shù)據(jù)或包頭有問題。狀態(tài)為INVALID的包就是狀態(tài)不明的包,也就是不屬于前面3種狀態(tài)的包,這類包一般會(huì)被視為惡意包而被丟棄。有多種原因產(chǎn)生該情況的數(shù)據(jù)包,比如連接跟蹤表溢出,系統(tǒng)內(nèi)存耗盡,或ICMP報(bào)錯(cuò)消息對(duì)任何已知連接不作響應(yīng)。通常的選擇是丟棄此狀態(tài)下的所有包。要特別指出的是,對(duì)于很多掃描攻擊工具構(gòu)造的掃描或攻擊報(bào)文,Netfilter/iptables會(huì)將其標(biāo)記為INVALID狀態(tài),如需要記錄或追蹤惡意數(shù)據(jù)包的來源,深入研究如何處理INVALID狀態(tài)的數(shù)據(jù)包就十分關(guān)鍵。

TCP、UDP及ICMP狀態(tài)跟蹤分析

對(duì)于TCP 協(xié)議來說該連接的第一個(gè)數(shù)據(jù)包是SYN數(shù)據(jù)包。對(duì)于Ping 操作的ICMP 數(shù)據(jù)包的第一個(gè)包是回聲請(qǐng)求包。但對(duì)UDP 協(xié)議或其它數(shù)據(jù)包來說,當(dāng)它們不是SYN數(shù)據(jù)包時(shí),連接跟蹤機(jī)制也把它的第一個(gè)數(shù)據(jù)包當(dāng)成NEW 狀態(tài)的數(shù)據(jù)包。

NEW,表示這個(gè)分組需要發(fā)起一個(gè)連接,或者說,分組對(duì)應(yīng)的連接在兩個(gè)方向上都沒有進(jìn)行過分組傳輸。NEW說明這個(gè)包是我們看到的第一個(gè)包。意思就是,這是連線跟蹤模塊看到的某個(gè)連接第一個(gè)包,它即將被匹配了。比如,我們看到一個(gè)SYN包,是我們所留意的連接的第一個(gè)包,就要匹配它。第一個(gè)包也可能不是SYN包,但它仍會(huì)被認(rèn)為是NEW狀態(tài)。比如一個(gè)特意發(fā)出的探測(cè)包,可能只有RST位,但仍然是NEW。某些精心構(gòu)造的網(wǎng)絡(luò)掃描或攻擊報(bào)文,與此類似。

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

Netfilter/iptables的連接狀態(tài)跟蹤的全功能實(shí)現(xiàn),對(duì)基于TCP協(xié)議的應(yīng)用而言相對(duì)容易;對(duì)基于TCP與UDP組合協(xié)議的應(yīng)用(如SIP),特別是在NAT環(huán)境下,需借助應(yīng)用級(jí)網(wǎng)關(guān)技術(shù);對(duì)基于TCP(UDP)與ICMP組合協(xié)議的應(yīng)用,如路由探測(cè)工具,則是充分利用了ICMP協(xié)議某些類型數(shù)據(jù)包的“雙IP包頭”特性。所謂雙IP包頭是指網(wǎng)絡(luò)設(shè)備生成特定類型的ICMP響應(yīng)報(bào)文時(shí),會(huì)將引發(fā)此響應(yīng)的原數(shù)據(jù)包(不管是TCP、UDP還是ICMP包)原封不動(dòng)地封裝在ICMP響應(yīng)應(yīng)答數(shù)據(jù)包中,最為ICMP報(bào)文的承載數(shù)據(jù)。在此以路由探測(cè)工具所產(chǎn)生的數(shù)據(jù)包為例,進(jìn)行拓展分析,加深對(duì)NEW、ESTABLISHED、RELATED這三種狀態(tài)的理解。

Windows主 機(jī) 到Netfilter/iptables防火墻自身IP地址的路由探測(cè)包,從INPUT鏈流入的ICMP回聲請(qǐng)求數(shù)據(jù)包狀態(tài)為NEW,從OUTPUT鏈流出的ICMP 回聲應(yīng)答數(shù)據(jù)包的狀態(tài)總是為ESTABLISHED。而穿過防火墻到遠(yuǎn)端主機(jī)的路由探測(cè)包,從FORWARD鏈流入的ICMP回聲請(qǐng)求數(shù)據(jù)包狀態(tài)為NEW,目標(biāo)遠(yuǎn)程主機(jī)返回穿過FORWARD鏈的ICMP回聲應(yīng)答數(shù)據(jù)包的狀態(tài)總是為ESTABLISHED,而探測(cè)路徑下游的路由器因路由探測(cè)數(shù)據(jù)包的TTL值為0,而生成的反饋給源Windows主機(jī)的ICMP 超時(shí)數(shù)據(jù)包的狀態(tài)為RELATED。

Linux主機(jī)到Netfilter/iptables防火墻自身IP地址的路由探測(cè)包,從INPUT鏈流入的UDP數(shù)據(jù)包狀態(tài)為NEW,從OUTPUT鏈流出的ICMP 目標(biāo)不可達(dá)數(shù)據(jù)包的狀態(tài)總是為RELATED。而穿過防火墻到遠(yuǎn)端主機(jī)的路由探測(cè)包,流入FORWARD鏈的UDP數(shù)據(jù)包的狀態(tài)總是為NEW,從目標(biāo)遠(yuǎn)端主機(jī)返回的ICMP 目標(biāo)不可達(dá)數(shù)據(jù)包以及下游探測(cè)路徑中的路由器因路由探測(cè)數(shù)據(jù)包的TTL值為0,而生成的反饋給源端Linux主機(jī)的ICMP超時(shí)數(shù)據(jù)包的狀態(tài)總是為RELATED。

Linux到Netfilter/iptables防火墻自身的基于TCP協(xié)議的路由探測(cè),如利用tcptraceroute工具生成的探測(cè)報(bào)文,進(jìn)入INPUT鏈的TCP SYN數(shù)據(jù)包狀態(tài)為NEW,從OUTPUT鏈流出的TCP數(shù)據(jù)包的狀態(tài)為ESTABLISHED。而穿過防火墻到目標(biāo)遠(yuǎn)端主機(jī)的路由探測(cè),經(jīng)FORWARD鏈轉(zhuǎn)發(fā)的TCP SYN數(shù)據(jù)包的狀態(tài)為NEW,下游探測(cè)路徑中的路由器因路由探測(cè)數(shù)據(jù)包的TTL值為0,而生成的反饋給源端Linux主機(jī)的ICMP 超時(shí)數(shù)據(jù)包的狀態(tài)總是為RELATED,而遠(yuǎn)端主機(jī)返回的TCP數(shù)據(jù)包的狀態(tài)總是為ESTABLISHED。

iptables命令實(shí)現(xiàn)

Linux 內(nèi)核2.4/2.6中的防火墻Netfilter框架在應(yīng)用層提供了iptables 這個(gè)工具,用戶通過它可以對(duì)內(nèi)核進(jìn)行添加或查詢規(guī)則等操作。前文所述的四種狀態(tài)定義在命令接口的iptables 命令(基于Centos6.4,2.6.32內(nèi)核)的“-m state”或“-m conntrack”匹配中。當(dāng)使用“-m state”時(shí),iptables會(huì)自動(dòng)加載xt_state.ko模塊;當(dāng)使用“-m conntrack”時(shí),iptables自動(dòng)加載xt_conntrack.ko模塊。這兩個(gè)模塊位于/lib/modules//kernel/net/netfilter目 錄 下。xt_conntrack.ko模塊可視為xt_state.ko模塊的加強(qiáng)版,使用方法幾乎如出一轍,但功能更強(qiáng)大,語法使用也更靈活。

編寫iptables匹配規(guī)則,要特別注意數(shù)據(jù)包流動(dòng)的方向性,流入/流出規(guī)則成對(duì)匹配,轉(zhuǎn)發(fā)時(shí)要有對(duì)返回?cái)?shù)據(jù)包的匹配規(guī)則,以保障數(shù)據(jù)包來回流動(dòng)安全通暢。

猜你喜歡
內(nèi)核防火墻數(shù)據(jù)包
萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
構(gòu)建防控金融風(fēng)險(xiǎn)“防火墻”
基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
Linux內(nèi)核mmap保護(hù)機(jī)制研究
SmartSniff
基于Libpcap的網(wǎng)絡(luò)數(shù)據(jù)包捕獲器的設(shè)計(jì)與實(shí)現(xiàn)
下一代防火墻要做的十件事
視覺注意的數(shù)據(jù)包優(yōu)先級(jí)排序策略研究
移動(dòng)IPV6在改進(jìn)數(shù)據(jù)包發(fā)送路徑模型下性能分析
温泉县| 崇阳县| 华亭县| 杭锦后旗| 洛阳市| 连云港市| 东明县| 博野县| 融水| 建昌县| 灌阳县| 平顺县| 丹东市| 休宁县| 巴林右旗| 杭锦后旗| 清流县| 古田县| 宁国市| 溧水县| 临城县| 长垣县| 武夷山市| 博乐市| 新巴尔虎右旗| 龙山县| 台南县| 瓮安县| 买车| 新龙县| 桐城市| 张掖市| 吴川市| 安宁市| 博客| 黑龙江省| 泸溪县| 潮安县| 浏阳市| 三明市| 凉城县|