linux平台下防火墙iptables原理(转)
原文地址:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646466.html
iptables簡介
??? netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防火墻,與大多數(shù)的Linux軟件一樣,這個包過濾防火墻是免費(fèi)的,它可以代替昂貴的商業(yè)防火墻解決方案,完成封包過濾、封包重定向和網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)等功能。
iptables基礎(chǔ)
??? 規(guī)則(rules)其實(shí)就是網(wǎng)絡(luò)管理員預(yù)定義的條件,規(guī)則一般的定義為“如果數(shù)據(jù)包頭符合這樣的條件,就這樣處理這個數(shù)據(jù)包”。規(guī)則存儲在內(nèi)核空間的信息包過濾表中,這些規(guī)則分別指定了源地址、目的地址、傳輸協(xié)議(如TCP、UDP、ICMP)和服務(wù)類型(如HTTP、FTP和SMTP)等。當(dāng)數(shù)據(jù)包與規(guī)則匹配時,iptables就根據(jù)規(guī)則所定義的方法來處理這些數(shù)據(jù)包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火墻的主要工作就是添加、修改和刪除這些規(guī)則。
iptables和netfilter的關(guān)系:
??? 這是第一個要說的地方,Iptables和netfilter的關(guān)系是一個很容易讓人搞不清的問題。很多的知道iptables卻不知道netfilter。其實(shí)iptables只是Linux防火墻的管理工具而已,位于/sbin/iptables。真正實(shí)現(xiàn)防火墻功能的是netfilter,它是Linux內(nèi)核中實(shí)現(xiàn)包過濾的內(nèi)部結(jié)構(gòu)。
iptables傳輸數(shù)據(jù)包的過程
① 當(dāng)一個數(shù)據(jù)包進(jìn)入網(wǎng)卡時,它首先進(jìn)入PREROUTING鏈,內(nèi)核根據(jù)數(shù)據(jù)包目的IP判斷是否需要轉(zhuǎn)送出去。?
② 如果數(shù)據(jù)包就是進(jìn)入本機(jī)的,它就會沿著圖向下移動,到達(dá)INPUT鏈。數(shù)據(jù)包到了INPUT鏈后,任何進(jìn)程都會收到它。本機(jī)上運(yùn)行的程序可以發(fā)送數(shù)據(jù)包,這些數(shù)據(jù)包會經(jīng)過OUTPUT鏈,然后到達(dá)POSTROUTING鏈輸出。?
③ 如果數(shù)據(jù)包是要轉(zhuǎn)發(fā)出去的,且內(nèi)核允許轉(zhuǎn)發(fā),數(shù)據(jù)包就會如圖所示向右移動,經(jīng)過FORWARD鏈,然后到達(dá)POSTROUTING鏈輸出。
iptables的規(guī)則表和鏈:
??? 表(tables)提供特定的功能,iptables內(nèi)置了4個表,即filter表、nat表、mangle表和raw表,分別用于實(shí)現(xiàn)包過濾,網(wǎng)絡(luò)地址轉(zhuǎn)換、包重構(gòu)(修改)和數(shù)據(jù)跟蹤處理。
???鏈(chains)是數(shù)據(jù)包傳播的路徑,每一條鏈其實(shí)就是眾多規(guī)則中的一個檢查清單,每一條鏈中可以有一條或數(shù)條規(guī)則。當(dāng)一個數(shù)據(jù)包到達(dá)一個鏈時,iptables就會從鏈中第一條規(guī)則開始檢查,看該數(shù)據(jù)包是否滿足規(guī)則所定義的條件。如果滿足,系統(tǒng)就會根據(jù)該條規(guī)則所定義的方法處理該數(shù)據(jù)包;否則iptables將繼續(xù)檢查下一條規(guī)則,如果該數(shù)據(jù)包不符合鏈中任一條規(guī)則,iptables就會根據(jù)該鏈預(yù)先定義的默認(rèn)策略來處理數(shù)據(jù)包。
??? Iptables采用“表”和“鏈”的分層結(jié)構(gòu)。在REHL4中是三張表五個鏈。現(xiàn)在REHL5成了四張表五個鏈了,不過多出來的那個表用的也不太多,所以基本還是和以前一樣。下面羅列一下這四張表和五個鏈。注意一定要明白這些表和鏈的關(guān)系及作用。
規(guī)則表:
1.filter表——三個鏈:INPUT、FORWARD、OUTPUT
作用:過濾數(shù)據(jù)包? 內(nèi)核模塊:iptables_filter.
2.Nat表——三個鏈:PREROUTING、POSTROUTING、OUTPUT
作用:用于網(wǎng)絡(luò)地址轉(zhuǎn)換(IP、端口) 內(nèi)核模塊:iptable_nat
3.Mangle表——五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改數(shù)據(jù)包的服務(wù)類型、TTL、并且可以配置路由實(shí)現(xiàn)QOS內(nèi)核模塊:iptable_mangle(別看這個表這么麻煩,咱們設(shè)置策略時幾乎都不會用到它)
4.Raw表——兩個鏈:OUTPUT、PREROUTING
作用:決定數(shù)據(jù)包是否被狀態(tài)跟蹤機(jī)制處理? 內(nèi)核模塊:iptable_raw
(這個是REHL4沒有的,不過不用怕,用的不多)
規(guī)則鏈:
1.INPUT——進(jìn)來的數(shù)據(jù)包應(yīng)用此規(guī)則鏈中的策略
2.OUTPUT——外出的數(shù)據(jù)包應(yīng)用此規(guī)則鏈中的策略
3.FORWARD——轉(zhuǎn)發(fā)數(shù)據(jù)包時應(yīng)用此規(guī)則鏈中的策略
4.PREROUTING——對數(shù)據(jù)包作路由選擇前應(yīng)用此鏈中的規(guī)則
(記住!所有的數(shù)據(jù)包進(jìn)來的時侯都先由這個鏈處理)
5.POSTROUTING——對數(shù)據(jù)包作路由選擇后應(yīng)用此鏈中的規(guī)則
(所有的數(shù)據(jù)包出來的時侯都先由這個鏈處理)
規(guī)則表之間的優(yōu)先順序:
Raw——mangle——nat——filter
規(guī)則鏈之間的優(yōu)先順序(分三種情況):
第一種情況:入站數(shù)據(jù)流向
??? 從外界到達(dá)防火墻的數(shù)據(jù)包,先被PREROUTING規(guī)則鏈處理(是否修改數(shù)據(jù)包地址等),之后會進(jìn)行路由選擇(判斷該數(shù)據(jù)包應(yīng)該發(fā)往何處),如果數(shù)據(jù)包的目標(biāo)主機(jī)是防火墻本機(jī)(比如說Internet用戶訪問防火墻主機(jī)中的web服務(wù)器的數(shù)據(jù)包),那么內(nèi)核將其傳給INPUT鏈進(jìn)行處理(決定是否允許通過等),通過以后再交給系統(tǒng)上層的應(yīng)用程序(比如Apache服務(wù)器)進(jìn)行響應(yīng)。
第二沖情況:轉(zhuǎn)發(fā)數(shù)據(jù)流向
??? 來自外界的數(shù)據(jù)包到達(dá)防火墻后,首先被PREROUTING規(guī)則鏈處理,之后會進(jìn)行路由選擇,如果數(shù)據(jù)包的目標(biāo)地址是其它外部地址(比如局域網(wǎng)用戶通過網(wǎng)關(guān)訪問QQ站點(diǎn)的數(shù)據(jù)包),則內(nèi)核將其傳遞給FORWARD鏈進(jìn)行處理(是否轉(zhuǎn)發(fā)或攔截),然后再交給POSTROUTING規(guī)則鏈(是否修改數(shù)據(jù)包的地址等)進(jìn)行處理。
第三種情況:出站數(shù)據(jù)流向
???? 防火墻本機(jī)向外部地址發(fā)送的數(shù)據(jù)包(比如在防火墻主機(jī)中測試公網(wǎng)DNS服務(wù)器時),首先被OUTPUT規(guī)則鏈處理,之后進(jìn)行路由選擇,然后傳遞給POSTROUTING規(guī)則鏈(是否修改數(shù)據(jù)包的地址等)進(jìn)行處理。
管理和設(shè)置iptables規(guī)則
文章參考
http://netfilter.org/ iptables官方網(wǎng)站
http://www.linux.gov.cn/netweb/iptables.htm iptables配置手冊
http://man.chinaunix.net/
http://man.chinaunix.net/network/iptables-tutorial-cn-1.1.19.html iptables配置手冊
http://blog.csdn.net/thmono/archive/2010/04/08/5462043.aspx
http://netsecurity.51cto.com/art/200512/14457.htm
http://blog.sina.com.cn/s/blog_40ba724c0100jz12.html
http://qiliuping.blog.163.com/blog/static/1023829320105245337799/
轉(zhuǎn)載于:https://www.cnblogs.com/AloneSword/p/5079635.html
總結(jié)
以上是生活随笔為你收集整理的linux平台下防火墙iptables原理(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 请大家进来客观分析到底是我错还是他双重标
- 下一篇: NOIP2015解题报告 By ljt1