linux平台下防火牆iptables原理)

來源:互聯網
上載者:User
iptables簡介

    netfilter/iptables(簡稱為iptables)組成Linux平台下的包過濾防火牆,與大多數的Linux軟體一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾、封包重新導向和網路位址轉譯(NAT)等功能。

iptables基礎

    規則(rules)其實就是網路系統管理員預定義的條件,規則一般的定義為“如果資料包頭符合這樣的條件,就這樣處理這個資料包”。規則儲存在核心空間的資訊包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當資料包與規則匹配時,iptables就根據規則所定義的方法來處理這些資料包,如允許存取(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的主要工作就是添加、修改和刪除這些規則。

iptables和netfilter的關係:

    這是第一個要說的地方,Iptables和netfilter的關係是一個很容易讓人搞不清的問題。很多的知道iptables卻不知道netfilter。其實iptables只是Linux防火牆的管理工具而已,位於/sbin/iptables。真正實現防火牆功能的是netfilter,它是Linux核心中實現包過濾的內部結構。

iptables傳輸資料包的過程

① 當一個資料包進入網卡時,它首先進入PREROUTING鏈,核心根據資料包目的IP判斷是否需要轉送出去。 
② 如果資料包就是進入原生,它就會沿著圖向下移動,到達INPUT鏈。資料包到了INPUT鏈後,任何進程都會收到它。本機上啟動並執行程式可以發送資料包,這些資料包會經過OUTPUT鏈,然後到達POSTROUTING鏈輸出。 
③ 如果資料包是要轉寄出去的,且核心允許轉寄,資料包就會向右移動,經過FORWARD鏈,然後到達POSTROUTING鏈輸出。

iptables的規則表和鏈:

    表(tables)提供特定的功能,iptables內建了4個表,即filter表、nat表、mangle表和raw表,分別用於實現包過濾,網路位址轉譯、包重構(修改)和資料跟蹤處理。

   鏈(chains)是資料包傳播的路徑,每一條鏈其實就是眾多規則中的一個檢查清單,每一條鏈中可以有一條或數條規則。當一個資料包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該資料包是否滿足規則所定義的條件。如果滿足,系統就會根據該條規則所定義的方法處理該資料包;否則iptables將繼續檢查下一條規則,如果該資料包不符合鏈中任一條規則,iptables就會根據該鏈預先定義的預設策略來處理資料包。

    Iptables採用“表”和“鏈”的分層結構。在REHL4中是三張表五個鏈。現在REHL5成了四張表五個鏈了,不過多出來的那個表用的也不太多,所以基本還是和以前一樣。下面羅列一下這四張表和五個鏈。注意一定要明白這些表和鏈的關係及作用。

規則表:

1.filter表——三個鏈:INPUT、FORWARD、OUTPUT
作用:過濾資料包  核心模組:iptables_filter.
2.Nat表——三個鏈:PREROUTING、POSTROUTING、OUTPUT
作用:用於網路位址轉譯(IP、連接埠) 核心模組:iptable_nat
3.Mangle表——五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改資料包的服務類型、TTL、並且可以配置路由實現QOS核心模組:iptable_mangle(別看這個表這麼麻煩,咱們設定策略時幾乎都不會用到它)
4.Raw表——兩個鏈:OUTPUT、PREROUTING
作用:決定資料包是否被狀態跟蹤機制處理  核心模組:iptable_raw
(這個是REHL4沒有的,不過不用怕,用的不多)

規則鏈:


1.INPUT——進來的資料包應用此規則鏈中的策略
2.OUTPUT——外出的資料包應用此規則鏈中的策略
3.FORWARD——轉寄資料包時應用此規則鏈中的策略
4.PREROUTING——對資料包作路由選擇前應用此鏈中的規則
(記住!所有的資料包進來的時侯都先由這個鏈處理)
5.POSTROUTING——對資料包作路由選擇後應用此鏈中的規則
(所有的資料包出來的時侯都先由這個鏈處理)

規則表之間的優先順序:

Raw——mangle——nat——filter
規則鏈之間的優先順序(分三種情況):

第一種情況:入站資料流向

    從外界到達防火牆的資料包,先被PREROUTING規則鏈處理(是否修改資料包地址等),之後會進行路由選擇(判斷該資料包應該發往何處),如果資料包的目標主機是防火牆本機(比如說Internet使用者訪問防火牆主機中的web伺服器的資料包),那麼核心將其傳給INPUT鏈進行處理(決定是否允許通過等),通過以後再交給系統上層的應用程式(比如Apache伺服器)進行響應。

第二沖情況:轉寄資料流向

    來自外界的資料包到達防火牆後,首先被PREROUTING規則鏈處理,之後會進行路由選擇,如果資料包的目標地址是其它外部地址(比如區域網路使用者通過網關訪問QQ網站的資料包),則核心將其傳遞給FORWARD鏈進行處理(是否轉寄或攔截),然後再交給POSTROUTING規則鏈(是否修改資料包的地址等)進行處理。

第三種情況:出站資料流向
     防火牆本機向外部地址發送的資料包(比如在防火牆主機中測試公網DNS伺服器時),首先被OUTPUT規則鏈處理,之後進行路由選擇,然後傳遞給POSTROUTING規則鏈(是否修改資料包的地址等)進行處理。

管理和設定iptables規則

 

文章參考

  http://netfilter.org/ iptables官方網站
  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/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.