防火牆能夠比喻爲辦公室門口的警衛,用來檢查進出者的身份。而入侵檢測系統就像是網上的警報器,當發現入侵者時,指出入侵者的來歷、他們正在作什麼。入侵檢測系統被視爲防火牆以後的第二道安全閘門。數據庫
【實驗目的】vim
1.掌握snortIDS工做機理安全
2.應用snort三種方式工做網絡
3.熟練編寫snort規則socket
【實驗原理】tcp
1.Snort IDS概述編輯器
Snort IDS(入侵檢測系統)是一個強大的網絡入侵檢測系統。它具備實時數據流量分析和記錄IP網絡數據包的能力,可以進行協議分析,對網絡數據包內容進行搜索/匹配。它可以檢測各類不一樣的攻擊方式,對攻擊進行實時報警。此外,Snort是開源的入侵檢測系統,並具備很好的擴展性和可移植性。工具
2.Snort IDS體系結構學習
Snort IDS體系結構如圖8.1所示。spa
圖8.1 SnortIDS體系結構
如上圖所示,Snort的結構由4大軟件模塊組成,它們分別是:
(1)數據包嗅探模塊——負責監聽網絡數據包,對網絡進行分析;
(2)預處理模塊——該模塊用相應的插件來檢查原始數據包,從中發現原始數據的「行爲」,如端口掃描,IP碎片等,數據包通過預處理後才傳到檢測引擎;
(3)檢測模塊——該模塊是Snort的核心模塊。當數據包從預處理器送過來後,檢測引擎依據預先設置的規則檢查數據包,一旦發現數據包中的內容和某條規則相匹配,就通知報警模塊;
(4)報警/日誌模塊——經檢測引擎檢查後的Snort數據須要以某種方式輸出。若是檢測引擎中的某條規則被匹配,則會觸發一條報警,這條報警信息會經過網絡、UNIXsocket、WindowsPopup(SMB)、SNMP協議的trap命令傳送給日誌文件,甚至能夠將報警傳送給第三方插件(如SnortSam),另外報警信息也能夠記入SQL數據庫。
3 snort的三種工做模式:
Snort擁有三大基本功能:嗅探器、數據包記錄器和入侵檢測。嗅探器模式僅從網絡上讀取數據包並做爲接二連三的流顯示在終端上,經常使用命令snort-dev。數據包記錄器模式是把數據包記錄到硬盤上,經常使用命令snort-b。網絡入侵檢測模式是最複雜的,並且是可配置的。咱們可讓Snort分析網絡數據流以匹配用戶定義的一些規則,並根據檢測結果採起必定的動做。
4.Snort規則
1)snort規則定義
Snort使用一種簡單的規則描述語言,這種描述語言易於擴展,功能也比較強大。Snort規則是基於文本的,規則文件按照不一樣的組進行分類,好比,文件ftp.rules包含了FTP攻擊內容。「注」Snort的每條規則必須在一行中,它的規則解釋器沒法對跨行的規則進行解析。
Snort的每條規則均可以分紅邏輯上的兩個部分:規則頭和規則體。
規則頭包括4個部分:規則行爲;協議;源信息;目的信息。
圖8.2是對於規則頭的描述。
圖8.2 snort規則頭
Snort預置的規則動做有5種:
(1)pass—動做選項pass將忽略當前的包,後繼捕獲的包將被繼續分析。
(2)log—動做選項log將按照本身配置的格式記錄包。
(3)alert—動做選項alert將按照本身配置的格式記錄包,而後進行報警。它的功能強大,可是必須恰當的用,由於若是報警記錄過多,從中攫取有效信息的工做量增大,反而會使安全防禦工做變得低效。
(4)dynamic—動做選項dynamic是比較獨特的一種,它保持在一種潛伏狀態,直到activate類型的規則將其觸發,以後它將像log動做同樣記錄數據包。
(5)activate—動做選項activate功能強大,當被規則觸發時生成報警,並啓動相關的dynamic類型規則。在檢測複雜的攻擊,或對數據進行歸類時,該動做選項至關有用。
除了以上5種預置的規則動做類型,用戶還能夠定製本身的類型。
規則體的做用是在規則頭信息的基礎上進一步分析,有了它才能確認複雜的攻擊(Snort的規則定義中能夠沒有規則體)。規則體由若干個被分別隔開的片段組成,每一個片段定義了一個選項和相應的選項值。一部分選項是對各類協議的詳細說明,包括IP、ICMP和TCP協議,其他的選項是:規則觸發時提供給管理員的參考信息,被搜索的關鍵字,Snort規則的標識和大小寫不敏感選項。
5.Snort應用
Snort採用命令行方式運行。格式爲:snort–[options]<filters>。options爲選項參數;filters爲過濾器。
1)Snort主要選項參數
-A<alert>設置報警方式爲full,fast或者none。在full方式下,snort將傳統的報警信息格式寫入報警文件,報警內容比較詳細。在fast方式下,snort只將報警時間,報警內容,報警IP地址和端口號寫入文件。在none方式下,系統將關閉報警功能。
-a顯示ARP包。
-b以tcpdump的格式將數據包記入日誌。全部的數據包將以二進制格式記錄到snort.log文件中。這個選項提升了snort的操做速度,由於直接以二進制存儲,省略了轉換爲文本文件的時間,經過-b選項的設置,snort能夠在100Mbps的網絡環境中正常工做。
-c<cf>使用配置文件<cf>。文件內容主要控制系統哪些包須要記入日誌,哪些包須要報警,哪些包能夠忽略等。
-C僅抓取包中的ASCII字符。
-d抓取應用層的數據包。
-D在守護模式下運行snort。
-e顯示和記錄數據鏈路層信息。
-F<bpf>從文件<bpf>中讀取BPF過濾信息。
-h<hn>設置<hn>(C類IP地址)爲內部網絡。當使用這個開關時,全部從外部的流量將會有一個方向箭頭指向右邊,全部從內部的流量將會有一個左箭頭。這個選項沒有太大的做用,可是可使顯示的包的信息格式比較容易察看。
-i<if>使用網絡接口文件<if>。
-l<ld>將包信息記錄到目錄<ld>下。設置日誌記錄的分層目錄結構,按接收包的IP地址將抓取的包存儲在相應的目錄下。
-n<num>處理完<num>包後退出。
-N關閉日誌功能,報警功能仍然工做。
-p關閉混雜模式的嗅探(sniffing)。這個選項在網絡嚴重擁塞時十分有效。
-r<tf>讀取tcpdump生成的文件<tf>,snort將讀取和處理這個文件。
-s將報警信息記錄到系統日誌,日誌文件能夠出如今/var/log/messages目錄裏。
-v將包信息顯示到終端時,採用詳細模式。這種模式存在一個問題:它的顯示速度比較慢,若是你是在IDS網絡中使用snort,最好不要採用詳細模式,不然會丟失部分包信息。
-V顯示版本號,並退出。
2)Filters過濾器
Snort的<filters>是標準的BPF格式的過濾器。
Snort應用了BPF機制,能夠在探測器上書寫和執行BPF規則的文件。BPF機制容許用戶書寫快速的包分析規則,這些規則主要基於源、目的、和其餘的頭信息。經過嗅探和BPF,咱們能夠只捕獲須要的流量,這樣就減輕了須要處理的數據量。
BPF機制很容易理解,能夠用於分析TCP、UDP、IP和ICMP協議。規則語法很像天然的口語,使用「and」和「or」做爲規則操做符,用「not」做爲取反符,此處還能夠用括號來告訴引擎將一系列數據做爲一個總體來處理。
例如:ICMP捕獲:icmp。
telnet請求數據包捕獲:tcp and dst port 23。
記錄全部源自網絡192.168.0.0/24,目的是202.98.0.0/24的IP流量:ip and "src net 192.168.0 " and "dst net 202.98.0 " 。
【實驗步驟】
本練習主機A、B爲一組,C、D爲一組,E、F爲一組。
首先使用「快照X」恢復Linux系統環境。
一.Snort數據包嗅探
1.啓動Snort
進入實驗平臺,單擊工具欄「控制檯」按鈕,進入IDS工做目錄,運行Snort對網絡接口eth0進行監聽,要求以下:
(1)僅捕獲同組主機發出的icmp回顯請求數據包。
(2)採用詳細模式在終端顯示數據包鏈路層、應用層信息。
(3)對捕獲信息進行日誌記錄,日誌目錄/var/log/snort。
Snort命令:
本機執行上述命令,同組主機對當前主機進行ping探測
2.查看Snort日誌記錄。
「說明」默認snort日誌記錄最後一級目錄會以觸發數據包的源IP命名。可以使用組合鍵Ctrl+C中止snort運行。
二.Snort數據包記錄
(1)對網絡接口eth0進行監聽,僅捕獲同組主機發出的Telnet請求數據包,並將捕獲數據包以二進制方式進行存儲到日誌文件中/var/log/snort/snort.log)。
Snort命令:
(2)當前主機執行上述命令,同組主機telnet遠程登陸當前主機。
(3)中止snort捕獲(Ctrl+C),讀取snort.log文件,查看數據包內容。
Snort命令:snort -r
三.簡單報警規則
(1)在snort規則集目錄ids/rules下新建snort規則集文件new.rules,對來自外部主機的、目標爲當前主機80/tcp端口的請求數據包進行報警,報警消息自定義。
snort規則:snort –c ids/rules/new.rules src any and dst port 80
(2)編輯snort.conf配置文件,使其包含new.rules規則集文件,具體操做以下:使用vim(或vi)編輯器打開snort.conf,切換至編輯模式,在最後添加新行包含規則集文件new.rules。
添加包含new.rules規則集文件語句
(3)以入侵檢測方式啓動snort,進行監聽。
啓動snort的命令 snort
以入侵檢測方式啓動snort,同組主機訪問當前主機Web服務。
snort -dev -l ./log -h 192.168.1.1/24 -c snort.conf,它將會對每一個包和規則集進行匹配,再把數據記錄在主機192.168.1.1中。檢測到的攻擊在/var/log/snort下alert文件的記錄。
若是你想snort啓動時就載入能夠編輯一個文件,放入/etc/rc.d/init.d/snortd這個文件中
# /etc/rc.d/init.d/snortd
Starting snort: [ OK ]
# ps awx | grep snort
【實驗總結】
經過此次實驗使我對Snort的強大功能有了最基礎的瞭解,對它的工做機理有了深一步的認識,對它三種模式的語法也有了必定的掌握,學會了最基礎的命令編寫規則,爲深刻的學習打下了基礎。