• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 一個開放源碼的高級NIDS系統

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    在介紹Bro之前先總結一下幾個常見的開放源碼NIDS系統: Snort(http://www.snort.org/) 目前最著名最活躍的開放源碼NIDS項目,定位于輕量級的 入侵檢測 系統,已經實現了網絡探測器和許多第三方的管理及日志分析工具,廣泛使用在對檢測準確性要求不高的非高速

    在介紹Bro之前先總結一下幾個常見的開放源碼NIDS系統:

    Snort ( http://www.snort.org/ )
    目前最著名最活躍的開放源碼NIDS項目,定位于輕量級的入侵檢測系統,已經實現了網絡探測器和許多第三方的管理及日志分析工具,廣泛使用在對檢測準確性要求不高的非高速網絡環境下。對其進行介紹及分析資料輔天蓋地,國內當前大多數的IDS產品都是在其基礎上修改出來的。Snort的成功之處在于其高效的整體設計編碼、簡潔明了的規則描述設計及已經成一定規模的攻擊檢測規則集,它的規則集已經被很多其他開放源碼IDS項目所兼容。

    Prelude IDS ( http://www.prelude-ids.org/ )
    目前比較活躍的開放源碼混和IDS項目,比較注重IDS各組件的模塊化設計,組件之間使用標準IDMEF格式進行通訊,從設計的方式來看定位于適應大型網絡的需求,當前已經實現了網絡探測器、日志分析器、告警信息集中查看分析工具。其網絡探測器部分基本上翻版了Snort的功能,完全兼容Snort的規則集。

    Firestorm ( http://www.scaramanga.co.uk/firestorm/index.html )
    不太出名的開放源碼NIDS項目,目前僅實現了探測器部分,完全兼容Snort的規則集,功能上也基本上差不多,可以把告警信息記錄到Prelude IDS的管理器,但自稱性能上比Snort強很多。

    NetSTAT ( http://www.cs.ucsb.edu/~rsg/STAT/ )
    一個學術界的開放源碼的IDS項目,基于STAT(State Transition Analysis Technique,狀態遷移分析技術)描述攻擊的研究成果,使用特有的STATL語言描述攻擊,攻擊描述文本被STATL解釋工具轉換為C++代碼編譯進檢測引擎來實現檢測功能,目前已經發布了STATL語言解釋轉換工具及一個基本的示例網絡探測器部分(很少的幾個檢測功能例子)。要熟練使用這個IDS工具需要比較強的編程功底,但用此IDS可以實現很復雜的檢測功能。

    可以看到當前大多數開放源碼的NIDS項目都以Snort為基礎,還有一些主要用于學術研究的IDS(比如NetSTAT),Snort是用于了解NIDS技術的很好入門方式,學術領域的IDS主要用于驗證某些思想概念的可行性,這類IDS一般實現使用復雜,注重檢測的嚴謹準確,如果商業化還需要很大的努力。Snort實現簡單,使用方便,但本質上只是一個可以匹配分析數據包payload的嗅探器而已,對于有豐富網絡知識的網管來說是個稱手的網絡流量過濾分析工具。由于只能對TCP/UDP/ICMP數據包的payload及某些數據包屬性做些簡單的匹配操作,而且沒有特定的規則關聯機制,Snort對于攻擊的檢測只能是粗線條的。當前的主流商業NIDS產品已經普遍采用細致的應用層協議分析技術,應用層協議分析技術不僅能夠極大地提高檢測準確性和效率,更能帶來基于協議分析的異常檢測能力,基于規則類似病毒檢測的方式只能檢測已知攻擊,而基于異常分析的檢測卻可能檢測到某些未知攻擊,這點是新NIDS產品的發展熱點和方向,基于異常并結合誤用的IDS產品將會是未來IDS/IPS產品的主流。Snort雖然對一些應用層協議如HTTP、PORTMAP、TELNET做了些簡單的解碼和處理,這些處理只是對匹配做的一些優化,遠沒有到協議分析的程度,Snort與當今主流IDS產品的差距越來越大,相對而言越來越落后,學習參考的價值越來越少。是不是存在技術上更有意思的開放源碼的NIDS項目呢,我注意到了一個叫Bro的NIDS軟件,它幾乎提供了一切所希望見到的特性。

    下面介紹一下Bro ( http://www.icir.org/vern/bro-info.html ),本文旨在分析Bro本身提供的一些很有意思且很有用的功能特性,不對其如何安裝、配置、使用做介紹,那部分的內容可以參考軟件包中的相關說明。

    Bro是一個Vern Paxson實現的實時網絡入侵檢測軟件,于98年對外發布,BSD license,它的最初設計目標是實現一個在100M網絡下實時告警、機制與策略分離、高可擴展性的入侵檢測及網絡監視審計系統。

    Bro的系統結構如下圖示:

    | 下發 ^ 實時
    V 策略 | 告警
    +-----------------------------+
    | 策略腳本解釋器 |
    +-----------------------------+
    | 事件 | 規則 ^ 事件
    V 控制 | 控制 | 流
    +--------+--------------------+
    規則 +--------V-+ |
    ----->| 規則引擎 | 事件生成引擎 |
    +----------+ |
    +-----------------------------+
    | Tcpdump ^ 過濾出
    V 過濾器 | 的流量
    +-----------------------------+
    | libpcap |
    +-----------------------------+
    ^
    | 網絡數據包
    +-----------------------------+
    | 網絡 |
    +-----------------------------+


    Bro的設計實現遵循分層的原則,利用libpcap從網絡上獲取的數據包經過事件生成引擎和規則引擎被抽象成一系列的事件,這些事件被策略腳本做進一步的深入分析,基本事件本身就可以觸發告警,策略腳本分析基本事件以后既可以生成新的事件也可以觸發告警。如下詳細描述各個組件的功能,對于Bro提供的高級功能特性分析會穿插其間:

    $ libpcap

    Bro使用libpcap庫來獲取網絡數據包,這樣可以使Bro忽略具體的鏈路層細節,從而獲得最大的可移植性。當前Bro支持FreeBSD、Solaris、Linux、Digital Unix等操作系統。

    libpcap從上層的事件生成引擎獲得Tcpdump格式的網絡流量過濾器,從網卡上過濾出Bro感興趣的那部分流量做進一步的分析。比如“tcp port 80 or port 23”這個過濾器會從網絡上過濾出源目的源口為80或23的TCP數據包做分析,也就是分析目標是HTTP和TELNET協議相關的數據包。


    $ 事件生成引擎

    從libpcap獲取的數據包經過事件生成引擎,引擎首先對數據包頭做些合法性檢查,生成一系列事件,比如引擎收到一個TCP包會先檢查TCP頭的checksum是否正確,檢查通過以后引擎檢查包頭的標記位,如果是SYN標記引擎會啟動一個定時器并生成一個connection_attempt事件,當引擎再收到一個對方的確認包時,引擎會關掉定時器并生成一個connection_established事件,如果收到一個RST包,引擎則會生成一個connection_rejected事件。這些事件都會被提交給上層的策略腳本解釋器,如果用戶關心這些事件可以編寫策略腳本定義相應的事件處理例程來處理。

    在這一層,Bro還會對于一些應用層協議做更深層次的分析,比如對于HTTP協議,引擎會進一步分析數據包是請求還是回應、訪問的對象、請求的方法等信息并生成相應的事件,比如http_request事件并包含了相關的數據字段。目前的最新版本軟件支持FINGER、FTP、HTTP、IDENT、PORTMAP、SMTP等應用層協議的分析,隨著軟件的開發會有更多的應用層協議分析加入進來,Bro在這一層上實現了應用層的協議分析并向上層策略腳本解釋器提供抽象出來的事件。


    $ 策略腳本解釋器

    Bro的策略腳本用于對事件生成引擎生成的事件進行分析處理,如果發現攻擊特征引發相應的操作比如告警、記錄或生成新的事件。Bro的策略腳本是用Bro語言編寫的類似NFR N-Code的全功能解釋執行的分析腳本,Bro語言提供了豐富的數據類型、流程控制手段及許多有用的分析函數,從實現上功能上與N-Code非常相似甚至有過之。如此功能強大的腳本語言可以對抽象出來的事件做充分細致的分析,組合Bro事件生成引擎中應用層協議分析和Bro腳本的分析能力可以提供非常準確強大的入侵檢測功能。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>