網路活動

入侵偵測系統 SNORT 的基本安裝

一.前言

網路安全至關重要,如何提升網路安全防護,一直是網路管理人員最大的課題。網路安全防護最常見的手段包括透過防火牆制定政策來做防護,以TCP/IP連線的IP及Port制定允許或拒絕連線的政策。此方式可以有效的定義區隔哪些 IP 可以存取哪些服務,但對於需要對所有人開放的服務如官方網站,這種防護就顯得不太足夠。IDS(Intrusion-detection system)入侵偵測系統跟防火牆不同的地方在於,IDS會去看封包的內容,而不只是的表頭。SNORT它是一套相當知名的IDS開放原始碼軟體,透過數千條Rule的比對,能夠找出可疑特徵的封包,能提供網路管理人員得知網路惡意攻擊行為的發生,藉此做出適當的防護調整。本文僅針對SNORT基本核心套件安裝教學,有關其他進階應用(告警資料分析、Web檢視畫面、Rules自動更新...等)不在本文討論範圍,請自行參閱官網相關文件。

二.使用系統及套件

  1. CentOS 6.7 (https://www.centos.org)
  2. snort 2.9.7.6 (https://www.snort.org)
  3. daq-2.0.6 (https://www.snort.org)
  4. libdnet-1.11 (http://libdnet.sourceforge.net)

三.軟體安裝

  1. 安裝編譯環境
    # yum –y groupinstall "Development tools"
  2. 安裝 libpcap
    # yum install libpcap* -y
  3. 安裝 pcre
    # yum install pcre* -y
  4. 安裝 zlib-devel
    # yum install zlib-devel -y
  5. 安裝 libdnet
    # tar zxvf libdnet-1.11.tar.gz
    # cd ~/libdnet-1.11
    # ./configure ; make ; make install
  6. 安裝 daq
    # tar zxvf daq-2.0.6.tar.gz
    # cd ~/daq-2.0.6
    # ./configure ; make ; make install
  7. 安裝 snort
    # tar zxvf snort-2.9.7.6.tar.gz
    # cd ~/snort-2.9.7.6
    # ./configure ; make ; make install

四.SNORT及系統環境設定

  1. 新增SNORT使用者及群組
    # groupadd snort
    # useradd -g snort snort -s /sbin/nologin
  2. 建立相關目錄
    # mkdir -p /etc/snort/rules
    # mkdir -p /etc/snort/so_rules
    # mkdir -p /etc/snort/preproc_rules
    # mkdir -p /var/log/snort
    # mkdir -p /usr/local/lib/snort_dynamicrules
  3. 設定目錄權限
    # chown snort:snort /var/log/snort
  4. 複製SNORT相關設定檔
    # cp ~/snort-2.9.7.6/etc/* /etc/snort/

五.下載及安裝SNORT Rules

  1. SNORT Rules是SNORT IDS最重要的部分,SNORT透過Rules內記載的特徵來比對封包內容,藉此判斷封包是否為惡意攻擊。若把SNORT比喻為防毒軟體,則Rules便是防毒軟體的病毒碼。如同病毒碼,您必須經常更新Rules。
  2. 需要在www.snort.org註冊帳號,才能夠免費的下載SNORT Rules。
  3. 本文所安裝的SNORT是v2.9.7.6,所以我們必須去www.snort.org下載snortrules-snapshot-2976.tar.gz。
  4. 解壓縮及安裝snortrules-snapshot-2976.tar.gz
    # tar zxvf snortrules-snapshot-2976.tar.gz
    # cp rules/* /etc/snort/rules/
    # cp -a so_rules/* /etc/snort/so_rules/
    # cp so_rules/precompiled/Centos-5-4/x86-64/2.9.7.6/* /etc/snort/so_rules/
    # cp preproc_rules/* /etc/snort/preproc_rules/
    # touch /etc/snort/rules/black_list.rules
    # touch /etc/snort/rules/white_list.rules

六.snort.conf設定

  1. 修改相關路徑設定
    # vi /etc/snort/snort.conf
    var RULE_PATH /etc/snort/rules
    var SO_RULE_PATH /etc/snort/so_rules
    var PREPROC_RULE_PATH /etc/snort/preproc_rules
    var WHITE_LIST_PATH /etc/snort/rules
    var BLACK_LIST_PATH /etc/snort/rules
  2. 新增output設定
    # vi /etc/snort/snort.conf
    output alert_full: alert.full
    output unified2: filename snort.u2, limit 128
    備註:
    • output alert_full 設定snort將alert紀錄為ASCII text的格式,啟動snort後所偵測到的告警,將會記錄到” /var/log/snort/ alert.full”。
      /var/log/snort/ alert.full 可提供給 splunk或Log Server分析。
    • output unified2 設定snort將alert紀錄為unified2的格式,啟動snort後所偵測到的告警,將會記錄到” /var/log/snort/ snort.u2”
      /var/log/snort/ snort.u2可提供給barnyard2讀取輸入MySQL供B.A.S.E使用。

七.啟動SNORT

  1. 測試啟動SNORT
    # snort -u snort -g snort -c /etc/snort/snort.conf -i eth0
    備註:觀察啟動過程有無錯誤訊息,Ctrl-C可離開。

  2. 正式啟動SNORT
    snort -D -u snort -g snort -c /etc/snort/snort.conf -i eth0
    備註:透過 "-D"(Daemon) 參數,讓SNOR在背景執行。

八.功能測試

  1. 新增測試用SNORT Rules
    # vi /etc/snort/rules/local.rules
    alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;)
    備註:alert所有ICMP封包。
  2. 重新啟動SNORT
  3. 透過任一IP去Ping SNORT的eth0 IP
  4. 觀察 Alert Log
    # tail -f /var/log/snort/alert.full

九.完成