1、前言
最近工作需要對網(wǎng)站的關(guān)鍵字進行檢測,找出敏感詞。這個過程需要對報文進行收集、解碼、檢測和記錄日志。當(dāng)前只是簡單實現(xiàn)功能,根據(jù)關(guān)鍵字進行簡單的匹配,而沒有進行關(guān)鍵字的語義分析。導(dǎo)致的結(jié)果就是JAVA可以匹配AV這個敏感關(guān)鍵字。報文檢測這方面,開源項目已經(jīng)做得非常好了,我所了解的有snort、suircata、bro,這三個都是非常優(yōu)秀的IDS(入侵檢測系統(tǒng))。由于對bro沒有深入了解,我們對比了snort和suricata,結(jié)合suricata的多線程和模塊化,全面兼容snort規(guī)則,我們選用了suricata進行關(guān)鍵字檢測。
剛開始接觸suricata的時候,壓根不知道這個單詞怎么發(fā)音,于是乎趕緊再詞典上查一下。suircata是一款支持IDS、IPS和NSM的系統(tǒng)。關(guān)于suircata的詳細(xì)介紹可以參考官網(wǎng):https://suricata-ids.org/。
備注:
IDS:英文“Intrusion Detection Systems”的縮寫,中文意思是“入侵檢測系統(tǒng)”。依照一定的安全策略,通過軟、硬件,對網(wǎng)絡(luò)、系統(tǒng)的運行狀況進行監(jiān)視,盡可能發(fā)現(xiàn)各種攻擊企圖、攻擊行為或者攻擊結(jié)果,以保證網(wǎng)絡(luò)系統(tǒng)資源的機密性、完整性和可用性。
IPS是英文“Intrusion Prevention System”的縮寫,中文意思是入侵防御系統(tǒng)。隨著網(wǎng)絡(luò)攻擊技術(shù)的不斷提高和網(wǎng)絡(luò)安全漏洞的不斷發(fā)現(xiàn),傳統(tǒng)防火墻技術(shù)加傳統(tǒng)IDS的技術(shù),已經(jīng)無法應(yīng)對一些安全威脅。在這種情況下,IPS技術(shù)應(yīng)運而生,IPS技術(shù)可以深度感知并檢測流經(jīng)的數(shù)據(jù)流量,對惡意報文進行丟棄以阻斷攻擊,對濫用報文進行限流以保護網(wǎng)絡(luò)帶寬資源。
NSM:英文“network security monitoring”的縮寫,中文意思是“網(wǎng)絡(luò)安全監(jiān)控”。
2、總體架構(gòu)
報文檢測系統(tǒng)通常四大部分,報文獲取、報文解碼、報文檢測、日志記錄;suricata不同的功能安裝模塊劃分,一個模塊的輸出是另一個模塊的輸入,suricata通過線程將模塊串聯(lián)起來。
接下來以IDS為例來說明suircata的線程與模塊之間是如何連接起來的。
首先注冊runmods,運行方式指定suricata獲取報文的方式,例如libpcap、netmap、af-packet等,代碼如下圖所示:
然后再根據(jù)設(shè)置suricata的工作模式,找到對應(yīng)獲取報文的處理模塊。suircata默認(rèn)是通過af-packet mmap獲取報文,然后調(diào)用獲取報文模塊當(dāng)然入口函數(shù),
入口函數(shù)中函數(shù)添加了解碼模塊、流處理模塊(檢測報文)、日志處理模塊。通過slot鏈條安裝注冊順序串聯(lián)起來。每一個線程都包含一個slot的鏈表,每個結(jié)點都懸掛著不同的模塊,程序執(zhí)行的時候會遍歷slot鏈表,按照加入鏈表的熟悉執(zhí)行模塊。
創(chuàng)建線程,并將模塊添加到slot鏈表過程代碼如下所示:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26