青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-167  評論-8  文章-0  trackbacks-0
轉自:http://blog.csdn.net/firedb/article/details/7581853 

最近看了一下suricata-1.2.1的源代碼,加之之前在網上沒有搜到關于suricata的分析資料,所以就把看源碼時的一些筆記整理了一下,發到網上,供其他對suricata感興趣的網友參考。由于是第一次在csdn上寫技術博客,不足之處還望看到此文章的網友見諒!

先還是進行簡要的介紹一下,Suricata 是一個網絡入侵檢測和阻止引擎,由開放信息安全基金會以及它說支持的提供商說開發。該引擎是多線程的,內置 IPv6 的支持,可加載預設規則,支持 Barnyard 和 Barnyard2 工具。

由于我只對Suricata的IPS模式感興趣,所以就只看了IpsNFQ的源代碼部分,但個人覺得,只要把一種模式看懂了,其它的模式理解起來就是順其自然的事情了,各模式之間最主要的不同就是數據包的來源不同。下面就開始對suricata的IpsNFQ模式進行分析。

1. IpsNFQ三種模式圖

IpsNFQ模式下還有三種模式,先來看看這三種模式的分析圖。

a) Auto模式


b) AutoFP模式


c) Worker模式


對上圖中的一些值說明一下。Queue數量是指NFQ的Queue數量;CPU數是指CPU的核心數;ratio是一個比率值,在suricata.yaml配置文件中設定,一般設置成0.5、1或1.5。 

2. 各模塊功能分析

  •  

      Receive:從NFQUEUE中接收數據包,并將封裝在Packet結構中,然后放入下一個緩沖區。

  •   Decode:對數據包進行解碼,主要是對數據包頭部信息進行分析并保存在Packet結構中。

  •   StreamTCP:對數據包進行TCP流重組。

  •   Detect:檢測數據包是否包含入侵行為。

  •   Verdict:對檢測后的數據包進行判定,并將判定結果告訴內核(通過ipq_set_verdict函數),方便內核對數據包進行接收、丟棄等處理。

  •   RespondReject:通過libnet對那些要執行Reject操作的數據包進行相應的回應。

3. Tm-queue&Tm-queuehandler分析

3.1Tm-queue

Tm-queue是各個模塊(線程)之間傳遞數據的緩沖區(圖中橢圓),這在多線程編程中經常會被用到,用來緩存數據。在這里提醒一下,不要將這里的Tm-queue與NFQ中的Queue混淆了,后者是內核中的Queue(Netfilter Queue),這里的Tm-queue只是suricata各模塊間的緩沖區。

一個Tm-queue在程序中包括structTmq_和struct PacketQueue兩個結構,前者只存了簡單的信息,用于檢索,后者用于實際存儲數據包,兩者之間通過Tmq->id進行關聯。這兩個結構的定義分別如下:

Tm-queue.h:

typedef struct Tmq_ {

    char *name;

    uint16_t id;

    uint16_t reader_cnt;

    uint16_t writer_cnt;

    /* 0 for packet-queue and1 for data-queue */

    uint8_t q_type;

} Tmq;

Decode.h:

typedef struct PacketQueue_ {

    Packet *top;

    Packet *bot;

    uint32_t len;

#ifdef DBG_PERF

    uint32_t dbg_maxlen;

#endif /* DBG_PERF */

    SCMutex mutex_q;

    SCCondT cond_q;

} PacketQueue;

Tmq的創建是在程序調用TmThreadCreate()(Tm-threads.c)函數創建線程時調用TmqCreateQueue()(Tm-queues.c)函數進行創建。

在NFQ模式中用到的Tm-queue除了packetpool是循環隊列之外,其它的(pickup-queue、decode-queue等)都是FIFO隊列。所以,這里只對packetpool這個特例進行一下說明。

Packetpool這個Tm-queue其實在源碼中是用ringbuffer這個循環隊列表示,所以對packetpool的操作其實是在操作ringbuffer。Ringbuffer是存放Packet*指針的一個數組,數組的大小由max_pending_packets(在配置文件中配置,默認為50)的值決定。main()(suricata.c)函數對ringbuffer數組進行了初始化,創建一定數量的Packet,在程序的整個運行中循環使用,直到程序完全退出才釋放。

3.2 QueueHandler

QueueHandler是各緩沖區的操作接口,用來對緩沖區進行輸入輸出操作。該結構在Tm-queuehandlers.h文件中的定義如下:

typedef structTmqh_ {

    char *name;

    Packet *(*InHandler)(ThreadVars *);

    void (*InShutdownHandler)(ThreadVars *);

    void (*OutHandler)(ThreadVars *, Packet *);

    void *(*OutHandlerCtxSetup)(char *);

    void (*OutHandlerCtxFree)(void *);

    void (*RegisterTests)(void);

} Tmqh;

其中InHandler和OutHandler就是分別指向緩沖區的輸入、輸出操作函數。

所有的QueueHandler組成了一個數組存放在tmqh_table[]中。Tm-queuehandlers.c中的Tmqh_Setup()函數被main()調用來對tmqh_table[]數組進行初始化,并將所有會用到的QueueHandler注冊到tmqh_table[]數組中。下面是NFQ模式中用到的三種QueueHandler:

1) Packepool

通過read和write兩個位置標記對packetpool(ringbuffer)這個循環隊列進行進出操作。

2) Simple

按照FIFO(先進先出)原則對緩沖區內容進行進出操作。

3) Flow

出隊的時候是按照FIFO進行,入隊的時候對數據包的頭部信息進行hash,然后將具有相同hash值的數據包放到一個緩沖區。

posted on 2012-09-07 15:13 老馬驛站 閱讀(1199) 評論(0)  編輯 收藏 引用 所屬分類: snort
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产日韩精品| 久久精品国产欧美激情| 裸体丰满少妇做受久久99精品| 国产女主播一区二区| 亚洲欧美日韩在线观看a三区| 亚洲素人在线| 欧美色中文字幕| 亚洲欧美日韩国产一区| 亚洲欧美成人一区二区三区| 国产视频一区三区| 久久久久久有精品国产| 裸体一区二区三区| 一二三区精品福利视频| 亚洲综合清纯丝袜自拍| 激情综合久久| 亚洲人成网站影音先锋播放| 欧美日韩1234| 久久精品国产亚洲一区二区| 久久精品99国产精品日本| 亚洲区国产区| 亚洲欧美在线x视频| 在线国产日韩| 日韩五码在线| 韩国成人精品a∨在线观看| 欧美激情一区二区三区在线| 国产精品久久夜| 欧美成人中文字幕在线| 欧美视频网址| 欧美sm重口味系列视频在线观看| 欧美日韩在线精品一区二区三区| 欧美在线视频免费播放| 欧美高清视频在线播放| 午夜精品一区二区三区在线| 六月婷婷一区| 午夜精品区一区二区三| 免费成人性网站| 亚洲自拍16p| 欧美成人国产一区二区| 欧美在线观看视频| 欧美日韩一区二区在线观看 | 欧美二区不卡| 亚洲一区高清| 免费黄网站欧美| 久久精品国产一区二区三区免费看| 欧美刺激性大交免费视频| 久久久久一区| 国产精品中文字幕欧美| 亚洲卡通欧美制服中文| 在线观看成人网| 小黄鸭精品密入口导航| 一区二区三区国产在线观看| 久久久久天天天天| 欧美伊人影院| 欧美香蕉大胸在线视频观看| 亚洲国产综合91精品麻豆| 韩国三级在线一区| 亚洲免费视频一区二区| 亚洲欧美成人网| 欧美日韩国产限制| 亚洲精品国产品国语在线app | 嫩草国产精品入口| 麻豆国产va免费精品高清在线| 国产伦精品一区二区三区四区免费| 亚洲精品美女免费| 亚洲卡通欧美制服中文| 欧美a级理论片| 亚洲激情视频网| 亚洲乱码国产乱码精品精| 牛牛精品成人免费视频| 欧美激情一区二区三区成人| 亚洲电影第1页| 欧美成人一二三| 亚洲激情校园春色| 在线中文字幕日韩| 欧美日韩国产高清视频| 亚洲免费精彩视频| 亚洲午夜久久久久久久久电影院| 欧美成人一品| 日韩一级大片在线| 亚洲综合三区| 国产模特精品视频久久久久| 久久www成人_看片免费不卡| 久久久久久久成人| 亚洲第一精品在线| 欧美岛国激情| 中日韩午夜理伦电影免费| 香蕉免费一区二区三区在线观看 | 欧美一级视频免费在线观看| 久久精品国产亚洲5555| 亚洲风情亚aⅴ在线发布| 欧美v日韩v国产v| 9色精品在线| 久久精品国产久精国产爱| 狠狠综合久久av一区二区老牛| 久久视频一区| 一区二区三区四区在线| 久久久久久久综合日本| 亚洲精品视频一区| 国产精品久久久久9999高清 | 亚洲啪啪91| 亚洲女人小视频在线观看| 国产一区二区日韩精品欧美精品| 久久久久免费视频| 日韩天天综合| 另类欧美日韩国产在线| 一区二区久久| 韩国精品久久久999| 欧美日韩中文在线| 久久成人综合网| 日韩亚洲欧美在线观看| 久久久噜噜噜久久久| 99re6热只有精品免费观看| 国产一区二区精品久久91| 欧美国产日韩xxxxx| 欧美一区91| 亚洲精品乱码久久久久| 久久免费视频这里只有精品| 中日韩视频在线观看| 亚洲电影免费观看高清完整版在线| 欧美日韩国产在线| 免费成人av| 久久精品欧洲| 亚洲香蕉视频| 亚洲美女电影在线| 欧美高清视频免费观看| 久久er99精品| 香蕉国产精品偷在线观看不卡| 亚洲人成免费| 亚洲国产精品一区二区www在线| 国产美女精品视频免费观看| 欧美日韩久久久久久| 老司机精品视频一区二区三区| 午夜视频在线观看一区二区| 一本色道**综合亚洲精品蜜桃冫| 欧美激情久久久久| 久久久久国产精品厨房| 欧美一区二区日韩| 午夜激情久久久| 亚洲综合色视频| 亚洲一区二区三区777| 亚洲美女淫视频| 亚洲免费av片| 99综合精品| 在线中文字幕日韩| 亚洲影院在线| 亚洲免费在线视频| 欧美一区二区三区电影在线观看| 亚洲网站在线观看| 亚洲专区一区| 欧美在线视频网站| 久久久999成人| 免费国产一区二区| 欧美激情在线狂野欧美精品| 欧美韩国一区| 91久久精品一区二区三区| 亚洲国产高清视频| 亚洲精选国产| 亚洲无吗在线| 久久精品观看| 麻豆成人在线观看| 欧美精品一区三区在线观看| 欧美美女操人视频| 国产精品理论片| 国产亚洲精品激情久久| 激情久久影院| 一区二区三区欧美亚洲| 亚洲欧美日韩视频二区| 欧美呦呦网站| 欧美韩日一区二区三区| 亚洲日本免费电影| 亚洲尤物视频网| 久久久中精品2020中文| 欧美日韩 国产精品| 国产精品免费一区豆花| 激情欧美一区| 这里是久久伊人| 久久亚洲不卡| 亚洲精品久久久久| 欧美诱惑福利视频| 欧美承认网站| 国产婷婷一区二区| 日韩午夜在线电影| 久久精品一本| 亚洲精品中文字幕有码专区| 午夜精品久久久久久久久| 麻豆精品视频在线| 国产精品老牛| 99re热这里只有精品视频| 午夜在线电影亚洲一区| 欧美国产精品专区| 亚洲一级特黄| 欧美日韩成人免费| 一区二区三区在线看| 亚洲女同性videos| 欧美福利视频一区| 亚洲欧美中文日韩v在线观看| 欧美日本二区| 亚洲经典视频在线观看| 久久久www成人免费精品| 亚洲免费精彩视频|