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