構建基於Suricata+Splunk的IDS入侵檢測系統

0|1一.什麼是IDS和IPS?


IDS(Intrusion Detection Systems):入侵檢測系統,是一種網絡安全設備或應用軟件,能夠依照必定的安全策略,對網絡、系統的運行情況進行監視,儘量發現各類攻擊企圖、攻擊行爲或者攻擊結果,併發出安全警報。php

IPS(Intrusion Prevention System):入侵防護系統,除了具備IDS的監控檢測功能以外,能夠深度感知檢測數據流量,對惡意報文進行丟棄,以阻止這些異常的或是具備傷害性的網絡行爲。html

NSM:網絡安全監控系統,用於收集、檢測和分析網絡安全數據,一般IDS是其組成部分之一。mysql

IPS入侵防護系統,是在IDS入侵檢測系統的基礎上,增長了事件處理以及安全防禦功能,可以主動對安全事件進行響應。git

0|1二.IDS/IPS的功能及分類


1.IDS根據兩種方法進行分類:按照數據來源、按照入侵檢測策略。github

按照數據來源分類web

  • 基於網絡的入侵檢測系統(NIDS)
  • 基於主機的入侵監測系統(HIDS)
  • 分佈式入侵檢測系統(DIDS)

按照入侵檢測策略分類sql

  • 濫用檢測
  • 異常檢測
  • 完整性分析

2.IPS從功能上具備如下幾個組成部分:apache

  • 數據採集:採集和捕獲流量數據
  • 入侵檢測:分析流量和日誌數據,發現安全異常行爲併發出警報,常見的有Snort、Suricata、Bro
  • 結果展現:用於分析IDS警報並進行友好展現,常見的IDS警報分析工具備Snorby、Sguil、Base等
  • 安全防護:主動響應安全事件,採起丟棄數據包等等措施來阻止異常網絡行爲,好比與iptables聯用

0|1三.IDS檢測方法


IDS根據入侵檢測的行爲分爲:異常檢測和誤用檢測。vim

一、異常檢測方法安全

  • 統計異常檢測方法
  • 特徵選擇異常檢測方法
  • 基於貝葉斯推理異常檢測方法
  • 基於貝葉斯網絡異常檢測方法
  • 基於模式預測異常檢測方法

二、誤用檢測方法

  • 基於條件的機率誤用檢測方法
  • 基於專家系統誤用檢測方法
  • 基於狀態遷移分析誤用檢測方法
  • 基於鍵盤監控誤用檢測方法
  • 基於模型誤用檢測方法

0|1四.構建基於Suricata+Splunk的IDS入侵檢測系統


Suricata

隨着愈來愈多的服務器將網卡升級到10GB/40GB以太網,對線路上的硬件進行計算密集型的入侵檢測愈來愈困難。suircata是一款支持IDS和IPS的多線程入侵檢測系統,與傳統snort相比,suricata的多線程和模塊化設計上使其在效率和性能上超過了原有snort,它將 CPU 密集型的深度包檢測工做並行地分配給多個併發任務來完成。這樣的並行檢測能夠充分利用多核硬件的優點來提高入侵檢測系統的吞吐量,在數據包的深度檢測上效果優越。而且suricata能夠兼容現有的Snort規則簽名,還增長了對ipv6的支持,已經逐漸成爲傳統snort入侵檢測系統的代替方案。

參數 Snort Suricata
安裝方式 源碼安裝、安裝包安裝 源碼安裝
協議 TCP,UDP,ICMP,IP TCP,UDP,ICMP,IP,HTTP,FTP,TLS(SSL),SMB,DNS
規則 Snort規則,EmergingThreats規則 Snort規則,EmergingThreats規則,VRT::Snort 規則
線程 單線程 多線程
IPS支持 與iptables等聯用實現 支持自動處理
IPv6支持 少數支持 全面支持
抓包方式 libpcap PF_RING, cua,netmap,af-packet
幫助資料 官網及網絡上大量資料 Suricata wiki

Splunk

splunk是一款數據分析系統。它在快速收集、搜索、分析、實時獲取數據方面的能力較爲突出,效率高,可以處理PB級數據,而且它支持對數據源進行實時監控。支持自定義過濾規則。splunk使用簡單,經過用戶圖形界面進行各類統計分析操做, 可以對數據進行可視化展現,形象直觀。本實驗中利用splunk實時監控IDS的警報日誌文件fast.log。

1.安裝Suricata

suricatawiki參考文檔

1.安裝suricata依賴

apt-get -y install libpcre3 libpcre3-dbg libpcre3-dev \ build-essential autoconf automake libtool libpcap-dev libnet1-dev \ libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev \ libjansson-dev pkg-config

安裝libhtp庫

git clone https://github.com/OISF/libhtp.git cd libhtp/ ./autogen.sh ./configure make && sudo make install

2.下載suricata

去官網下載suricata並解壓

3.編譯suricata

默認模式下,Suricata以IDS模式運行,編譯命令:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var

若是須要 Suricata 同時運行 IDS 和 IPS,須要安裝額外依賴並使用以下命令進行編譯

sudo apt-get -y install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0 ./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var

4.安裝suricata

make && sudo make install sudo make install-conf # 安裝默認配置 sudo make install-rules # 安裝默認規則 sudo ldconfig # 讓系統共享動態連接庫

配置並使用Suricata監控安全事件

編輯配置文件

若是咱們安裝時使用下面的命令,會進行默認配置,咱們只須要修改相關配置文件中的參數便可。若是已經使用了默認配置,請直接跳到步驟4。

sudo make install-conf # 安裝默認配置 sudo make install-rules # 安裝默認規則

若是沒有安裝默認配置和規則,咱們須要手動進行配置。參考步驟一、二、3。

建立Suricata配置目錄和日誌目錄
sudo mkdir /var/log/suricata sudo mkdir /etc/suricata
把規則文件拷貝到Suricata配置目錄下
wget http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz tar zxvf emerging.rules.tar.gz sudo cp -R rules/ /etc/suricata/
把Suricata安裝源文件中的suricata.yaml、classification.config、reference.config文件拷貝到Suricata的配置目錄下
cd suricata sudo cp suricata.yaml classification.config reference.config /etc/suricata/
編輯配置文件

suricata的配置文件路徑是:/etc/suricata/suricata.yaml

sudo vim /etc/suricata/suricata.yaml

咱們須要注意一下幾個關鍵參數

HOME_NET: 它指定了Suricata 監控的本地網絡,根據本身的網絡狀況進行修改

HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"

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

default-log-dir:日誌文件存儲路徑,默認是/var/log/suricata。

outputs:outputs選項下有不少能夠輸出的配置選項,包括警告、檢測的數據包、產生的結果等,能夠根據本身的需求進行配置。

  • fast.log:默認的警告輸出文件。
  • unified2.alert:數據包輸出文件,將整個數據包以二進制的方式存儲到文件中。
  • http.log:HTTP日誌,包含了http請求、HOST字段、URI字段和User-Agent字段。
  • Syslog:這個選項決定了是否將suricata的警告輸出到syslog文件中。
  • Drop.log:當suricata工做在IPS模式下的時候,可使用drop操做規則,這些drop掉的數據包信息就會存儲在drop.log文件中

max-pending-packets: 設置suricata能同時處理的數據包數量,最少爲1,最大值取決於內存的大小,更大的內存能夠設置更大的值並擁有更好的性能,默認值是1024。

default-packet-size:對處理的每一個數據包的大小進行限制。默認值是1514,也是TCP數據包的最大長度(當數據超過這個長度便會使用TCP報文重組技術)。

編輯測試規則

針對suricata的安全規則的配置,能夠參考suricata配置文檔

修改/etc/suricata/suricata.yaml文件,設置咱們的測試規則文件my.rules

default-rule-path: /etc/suricata/rules rule-files: - my.rules

而後咱們去/etc/suricata/rules目錄下建立咱們的自定義規則文件my.rules

在該文件中,咱們寫下本身的測試規則

alert icmp $HOME_NET any -> $EXTERNAL_NET any (msg:"TEST :ICMP PING"; itype:8; sid:20000; rev:3;) alert tcp any any -> any 80 (msg:"http test";) alert http any any -> any any (msg:"Filemagic jgp(1)"; flow:established; filemagic:"JPEG image data"; filestore; sid:10; rev:1;)

運行suricata進行測試

Suricata有不一樣的運行模式,咱們可使用以下命令查看

sudo suricata --list-runmodes

啓動Suricata以前,強烈建議先關閉網卡的LRO/GRO功能(即網卡收包時將同一流的小包合併成大包)。這會致使Suricata處理時很容易出現丟包問題,傳輸速度慢。解決方法,關閉LRO/GRO功能,命令:

ethtool -k eth0 #查看LRO/GRO當前是否打開 ethtool -K eth0 lro off #關閉LRO ethtool -K eth0 gro off #關閉GRO

若是看到下列警示信息,能夠忽視。它說明你的網卡不支持LRO。

Cannot change large-receive-offload

而後咱們啓動suricata

sudo suricata -c /etc/suricata/suricata.yaml -i eth0

此時,suricata會開始監聽咱們的流量,若是觸發了規則,會在默認日誌路徑/var/log/suricata/下產生警報文件fast.log

使用Suricata監控網絡攻擊

模擬網絡攻擊:mysql暴力破解

IDS檢測規則

alert tcp $EXTERNAL_NET any -> $HOME_NET 3306 (msg:"MySQL Login Attack"; sid:11619; gid:3; rev:6; classtype:attempted-admin; reference:cve,2006-1518; metadata: engine shared, soid 3|11619, service mysql;)

此規則能夠檢測出嘗試枚舉mysql管理員密碼的暴力破解攻擊。

使用Splunk分析展現IDS警報

下載splunklight版

安裝web環境:php+apache2

sudo apt-get install php7.0 libapache2-mod-php7.0 apache2

運行splunk服務

cd splunk\bin\ ./splunk start

而後訪問本機8080端口便可。咱們能夠動態監控警報文件/var/log/suricata/fast.log


__EOF__

做  者:ssooking
出  處:https://www.cnblogs.com/ssooking/p/IDS.html關於博主:安全愛好者、研究員,熱愛技術交流分享!

相關文章
相關標籤/搜索