0x01?引言
在外網在中各大安全廠商一般使用WAf來防御攻擊者的攻擊,但是在內網中一般來使用ips,ids來防御攻擊者的攻擊,這是因為內外網的環境差異造成的,外網中主要是防御一些web攻擊,而內網中主機漏洞居多,就用到了ids和ips,但是?IDS和防火墻均具備對方不可替代的功能,因此IDS和防火墻共存,形成互補
0x02 什么是ids和ips
IPS對于初始者來說,是位于防火墻和網絡的設備之間的設備。這樣,如果檢測到攻擊,IPS會在這種攻擊擴散到網絡的其它地方之前阻止這個惡意的通信。而IDS只是存在于你的網絡之外起到報警的作用,而不是在你的網絡前面起到防御的作用。
IPS檢測攻擊的方法也與IDS不同。一般來說,IPS系統都依靠對數據包的檢測。IPS將檢查入網的數據包,確定這種數據包的真正用途,然后決定是否允許這種數據包進入你的網絡。
含義不同
IDS :入侵檢測系統
做一個形象的比喻:假如防火墻是一幢大樓的門鎖,那么IDS就是這幢大樓里的監視系統。一旦小偷爬窗進入大樓,或內部人員有越界行為,實時監視系統會發現情況并發出警告。
IPS :入侵防御系統
作用不同
IDS 專業上講就是依照一定的安全策略,對網絡、系統的運行狀況進行監視,盡可能發現各種攻擊企圖、攻擊行為或者攻擊結果,以保證網絡系統資源的機密性、完整性和可用性。
IPS入侵防御系統是電腦網絡安全設施,是對防病毒軟件和防火墻的補充。入侵防御系統是一部能夠監視網絡或網絡設備的網絡資料傳輸行為的計算機網絡安全設備,能夠即時的中斷、調整或隔離一些不正常或是具有傷害性的網絡資料傳輸行為。
0x03?Suricata
Suricata是一個高性能的網絡IDS、IPS和網絡安全監控引擎。它是開源的,由一個社區經營的非營利性基金會,開放的信息安全基金會所有。(OISF _). Suricata是由OISF開發的
有些廠商選擇用Suricata有些廠商選擇用snort
大部分廠商選擇Suricata的原因
Snort自1998年開發至今,擁有比較長的歷史和完整的知識庫。
即便如此,很多開發廠商還是選擇使用了Suricata,主要的原因如下:
舊版本的Snort2不支持多線程、吞吐量小,無論一個 CPU 包含多少個內核,都只會使用一個內核或一個線程,很大程度上造成了性能上的短板。
有一個相當復雜的解決方法:運行多個SNORT單線程實例,全部進入同一個日志。然而,管理這個過程的額外開銷(AutoFP)和硬件的高成本,意味著這種設置很少在生產環境中出現。
Suricata可以兼容Snort2的規則簽名,也就是snort2的規則直接拿來,放到suricata里就可以用。
Suricata支持文件提取、文件還原,可以將流量中的文件還原出來。
Suricata和snort從規則上來講并沒什么太大的差別,會寫一個的規則就自然會寫另一個的規則
0x04 Suricata數據結構
0x05 ?Suricata工作流程
看著太亂看不懂?沒關系,看簡單的圖
有的小伙伴可能有疑問了,異常流量還放行??
這是因為很多廠商和客戶都會擔心誤報的問題,所以只開啟了日志功能并沒開啟攔截功能,很多外網WAF也是只開啟了日志功能并不攔截,絕大多數客戶大部分情況下就算買了WAF和IPS、IDS等設備都只會開啟日志功能,并不攔截,具體看情況
設備會檢測內網之間的流量,當有流量經過設備,設備會先加載內部規則,然后對流量進行匹配,如果沒有命中的則放行此流量。如果有命中的會記錄日志和報文,然后放行或者攔截流量。具體怎么操作看用戶設置
0x06 Suricata安裝
推薦kali安裝,方便
直接apt-get install suricata就安裝好了
之后就是安裝簽名(就是規則rules文件)就可以了,命令是suricata-update
注意這是官方更新的rule規則,更新的配置文件存放在/var/lib/suricata/rules中,文件為classification.config和suricata.rules,需要cp至/etc/suricata/rules中才能加載成功,不然會有如下錯誤:
其他系統安裝參考 https://www.osgeo.cn/suricata/install.html
0x07?Suricata目錄
目錄:
/etc/suricata/存放suricata執行和配置文件的目錄
/etc/suricata/rules規則文件存放目錄,自己之后寫的也要放在這里
/var/log/suricata/存放suricata日志的目錄
文件:
suricata.yamlsuricata的配置文件,重中之重,特別重要,位于/etc/suricata/下
suricata.rules官方規則文件,存放在/etc/suricata/rules中
fast.log警告日志文件,存放在/var/log/suricata/下,匹配的輸出都在這里
0x08 Suricata規則
suricata.rules?官方規則文件,存放在/etc/suricata/rules中
其中大部分規則都在suricata.rules文件中
要理解這些規則具體是什么意思也很簡單,只需要記住每個字段表示的意思就行了
如:alert tcp any any -> any any (msg: "測試"; flow:established,to_client;? content:"|00 00 00 00|"; offset:10;depth:10; sid:1005; rev:1;)
alert tcp :alert表示記錄, tc 表示tcp協議?合在一起就是記錄tcp協議,alert udp就是記錄udp,?alert?http就是記錄http協議,
any any -> any any:第一個any表示ip,第二個any表示端口,箭頭表示到,這句話意思為所有ip的所有端口到所有ip的所有端口的流量,?any any -> any 445就表示所有ip的所有端口到所有ip的445端口的流量
(msg: "測試";?:表示這個規則匹配的漏洞的命中,一般是漏洞的名字
flow:established,to_client;?:表示到客戶端建立連接的流量to_client表示到客戶端,to_server則表示到服務器的流量
content:"|00 00 00 00|"; :要匹配內容就是wireshark中的那些十六進制
offset:9;depth:10; :一般用來精確匹配內容,offset:9;depth:10;表示偏移9個字符串再進行匹配,向后匹配十位,這里匹配到是第10-20個字符串
sid:1005; :規則編號,沒啥太大意義
rev:1;)?:等級,沒啥太大意義
隨著目前漏洞的樣式越來越多,有些廠商開始使用雙向規則進行匹配。單向規則就是只匹配請求或者返回,雙向規則則是即匹配請求也匹配返回,一條數據包同時命中才告警或者攔截
所有具體的字段參考Suricata用戶手冊中文版https://readthedocs.org/projects/suricatacn/downloads/pdf/latest/
0x09 Suricata使用
一些研發人員會使用Suricata測試寫的規則是否準確,一般使用
suricata -c /etc/suricata/suricata.yaml -r test.pcap -k none
-c /etc/suricata/suricata.yaml?表示要加載的配置文件
建議將原加載的規則注釋掉,然后自己新建一個規則集并且加載,
-r?test.pcap?表示要測試的pacp文件,其他格式結尾的流量包可能會出錯
-k none表示 禁用強制校驗和檢查,沒啥太大用,
如果測試流量包命中了規則會在當前文件夾下生成一個fast.log文件。里面記錄了命中的規則編號
0x10 參考鏈接
https://www.cnitpm.com/pm1/73453.html
https://zhuanlan.zhihu.com/p/453068646
https://blog.csdn.net/gengzhikui1992/article/details/103031874
https://readthedocs.org/projects/suricatacn/downloads/pdf/latest/
https://www.osgeo.cn/suricata/install.html
編輯:黃飛
?
評論
查看更多