基於CentOS6.5下Suricata(一款高性能的網絡IDS、IPS和網絡安全監控引擎)的搭建(圖文詳解)(博主推薦)

 

 

  很少說,直接上乾貨!html

 

 

爲何,要寫這篇論文?linux

   是由於,目前科研的我,正值研三,致力於網絡安全、大數據、機器學習研究領域!ios

  論文方向的須要,同時不侷限於真實物理環境機器實驗室的攻防環境、也不侷限於真實物理機器環境實驗室的大數據集羣平臺。在此,爲了須要的博友們,能在本身虛擬機裏(我這裏是CentOS6.5)來搭建部署snort+barnyard2+base的入侵檢測系統。分享與交流是進步的階梯!c++

  同時,本人還嘗試過在Ubuntu14.04裏搭建這入侵檢測系統的環境。同時,還嘗試過在win7\win10裏搭建這入侵檢測系統的環境。web

   同時,也歡迎作報警數據方向的菸酒僧留言評論加好友交流。歡迎指正!謝謝。算法

 

 

 

   見Suricata的官網sql

https://suricata.readthedocs.io/en/latest/install.html

 

 

 

 

 

 

1、準備工做

  安裝CentOS-6.5-x86_64-bin-DVD1.isoshell

 

 

 

 

 

 

 

 

 

 

 

 

 

DEVICE=eth0
HWADDR=00:0C:29:7F:EF:EC
TYPE=Ethernet
UUID=26d0171e-d510-4f6f-b098-1ee55e36313a
ONBOOT=static
NM_CONTROLLED=yes
BOOTPROTO=static

DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
IPADDR=192.168.80.86
BCAST=192.168.80.2
GATEWAY=192.168.80.2
NETMASK=255.255.255.0

DNS1=192.168.80.2
DNS2=119.29.29.29

 

 

 

 

 

Suricata介紹

  Suricata是一款高性能的網絡IDS、IPS和網絡安全監控引擎。它是由the Open Information Security Foundation開發,是一款開源的系統。軟件的源代碼能夠經過http://suricata-ids.org/得到。macos

   

  隨着安全威脅的不斷髮生,入侵檢測系統(IDS)在現在的數據中心環境中顯得尤其必要。然而,隨着愈來愈多的服務器將他們的網卡升級到10GB/40GB以太網,對如此線路上的硬件進行計算密集型的入侵檢測愈來愈困難。其中一種提高入侵檢測系統性能的途徑是多線程入侵檢測系統,它將 CPU 密集型的深度包檢測工做並行的分配給多個併發任務來完成。這樣的並行檢測能夠充分利用多核硬件的優點來輕鬆提高入侵檢測系統的吞吐量。在這方面有兩個知名的開源項目,分別是 Suricata 和 Broubuntu

 

  爲此,我本篇博客呢,給你們分享的是,Suricata。

 

 

 

 

 

 

   

suricata的官網
https://suricata-ids.org/

 

 

 

 

 

 

 

 

 

 

 

  Suricata的安裝官網(基於CentOS)

https://redmine.openinfosecfoundation.org/projects/suricata/wiki/CentOS_Installation

 

 

 

 

 

 

 

 

 

 

   注意,如下操做,都是在root用戶下進行。

 

 

1.    安裝wget

[root@suricata~]# yum install wget -y

 

        

 

 

2.    更換源

  更換成阿里雲源,更新系統、下載軟件速度快

[root@suricata~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@suricata~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
[root@suricata~]# yum clean all
[root@suricata~]# yum makecache

 

 

 

 

 

 

3.更新系統

[root@suricata~]# yum -y update

 

 

 

 

 

4.安裝epel源

[root@suricata~]# yum install -y epel-release

 

 

 

 

五、在 CentOS, Fedora 或者 RHEL 操做系統上安裝依賴包

[root@suricata ~]# yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel

 

   或者

sudo yum -y install gcc libpcap-devel pcre-devel libyaml-devel file-devel \
  zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar make \
  libnetfilter_queue-devel lua-devel

 

  一旦將全部依賴包安裝完畢,咱們就能夠繼續安裝 Suricata 了。

 

 

 

 

 

 

 

 Suricata 源代碼的下載和編譯安裝

  首先從 http://suricata-ids.org/download/ 下載 Suricata 源代碼,而後構建它。撰寫這篇文章的時候,其最新版本號爲suricata-4.0.0.tar.gz

 

 

 

   可是,官方文檔裏,這個suricata-3.1.tar.gz版本是測試過的,因此,我這裏也是安裝這個版本;

 

   

 

   我這裏是

[root@suricata ~]# wget http://www.openinfosecfoundation.org/download/suricata-3.1.tar.gz

 

 

   而後,再

[root@suricata ~]# tar -xvzf suricata-3.1.tar.gz

 

  再

cd suricata-3.1

 

 

   而後,再

[root@suricata suricata-3.1]# pwd
/root/suricata-3.1
[root@suricata suricata-3.1]# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-nfqueue --enable-lua

 

 

 

 

 

  而後,再

[root@suricata suricata-3.1]# pwd
/root/suricata-3.1
[root@suricata suricata-3.1]# make

 

 

   而後,再

 

 

 

 

  而後,再 

[root@suricata suricata-3.1]# pwd
/root/suricata-3.1
[root@suricata suricata-3.1]# sudo ldconfig

 

 

 

   

  如下是配置信息的樣例。

Suricata Configuration:
  AF_PACKET support:                       yes
  PF_RING support:                         no
  NFQueue support:                         no
  NFLOG support:                           no
  IPFW support:                            no
  DAG enabled:                             no
  Napatech enabled:                        no
  Unix socket enabled:                     yes
  Detection enabled:                       yes
  libnss support:                          yes
  libnspr support:                         yes
  libjansson support:                      yes
  Prelude support:                         no
  PCRE jit:                                yes
  LUA support:                             no
  libluajit:                               no
  libgeoip:                                no
  Non-bundled htp:                         no
  Old barnyard2 support:                   no
  CUDA enabled:                            no

 

 

   

 

   Suricata 源代碼帶有默認的配置文件。按照以下方法安裝這些默認配置文件便可。

[root@suricata suricata-3.1]# pwd
/root/suricata-3.1
[root@suricata suricata-3.1]# make install-conf

 

 

 

 

   正如你所料,若是沒有IDS規則集的話,Suricata 什麼用也沒有。幸虧 Makefile 爲咱們提供了 IDS 規則集的安裝選項。

  安裝方法以下

[root@suricata suricata-3.1]# pwd
/root/suricata-3.1
[root@suricata suricata-3.1]# make install-rules

   以上的規則安裝命令會從 EmergingThreats.net 上下載可用的社區規則集快照,而且將其存儲在 /etc/suricata/rules 目錄下。

[root@suricata rules]# pwd
/etc/suricata/rules
[root@suricata rules]# ls
app-layer-events.rules   emerging-activex.rules          emerging-icmp.rules            emerging-scada.rules        emerging-web_server.rules         smtp-events.rules
botcc.portgrouped.rules  emerging-attack_response.rules  emerging-imap.rules            emerging-scan.rules         emerging-web_specific_apps.rules  stream-events.rules
botcc.rules              emerging-chat.rules             emerging-inappropriate.rules   emerging-shellcode.rules    emerging-worm.rules               suricata-1.2-prior-open.yaml
BSD-License.txt          emerging.conf                   emerging-info.rules            emerging-smtp.rules         gen-msg.map                       suricata-1.3-enhanced-open.txt
ciarmy.rules             emerging-current_events.rules   emerging-malware.rules         emerging-snmp.rules         gpl-2.0.txt                       suricata-1.3-etpro-etnamed.yaml
classification.config    emerging-deleted.rules          emerging-misc.rules            emerging-sql.rules          http-events.rules                 suricata-1.3-open.yaml
compromised-ips.txt      emerging-dns.rules              emerging-mobile_malware.rules  emerging-telnet.rules       LICENSE                           tor.rules
compromised.rules        emerging-dos.rules              emerging-netbios.rules         emerging-tftp.rules         modbus-events.rules               unicode.map
decoder-events.rules     emerging-exploit.rules          emerging-p2p.rules             emerging-trojan.rules       rbn-malvertisers.rules
dns-events.rules         emerging-ftp.rules              emerging-policy.rules          emerging-user_agents.rules  rbn.rules
drop.rules               emerging-games.rules            emerging-pop3.rules            emerging-voip.rules         reference.config
dshield.rules            emerging-icmp_info.rules        emerging-rpc.rules             emerging-web_client.rules   sid-msg.map
[root@suricata rules]# 

 

 

 

 

 

  而後,再

[root@suricata suricata-3.1]# pwd
/root/suricata-3.1
[root@suricata suricata-3.1]# make install-full

 

 

 

 

 

 

    接着,繼續

  官網

https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Basic_Setup

 

 

  按照這官網一步一步,來

 

 

 

 

[root@suricata suricata-3.1]# pwd
/root/suricata-3.1
[root@suricata suricata-3.1]# mkdir /var/log/suricata
mkdir: cannot create directory `/var/log/suricata': File exists
[root@suricata suricata-3.1]# mkdir /etc/suricata
mkdir: cannot create directory `/etc/suricata': File exists
[root@suricata suricata-3.1]# cp classification.config /etc/suricata
cp: overwrite `/etc/suricata/classification.config'? y
[root@suricata suricata-3.1]# cp reference.config /etc/suricata
cp: overwrite `/etc/suricata/reference.config'? y
[root@suricata suricata-3.1]# cp suricata.yaml /etc/suricata
cp: overwrite `/etc/suricata/suricata.yaml'? y
[root@suricata suricata-3.1]# 

 

 

 

   接下來,是

[root@suricata suricata-3.1]# ./configure && make && make install-conf

 

 

 

  接下來,是

[root@suricata suricata-3.1]# pwd
/root/suricata-3.1
[root@suricata suricata-3.1]# ./configure && make && make install-rules

 

 

 

 

 

   接下來,是

 

[root@suricata suricata-3.1]# pwd
/root/suricata-3.1
[root@suricata suricata-3.1]# ./configure && make && make install-full

 

 

 

 

 

 

 

 

 

   即,進入

首次配置 Suricata IDS

   如今到了配置 Suricata 的時候了。配置文件的位置是 /etc/suricata/suricata.yaml。參照如下命令,用文本編輯器打開這個文件。

[root@suricata suricata-3.1]# pwd
/root/suricata-3.1
[root@suricata suricata-3.1]# vim /etc/suricata/suricata.yaml

 

 

   下面是一些基本的設置,供你開始入門。

  如下是/etc/suricata/suricata.yaml的默認配置文件。

suricata.yaml (一款高性能的網絡IDS、IPS和網絡安全監控引擎)默認配置文件(圖文詳解)

 

  能夠看看這篇博客: 

Suricata配置文件說明

 

 

 

 

   

  文件中有一些運行所需的基本配置。

  爲default-log-dir關鍵字指定 Suricata 日誌文件所在的位置。

default-log-dir: /var/log/suricata/

 

 

 

 

  在vars部分下方,你會發現幾項對 Suricata 來講很重要變量。

  HOME_NET變量須要指定 Suricata 檢查的網絡。被分配給 EXTERNAL_NET 變量。

  變量 !$HOME_NET 表明除本地網絡以外的其餘網絡。

  XXX_PORTS變量用來辨別不一樣服務所用到的端口號。

  須要注意的是不管使用什麼端口,Suricata 均可以自動檢測 HTTP 流量。

  因此是否是正確指定端口就顯得沒那麼重要了。

 

 

  如我這裏改成

vars:
    HOME_NET: "[192.168.80.0/24]"
    EXTERNAL_NET: "!$HOME_NET"
    HTTP_PORTS: "80"
    SHELLCODE_PORTS: "!80"
    SSH_PORTS: 22

 

 

 

 

  host-os-policy 部分用於防護利用操做系統網絡棧的自身行爲來逃避檢測的一些知名攻擊手段(例如:TCP reassembly)。

  做爲對策,經過針對目標操做系統而對檢測引擎算法進行微調,現代 IDC 提供了「基於目標」的檢測手段。

  所以,若是你知道某臺主機運行了什麼操做系統的話,將這個信息提供給 Suricata 就能夠大幅提升檢測的成功率。這就是 host-os-policy 存在的意義。本例中,默認的 IDC 策略是 Linux 系統。

  若是針對某個 IP 地址沒有指定操做系統信息,Suricata 會默認應用基於 Linux 系統的檢測策略。

  以下,當捕獲到對 192.168.80.0/28 和 192.168.80.155通信時,Suricata 就會應用基於 Windows 系統的檢測策略。

 

 

 

   我這裏,改成

host-os-policy:
  # These are Windows machines.
  windows: [192.168.122.0/28, 192.168.122.155]
  bsd: []
  bsd-right: []
  old-linux: []
  # Make the default policy Linux.
  linux: [0.0.0.0/0]
  old-solaris: []
  solaris: ["::1"]
  hpux10: []
  hpux11: []
  irix: []
  macos: []
  vista: []
  windows2k3: []

 

 

 

 

 

 

  在 threading 部分下,你能夠爲不一樣的 Suricata 線程指定 CPU 關聯。

  默認狀態下,CPU 關聯 是被禁止使用的 (set-cpu-affinity: no),這意味着 Suricata 會分配其線程到全部可用的 CPU 核心上。

  Suricata 會默認爲每個 CPU 核心建立一個檢測線程。

  你能夠經過指定 detect-thread-ratio: N 來調整此行爲。

  此處會建立 N*M 個檢測線程,M 表明 CPU 核心總數。

 

   我這裏,改成

threading:
  set-cpu-affinity: no
  detect-thread-ratio: 1.5

  經過以上對線程的設置,Suricata 會建立 1.5*M 個檢測線程,M 是系統的 CPU 核心總數。

 

 

  注意:若是你想對 Suricata 配置有更多的瞭解,能夠去翻閱默認配置文件。裏邊配有有大量的註釋以供你清晰理解。

suricata.yaml (一款高性能的網絡IDS、IPS和網絡安全監控引擎)默認配置文件(圖文詳解)

 

  能夠看看這篇博客: 

Suricata配置文件說明

 

   以上是編譯安裝的整個過程。

  注意,對於這個/etc/suricata/suricata.yaml ,我這篇博客下來,並非默認的配置文件哈。你們能夠之後本身學會了,強大了來作修改。

  

  在本博文中,我爲你們演示瞭如何在一臺多核 Linux 服務器(基於CentOS6.5)上安裝 Suricata 入侵檢測系統

  不一樣於單線程的 Snort IDS ,Suricata 能夠很容易的從多核硬件的多進程特性所帶來的好處中獲益。定製 Suricata 來最大化其效能和檢測範圍是一個很好的主意。Suricata 的粉絲們維護着一個 在線 Wiki,若是你打算將 Suricata 部署到你的環境中,我強烈建議你去那兒取取經。

  若是你如今已經開始使用 Suricata 了的話,把你的經驗也分享出來吧。

 

  至此結束!歡迎交流!

 

 

 

 

 

 

參考

如何在 Linux 系統上安裝 Suricata 入侵檢測系統(https://linux.cn/article-6985-1.html#4_1498)

相關文章
相關標籤/搜索