基于Snort的入侵检测系统_相关论文
摘 要
隨著網絡技術的發展,中小型企業已建設了屬于自己的信息化業務平臺與系統。中小型企業只有實現信息互通,資源共享,才能夠在當今的競爭中生存下去,但信息的互通會面臨一些安全問題,對此需要對其采取一些措施來進行防范。
對于過去的網絡而言,它相對于封閉,因此具有良好的安全性,使用簡單的安全性設備就能夠防范黑客的非法入侵。現如今,由于惡意病毒的散布、敏感信息泄露、垃圾郵件非法轟炸等一些網絡安全威脅,當下的網絡已不像昔日的那么簡單,網絡的安全性已成為人們更加重視的問題,只要連接到網絡上,就存在安全隱患。對于中小型企業來說,每年都會遭遇一些未知的攻擊,而這些攻擊都會造成一定的數據丟失竊取、系統故障、網絡延時甚至還會導致經濟損失。通過市場調研,發現絕大多數的中小型企業都在使用輕量級入侵檢測系統來作為防火墻的補充,解決公司的安全問題。因此,IDS在中小型企業中有著舉足重輕的作用,它在不影響網絡性能的前提下,能及時發現黑客的攻擊,并以視圖的界面呈現給用戶,方便了網絡系統管理員的管理和用戶的使用,提高發現安全隱患的效率,因此中小型企業使用入侵檢測系統是非常必要的。
本論文首先描述了IDS的概念,針對中小型企業網使用開源網絡入侵檢測工具Snort并進行規則庫的設計。在Centos6.8下搭建Snort入侵檢測系統包括Snort、libpcap、barnyard2、MySQL、Apache、Adodb、base。通過三種不同類型的方式對此系統進行驗證,能實現正常的檢測功能。此系統是一個開源的平臺,其成本低,易于移植,配置簡單,易于擴充,因此是中小型企業的最佳選擇之一。
關鍵詞:Snort;入侵檢測;網絡安全;IDS
Abstract
With the development of network technology, small and medium-sized enterprises have built their own information business platform and system. Small and medium-sized enterprises can survive today’s competition only by sharing information and sharing resources. However, the communication of information will face some security problems, and some measures need to be taken to prevent them.
For past networks, it is relatively closed and therefore has good security. Using simple security devices can prevent hackers from illegally invading. Nowadays, due to the spread of malicious viruses, the disclosure of sensitive information, the illegal bombing of spam and other cyber security threats, the current network is not as simple as it used to be, and the security of the network has become a more important issue. As long as it is connected to the network, there is a security risk.For small and medium-sized companies, there are some unknown attacks every year, and these attacks will cause certain data theft, system failure, network latency and even economic losses. Through market research, it is found that most small and medium-sized enterprises are using lightweight intrusion detection system as a supplement to the firewall to solve the security problems of the company. Therefore, IDS has a weighty role in small and medium-sized enterprises. It can find hacker attacks in time without affecting network performance, and presents them to users with a view interface, which facilitates the management of network system administrators and users. Use, Therefore, it is necessary for small and medium-sized enterprises to use intrusion detection system to improve the efficiency of security detection.
The paper first describes the concept of IDS, and uses open source network intrusion detection tool Snort for small and medium-sized enterprise networks and designs the rule library. Construction of Snort intrusion detection systems under CentOS 6.8 includes Snort, libpcap, barnyard2, MySQL, Apache, Adodb, and base. The system can be verified by three different types of methods, and the normal detection function can be realized. This system is an open source platform, its low cost, easy to transplant, simple configuration, easy to expand, so it is one of the best choices for small and medium-sized enterprises.
Key Words:Snort; Intrusion Detection; Network Security;IDS
目 錄
摘 要 I
Abstract II
1緒論 1
1.1 課題研究的背景及意義 1
1.2 Snort與IDS的發展和研究現狀 2
2 IDS與Snort概述 3
2.1 IDS 3
2.2 傳統網絡安全防護的缺陷 3
2.2.1 單一防護產品的弱點 3
2.2.2 防火墻的弱點 4
2.3 Snort 4
2.3.1 Snort的特點 4
2.3.2 Snort的整體結構 5
2.3.3 Snort在網絡層次模型中的位置 7
2.3.4 Snort的工作模式 7
2.4 Snort規則集 8
2.4.1 規則的結構 9
2.4.2 規則頭部 9
2.4.3 規則選項 10
2.4.4 規則編寫 10
3 SIDS的詳細設計與實現 12
3.1 準備工作 12
3.1.1 環境的準備 12
3.1.2 各安裝包的準備 12
3.2 IDS的實現 13
3.2.1 安裝IDS配套軟件 13
3.2.2 構建Snort探測器 15
3.2.3 配置Snort輸出模塊接口 16
3.2.4 安裝Base的web視圖界面 19
4系統測試與檢測結果分析 21
4.1 ICMP攻擊 21
4.1.1 針對帶寬的DOS攻擊 21
4.1.2 針對連接的DOS攻擊 21
4.1.3 ICMP攻擊規則庫的配置 21
4.1.4 ICMP攻擊測試 22
4.2 端口掃描 23
4.2.1端口掃描主要方法 23
4.2.2端口掃描預處理器 24
4.2.3端口掃描測試 24
4.3 XSS攻擊 26
4.3.1 正則表達式編寫 26
4.3.2 針對XSS攻擊的Snort規則編寫 26
4.3.3 簡單留言版的制作 27
4.3.4 對留言板進行XSS攻擊 27
5總結與展望 30
5.1 總結 30
5.2 未來研究展望 30
參 考 文 獻 31
致 謝 32
1緒論
隨著因特網的飛速發展與擴張,計算機的應用范圍已到各大領域,越來越多的企業都在為信息安全而擔憂。提到信息安全,人們首先想到的便是防火墻。防火墻是網絡系統連接外網必備的設備之一,但也有很多的弊端,它只能防范防火墻內部設置的那些威脅,對于新的威脅和內部威脅,對它來說都是無能為力。這就需要一款更安全、更有效的防御技術,IDS為此出現在人們的視野中。
1.1 課題研究的背景及意義
在當今的中小型企業中,最重要的是安全問題。現如今已經有一些安全措施,例如防火墻、VPN、安全郵件網關系統等。IDS是現如今較好的安防措施,利用入侵檢測技術,對收集到的數據包進行分析,抉擇是否有入侵行為。利用日志文件生成數據表,查看近期流經的數據是否正常,并做出響應。此系統是一個開源的系統,因此成本廉價,使用范圍廣,是中小型企業最佳的抉擇之一。
入侵檢測技術目前已經有好幾種。常見的入侵檢測技術有:免疫技術(Immunological techniques)、IP碎片重組(IP Defragmentation)、數據挖掘技術(Data mining technology)、神經網絡技術(Neural Network Technology)、模式匹配技術(Pattern Matching)、數據融合技術(Data fusion technology)、協議分析(Protocol Analysis)、日志歸并(Merger)[1]等等。這些技術都已運用于大型的IDS。
安全市場有很多的IDS產品,例如安氏中國的NIDS 系統、NFA公司的NIDS系統、思科的IDSM-2入侵檢測模塊等。這些商業的NIDS大多數都是硬件產品,配置比較復雜,價格昂貴,而基于Snort的IDS具有很大的優勢,配置簡單,功能強大,成本廉價,這使得SIDS使用更加廣泛。
研究SIDS是非常有價值的,在網絡安全基本體系架構中,入侵檢測系統扮演著非凡的角色,是判斷通過數據和行為模式最有效的系統。一般威脅來自于內部與外部,而來自外部的攻擊一般情況由防火墻負責阻攔,但內部的攻擊卻無能為力。一般中小型企業內部人員是不會惡意破壞公司系統的,但是如果黑客攻擊內部員工的電腦,內部員工電腦中毒后,黑客就可以把員工的電腦當作“肉雞”來攻擊公司的網絡,這樣的案例也有很多。內部網絡的防范并不是為了防范內部員工破壞公司整體架構網絡,還是為了防范黑客的惡意攻擊,以免增加公司的損失。Snort的出現,對中小型企業非常的有益。其配置簡單、可跨平臺、易于擴充、成本廉價。
1.2 Snort與IDS的發展和研究現狀
在當今這個IDS時代,使用者需要根據自己的需求選擇合適的IDS,同時IDS的研發人員也需要一個很好的平臺去測試系統,進而找到IDS的缺失來進一步的改進。就目前的現狀來看Snort是一款很好的產品,它相對于同類產品更成熟、廉價、方便。對于中小型企業是一款首選的網絡安全產品。
入侵檢測系統主要有兩種方式,一種是協議分析,另一種是行為分析。在目前的技術中,比較強的是協議分析。它主要是通過對抓取到的數據進行分析進而來抉擇入侵的行為方式,采用這種技術相比于簡單的模式匹配或者是規則庫的匹配效率都要高很多。對于未來入侵檢測系統的發展,可能將會朝著比較智能,簡約以及更加安全的方向發展。
2 IDS與Snort概述
IDS主要是對非法數據包進行檢測分析。假如我們把防火墻比喻為校園的保安大叔,那么入侵檢測系統就相當于整個學校內部的監控系統。入侵檢測設備通過收集要流經數據中心的數據流,對內外部攻擊進行實時監視,并進行檢測分析,抉擇其是否有入侵行為,并保留攻擊者的跡象。因此IDS作為防火墻最有效補充,一般將其放置在旁路位置,以免影響整個數據中心的正常運轉,還能夠對網絡進行良好的實時監控。Snort可以對流經數據中心的數據進行詳細的分析,并決定如何處理這些數據包,處理數據包有幾種選擇的方式:忽略、記錄和報警。
2.1 IDS
中小型企業網中入侵檢測系統是防火墻最充分,最全面的補充,它通過視圖界面將入侵的行為展現出來,方便系統管理員的管理,提高防范的效率。入侵檢測系統主要從流經數據中心的節點中收集數據流,對抓取到的數據與Snort規則庫進行比對,抉擇其是否有入侵行為。
入侵檢測就像生活中的防盜竊報警系統一樣,能夠對進入報警系統范圍的人進行識別,判斷其是否是合法人員,如若不是,將會發出報警給予用戶反饋。IDS主要分為兩種類型:一種類型是基于主機的,另外一種是基于網絡的。HIDS是基于主機的,它一般都安裝在需要監控的主機上面,主要與操作系統內核有關,它負責監控系統中所有的事務。NIDS是基于網絡的,它主要存在于網絡中,主要以網絡數據包作為數據分析源,實時監視通過網絡的數據流,將其與規則模式進行匹配來判斷是否有攻擊行為。
2.2 傳統網絡安全防護的缺陷
對于網絡安全大家首先想到的可能就是防火墻、防病毒軟件、VPN接入等一些網絡產品,而對于中小型企業網的安全建設大多數都是基于產品設計的。不同的產品都有其獨特的優勢,現如今復雜的網絡環境都難以應對,這些產品已不能應對黑客們的入侵。盡管安全產品日趨整合,但是大多數技術尚不成熟各有弊端,并不能提供詳細完善的解決方案。
2.2.1 單一防護產品的弱點
現如今的殺毒軟件,大多數都整合了一套基本的安全設備以及系統,例如:防火墻、VPN、數據涉密技術等安全技術。由于殺毒軟件在殺毒查毒并沒有一定的標準,并且不同的殺毒軟件都有一定的不足和缺陷。單一防護產品的缺點如下:
(1) 防御方法和防御策略都具有有限性。
(2) 動態多變的網絡環境。
(3) 來自外部和內部的威脅。
2.2.2 防火墻的弱點
(1) 不能阻止內部人員的攻擊,以及黑客通過攻擊內部人員電腦進而攻擊整個公司網絡。防火墻禁止系統用戶通過網絡傳輸機密文件,但是如果用戶使用U盤將數據拷貝帶出,信息仍會丟失。如果黑客避開防火墻成功進入系統內網,防火墻將沒有任何還手之力,對入侵者做任何操作。
(2) 防火墻能夠對通過它的所有傳輸數據進行判斷,如果是加密信息傳輸,它將會做出阻止動作。
(3) 防火墻不能防范病毒,也不能消除病毒。
(4) 防火墻不能防范未知的威脅,只能對防火墻系統中設定的威脅進行防護,靈活性不強。
(5) 防火墻自身可能會受到威脅。
2.3 Snort
Snort經過不斷的擴展,變成了一個適用于不同操作系統,能進行數據包記錄,并能夠實現實時流量分析等功能的強大的入侵系統,遵循GPL的要求。可以在官網上下載需要安裝的安裝包,并對其進行安裝配置操作。對于Snort檢測整個系統中的網絡時,就必須要求本機具有網卡,這樣Snort能夠對從數據中心節點抓取到的數據包進行檢測分析,抉擇其是否有入侵行為。
Snort可以擴展添加模塊,自己需要什么模塊可以自己編寫將其添加在里面,從而擴充Snort的基本功能,因此它是一個容易擴充,自由靈活的模塊化體系結構。其中這些模塊包括:包解碼器、預處理器、檢測引擎、日志和告警系統、輸出模塊[2]等。
相比于傳統的網絡防護產品,Snort在中小型企業中非常受歡迎,因為其成本低,還能夠給公司帶來收益,因此它代替了許多收費昂貴的產品。
2.3.1 Snort的特點
Snort是一個功能強大的系統,它能夠對流經數據中心的所有數據包進行實時監控并對其做出分析,通過與Snort規則庫進行比對和對數據包協議進行檢測分析,判斷其是否有入侵行為,并對其進行實時報警與記錄,并對維護人員給予提示和及時反饋。
Snort是一個性能比較高的入侵檢測系統,因此它適用于不想用高價購買入侵檢測設備的中小型企業。Snort主要有如下特點:
(1) 采用誤用檢測模型,將捕獲到的數據包與規則比較,抉擇其有無攻擊的行為動作。
(2) Snort是一個高性能、可視化、便捷的入侵檢測系統。
(3) 可跨平臺,支持多種類型的操作系統。
(4) 對數據中心進行實時流量分析,完善的報警機制,能夠迅速檢測出所受攻擊,發出預警并給予管理員及時的反饋。
(5) 能夠進行協議分析,其中支持的協議有:ICMP、UDP和TCP[3]。
(6) 能夠檢測出各種各樣的攻擊方式,例如:端口掃描、跨站腳本攻擊、ICMP攻擊等等。
(7) 日志格式可以支持二進制和ASCLL,將其存放在數據庫中。當前支持的數據庫包括:MySql、Oracle等。
(8) 支持多種插件的擴充,其中包括日志輸出、數據包的檢測、端口掃描等各種類型的插件。
(9) Snort規則庫語言簡單,便于用戶自己編寫規則庫。
(10) 符合GPL的基本要求,用戶可以自由修改源代碼。
2.3.2 Snort的整體結構
Snort有很多有用的功能:數據包嗅探、數據包記錄、入侵檢測等功能[4]。在Snort中需要配置一些內部組件,能夠有效的優化數據包的誤報、漏報的情況以及對于抓取數據包和記錄日志的性能都會有很大的影響。因此需要更加深入的了解Snort的工作原理,并對網絡完成實時監控。
Snort在安裝好之后,其目錄下有一些子文件夾,它們的作用如下:
(1) bin:相關運行文件在此文件夾。
(2) etc:配置文件在此文件夾。
(3) log:日志文件在此文件夾。
(4) rules:規則文件在此文件夾。
對于復雜的網絡環境,Snort的日志文件以二進制的形式存放固然是非常重要的,此外Snort的配置文件能夠完成許多強大的功能。下面是Snort的基本組成模塊:
(1) Libpcap
Snort本身不帶有抓包工具,因此需要安裝一個抓包工具來完成數據包的抓取。本次實驗中使用的抓包工具是libpcap。Snort通過使用libpcap工具能夠獨立地從物理鏈路層上完成對數據包的抓取。libpcap將抓取到的數據一般情況都是會發送給包解碼器,并對數據包進行解碼操作。但是libpcap捕獲到的數據包一次只能處理一個數據包,因此這成了它的一大缺陷。
(2) 包解碼器
當Snort接受到數據包后,首先需要對數據包中的包協議進行解碼操作。當抓取到數據包通過各種協議解碼器的時候,會將所有的包數據一個一個放置在一個數據結構之中。當所有的數據包都存入到這個數據結構中的時候,它將會把這個數據快速傳遞給Snort的檢測引擎和預處理來進行對數據包進行檢測分析。
(3) 預處理器
Snort的預處理器主要是用來對包處理器已經處理過的數據包,進行組件或者插件,目的就是為了能夠讓接下來的檢測引擎能夠檢測到這些數據包。其參數一般都在snort.conf配置文件中進行設置,也可以對其進行自定義的設置,方便人們的使用。
(4) 檢測引擎
該模塊是入侵檢測的核心模塊,主要是對抓取到的數據包與相應的規則比較,對其進行檢測分析,抉擇其是否有入侵的行為動作。
(5) 輸出插件
輸出插件主要就是收集檢測引擎檢測完之后發送過來的數據,將其存放在barnyard里面。輸出插件的主要功能就是將報警數據存放在另外一個存儲資源里面。
Snort的所有部件是一個整體,它們需要共同協作,才能夠完成對流經數據中心的所有數據包的檢測。其部件的關系如圖2.1所示。
圖2.1 Snort的主要部件
2.3.3 Snort在網絡層次模型中的位置
Snort在網絡協議層次模型中每一層都對應著不同的組件,不同的組件在自己的協議層上都有自己獨特的任務執行。TCP/IP是現如今主流的協議,因此Snort解碼的主要任務都放在TCP/IP上。
Snort在TCP/IP的各個層次如圖2.2所示。
圖2.2 TCP/IP模型和Snort
2.3.4 Snort的工作模式
Snort有三種工作模式:嗅探器模式(Sniffer mode) 、數據包記錄器模式(packet logger mode) 、網絡入侵檢測模式(network intrusion detection system mode) [5]。其中,嗅探器從網絡中抓取數據包,并將所有的數據信息都會顯示在屏幕上,當用戶想要終止此操作的時候,需要按下Ctrl+C鍵將其終止。數據包記錄器模式就是將所有的數據包記錄都存儲在指定的文件中。網絡入侵檢測模式是對流經數據中心的所有數據包進行檢測分析,抉擇其有無入侵的行為動作。
(1) 嗅探器模式
數據包嗅探器的工作原理就像是在一條電話線路對傳輸的信息進行竊聽。共同點都是為了抓取流經的所有數據信息。不同點是數據包嗅探器針對的對象是網絡中的數據,而電話線路的偷聽的對象是語音。數據包中包含著不同類型的協議,因此數據包嗅探器還需要對抓取到的這些數據包進行相應的分析,判斷是哪種類型的協議,最后將結果顯示在屏幕上,如圖2.3所示。其中這些協議主要有TCP、UDP、IP、ICMP等一些協議。
圖2.3 Snort嗅探器模式
以下命令可以啟動該模式:
Snort -v:主要是在屏幕上顯示一些協議包的數據包頭信息。
Snort -vd:主要是為了在屏幕上顯示抓取到的數據包在TCP/IP最頂層中比較詳細的傳輸信息。
Snort -dev:顯示更詳細的數據信息。同時該命令能夠以二進制方式和ASCLL方式顯示出來。
(2) 數據包記錄器
運行此模式時,使用命令Snort -de -l /var/log/snort將其放置在指定的目錄下面。只對本地網絡進行分析,使用命令:Snort -de –l /var/log -h 192.168.122.1/24。此命令記錄192.168.122.0/24網段的所有數據包,通過IP名進行區分,并將其存放在log文件中。
(3) 網絡入侵檢測模式
在IDS模式下,對其產生的日志文件存儲到數據庫,并將其顯示出來。如果Snort長期工作,那么日志越多,需要的磁盤容量就越大,將日志顯示在終端屏幕上,會消耗許多的內存資源。使用以下命令,加載snort.conf配置文件,將此網段的報警信息記錄到/var/snort/log目錄下:
Snort -dev -l /var/snort/log –h 192.168.122.0/24 –c snort.conf
加載配置文件后,Snort將會讀取配置文件以及其所引用的所有規則庫。其中-c參數是指:指定它需要配置的文件。-l參數是指:它產生的日志文件需要存放的路徑位置。-h參數是指:所要檢測的網段為192.168.122.0。
2.4 Snort規則集
Snort規則主要分為兩部分:規則頭和規則選項[6]。Snort的規則集都是由一定的規則條例組成的,就像病毒一樣,它們的大多數入侵行為都是有一定的入侵特征。其中Snort是用簡潔的語法結構實現的,并且大多數的規則都是占用一行,用戶可以清楚的知道該命令是為哪種類型的入侵方式。
2.4.1 規則的結構
Snort的規則由兩部分構成,如圖2.4所示。
圖2.4 Snort規則結構
規則頭包括規則的動作、規則的協議以及規則的源地址、目標地址和子網掩碼[7]。規則選項包括報警內容、要檢測的包、報警抓取的具體內容。規則庫中的規則與入侵行為是一對多的關系,有時候我們只需要一條規則就能夠檢測同一類型的所有入侵行為,因此規則庫的建立與優化非常的重要。
2.4.2 規則頭部
規則頭部主要是左括號前面的部分,規則頭部的基本結構,如圖2.5所示。
圖2.5 Snort規則頭部結構
(1) 規則動作
動作是Snort規則結構中的第一部分,其中規則動作有:告警、日志記錄、動態動作、通過、激活進而檢驗。除以上的動作之外,我們還可以自己定義動作,但需要在Snort的配置文件snort.conf中進行聲明。
(2) 協議
協議是Snort規則結構中的第二部分,主要是為了判斷抓取到的數據包是那種類型的協議。
(3) 地址
地址是Snort規則結構中的第三與第六部分,主要分為源地址與目標地址。剛開始進行測試的時候,一般情況將源和目的地址都設置為關鍵字any,其含義是接受并檢測所有流經的數據包。
(4) 端口號
端口號是Snort規則結構中的第四與七部分,端口號主要是為了指定特定的某個端口號,來監聽該端口號的所有數據包。端口號只對TCP和UDP有意義,對IP和ICMP沒有任何的作用。
(5) 方向
方向是Snort規則結構中的第五部分,方向主要是確定源地址與目的地址。下面是方向段的基本規定:
->表示尖括號左一側為源地址,尖括號右一側為目的地址。
<-表示尖括號左一側為目的地址,尖括號右一側為源地址。
< >表示規則適用于兩個方向上,可以同時監視客戶端和服務器。
2.4.3 規則選項
規則選項是括號中的部分,其作用主要是對抓取到的數據包進行進一步分析。括號中可以包含有多個關鍵字,這些不同關鍵字之間的關系都是邏輯與,各個選項間使用“;”隔開。只有當所有規則選項都為真的時候,規則動作才會執行,否則將不會執行此條規則。其中主要的關鍵字有:classtype、rpe、logto、itype、ttl、iPoption、tos、noease、flags、content、tag、msg等44個關鍵字。
2.4.4 規則編寫
(1) 檢測ICMP攻擊規則
alert icmp any any -> any any (msg:”Pingwith TTL=64”;ttl:64;sid:1000001;)
(2) 檢測端口掃描規則
alert tcp EXTERNALNETany?>EXTERNAL_NET any ->EXTERNALN?ETany?>HOME_NET any (msg:“SCAN myscan”; flow:stateless;ack:0;flags:S;ttl:>220;reference:arachnids,439;classtype:attempted-recon;sid:613; rev:6;)
(3) 檢測nmap類掃描規則
alert tcp any any -> any any (msg:“SYN FIN Scan”; flags: S;sid:9000000;)
alert tcp any any -> any any (msg:“FIN Scan”; flags: F;sid:9000001;)
alert tcp any any -> any any (msg:“NULL Scan”; flags: 0;sid:9000002;)
alert tcp any any -> any any (msg:“XMAS Scan”; flags: FPU;sid:9000003;)
alert tcp any any -> any any (msg:“Full XMAS Scan”; flags: SRAFPU;sid:9000004;)
alert tcp any any -> any any (msg:“URG Scan”; flags: U;sid:9000005;)
alert tcp any any -> any any (msg:“URG FIN Scan”; flags: FU;sid:9000006;)
alert tcp any any -> any any (msg:“PUSH FIN Scan”; flags: FP;sid:9000007;)
alert tcp any any -> any any (msg:“URG PUSH Scan”; flags: PU;sid:9000008;)
(4) 檢測SQL注入規則
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:“SQL”;flow:to_server,established;uricontent:".pl";pcre:"/(%27)|(’)|(--)|(%23)|(#)/i"; classtype:Web-application-attack; sid:9099; rev:5;)
(5) 檢測XSS跨站腳本規則
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:“SQL”;flow:to_server,established;uricontent:".pl";pcre:"/(%27)|(’)|(--)|(%23)|(#)/i"; classtype:Web-application-attack; sid:9099; rev:5;)
3 SIDS的詳細設計與實現
Snort的功能很強大,能夠和多個軟件協同工作,促使其功能更加強大,但是這也為Snort的搭建造成了一定的難度。本章從幾個常用的搭建方式中選擇了一種能夠體現Snort強大功能的方案,并進行詳細的說明。
3.1 準備工作
本課題在安裝前需知道要監控的內容以及檢測范圍,通常情況下是對流經數據中心的所有數據包進行檢測。對于從外部流經到內部的所有數據都應該處在Snort的監視范圍之內。因此Snort非常適用于中小型企業之中,但是對于大型企業就是一項難以施展的艱巨任務。
為了提高Snort檢測的效率以及整個網絡的安全性,Snort在數據中心的布置位置也非常的重要。一般情況所有的安全設備都放在數據中心的旁路位置,即使安全設備自身出現問題,也能保障整個網絡的正常運行。如果需要對某一個服務器或者加密設備進行單獨的監控也是可以的,只需在保護設備的旁路加一臺主機,在其中裝載入侵檢測系統,來單獨監控機密數據,這樣的防范更加的有效,其成本低,防范效率高。
3.1.1 環境的準備
本文選擇在Linux上進行安裝,因為在Linux上安裝軟件與系統更安全,此外系統的移植性更強。選擇的環境是在Centos6.8下搭建Snort+Barnyard2+Base。
3.1.2 各安裝包的準備
表3.1 各軟件的基本信息
軟件名稱 官方網站 作用
Apache http://httpd.apache.org/ WEB服務器
PHP http://www.php.net/ 實現PHP腳本的支持
MySql https://www.mysql.com/ 數據庫的支持
ADODB http://adodb.sourceforge.net PHP提供數據庫連接函數
Snort http://www.snort.org/ Snort安裝包
Libpcap http://www.tcpdump.org/ 網絡抓包工具
這些軟件會不斷的更新,不同版本之間也有差異,選擇合適的版本固然重要,最新的版本并不一定是最好的。經過查看版本信息,選擇了各軟件的合適版本。
表3.2 安裝包版本信息
軟件名 軟件安裝包版本
Mysql mysql-5.7.16.tar.gz
Libpcap libpcap-1.0.0.tar.gz
Snort snort-2.9.7.0.tar.gz
PHP php-5.5.tar.gz
Apache apache-2.2.11.tar.gz
Barnyard barnyard2-1.9.tar.gz
ADODB adodb519.tar.gz
Base base-1.4.5.tar.gz
DAQ daq-2.0.4.tar.gz
Libdnet libdnet-1.12.tgz
3.2 IDS的實現
在安裝過程中,都是安裝一個組件后,對其進行測試,這樣才能保證出錯的時候,知道自己錯在哪里,方便修改。首先安裝的是web視圖界面,接下來安裝snort的所有核心部件。接下來將詳細的介紹安裝流程以及基本配置。
3.2.1 安裝IDS配套軟件
(1) 安裝LMAP組件
安裝mysql,php等相關組件,使用命令:
yum install -y mysql-server php php-mysql php-mbstring php-mcrypt mysql-devel php-gd
(2) 安裝PHP插件
使用命令:yum install -y mcrypt libmcrypt libmcrypt-devel安裝php相關組件。下載好之后,在文件/var/www/html下添加一個新文件index.php進行測試,內容如下:<?php phpinfo();?>。
(3) 安裝Pear插件
#yum install -y php-pear
#pear upgrade pear
#pear channel-update pear.php.net
pear install Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman
(4) MySQL的安裝與配置
為了使Snort與MySQL聯動,需要將Snort數據記錄到MySQL數據庫,通過導入數據表來記錄Snort數據。
安裝好MySQL后,接下來進行配置工作。進入數據庫之后,創建名為snort的數據庫,使用命令: create database snort。創建名為snort,密碼為123456并賦予數據庫權限:grant create,select,update,insert,delete on snort.* to snort@localhost identified by ‘123456’。創建數據庫表:mysql –u snort -p –D snort </root/barnyard2-1.9/schemas/create_mysql。
在完成對數據庫的相關操作后,需要編輯配置文件,在此文件中,以下幾行可以使日志信息記錄到MySQL數據庫中:output database: log, mysql, user=snort password=123456 dbname=snort host=localhost。如果用戶沒有口令,也可以用以下形式:output database:log,MySQL,user=rr dbname=snort host=localhost。其中數據庫表結構如圖3.1所示。
圖3.1 數據庫snort中數據表
(5) 安裝各類庫
從前面介紹的網址下載相應的安裝包,然后通過filezilla軟件與虛擬機連接,將所有已下載的安裝包上傳至虛擬機/root目錄下,在root目錄下解壓安裝所有的包。
? 安裝libdnet
tar -zxvf libdnet-1.12.tar.gz
libdnet提供簡單的、可移植的接口函數,主要就是為了完成對數據包的發送過程。進入libdnet-1.12文件夾,進行安裝編譯使用命令./configure && make &&make install。
? 安裝daq
tar -zxvf daq-2.0.4.tar.gz
進入daq-2.0.4文件夾,進行安裝編譯使用命令./configure && make &&make install。在安裝的時候要先安裝libdnet才能安裝daq,因為一些安裝包有依賴關系,順序錯了可能會導致安裝失敗。
? 安裝libpcap
tar -zxvf libpcap-1.0.0.tar.gz
libpcap是一款很好的數據包偵聽工具,主要實現的是數據報的捕捉功能。進入libpcap-1.0.0文件夾,進行安裝編譯使用命令./configure && make &&make install。
? 安裝adodb
tar -zxvf adodb519.tar.gz -C /var/www/html
將adodb519文件移動到/var/www/html下改名為adodb,使用命令mv /var/www/html/adodb519 /var/www/html/adodb
3.2.2 構建Snort探測器
(1) 安裝snort
在root目錄下解壓安裝包snort-2.9.7.0.tar.gz,使用命令tar zxvf snort-2.9.7.0.tar.gz;進入snort-2.9.7.0文件夾,使用命令cd snort-2.9.7.0;對其進行安裝配置,檢查當前的環境是否滿足依賴關系,使用命令./configure。對snort進行編譯安裝,使用一下命令make &&make install。
(2) 配置snort
首先創建需要的文件和目錄,在etc目錄下建立文件snort,使用命令mkdir /etc/snort。在/var/log目錄下建立文件snort,使用命令mkdir /var/log/snort。在/usr/local/lib/目錄下建立文件snort_dynamicrules,使用命令mkdir /usr/local/lib/snort_dynamicrules。在/etc/snort下建立文件rules,使用命令mkdir /etc/snort/rules。在/etc/snort/rules下建立文件white_list.rules與 black_list.rule,使用命令touch /etc/snort/rules/white_list.rules與命令touch /etc/snort/rules/black_list.rules。復制root/snort下的部分文件到etc /snort目錄下,使用以下命令cp /root /snort-2.9.7.0 /etc /gen-msg.mapthreshold.conf classification.config reference.config Unicode.map snort.conf /etc/snort/。
編輯配置文件vim etc/snort/snort.conf,修改snort.conf文件中的路徑變量,設置目錄為/etc/snort,如下所示:
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH/etc/snort/preproc_rules
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules
設置日志目錄config logdir: /var/log/snort
配置輸出插件:output unified2:filename snort.log, limit 128
(3) 測試snort
使用命令snort -T -i eth0 -c /etc/snort/snort.conf。使用此命令之前首先要用ifconfig命令查看自己的網卡名是什么,需要依據自己的具體情況進行更改,如果是eth0就使用上面的命令。其中-T是指啟動模式為測試模式,-i是指網絡接口名,-c是指需要指定的配置文件的具體位置。Snort的測試結果,如圖3.2所示。
圖3.2 snort測試成功圖
3.2.3 配置Snort輸出模塊接口
Barnyard運行在Linux下,嗅探器抓取到所有的數據包,將其傳送給檢測引擎,之后將其傳送給輸出插件,收集完數據之后,以二進制的方式保存在數據庫中。Barnyard將輸出階段單獨隔離,從而提高了Snort的性能和可靠性。它本身也是一個復雜的軟件,有3種基本的操作模式:單步模式、連續模式、連續檢查點模式[8]。
單步模式下,barnyard一次只檢測一個日志文件,若檢測出入侵行為,便會發出報警立即退出,進行下一個文件的檢測。以連續模式運行時,barnyard對產生的日志文件進行不間斷地檢測。
連續檢查點模式與連續模式相似,也是Snort產生數據對其進行處理操作。不同點,連續檢查點模式主要是使用檢查點文件對整個數據棧中的元素都檢測完之后,還可以繼續追蹤這個棧中的數據元素。檢查點文件又稱為waldo文件,用來記錄文件中近期處理的報警。如果不使用waldo文件,barnyard必須完整地載入一個日志文件,就像把已經存在的報警信息再一次傳送到MySQL數據庫中。
(1) 安裝barnyard2
在root目錄下解壓安裝包barnyard2-1.9.tar.gz,使用命令tar zxvf barnyard2-1.9.tar.gz。進入barnyard2-1.9目錄中,使用命令cd /root/barnyard2-1.9。對即將安裝的barnyard2進行配置,檢查當前的環境是否滿足此軟件的依賴,使用以下命令:./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql/。對barnyard2進行編譯安裝,使用命令make && make install。
(2) 配置barnyard
barnyard安裝完之后進行配置,barnyard就像Snort一樣也是通過設置.conf文件來進行控制。在配置barnyard之前有必要先對原文件進行備份。首先創建需要的文件和目錄,在/var/log下建立文件barnyard2文件,使用命令mkdir /var/log/barnyard2。在/var/log/snort下建立文件barnyard2.waldo,使用命令touch /var/log/snort/barnyard2.waldo。復制/root/barnyard2-1.9/etc下的barnyard2.conf文件到/etc/snort,使用命令cp /root/barnyard2-1.9/etc/barnyard2.conf /etc/snort。其中barnyard配置文件包括三部分:配置聲明、數據處理器和輸出插件。
配置聲明:
修改配置文件vim /etc/snort/barnyard2.conf,修改barnyard2.conf中的路徑,主機名,網卡名以及waldo_file文件路徑,修改如下:
config logdir:/var/log/barnyard2
config hostname:localhost
config interface:eth0
config waldo_file:/var/log/snort/barnyard.waldo
數據處理器:
輸出插件DP是解釋工具,可以將Snort緩沖池中的數據信息轉換為二進制形式存放在Barnyard中。大多數情況下,無需更改barnyard.conf文件中的默認配置。其中默
認配置包括一下三個輸出插件:
? dp_alert處理器
它能夠讀取出Snort unified輸出插件產生的報警數據。當Snort發生報警的時候,dp_alert處理器會將必要的數據輸出到合適的日志文件中。dp_alert處理器將與barnyard的輸出插件alert_fast同時工作,輸出插件用于指定報警的輸入類型。該類處理器沒有輸入參數,工作在默認的模式之下。
? dp_log處理器
此類數據處理器與dp_alert相似。它能夠讀取出Snort輸出插件所產生的日志類型的數據。當Snort判斷出此數據包被記錄的時候,spo_unified插件將會把這些數據都寫到指定的日志文件中,而此時的dp_log處理器將會讀取這些日志中的數據。dp_log處理器與barnyard的輸出插件log_dump同時工作,其中輸出插件主要用于指定報警的輸入類型,該處理器沒有輸入參數,工作在默認的模式之下。
? dp_stream_stat處理器
它能夠讀取Stream4插件所產生的二進制數據,其他方面與前面兩個處理器類似。該處理器與Stream4的相關插件同時工作。該處理器沒有輸入參數,工作在默認的模式之下。
輸出插件:
Snort將輸出數據與數據庫連接的文件放置在配置文件barnyard2.conf下。對于不同的輸出方式,也分別對應了不同的數據庫連接。在barnyard2.conf配置文件中添加代碼:
output database:log, mysql, user=snort password=123456 dbname=snort host=localhost。
輸出接口中設置連接的數據庫為:MySQL,用戶名為:snort,數據庫密碼為:123456,數據庫名為:snort,主機為:本地主機。該代碼需要和建立數據庫后,建立的數據庫與用戶名要保持一致,從而使得snort抓取到的數據能夠存放在數據庫中,保障snort與數據庫的正常連接,并能存儲數據。
完成以上操作已經可以實現入侵檢測模式,并能將數據存儲到MySQL中,如果能通過視圖界面將抓取到的數據展現出來,對于客戶來說也非常的有益,并能清晰的為客戶展現入侵的狀況以及哪些用戶進行了入侵,做了哪些行為動作。
(3) 測試barnyard2
使用以下的命令:barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo。其中-c是指定barnyard2的配置文件的位置是/etc/snort/barnyard2,-d是指定日志文件的目錄為/var/log/snort,-f是指定日志文件,-w是指定waldo文件。Barnyard2的測試結果,如圖3.3所示。
圖3.3 barnyard2測試成功圖
3.2.4 安裝Base的web視圖界面
(1) 安裝apache
使用命令yum install -y http下載安裝apache,對下載安裝的apache進行測試,在虛擬機中的瀏覽器中輸入http://localhst,如果出現Apache2 Test Page說明頁面,說明安裝成功,如圖3.4所示。
圖3.4 Apache測試頁面
(2) 安裝PHP
使用命令yum install -y php下載安裝PHP,對下載安裝的PHP進行測試。首先在/var/www/html目錄下創建index.php文件,其內容為<?php phpinfo()?>。在瀏覽器地址欄輸入http:localhost/index.php,如果出現PHP說明頁面,說明安裝成功,如圖3.5所示。
圖3.5 PHP測試頁面
(3) 安裝base
使用命令tar -zxvf base-1.4.5.tar.gz -C /var/www/html將base-1.4.5文件移動到/var/www/html下改名為base,使用命令mv /var/www/html/base-1.4.5 /var/www/html/base。首先啟動MySQL,使用命令service mysqld start。啟動apache,使用命令service httpd start。關閉防火墻,使用命令service iptables stop。
在瀏覽器中輸入命令http://192.168.122.149/base/setup/index.php,在此界面中配置base。其中需要配置base的路徑,設置使用語言,配置數據庫以及數據庫密碼。創建成功之后,出現BASE界面說明配置成功,如圖3.6所示。
圖3.6 Base配置頁面
4系統測試與檢測結果分析
4.1 ICMP攻擊
一般情況下我們都是用ping命令來檢測一個網絡是否暢通,但是如果無間斷地對某一個主機進行ping操作,將會給整個網絡系統帶來負載壓力,稱為ICMP入侵。ICMP攻擊的工作原理:黑客在某一端連續向某一臺主機發出大量的數據包請求,這臺計算機的CPU占用率持續上升,進而使得整臺機器處于癱瘓狀態。ICMP的攻擊主要分為兩大類,一是ICMP攻擊導致拒絕服務;另一種是基于重定向的路由欺騙技術[9]。本課題中主要使用的是拒絕服務攻擊,其主要分為針對帶寬的DOS攻擊和針對連接的DOS攻擊。
4.1.1 針對帶寬的DOS攻擊
針對帶寬的DOS攻擊,主要就是利用網絡中無關緊要的數據包來不斷地消耗網絡中的帶寬,占用正常數據包的傳輸隧道,導致數據包傳輸延時或者處于等待阻塞狀態。通常情況下,人們對內部主機使用ping命令來檢測網絡是否為通,這是由于ICMP數據包優先級等級較高。
這種攻擊僅限于網絡帶寬的攻擊,使用范圍比較廣,單獨的攻擊者就可以進行此類攻擊。
4.1.2 針對連接的DOS攻擊
針對連接的DOS攻擊,可以將正常運行的網絡環境停用。針對網絡連接的DOS攻擊會影響整個網絡中的所有聯網設備,主要原因是在發起攻擊時使用的是合法的ICMP報文協議。如果黑客攻擊者們檢測到某個端口是開放的,只對這個端口進行ping操作,這將會使得某一個端口一直處于忙碌阻塞狀態,進而使得整個網絡受到破環,也會使CPU的時鐘周期出現錯誤。
4.1.3 ICMP攻擊規則庫的配置
規則alert icmp any any -> HOMENETany(msg:"PINGTEST";sid:1000003;rev:1;),其中規則的動作是alert;規則協議是ICMP類型的數據包;源地址和端口都將其設置為關鍵字“any”,表示接受任意的數據包;目的地址設置為HOME_NET any (msg:"PING TEST" ; sid:1000003; rev:1;),其中規則的動作是alert;規則協議是ICMP類型的數據包;源地址和端口都將其設置為關鍵字“any”,表示接受任意的數據包;目的地址設置為HOMEN?ETany(msg:"PINGTEST";sid:1000003;rev:1;),其中規則的動作是alert;規則協議是ICMP類型的數據包;源地址和端口都將其設置為關鍵字“any”,表示接受任意的數據包;目的地址設置為HOME_NET,表示接受服務器端向客戶端發送來的數據包;sid表示snort規則的id編號;msg表示在控制臺顯示屏上顯示的信息是"PING TEST",如果有這個提示則表示捕捉到ICMP數據包;rev表示規則版本號為1。
若規則為:alert icmp any any <> any any (msg:“PING TEST” ; sid:1000003; rev:1;),其表示snort可以捕獲服務器端向客戶端發送符合ICMP報文的所有數據包,也可以捕獲客戶端向服務器端發送符合ICMP報文協議的所有數據包。
如果Snort規則為:alert icmp 192.168.122.0 any <- 192.168.43.0 any (msg:“PING TEST” ; sid:1000003; rev:1;),其表示只接受由192.168.43.0網段發送到192.168.122.0網段的所以符合ICMP報文協議的數據包。
4.1.4 ICMP攻擊測試
首先在Linux中利用編寫好的腳本idsctl啟動snort,啟動完成之后執行命令snort -dev來監聽所有抓取到的數據包,通過主機對虛擬機進行不斷的ping操作,libpcap將會抓取數據包顯示在屏幕上,并將其存儲在MySQL數據庫中。在另一臺IP地址為192.168.122.147的虛擬機上對此虛擬機進行ping操作,使用命令ping 192.168.122.153 –t 10,對其產生10個ICMP數據包。抓取到的數據包信息,如圖4.1所示。
圖4.1 snort抓取數據包信息
接下來,查看入侵數據的信息。如圖4.2所示,在這里查看到的信息主要包括入侵的ID、入侵特征、時間起止時間、源地址與目的地址以及第四層協議。對于上面ping過來的10個數據包,管理員在此信息欄中可以清晰地看到入侵的源地址為192.168.122.147,目的地址為192.168.122.153,具體的入侵時間以及入侵的類型。
圖4.2 ICMP入侵數據
對于以上入侵數據的查看和分析中,可以看出,依據規則捕獲的數據很清晰。結果表明對于ICMP攻擊,Snort能夠正常工作。
4.2 端口掃描
端口掃描就是查看需要掃描的網絡中有哪些開放的端口。端口掃描常用的工具是portscan,portscan預處理器通過檢測每個源地址在一段時間內的探測次數來發現端口掃描攻擊,還可以用檢測NMAP的“隱私掃描”包。任何入侵者首先會查看此網絡中開通了那些服務,一旦入侵者找到了自己攻擊范圍內的信息,就會試圖對其發起猛烈地攻擊,其中所有的端口掃描都是針對TCP和UDP端口。
4.2.1端口掃描主要方法
TCP端口連接掃描。這種方式企圖對某一個端口進行TCP連接,如果連接能夠成功建立,則表示此端口是開放的。
SYN掃描。首先入侵者會發送一個帶有SYN標記的TCP包到某一個端口,如果在此過程中能夠接受到SYN和ACK標記的響應,那么說明此端口是打開的[10]。如果只收到帶有RST標記的包,則只能說明此端口并沒有打開。
NULL端口掃描、FIN端口掃描和XMAS端口掃描,這三種掃描方式的工作原理大致差不多。當黑客攻擊者們發送一個TCP包后,若接受到了一個帶有RST標記的包,則表示此端口一定是關閉的,如果發送完TCP包之后,一直未收到任何包,則說明在此網絡中可能有端口開放。
4.2.2端口掃描預處理器
端口掃描預處理器的作用是用來監聽正常端口和一些隱私端口的行為活動這種預處理器可以將端口掃描行為記錄到指定的位置或者一些日志文件中。在本系統中,需要在snort.conf配置文件中對端口掃描的預處理器做一些配置操作,端口掃描預處理器的一般格式為:preprocessor sfportscan:proto {all} memcap {10000000} sense_level {high}。
該預處理器中有很多的參數,其中proto{tcp udp icmp ip all }:該參數表示用戶希望檢測到的活動行為中所使用到的協議。scan_type{portscan portsweep decoy_portscan distributed_portscan all }:該參數為掃描類型選項,表示能夠檢測到用戶需求的類型。memcap:和前面的預處理器一樣,該參數為預處理器需要配置的內存空間大小。logfile{ filename }:該參數指定記錄的日志文件的路徑或者文件名。watch_ip{Snort IP List }:是指需要監聽的主機IP列表有哪些。ignore_scanners{Snort IP List}:是指忽略掃描主機IP列表。ignore_scanned{Snort IP List}:是指需要忽略的已經被掃描過的主機IP列表。其中參數ignore_scanner:通常用于調節對一些NAT主機活躍IP目標發出的報警,參數ignore_scanned:通常用于調節對諸多Syslog服務器等活躍IP目標所發出的報警。
4.2.3端口掃描測試
本系統使用的端口掃描攻擊工具是御劍2014,首先設置需要掃描的所有端口,輸入掃描的端口IP,對其進行掃描,掃描結果如圖4.3所示。
圖4.3 端口掃描工具
接下來刷新基本安全分析引擎主頁,能夠看到新增加了66條警告到警告緩存,如圖4.4所示。
圖4.4 Base界面提示警告
最后查看入侵數據的具體信息,查看其掃描了本虛擬機192.168.122.153的哪些端口,如圖4.5所示。
圖4.5 端口掃描入侵數據
對于以上數據信息所示,Snort能夠正常抓取到端口掃描的數據,并能將所有詳細的數據呈現出來。結果表明對于端口掃描,Snort入侵檢測系統能夠正常工作。
4.3 XSS攻擊
XSS攻擊全稱為跨站腳本攻擊,允許入侵者將惡意代碼注入到web頁面中。黑客在對某個網站進行攻擊前,要檢測這個網站是否能被入侵,黑客們一般情況會做一個HTML進行測試,這就會涉及一些HTML標簽。同樣也可以使用一些簡單的腳本來實現,如,點擊留言按鈕,將會彈出留言成功對話框。但是仍會彈出另外一個對話框,其內容為xss,出現此種現象說明XSS攻擊成功,如圖4.6所示。
圖4.6 XSS攻擊成功
查看數據庫sun中的留言信息表(comment表),就能夠看到植入的那條惡意代碼,如圖4.7所示。
圖4.7 XSS成功植入數據庫
在操作這些之前要先打開Snort嗅探器,查看XSS攻擊過程中所抓取的數據包信息,以及在Base的web界面查看XSS攻擊的記錄,如圖4.8所示。
圖4.8 XSS入侵數據
以上信息可以顯示出192.168.122.147對192.168.122.159中的8080端口進行了攻擊,并在數據庫中還有XSS攻擊的植入代碼。結果表明對XSS攻擊,Snort能夠正常工作。
5總結與展望
5.1 總結
Snort是一個開源的軟件,在安全領域深受人們的歡迎,并且在入侵檢測系統中不斷的添加模塊,使得入侵檢測系統更加的完善,這也使得SIDS成為了IDS領域中比較熱門的系統。在安裝SIDS的時候,需要Snort和其他軟件共同配合完成工作,配置的時候軟件的安裝順序很重要,有的軟件之間有依賴關系,需要查閱資料,認真分析。要有做一步測一步的思想,這樣才能保證前面安裝的都是正確,并能夠正常使用。 在本文的研究與測試中實現了一個完整的SIDS,并做了如下工作:
(1) 首先介紹了Snort的研究背景與意義,以及有關IDS的發展與現狀。
(2) 主要對IDS與傳統網絡安全設備進行對比,以及Snort在IDS中不可替代的作用,并詳細介紹了Snort,還對如何編寫規則庫進行了描述與撰寫。
(3) 介紹了IDS詳細設計以及實現過程。在詳細設計中描述了需要用到的安裝包,配置模塊,還為系統添加了額外的功能,這將使得管理員更加方便管理,也使得攻擊的發現更加便捷。在實現過程中,遵循做一步測一步的原則,對完成的每一步都要進行測試,確保每一步都準確無誤,最后確保整個系統正常運行。
(4) 主要通過三種普遍的攻擊方式來檢測本系統是否能夠正常運行,通過三種實驗驗證了本系統檢測的有效性,能夠實現入侵檢測系統的基本功能,并對檢測的數據進行分析。
5.2 未來研究展望
SIDS自身有很多的優點,但是它的功能模塊還需要不斷地完善,研究其發展前景,我們需要不斷地改善Snort中以下幾個方面:協議識別、協議異常檢測、攻擊結果判定以及拒絕服務檢測。對于協議識別而言,它是Snort檢測過程中的核心技術。協議識別主要是通過對抓取到的數據進行動態的分析報文中的協議特征,判斷它的協議之后,將其發送給相對應的協議分析引擎來處理。對于那些運用了智能隧道技術的軟件能夠準確的捕獲數據,并能對其進行分析。雖然Snort也具備了此功能,但是在某些方面仍需要完善,比如速度方面。對于協議異常檢測最重要的就是檢測未知的攻擊,它作為成熟的技術,協議異常檢測的準確率接近100%,誤報率幾乎為0。對于攻擊結果判定而言,它將會作為新一代IDS和Snort的重要標志。對于拒絕服務檢測而言,目前如何能夠準確的檢測出某一個系統正在受到何種攻擊,并能夠避免拒絕服務的威脅,變成了越來越困難,復雜多變的工作。因此,提高拒絕服務檢測能夠更好的防范拒絕服務攻擊。
參 考 文 獻
[1] 景蕊,劉利軍.基于協議分析的網絡入侵檢測技術[M].計算機工程與應用,2003.(36):128-133.
[2] 唐正軍.網絡入侵檢測系統的設計與實現[M].北京:電子工業出版社,2012:1-24.
[3] 劉文濤.基于TCP/IP協議分析的網絡入侵檢測系統研究與設計[J]. 武漢:武漢理工大學,2013,(5):35-44.
[4] 楊萃,劉振華.入侵檢測系統的比較[M].計算機工程,2014,30(6):137-138.
[5] 蔣建春,馮登國等.網絡入侵檢測原理與技術[M].北京:國防工業出版社,2011:20-40.
[6] MILENKOSKI A,VIEIRA M,KOUNEV S, et al. Evaluating Computer Intrusion Detection Systems: A Survey of Com-mon Practices[J].ACM Computing Surveys,2015,48(1):1-41.
[7] Cannnady.Next Generation Intrusion Detection: Autonomous Reinforcement Learning of Network Attacks[M]. Proceedings 23rd National Information Systems Security Conf,2015: 91-120.
[8] 王建忠.基于snort的分布式入侵檢測系統的研究與設計[D].蘭州理工大學碩士學位論文,2007.5.
[9] 侯向寧.基于校園網環境的snort入侵檢測系統應用研究[D].西北大學碩士學位論文,2008.5.
[10] 邱浩.帶入侵檢測的Limix個人防火墻的研究與實現[D].貴陽:貴州大學,2006.
[11] 李波.入侵檢測系統的分析與研究[J].重慶教育學院學報,2005, (12).
[12] 王雪松,梁昔明.改進蟻群算法優化支持向量機的網絡入侵檢測[J].計算技術與自動化,2015(2):95-99.
[13] Duan Q,Mao M,Pan D,et al.An improved artificial fish swarm algorithm optimized by particle swarm optimization algorithm with extended memory[J].Kybernetes,2016,45(2):210-222.
[14] Zhou Q, Luo J.The Study on Evaluation Method of Urban Network Security in the Big Data Era[J].Intelligent Automation & Soft Computing,2017(5):1-6.
[15] Liyanage M,Abro A 13,Ylianttila M,et al.Opportunities and Challenges of Software-Defined Mobile Networks in Network Security[J].IEEE Security & Privacy,2016,14(4):34-44.
總結
以上是生活随笔為你收集整理的基于Snort的入侵检测系统_相关论文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Plotly中绘制三种经典的股票交易图表
- 下一篇: 【无标题】灵遁者相观天下,相学培训书籍