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依賴
安裝libhtp庫
2.下載suricata
去官網下載suricata並解壓
3.編譯suricata
默認模式下,Suricata以IDS模式運行,編譯命令:
若是須要 Suricata 同時運行 IDS 和 IPS,須要安裝額外依賴並使用以下命令進行編譯
4.安裝suricata
配置並使用Suricata監控安全事件
編輯配置文件
若是咱們安裝時使用下面的命令,會進行默認配置,咱們只須要修改相關配置文件中的參數便可。若是已經使用了默認配置,請直接跳到步驟4。
若是沒有安裝默認配置和規則,咱們須要手動進行配置。參考步驟一、二、3。
建立Suricata配置目錄和日誌目錄
把規則文件拷貝到Suricata配置目錄下
把Suricata安裝源文件中的suricata.yaml、classification.config、reference.config
文件拷貝到Suricata的配置目錄下
編輯配置文件
suricata的配置文件路徑是:/etc/suricata/suricata.yaml
咱們須要注意一下幾個關鍵參數
HOME_NET
: 它指定了Suricata 監控的本地網絡,根據本身的網絡狀況進行修改
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
而後咱們去/etc/suricata/rules
目錄下建立咱們的自定義規則文件my.rules
在該文件中,咱們寫下本身的測試規則
運行suricata進行測試
Suricata有不一樣的運行模式,咱們可使用以下命令查看
啓動Suricata以前,強烈建議先關閉網卡的LRO/GRO功能(即網卡收包時將同一流的小包合併成大包)。這會致使Suricata處理時很容易出現丟包問題,傳輸速度慢。解決方法,關閉LRO/GRO功能,命令:
若是看到下列警示信息,能夠忽視。它說明你的網卡不支持LRO。
而後咱們啓動suricata
此時,suricata會開始監聽咱們的流量,若是觸發了規則,會在默認日誌路徑/var/log/suricata/
下產生警報文件fast.log
使用Suricata監控網絡攻擊
模擬網絡攻擊:mysql暴力破解
IDS檢測規則
此規則能夠檢測出嘗試枚舉mysql管理員密碼的暴力破解攻擊。
使用Splunk分析展現IDS警報
安裝web環境:php+apache2
運行splunk服務
而後訪問本機8080端口便可。咱們能夠動態監控警報文件/var/log/suricata/fast.log
__EOF__
做 者:ssooking
出 處:https://www.cnblogs.com/ssooking/p/IDS.html關於博主:安全愛好者、研究員,熱愛技術交流分享!