主頁(yè) > 知識(shí)庫(kù) > 構(gòu)筑Linux防火墻之IPtables的概念與用法(2)

構(gòu)筑Linux防火墻之IPtables的概念與用法(2)

熱門標(biāo)簽:解決方案 電話機(jī)器人搭建 家政服務(wù)網(wǎng)絡(luò) 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 硅谷的囚徒呼叫中心 外呼系統(tǒng) 服務(wù)器配置 美團(tuán)
目標(biāo)(target)
我們已經(jīng)知道,目標(biāo)是由規(guī)則指定的操作,那些與規(guī)則匹配的信息包執(zhí)行這些操作。除了允許用戶定義的目標(biāo)之外,還有許多可用的目標(biāo)選項(xiàng)。用于建立高級(jí)規(guī)則的目標(biāo),如LOG、REDIRECT、MARK、MIRROR 和MASQUERADE等。
狀態(tài)機(jī)制
狀態(tài)機(jī)制是iptables中特殊的一部分,其實(shí)它不應(yīng)該叫狀態(tài)機(jī)制,因?yàn)樗皇且环N連接跟蹤機(jī)制。但是,很多人都認(rèn)可狀態(tài)機(jī)制這個(gè)名字。連接跟蹤可以讓netfilter知道某個(gè)特定連接淖刺T誦辛癰俚姆闌鵯匠譜鞔兇刺頻姆闌鵯劍韻錄虺莆刺闌鵯?。状态逢@鵯獎(jiǎng)確親刺闌鵯揭踩?,因为它允许晤U潛嘈錘廈艿墓嬖頡?BR>
在iptables里,包是和被跟蹤連接的四種不同狀態(tài)有關(guān)的。它們是NEW、ESTABLISHED、RELATED和INVALID。使用--state匹配操作,我們能很容易地控制“誰(shuí)或什么能發(fā)起新的會(huì)話”。
所有在內(nèi)核中由netfilter的特定框架做的連接跟蹤稱作conntrack(就是connection tracking的首字母縮寫)。conntrack可以作為模塊安裝,也可以作為內(nèi)核的一部分。大部分情況下,我們需要更詳細(xì)的連接跟蹤。因此,conntrack中有許多用來(lái)處理TCP、UDP或ICMP協(xié)議的部件。這些模塊從數(shù)據(jù)包中提取詳細(xì)的、唯一的信息,因此能保持對(duì)每一個(gè)數(shù)據(jù)流的跟蹤。這些信息也告知conntrack流當(dāng)前的狀態(tài)。例如,UDP流一般由他們的目的地址、源地址、目的端口和源端口唯一確定。
在以前的內(nèi)核里,我們可以打開(kāi)或關(guān)閉重組功能。然而,自從iptables和netfilter,尤其是連接跟蹤被引入內(nèi)核,這個(gè)選項(xiàng)就被取消了。因?yàn)闆](méi)有包的重組,連接跟蹤就不能正常工作?,F(xiàn)在重組已經(jīng)整合入conntrack,并且在conntrack啟動(dòng)時(shí)自動(dòng)啟動(dòng)。不要關(guān)閉重組功能,除非你要關(guān)閉連接跟蹤。
除了本地產(chǎn)生的包由OUTPUT鏈處理外,所有連接跟蹤都是在PREROUTING鏈里進(jìn)行處理的,意思就是說(shuō)iptables會(huì)在PREROUTING鏈里重新計(jì)算所有的狀態(tài)。如果我們發(fā)送一個(gè)流的初始化包,狀態(tài)就會(huì)在OUTPUT鏈里被設(shè)置為NEW,當(dāng)我們收到回應(yīng)的包時(shí),狀態(tài)就會(huì)在PREROUTING鏈里被設(shè)置為ESTABLISHED。如果第一個(gè)包不是本地產(chǎn)生的,那就會(huì)在PREROUTING鏈里被設(shè)置為NEW狀態(tài)。綜上所述,所有狀態(tài)的改變和計(jì)算都是在nat表中的PREROUTING鏈和OUTPUT鏈里完成的。
正如前面說(shuō)的,包的狀態(tài)依據(jù)IP所包含的協(xié)議不同而不同,但在內(nèi)核外部,也就是用戶空間里,只有4種狀態(tài):NEW、ESTABLISHED、RELATED和INVALID。它們主要是和狀態(tài)匹配一起使用。
NEW
NEW說(shuō)明這個(gè)包是我們看到的第一個(gè)包。意思就是,這是conntrack模塊看到的某個(gè)連接第一個(gè)包,它即將被匹配了。比如,我們看到一個(gè)SYN包,是我們所留意的連接的第一個(gè)包,就要匹配它。第一個(gè)包也可能不是SYN包,但它仍會(huì)被認(rèn)為是NEW狀態(tài)。
ESTABLISHED
ESTABLISHED已經(jīng)注意到兩個(gè)方向上的數(shù)據(jù)傳輸,而且會(huì)繼續(xù)匹配這個(gè)連接的包。處于ESTABLISHED狀態(tài)的連接是非常容易理解的。只要發(fā)送并接到應(yīng)答,連接就是ESTABLISHED的了。一個(gè)連接要從NEW變?yōu)镋STABLISHED,只需要接到應(yīng)答包即可,不管這個(gè)包是發(fā)往防火墻的,還是要由防火墻轉(zhuǎn)發(fā)的。ICMP的錯(cuò)誤和重定向等信息包也被看作是ESTABLISHED,只要它們是我們所發(fā)出的信息的應(yīng)答。
RELATED
RELATED是個(gè)比較麻煩的狀態(tài)。當(dāng)一個(gè)連接和某個(gè)已處于ESTABLISHED狀態(tài)的連接有關(guān)系時(shí),就被認(rèn)為是RELATED的了。換句話說(shuō),一個(gè)連接要想是RELATED的,首先要有一個(gè)ESTABLISHED的連接。這個(gè)ESTABLISHED連接再產(chǎn)生一個(gè)主連接之外的連接,這個(gè)新的連接就是RELATED的了,當(dāng)然前提是conntrack模塊要能理解RELATED。ftp是個(gè)很好的例子,F(xiàn)TP-data 連接就是和FTP-control有RELATED的。
INVALID
INVALID說(shuō)明數(shù)據(jù)包不能被識(shí)別屬于哪個(gè)連接或沒(méi)有任何狀態(tài)。有幾個(gè)原因可以產(chǎn)生這種情況,比如,內(nèi)存溢出,收到不知屬于哪個(gè)連接的ICMP錯(cuò)誤信息。一般地,我們DROP這個(gè)狀態(tài)的任何東西。
這些狀態(tài)可以一起使用,以便匹配數(shù)據(jù)包。這可以使我們的防火墻非常強(qiáng)壯和有效。以前,我們經(jīng)常打開(kāi)1024以上的所有端口來(lái)放行應(yīng)答的數(shù)據(jù)。現(xiàn)在,有了狀態(tài)機(jī)制,就不需再這樣了。因?yàn)槲覀兛梢灾婚_(kāi)放那些有應(yīng)答數(shù)據(jù)的端口,其他的都可以關(guān)閉。這樣就安全多了。

標(biāo)簽:南昌 撫州 韶關(guān) 防城港 臨沂 北海 邢臺(tái) 烏蘭察布

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《構(gòu)筑Linux防火墻之IPtables的概念與用法(2)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266