<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    1.3 Snort如何獲取數據包

    Snort 2.9引入了用于數據包I / O的DAQ或數據采集庫。DAQ用抽象層代替了對libpcap函數的直接調用,該抽象層便于在各種硬件和軟件接口上進行操作,而無需更改Snort。調用Snort進行pcap回讀或內聯操作等時,可以選擇DAQ類型和模式。

    注意:某些網卡具有可能會影響Snort的功能。其中兩個功能分別稱為“大型接收卸載”(lro)和“通用接收卸載”(gro)。啟用這些功能后,網卡將在內核對其進行處理之前執行數據包重組。默認情況下,Snort將截斷大于默認快照值1518字節的數據包。此外,LRO和GRO可能會導致基于Stream目標的重組問題。我們建議您關閉LRO和GRO。在Linux系統上,您可以運行:
    $ ethtool -K eth1 gro off
    $ ethtool -K eth1 lro off

    1.3.1 配置

    假設您沒有禁用靜態模塊或更改默認的DAQ類型,則可以像以往一樣運行Snort進行文件回讀或嗅探接口。但是,可以在調用Snort時選擇和配置DAQ,如下所示:

       ./snort \
            [--daq <type>] \
            [--daq-mode <mode>] \
            [--daq-dir <dir>] \
            [--daq-var <var>]
    
        config daq: <type>
        config daq_dir: <dir>
        config daq_var: <var>
        config daq_mode: <mode>
    
        <type> ::= pcap | afpacket | dump | nfq | ipq | ipfw
        <mode> ::= read-file | passive | inline
        <var> ::= arbitrary <name>=<value> passed to DAQ
        <dir> ::= path where to look for DAQ module so's

    可以通過命令行或在conf文件中指定DAQ類型、模式、變量和目錄。您可以通過重復arg / config來包含所需數量的變量和目錄。DAQ類型最多可以在conf中指定一次,而在命令行中一次指定;如果在兩個地方都配置,則命令行將覆蓋conf。

    如果未明確設置模式,則-Q將強制其內聯,如果尚未設置,則-r將其強制為讀取文件,如果尚未設置,則模式默認為被動。另外,由于沒有沖突,因此允許-Q和-daq-mode內聯,但是-Q和任何其他DAQ模式將在啟動時導致致命錯誤。

    請注意,如果Snort找到給定庫的多個版本,則選擇最新版本。這適用于同一庫的靜態和動態版本。

     ./snort --daq-list[=<dir>]
     ./snort --daq-dir=<dir> --daq-list

    上面的命令在指定的目錄中搜索DAQ模塊以及每個模塊的打印類型、版本和屬性。該功能在conf中不可用。Snort在解析-daq-list之后停止處理,因此,如果要添加一個或多個目錄,請在命令行上的-daq-list之前添加-daq-dir選項。(由于目錄是-daq-list的可選目錄,因此此選項必須使用=不帶空格。)

    1.3.2 pcap

    pcap是默認的DAQ。如果在沒有任何DAQ參數的情況下運行snort,它將像使用該模塊一樣始終運行。這些是等效的:

      ./snort -i <device>
      ./snort -r <file>
      ./snort --daq pcap --daq-mode passive -i <device>
      ./snort --daq pcap --daq-mode read-file -r <file>

    您可以使用以下命令指定pcap使用的緩沖區大小:

     ./snort --daq pcap --daq-var buffer_size = <#bytes> 

    請注意,pcap DAQ不計算過濾的數據包。

    1.3.3 Afpacket

    afpacket函數類似于內存映射的pcap DAQ,但不需要外部庫:

     ./snort --daq afpacket -i <device>
                [--daq-var buffer_size_mb=<#MB>]
                [--daq-var debug]

    如果要以串聯模式運行afpacket,則必須將設備設置為一個或多個接口對,其中一對接口的每個成員都由單個冒號分隔,而每個配對對則由雙冒號分隔,如下所示:

     eth0:eth1 

    或這個:

     eth0:eth1 :: eth2:eth3 

    默認情況下,afpacket DAQ為數據包內存分配128MB。您可以使用以下方法進行更改:

     --daq-var buffer_size_mb = <MB> 

    請注意,分配的總數實際上更高,這就是原因。假設默認數據包內存的快照數為1518,則數字按如下所示分解:

    1. 幀大小為1518(snaplen)+ AFPacket標頭的大小(66個字節)= 1584個字節。

    2. 幀數為128 MB / 1518 = 84733。

    3. 至少可容納一幀的最小塊大小為4 KB = 4096字節@每塊2幀。

    4. 結果,我們需要84733/2 = 42366塊。

    5. 分配的實際內存為42366 * 4 KB = 165.5 MB。

    1.3.4 NFQ

    NFQ是處理iptables數據包的新方法和改進的方法:

    ./snort --daq nfq \
            [--daq-var device=<dev>] \
            [--daq-var proto=<proto>] \
            [--daq-var queue=<qid>] \
            [--daq-var queue_len=<qlen>]
    
        <dev> ::= ip | eth0, etc; default is IP injection
        <proto> ::= ip4 | ip6 | ip*; default is ip4
        <qid> ::= 0..65535; default is 0
        <qlen> ::= 0..65535; default is 0

    1.3.5 IPQ

    IPQ是處理iptables數據包的舊方法。它替換了使用此版本構建的2.9之前版本中的內聯版本:

     ./configure --enable-inline / -DGIDS 

    如下啟動IPQ DAQ:

     ./snort --daq ipq \
            [--daq-var device=<dev>] \
            [--daq-var proto=<proto>] \
    
        <dev> ::= ip | eth0, etc; default is IP injection
        <proto> ::= ip4 | ip6; default is ip4

    1.3.6 IPFW

    IPFW可用于BSD系統。它替換了使用此版本構建的2.9之前版本中的內聯版本:

     ./configure --enable-ipfw / -DGIDS -DIPFW 

    不再支持此命令行參數:

     ./snort -J <port#> 

    相反,像這樣啟動Snort:

     ./snort --daq ipfw [--daq-var port = <port>]
     <port> :: = 1..65535;  default is 8000

    IPFW僅支持ip4流量。

    1.3.7 轉儲

    轉儲DAQ允許您測試2.9 Snort中可用的各種串聯模式功能,例如注入和規范化。

    ./snort -i <device> --daq dump
    ./snort -r <pcap> --daq dump

    默認情況下,將創建一個名為inline-out.pcap的文件,其中包含所有通過snort或由snort生成的數據包。您可以選擇指定其他名稱。

     ./snort --daq dump --daq-var file=<name>

    dump使用pcap daq進行數據包獲取。因此,它不計算過濾的數據包。

    請注意,轉儲DAQ串聯模式不是實際的串聯模式。此外,您可能希望以其他方式獲取pcap DAQ,如下所示:

     ./snort -r <pcap> -Q --daq dump --daq-var load-mode=read-file
     ./snort -i <device> -Q --daq dump --daq-var load-mode=passive

    1.3.8 統計數據變化

    Snort輸出的Packet Wire Totals和Action Stats部分包括其他字段:

    • 過濾 數據包的數量過濾掉,而不是交給的Snort進行分析。
    • 注入 Snort生成并發送了數據包,例如TCP重置。
    • 允許 Snort數據包進行分析,并且未采取任何措施。
    • 阻止 Snort未轉發數據包,例如由于阻止規則。
    • 替換 Snort修改的數據包。
    • 白名單導致Snort允許任何分析程序通過無檢查的流量的數據包。
    • 黑名單導致Snort阻止流量通過的數據包。
    • 忽略 導致Snort通過此Snort實例允許流通過/不進行檢查的數據包。

    動作統計信息顯示“已阻止”數據包,而不是“已丟棄”數據包,以避免已丟棄數據包(Snort實際看不到的數據包)和已阻止數據包(Snort不允許通過的數據包)之間的混淆。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类