新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > netfilter技術分析

        netfilter技術分析

        作者: 時間:2011-06-06 來源:網絡 收藏

        是由Rusty Russell提出的Linux 2.4內核防火墻框架,該框架既簡潔又靈活,可實現安全策略應用中的許多功能,如數據包過濾、數據包處理、地址偽裝、透明代理、動態網絡地址轉換(Network Address Translation,NAT),以及基于用戶及媒體訪問控制(Media Access Control,MAC)地址的過濾和基于狀態的過濾、包速率限制等。
        1.1 框架
        提供了一個抽象、通用化的框架[1],作為中間件,為每種網絡協議(IPv4、IPv6等)定義一套鉤子函數。Ipv4定義了5個鉤子函數,這些鉤子函數在數據報流過協議棧的5個關鍵點被調用,也就是說,IPv4協議棧上定義了5個“允許垂釣點”。在每一個“垂釣點”,都可以讓netfilter放置一個“魚鉤”,把經過的網絡包(Packet)釣上來,與相應的規則鏈進行比較,并根據審查的結果,決定包的下一步命運,即是被原封不動地放回IPv4協議棧,繼續向上層遞交;還是經過一些修改,再放回網絡;或者干脆丟棄掉。
        Ipv4中的一個數據包通過netfilter系統的過程如圖1所示。

        本文引用地址:http://www.104case.com/article/150634.htm

        圖1 Netfilter的功能框架

        1.2 netfilter的關鍵
        netfilter主要采用連線跟蹤(Connection Tracking)、包過濾(Packet Filtering)、地址轉換、包處理(Packet Mangling)4種關鍵。
        1.2.1 連線跟蹤
        連線跟蹤是包過濾、地址轉換的基礎,它作為一個獨立的模塊運行。采用連線跟蹤在協議棧低層截取數據包,將當前數據包及其狀態信息與歷史數據包及其狀態信息進行比較,從而得到當前數據包的控制信息,根據這些信息決定對網絡數據包的操作,達到保護網絡的目的。
        當下層網絡接收到初始化連接同步(Synchronize,SYN)包,將被netfilter規則庫檢查。該數據包將在規則鏈中依次序進行比較。如果該包應被丟棄,發送一個復位(Reset,RST)包到遠端主機,否則連接接收。這次連接的信息將被保存在連線跟蹤信息表中,并表明該數據包所應有的狀態。這個連線跟蹤信息表位于內核模式下,其后的網絡包就將與此連線跟蹤信息表中的內容進行比較,根據信息表中的信息來決定該數據包的操作。因為數據包首先是與連線跟蹤信息表進行比較,只有SYN包才與規則庫進行比較,數據包與連線跟蹤信息表的比較都是在內核模式下進行的,所以速度很快。
        1.2.2 包過濾
        包過濾檢查通過的每個數據包的頭部,然后決定如何處置它們,可以選擇丟棄,讓包通過,或者更復雜的操作。
        1.2.3 地址轉換
        網絡地址轉換源(NAT)分為(Source NAT,SNAT)和目的NAT(Destination NAT, DNAT)2種不同的類型。SNAT是指修改數據包的源地址(改變連接的源IP)。SNAT會在數據包送出之前的最后一刻做好轉換工作。地址偽裝(Masquerading)是SNAT的一種特殊形式。DNAT 是指修改數據包的目標地址(改變連接的目的IP)。DNAT 總是在數據包進入以后立即完成轉換。端口轉發、負載均衡和透明代理都屬于DNAT。
        1.2.4 包處理
        利用包處理可以設置或改變數據包的服務類型(Type of Service, TOS)字段;改變包的生存期(Time to Live, TTL)字段;在包中設置標志值,利用該標志值可以進行帶寬限制和分類查詢。



        關鍵詞: 分析 技術 netfilter

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 湖南省| 博爱县| 炉霍县| 昭苏县| 谢通门县| 恩平市| 区。| 南宫市| 桐庐县| 多伦县| 石柱| 武宣县| 阿克陶县| 潮安县| 龙州县| 镇宁| 江西省| 南和县| 汶川县| 平山县| 泰安市| 正阳县| 沙田区| 桦川县| 汝州市| 江油市| 潞西市| 泸西县| 施甸县| 开远市| 阳城县| 凌源市| 扶余县| 乾安县| 太保市| 会理县| 松滋市| 葫芦岛市| 木里| 广州市| 凤台县|