<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 首頁 > 電腦資訊 > 網站建設SEO

      攻防戰-ip黑白名單防火墻frdev的原理與實現

      作者:佚名   來源:本站   時間:2018-01-01  點擊:87次

       ·實現方案選擇:

        硬件實現或者軟件實現?

        在面對諸如大量畸形包這樣的攻擊時,硬件實現將會是非常好的選擇,這是因為在進行此類型的封包過濾時,系統需要記憶的狀態很少(對于FPGA、ASIC諸多硬件實現方案來講,記憶元件的成本決不可忽視,寄存器與靜態RAM都非常昂貴,所以當需要記憶的信息很少時,純硬件方案的速度優勢使得其完勝軟件方案)。

        但是,當狀態機需要處理龐大的記憶信息時,我們就需要選擇廉價的存儲器——動態隨機存儲器(如SDRAM中的DDR3)來作為系統狀態機的存儲介質,以降低系統的成本和復雜度。這時,軟件實現更勝一籌。盡管純硬件實現的速度會比軟件的方式高出很多,但我們也從第一篇文章《DDoS攻防戰 (一) : 概述》中lvs性能的測試結果中看到,軟件實現的、作為服務器前端均衡調度器的lvs,性能理想并且能勝任實際生產環境中的、龐大的用戶請求處理,可見,如果設計合理,軟件實現的性能無需過多擔憂。

        最終,我們決定采用軟件的方法來實現所需的ip黑白名單模塊。

       

      ·最終系統鳥瞰:

        筆者花費大約二十天的時間,使用C語言實現了這一模塊,其中,內核空間的核心代碼約2300行,用戶空間管理工具的代碼總行數約為700行。下為系統的鳥瞰:

       

      ·用戶空間管理工具fripadm,通過ioctl與工作于內核態的frdev模塊進行通信

        ·frdev維護兩個double_hash_table的實例,并提供了一個掛在NF_INET_PRE_ROUTING的鉤子函數,其通過操作這兩個double_hash_table的實例以分別實現ip黑名單、白名單的功能

        ·frdev通過內核中設備驅動的ioctl機制,向用戶空間提供這兩個double_hash_table實例的操作函數,而我們的用戶空間管理工具fripadm正是基于此而實現的

       

      struct fr_ip_hash_array的功能:
        精確ip查詢;
        模糊ip查詢;
        自定義hash表的長度;
        自定義hash function,其輸入散列隨機數為rnd;
        維護精確ip的哈希表;
        維護模糊ip的鏈表;
        維護精確ip與模糊ip的諸統計信息;

      ·為什么使用雙哈希表緩沖?

        請考慮如下場景:

        情況1:來自應用層的DDoS攻擊常常是瞬間涌入大量非法ip請求,例如數萬個非法ip,所以,對于防火墻黑白名單功能的要求至少有如下:能在很短的時間內更新大量數據項,且不能造成系統服務停頓。

       

        分析:如果只使用一個全局的哈希表,當在短時間內進行大量的數據項增刪時,例如,成千上萬個,此時,即使采用多把讀寫鎖分割哈希表的策略,對共享資源的競爭也依然將嚴重影響系統響應速度,嚴重時系統可能會停頓或者更糟,對于生產環境中的高負載服務器,這是無法容忍的。

      推薦游戲

      換一換
      日韩精品一区二区三区高清