使用Suricata和ELK進行網絡入侵檢測


使用Suricata和ELK進行網絡入侵檢測


數據包捕獲是實現網絡入侵檢測系統(IDS)和執行網絡安全監控(NSM)的關鍵組件。 有幾種開源IDS工具可以處理數據包捕獲並查找可能的網絡入侵和惡意活動的簽名。

其中一個開源工具是Suricata,這是一種IDS引擎,它使用規則集來監控網絡流量,並在發生可疑事件時觸發警報。 Suricata提供多線程引擎,這意味着它可以以更快的速度和效率執行網絡流量分析。 有關Suricata及其功能的更多詳細信息,請訪問其網站https://suricata-ids.org/。

本文介紹如何使用Network Watcher,Suricata和Elastic Stack設置環境以執行網絡入侵檢測。 Network Watcher為您提供用於執行網絡入侵檢測的數據包捕獲。 Suricata根據與其給定的威脅規則集匹配的數據包處理數據包捕獲並觸發警報。 這些警報存儲在本地計算機上的日志文件中。 使用Elastic Stack,Suricata生成的日志可以編制索引並用於創建Kibana儀表板,為您提供日志的可視化表示,以及快速獲取潛在網絡漏洞洞察力的方法。

步驟:

1. 安裝Suricata

具體安裝過程可參考官方文檔 http://suricata.readthedocs.io/en/latest/install.html

在Ubuntu系統上,可以通過以下命令進行安裝

sudo add-apt-repository ppa:oisf/suricata-stable

sudo apt-get update

sudo apt-get install suricata

可通過以下命令行檢驗安裝是否完成

suricata -h

在這個階段,我們沒有Suricata運行的任何規則。 如果您希望檢測到特定的網絡威脅,則可以創建自己的規則,也可以使用來自許多提供程序的開發規則集,例如Emerging Threats或Snort的VRT規則。 我們在此處使用可自由訪問的Emerging Threats規則集:

wget http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz

tar zxf emerging.rules.tar.gz

sudo cp -r rules /etc/suricata/

 

2. 安裝Elasticsearch

雖然Suricata生成的日志包含有關我們網絡上發生的事情的有價值信息,但這些日志文件並不是最容易閱讀和理解的。 通過將Suricata與Elastic Stack連接起來,我們可以創建一個Kibana儀表板,使我們能夠從日志中搜索,繪圖,分析和獲取洞察。

版本5.0及更高版本的Elastic Stack需要Java 8.運行命令java -version來檢查您的版本。 如果您沒有安裝java,請參閱Oracle網站上的文檔

在ubuntu系統上,可以通過以下命令安裝

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.deb

sudo dpkg -i elasticsearch-5.2.0.deb

sudo /etc/init.d/elasticsearch start

其他操作系統可參考官方文檔

通過以下命令驗證安裝

curl http://127.0.0.1:9200

應該返回以下內容:

{
"name" : "Angela Del Toro",
"cluster_name" : "elasticsearch",
"version" : {
    "number" : "5.2.0",
    "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe",
    "build_timestamp" : "2016-01-27T13:32:39Z",
    "build_snapshot" : false,
    "lucene_version" : "6.1.0"
},
"tagline" : "You Know, for Search"
}

3. 安裝Logstash

在ubuntu系統上可通過以下命令安裝

curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb

sudo dpkg -i logstash-5.2.0.deb

接下來,我們需要配置Logstash以從eve.json文件的輸出中讀取。 使用以下命令創建logstash.conf文件:

sudo touch /etc/logstash/conf.d/logstash.conf

將以下內容添加到文件中(確保eve.json文件的路徑正確):

input {
file {
    path => ["/var/log/suricata/eve.json"]
    codec =>  "json"
    type => "SuricataIDPS"
}

}

filter {
if [type] == "SuricataIDPS" {
    date {
    match => [ "timestamp", "ISO8601" ]
    }
    ruby {
    code => "
        if event.get('[event_type]') == 'fileinfo'
        event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0])
        end
    "
    }

    ruby{
    code => "
        if event.get('[event_type]') == 'alert'
        sp = event.get('[alert][signature]').to_s.split(' group ')
        if (sp.length == 2) and /\A\d+\z/.match(sp[1])
            event.set('[alert][signature]', sp[0])
        end
        end
        "
    }
}

if [src_ip]  {
    geoip {
    source => "src_ip"
    target => "geoip"
    #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat"
    add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
    add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
    }
    mutate {
    convert => [ "[geoip][coordinates]", "float" ]
    }
    if ![geoip.ip] {
    if [dest_ip]  {
        geoip {
        source => "dest_ip"
        target => "geoip"
        #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat"
        add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
        add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
        }
        mutate {
        convert => [ "[geoip][coordinates]", "float" ]
        }
    }
    }
}
}

output {
elasticsearch {
    hosts => "localhost"
}
}

確保為eve.json文件提供正確的權限,以便Logstash可以提取該文件。

sudo chmod 775 /var/log/suricata/eve.json

通過以下命令啟動Logstash

sudo /etc/init.d/logstash start

4. 安裝Kibana

在ubuntu系統上可通過以下命令安裝

curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz

tar xzvf kibana-5.2.0-linux-x86_64.tar.gz

cd kibana-5.2.0-linux-x86_64/

./bin/kibana

通過在瀏覽器輸入http://localhost:5601驗證安裝成功

5. 創建Kibana看板

分別從以下三個鏈接下載Kibana看板所需的json文件,並添加到Kibana中,具體配置方法請查看官方文檔。

在Kibana的“管理”選項卡下,導航到“保存的對象”並導入所有三個文件。 然后,從“儀表板”選項卡中,您可以打開並加載示例儀表板。

https://aka.ms/networkwatchersuricatadashboard

https://aka.ms/networkwatchersuricatavisualization

https://aka.ms/networkwatchersuricatasavedsearch

啟動suricata進行網絡入侵檢測后,生成eve.json文件,使用ELK組件處理該文件,並在Kibana上展示告警,具體界面如下:

kibana dashboard

示例儀表板提供了Suricata警報日志的多個可視化:

GeoIP提醒 - 一張地圖,顯示基於地理位置的原始國家/地區的警報分布(由IP確定)

geo ip

前10個警報 - 10個最常見的觸發警報及其描述的摘要。 單擊單個警報會在儀表板中過濾到與該特定警報相關的信息。

image 4

警報數 - 規則集觸發的警報總數

image 5

前20個源/目標IP /端口 - 顯示觸發警報的前20個IP和端口的餅圖。 您可以過濾特定的IP /端口,以查看觸發的警報數量和類型。

image 6

警報摘要 - 匯總每個警報的具體細節的表格。 您可以自定義此表以顯示每個警報的其他感興趣參數。

image 7

總結:

通過組合Network Watcher提供的數據包捕獲和Suricata等開源IDS工具,您可以針對各種威脅執行網絡入侵檢測。 這些儀表板使您可以快速發現網絡中的趨勢和異常,並深入了解數據以發現警報的根本原因,例如惡意用戶代理或易受攻擊的端口。 利用這些提取的數據,您可以就如何應對和保護網絡免受任何有害入侵企圖做出明智的決策,並創建規則以防止將來侵入您的網絡。
 
————————————————
版權聲明:本文為CSDN博主「Maywishes」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/xiaomaiaidandan/java/article/details/81194371


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM