Snort的安裝與使用

Snort的安裝與使用

一、Snort基礎

       snort 是一個開源的輕量級入侵檢測系統(NIDS),使用C語言編寫。支持windows、Linux平臺,我比較喜歡linux操作系統,所以在linux上學習研究snort。snort有三種工作模式,包括:嗅探、記錄數據包、入侵檢測。

1.1、Snort的規則頭

1.1.1、規則動作

       規則的頭包含了定義一個包的who,where和what信息,以及當滿足規則定義的所有屬性的包出現時要採取的行動。規則的第一項是"規則動作"(ruleaction),"規則動作"告訴snort在發現匹配規則的包時要幹什麼。在snort中有五種動作:alert、log、pass、activate和dynamic.

       1、Alert-使用選擇的報警方法生成一個警報,然後記錄(log)這個包。

       2、Log-記錄這個包。

       3、Pass-丟棄(忽略)這個包。

       4、activate-報警並且激活另一條dynamic規則。

       5、dynamic-保持空閒直到被一條activate規則激活,被激活後就作爲一條log規則執行。

1.1.2、協議

      規則的下一部分是協議。Snort當前分析可疑包的ip協議有四種:tcp 、udp、icmp和ip。將來可能會更多,例如ARP、IGRP、GRE、OSPF、RIP、IPX等。

1.1.3、ip地址

     規則頭的下一個部分處理一個給定規則的ip地址和端口號信息。關鍵字"any"可以被用來定義任何地址。Snort沒有提供根據ip地址查詢域名的 機制。地址就是由直接的數字型ip地址和一個cidr塊組成的。Cidr塊指示作用在規則地址和需要檢查的進入的任何包的網絡掩碼。/24表示c類網絡, /16表示b類網絡,/32表示一個特定的機器的地址。例如,192.168.1.0/24代表從192.168.1.1到192.168.1.255的 地址塊。在這個地址範圍的任何地址都匹配使用這個192.168.1.0/24標誌的規則。這種記法給我們提供了一個很好的方法來表示一個很大的地址空間。

      有一個操作符可以應用在ip地址上,它是否定運算符(negation operator)。這個操作符告訴snort匹配除了列出的ip地址以外的所有ip地址。否定操作符用"!"表示。下面這條規則對任何來自本地網絡以外的流都進行報警。

       alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 (content: "|00 01 86a5|"; msg: "external mountd access";)

1.1.4、端口號

       端口號可以用幾種方法表示,包括"any"端口、靜態端口定義、範圍、以及通過否定操作符。"any"端口是一個通配符,表示任何端口。靜態端口定 義表示一個單個端口號,例如111表示portmapper,23表示telnet,80表示http等等。端口範圍用範圍操作符":"表示。範圍操作符 可以有數種使用方法,如下所示:

          log udp any any ->192.168.1.0/24 1:1024
     記錄來自任何端口的,目標端口範圍在1到1024的udp流

          log tcp any any ->192.168.1.0/24 :6000
    記錄來自任何端口,目標端口小於等於6000的tcp流
          log tcp any :1024 ->192.168.1.0/24 500:
     記錄來自任何小於等於1024的特權端口,目標端口大於等於500的tcp流

     端口否定操作符用"!"表示。它可以用於任何規則類型(除了any,這表示沒有,呵呵)。例如,由於某個古怪的原因你需要記錄除x windows端口以外的所有一切,你可以使用類似下面的規則:

         log tcp any any ->192.168.1.0/24 !6000:6010

1.1.5、方向操作符

       方向操作符"->"表示規則所施加的流的方向。方向操作符左邊的ip地址和端口號被認爲是流來自的源主機,方向操作符右邊的ip地址和端口信 息是目標主機,還有一個雙向操作符"<>"。它告訴snort把地址/端口號對既作爲源,又作爲目標來考慮。這對於記錄/分析雙向對話很方 便,例如telnet或者pop3會話。用來記錄一個telnet會話的兩側的流的範例如下:

                log !192.168.1.0/24 any <>192.168.1.0/24 23

1.2、Snort的規則選項

        規則選項組成了snort入侵檢測引擎的核心,既易用又強大還靈活。所有的snort規則選項用分號";"隔開。規則選項關鍵字和它們的參數用冒號":"分開。按照這種寫法,snort中有42個規則選項關鍵字。

        msg              - 在報警和包日誌中打印一個消息。

        logto             - 把包記錄到用戶指定的文件中而不是記錄到標準輸出。

        ttl                   - 檢查ip頭的ttl的值。

        tos                - 檢查IP頭中TOS字段的值。

        id                   - 檢查ip頭的分片id值。

        ipoption        - 查看IP選項字段的特定編碼。

        fragbits        - 檢查IP頭的分段位。

       dsize              - 檢查包的淨荷尺寸的值 。

       flags              -檢查tcp flags的值。

       seq                - 檢查tcp順序號的值。

       ack                 - 檢查tcp應答(acknowledgement)的值。

       window         -  測試TCP窗口域的特殊值。

       itype               - 檢查icmp type的值。

       icode             - 檢查icmp code的值。

       icmp_id        - 檢查ICMP ECHO ID的值。

      icmp_seq     - 檢查ICMP ECHO 順序號的值。

       content          - 在包的淨荷中搜索指定的樣式。

      content-list    -  在數據包載荷中搜索一個模式集合。

     offset - content         - 選項的修飾符,設定開始搜索的位置 。

     depth - content        - 選項的修飾符,設定搜索的最大深度。

     nocase                      - 指定對content字符串大小寫不敏感。

     session                     - 記錄指定會話的應用層信息的內容。

     rpc                               - 監視特定應用/進程調用的RPC服務。

     resp                             - 主動反應(切斷連接等)。

     react                            - 響應動作(阻塞web站點)。

     reference                    - 外部攻擊參考ids。

     sid                                - snort規則id。

     rev                                - 規則版本號。

     classtype                    - 規則類別標識。

      priority                        - 規則優先級標識號。

       uricontent                  - 在數據包的URI部分搜索一個內容。

       tag                               - 規則的高級記錄行爲。

      ip_proto                      - IP頭的協議字段值。

     sameip                        - 判定源IP和目的IP是否相等。

     stateless                     - 忽略劉狀態的有效性。

      regex                           - 通配符模式匹配。

      within                           - 強迫關係模式匹配所在的範圍。

      byte_test                     -  數字模式匹配。

       byte_jump                 - 數字模式測試和偏移量調整。

二、Snort的安裝與使用

               搭建環境:Ubuntu 16.04 LTS  Snort-2.9.9.0 daq-2.0.6

2.1、Snort daq安裝

2.1.1、直接安裝daq會提示如下錯誤

        
        cd daq
        ./configure
 
           

            

2.1.2、依賴包的安裝

       1、安裝bison 、flex,命令行輸入:

              sudo apt-get install bison flex

      2、安裝libpcap   

     tar-zxvf libpcap-1.7.4.tar.gz
      ./configure
      sudo make
      sudo make install
      sudo cp /usr/local/lib/libpcap.* /usr/lib/

     3、編譯安裝daq

         cd daq

         ./configure

         sudo make

         sudo make install

2.2、snort安裝

      sudo apt-get install libpcre3-dev

      sudo apt-get installlibdumbnet-dev zlib1g-dev

      sudo mkdir /usr/local/snort

      ./configure --enable-sourcefire

      sudo make

      sudo make install

2.3、snort配置文件

          sudo mkdir /etc/snort

        將snort-2.9.9.0/etc/snort.conf拷貝到 /etc/snort目錄下

           sudo  cp  /etc/snort.conf  /etc/snort

2.4、snort的基本命令

      1、啓動snort

               sudo snort

      2、snort的幫助命令

               snort --help

     3、Snort啓動 特定配置文件      

     sudo snort -i eth0 –c /etc/snort/snort.conf -A fast -l /var/log/snort

      4、規則    

     alert tcp any any -> 10.102.24.141 80 (msg:"Telnet Login";sid:26287) 

      alert icmp any any -> 10.102.24.141 any (msg:"ICMP PING";sid:8886288)

       5、測試

           ping 10.102.24.141 

         







發佈了33 篇原創文章 · 獲贊 10 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章