開源USM之IDS suricata

  上次我們介紹到USM,想必大家對它已經有一個概貌的認識了,今天我要與大家分享的是安全管理平臺百寶箱中的檢測系統[IDS],檢測系統是對防火牆的補充,有一個經典的比喻:防火牆相當於一個把門的門衛,對於所有進出大門的人員進行審覈:只有符合安全要求的人,就是那些有入門許可證的人纔可以進、出大門;門衛可以防止小偷進入大樓,但不能保證小偷100%地被拒之門外,而且對於那些本身就在大門內部的,以及那些具備入門證的、以合法身份進入了大門的人,是否做好事也無法監控,這時候就需要依靠檢測系統來進行審計和控制,發現異常情況併發出警告。下面就讓我們一起聊一聊Suricata吧。

1、簡介

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

IPS:預防系統(IPS: Intrusion Prevention System)是電腦網絡安全設施,是對防病毒軟件(Antivirus Programs)和防火牆(Packet Filter, Application Gateway)的補充。 預防系統(Intrusion-prevention system)是一部能夠監視網絡或網絡設備的網絡資料傳輸行爲的計算機網絡安全設備,能夠即時的中斷、調整或隔離一些不正常或是具有傷害性的網絡資料傳輸行爲。是新一代的侵入檢測系統(IDS)。

IDS:英文“Intrusion Detection Systems”的縮寫,中文意思是“檢測系統”。依照一定的安全策略,通過軟、硬件,對網絡、系統的運行狀況進行監視,儘可能發現各種企圖、行爲,以保證網絡系統資源的機密性、完整性和可用性。

2、檢測系統模型

IDS處理流程圖
目前的檢測系統模型,主要有兩個國際組織在對IDS進行通用模型標準化的工作,分別是Common Intrusion Detection Framework(CIDF)和隸屬於IETF(Internet Engineering Task Force)的Intrusion Detection Working Group(IDWG)。
開源USM之IDS suricata

  • suricata架構
    報文檢測系統通常四大部分,報文獲取、報文解碼、報文檢測、日誌記錄;suricata按不同的功能安裝模塊劃分,一個模塊的輸出是另一個模塊的輸入,suricata通過線程將模塊串聯起來。
    suricata架構圖

  • suricata各模塊功能
    Receive:從NFQUEUE中接收數據包,並將封裝在Packet結構中,然後放入下一個緩衝區。
    Decode:對數據包進行解碼,主要是對數據包頭部信息進行分析並保存在Packet結構中。
    StreamTCP:對數據包進行TCP流重組。
    Detect:檢測數據包是否包含可疑行爲。
    Verdict:對檢測後的數據包進行判定,並將判定結果告訴內核(通過ipq_set_verdict函數),方便內核對數據包進行接收、丟棄等處理。
    RespondReject:通過libnet對那些要執行Reject操作的數據包進行相應的迴應。

    3、安裝

  • 官方軟件包
    Suricata(穩定)版本是4.0.3 12月6日發佈的2017年。
    Mac / FreeBSD / UNIX / Linux / Windows:
    suricata-4.0.3.tar.gz
    PGP簽名:suricata-4.0.3.tar.gz.sig
    Windows安裝程序(win32):Suricata-4.0.1-1-32bits.msi

  • Suricata(舊的穩定)版本是3.2.5 12月6日發佈的2017年。
    Mac / FreeBSD / UNIX / Linux / Windows:
    suricata-3.2.5.tar.gz
    PGP簽名:suricata-3.2.5.tar.gz.sig
    Ubuntu PPA beta (doc)

爲了檢測系統本身的安全,也可以將它部署在FreeBSD\OpenBSD上,具說是世界上最安全的操作系統。

  • 部署拓撲
    開源USM之IDS suricata

  • 安裝軟件
# yum install epel-release
# 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

# wget https://www.openinfosecfoundation.org/download/suricata-4.0.3.tar.gz
# tar -xvf suricata-4.0.3.tar.gz
# cd suricata-4.0.3
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-nfqueue --enable-lua
# make
# make install
# ldconfig
  • 安裝配置

Suricata 源代碼帶有默認的配置文件。

# make install-conf

如果沒有IDS規則集的話,Suricata 什麼用也沒有。幸好 Makefile 爲我們提供了 IDS 規則集的安裝選項。

# make install-rules

結合上面提到的(install-conf和install-rules),將運行(配置和設置)Suricata。

#make install-full

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

  • 使用 Suricata 進行監控

當使用 pcap 捕獲模式的時候,強烈建議關閉 Suricata 監聽網卡上的任何的包卸載(例如 LRO/GRO)功能。這些功能會干擾包的實時捕獲行爲。

# ethtool -K eth0 gro off lro off     [ 關閉eth0 接口的 LRO/GRO 功能 ]

這裏要注意,在使用某些網卡的情況下,你會看到如下警告信息。忽略它們就行了,這些信息只不過告訴你你的網卡不支持 LRO 功能而已。***Cannot change large-receive-offload

Suricata 支持許多運行模式,運行模式決定着我們會使用何種線程。

# suricata --list-runmodes     [ 查看可用的運行模式 ] 

4、總結

  如何在一臺多核 Linux 服務器上安裝 Suricata 檢測系統。不同於單線程的 Snort IDS ,Suricata 可以很容易的從多核硬件的多進程特性所帶來的好處中獲益,定製 Suricata 可以最大化其效能和檢測範圍。這是目前對suricata的一個整體的認識,接下來需要研究每個模塊之間的交互、深入學習suricata是如何收集報文、如何將收集的報文傳遞給解碼模塊、解碼模塊做哪些工作、輸出是什麼。

常見報錯解決方法:

1、YAML safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0).
*** LOCAL GEMS
# rvm install 2.2.7

2、前端頁面不顯示,netstat -lntp 沒有3000端口
rvm use 2.2.7
gem install bundler
bundle install
rake snorby:setup
rails server -e production &

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章