伴隨着互聯網產業的不迅猛發展,新興技術層數不窮,互聯網通信技術逐漸成爲了各行各業不可替代的基礎設施,愈來愈多的業務都是依靠互聯網來得以實現。隨着我國科技產業的飛速發展,不少過去沒法想象的事物變成了現實,由計算機衍生的人工智能等一系列高新技術,以不可阻擋的勢頭影響着人們的生活,這一切的一切都離不開互聯網的支撐,人們享受網絡帶來的便捷與暢快的同時,也不得不面對網絡入侵者對網絡安全所帶來的威脅,近些年網絡飛速發展的同時,信息安全問題也顯得日益突出,人們對隱私保護的意識逐漸加強,所以計算機網絡安全問題日益成爲了社會各界所關注的熱點。擁有一個完備可靠的網絡安全攻防系統以是我的、企業乃至國家所不懈追尋的目標。php
在互聯網飛速發展的當下社會,信息安全問題尤其突出,任何試圖破壞網絡活動正常化的事件均可成爲網絡安全問題。在網絡安全問題產生的早期,人們一般使用的方法就是防火牆,但隨着網絡攻擊技術手段的不斷提高,傳統的防火牆做爲一種被動的防護性網絡安全工具,已經不足以防護新型的網絡攻擊。這種狀況下逐漸誕生了網絡入侵檢測系統,入侵檢測系統不只可以爲網絡安全提供及時的入侵檢測以及採起響應防禦手段,還能夠正確識別針對計算機網絡的惡意行爲,併爲此作出響應和防禦機制。它提供對系統內部攻擊和外部攻擊以及錯誤操做的實時防禦,可以自主的應對網絡攻擊,良好的彌補了傳統防火牆的不足,有效的完善了網絡安全的防禦機制,入侵檢測及時作一種防護手段,已經成爲網絡安全體系的重要組成部分。所以掌握網絡入侵檢測系統的部署與應用以是計算機從業人員不可缺乏的知識技能。html
IDS是計算機的入侵監視系統,它經過實時的監視,對異常的網絡行爲發出警報。入侵檢測系統大體可分爲兩大類,信息來源一類是基於主機IDS的基於網絡的IDS,檢測方法一類是針對異常入侵檢測和誤用的入侵檢測。Snort
IDS(入侵檢測系統)既是一個強大的網絡入侵檢測系統。它具備實時數據流量分析和記錄IP數據網絡數據包的能力,可以進行協議分析,對數據包內容進行識別,檢測不一樣的攻擊方式,對攻擊進行實時監控和報警。此外,Snort是一個開源的入侵檢測系統,具備很好的移植性和可擴展性。Barnyard2做爲IDS的前端工具,主要應用是讀取sonrt產生的數據並存儲到數據庫中,同時base的頁面變化,來測試應用成果與否。前端
Snort結構由四大模塊組成,分別是:mysql
數據包嗅探模塊,負責監聽網絡數據包,對網絡進行分析。c++
預處理模塊,用相應的插件來檢查原始的數據包,數據包預處理後傳送到檢測引擎。算法
檢測模塊,是Snort的核心模塊;檢測引擎根據預先設置的規則檢測數據包,一旦發現規則匹配,就通知警報模塊。sql
警報/日誌模塊,通過檢測引擎檢測後數據輸出。若是出現異常則會發出報警數據庫
偵測模式:snort將在現有的網域內獲取數據包,並顯示在屏幕上。apache
數據包記錄模式:snort將已截取的數據包存入存儲硬盤中。vim
上線模式:snort可對截取到的數據包作分析的動做,並根據必定的規則來判斷是否有網絡攻擊行爲的出現。
Snort擁有三大基本功能:嗅探器,數據包記錄和入侵檢測。嗅探器模式從網絡上讀取數據包並做爲接二連三的數據流顯示在終端。數據包記錄器模式是把數據包記錄到硬盤上。網絡入侵檢測模式可配置使snort分析網絡數據流以匹配用戶定義的一些規則,並根據檢測結果採起必定的措施。
snort是一套開源的網絡入侵預防與網絡入侵檢測軟件。使用了以偵測簽名與通訊協議的偵測方法。數據嗅探是基於Libpcap開發而成,Libpcap是一個跨平臺的報文抓取程序。數據嗅探器將網卡獲取的數據送入上層預處理組件進行處理。
預處理器介於檢測引擎和數據包嗅探器之間,主要功能有包重組、解碼協議和異常檢測,負責對數據包的進行預先處理。做爲入侵檢測系統,它可以對網絡中數據包片斷編排與組裝,還原原始的數據內容。所以預處理器對安全威脅的檢測和識別很是重要。
檢測引擎是Snort的核心部分,其中負責規則處理的規則庫是檢測引擎的重要組件,規則處理模塊主要負責規則的解析和規則檢測。檢測引擎經過讀取規則文件把規則鏈中,再與數據包進行對比,檢測斷定是否存在安全威脅,並作出響應的處理,如:警報、記錄或者忽略等。針對大流量的數據中心存在系統檢測處理數據丟失等狀況,這就表示在大規模的網絡應用中,對引擎算法的優化和改進,有着至關大的必要。
從本質上說,Snort與tcpdump和snoop同樣,都是網絡數據包嗅探器。所以,嗅探器模式是Snort工做的基本模式。只要運行Snort時不加載規則,它就能夠從網絡上讀取數據包並接二連三地顯示在屏幕上。這時,Snort將顯示統計信息。Snort使用Libpcap網絡驅動庫。在這種模式下,Snort將網卡設置爲混在模式,讀取並解析共享信道中的網絡數據包。在嗅探模式下,Snort也能夠將這些信息記錄到日誌文件中。這些文件隨後能夠用Snort或者tcpdump查看。這種模式的用戶並不是很大,由於如今不少能夠記錄包的工具了。在這種模式下並不須要snort.conf配置文件。
入侵模式須要載入規則庫才能工做。在入侵模式下,Snort並不記錄全部捕獲的包,而是將包與規則對比,僅當包與某個規則匹配的時候,纔會記錄日誌或產生報警。若是包並不與任何一個規則匹配,那麼它將會被悄悄丟棄,並不作任何記錄。運行Snort的入侵檢測模式的時候,一般會在命令行指定一個配置文件。
Snort在進入工做模式以前,首先要對其進行基礎設置,對結構組件進行初始化配置,根據規則文件生成相應的規則鏈表。經過調用Libpcap提供的數據函數抓取數據包,對數據進行預處理,sonrt調用完了協議的解析函數,對數據包進行分層解析,從數據包中提取有效的檢測信息,而後將解析的數據轉存。由snort將解析結果和已知的規則進行比較,判斷是否存在入侵行爲,當相匹配時則斷定存在網絡安全問題,向管理員發出警報。若是不存在安全問題則直接經過。
Snort,對每一個被檢測的數據包都定義了以下的三種處理方式alert(發送報警信息)Log(記錄該數據包),Pass(忽略該數據)。這些處理方式實際上是具體定義,在檢測規則中的,具體的完成是在日誌或者報警子系統中。日誌子系統容許將嗅探器,收集到的信息,以可讀的格式或者tcpdump格式記錄下來。
此外,Snort有兩種輸出方式,即日誌和告警,輸出結果時,snort會按常規規則或預處理規則直接指定輸出類型。
adodb是一種兼容各種數據庫應用程序的接口(API),各類數據庫均可以,MySQL、Informix、Oracle,MS
SQL
七、Foxpro、Access,ADO、Sybase、FrontBase、DB2等,不論後端是何種數據庫,存取數據的方式都是一致的,adodb做爲一種PHP存取數據庫的中間函數組件,在本次項目種擔負着橋樑的責任。
barnyard2是一個snort組件,經過與數據庫相聯繫,用於數據的調取與存放。daq、libdnet、libpcap都是snort的安裝組件,須要編譯後配合snort使用。snortrules-snapshot是snort的規則匹配庫,主要功能就是用於數據的比對與識別判斷依據。base則是用於前端頁面數據的顯示。
工做環境
名稱 | 版本 |
---|---|
VMware Workstation Pro | 15 |
MobaXterm | 10.4 |
Centos | 6.7 |
Mysql | 5.7 |
adodb | 5.20.9 |
barnyard2 | 1.9 |
base | 1.4.5 |
daq | 2.0.5 |
libdnet | 1.12 |
libpcap | 1.9.0 |
snort | 2.9.9.0 |
snortrules-snapshot | 2990 |
本次項目設計是基於centos6.7操做系統,在系統上進行snort、barnyard2以及base的整體搭建,其中snort是主要部分,Barnyard2的做用是讀取snort產生的二進制事件文件並存儲到MySQL。同時根據base頁面的變化,來測試是否成功。
安裝Centos6.7.iso鏡像到虛擬機,配置網絡設置確保鏈接互聯網。
# wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-6.repo
# yum clean all
# yum makecache
#yum install -y epel-release
# yum install -y httpd mysql-server php php-mysql php-mbstring php-mcrypt
mysql-devel php-gd
#yum install -y mcrypt libmcrypt libmcrypt-devel
修改vim /etc/php.ini
error_reporting = E_ALL & ~E_NOTICE
# yum install -y php-pear
# pear upgrade pear
# pear channel-update pear.php.net
# pear install mail
# pear install Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman
# pear install mail_mime
# tar -zxvf adodb-5.20.9.tar.gz -C /var/www/html
# mv /var/www/html/adodb5 /var/www/html/adodb
# tar -zxvf base-1.4.5.tar.gz -C /var/www/html/
# mv /var/www/html/base-1.4.5 /var/www/html/base
# chown -R apache:apache /var/www/html
# chmod 755 /var/www/html/adodb
解壓barnyard2(使用文件建立數據庫表)
# tar -zxvf barnyard2-1.9.tar.gz
啓動mysql
# service mysqld start
設置root密碼爲123456
# mysqladmin -u root password 123456
# mysql -uroot -p123456
建立snort的數據庫,建立名爲snort、密碼爲123456的數據庫用戶並賦予名爲snort數據庫權限。
mysql>create database snort;
mysql>grant create,select,update,insert,delete on snort.* to snort@localhost
identified by '123456';
退出數據庫,導入建立數據庫表。
# mysql -uroot -p123456 -D snort <
/root/test/barnyard2-1.9/schemas/create_mysql
# service mysqld start 啓動mysql
# service httpd start 啓動apache
# service iptables stop 關閉iptables
用瀏覽器打開http://192.168.60.180/base
點擊Continue,進入配置頁面,選擇顯示語言,設置adodb路徑。
點擊下一步,配置數據庫。
點擊下一步,自行配置用戶名和密碼,這裏我設置爲admin:admin
點擊繼續進入,再點擊「Create BASE AG」
若是顯示Successfully created的字樣則說明是成功了,點擊「step 5」
如此即說明安裝成功。
# yum install –y gcc flex bison zlib libpcap tcpdump gcc-c++ pcre* zlib*
libdnet libdnet-devel
# tar -zxvf libdnet-1.12.tgz
# cd libdnet-1.12
對libdnet進行編譯到/usr/local目錄
# ./configure && make && make install
# tar -zxvf libpcap-1.9.0.tar.gz
# cd libpcap-1.9.0
# ./configure && make && make install
移動到/usr/local目錄下進行編譯
# tar -zxvf daq-2.0.5.tar.gz
# cd daq-2.0.5
# ./configure && make && make install
移動到/usr/local目錄下進行編譯
# tar -zxvf snort-2.9.9.0.tar.gz
# cd snort-2.9.9.0
# ./configure && make && make install
移動到/usr/local目錄下進行編譯
首先建立文件目錄
# mkdir /etc/snort
# mkdir /var/log/snort
# mkdir /usr/local/lib/snort_dynamicrules
# mkdir /etc/snort/rules
# touch
/etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules
# cd /usr/local/snort-2.9.9.0
# cp gen-msg.map threshold.conf classification.config reference.config
unicode.map snort.conf /etc/snort
編輯配置文件
# vim /etc/snort/snort.conf
修改路徑
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 snortlog, limit 128
# tar -zxvf snortrules-snapshot-2990.tar.gz -C /etc/snort/
# cp /etc/snort/etc/sid-msg.map /etc/snort/
# mv barnyard2-1.9 /usr/local
# ./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql/
# make && make install
建立文件目錄
# mkdir /var/log/barnyard2
# touch /var/log/snort/barnyard2.waldo
# cp /usr/local/barnyard2-1.9/etc/barnyard2.conf /etc/snort/
修改配置文件
# vi /etc/snort/barnyard2.conf
config logdir: /var/log/barnyard2
config logdir:/var/log/barnyard2
config hostname:localhost
config interface:eth0
config waldo_file:/var/log/snort/barnyard.waldo
output database: log, mysql, user=snort password=123456 dbname=snort
host=localhost
參數註解:
-T 指定啓動模式:測試
-i 指定網絡接口:eth0
-c 指定配置文件:/etc/snort/snort.conf
# snort -T -i eth0 -c /etc/snort/snort.conf
如此則測試成功。
參數註解:
-c 指定配置文件:/etc/snort/barnyard2.conf
-d 指定Log目錄:/var/log/snort
-f 指定Log文件:snort.log
-w 指定waldo文件:/var/log/snort/barnyard2.waldo
#barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w
/var/log/snort/barnyard2.waldo
如此即說明安裝成功,ctrl+c終止程序。
首先確保:httpd開啓,iptables關閉,mysql開啓。
# service httpd start
# service iptables stop
# service mysqld start
#vim /etc/snort/rules/local.rules
添加一條檢查ping包的規則
alert icmp any any -> any any (msg: "IcmP Packet detected";sid:1000001;)
規則解釋:
配置好後,咱們依次啓動:-D爲後臺運行
# barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w
/var/log/snort/barnyard2.waldo -D
# snort -D -T -i eth0 -c /etc/snort/snort.conf
同時咱們使用主機ping測試虛擬機。
# ping 192.168.60.180 -t
當IDS命令執行完畢後,用主機瀏覽器訪問base安全分析引擎頁面。
能夠看到有檢測到IP數據。
# chmod 755 startids.sh
#!/bin/bash
echo
"*********************正在啓動服務************************"
barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w
/var/log/snort/barnyard2.waldo -D
snort -D -c /etc/snort/snort.conf -i eth0
echo
"*********************正在啓動完成************************"
# service mysqld start 啓動mysql
# service httpd start 啓動apache
# service iptables stop 關閉防火牆
使用腳本啓動IDS:
手動啓動IDS:
#barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w
/var/log/snort/barnyard2.waldo -D
#snort –D -c /etc/snort/snort.conf -i eth0
使用ping命令向IDS所在IP發送數據包,base頁面會出現ICMP警告。
能夠看到,在接二連三的ping目標IP的狀況下,基本安全分析引擎BASE就會源源不斷的收到數據包警報數據,咱們還能夠對某個特定的數據包進行分析和查看。
接下來對TCP和UDP進行測試,首先添加規則到local.rules中。
# vim /etc/snort/rules/local.rules
在網站根目錄下添加一個自定義網頁。
使用另一個臺機器訪問此網頁。
再打開安全分析引擎BASE主頁面,發現TCP和UDP已經有了數據。
下一步跟進數據,能夠看到協議類型等信息。
經過IP分析,能夠清晰的看到IP間的通信狀況。
最後咱們使用namp對端口進行掃面查看安全引擎的檢測狀況。
首先對snort進行簡單配置。
# vim /etc/snort/snort.conf
修改此處配置信息
# preprocessor sfportscan: proto { all } memcap { 10000000 } sense_level { high
}
將以下注釋去掉
# include $PREPROC_RULE_PATH/preprocessor.rules
# include $PREPROC_RULE_PATH/decoder.rules
# include $PREPROC_RULE_PATH/sensitive-data.rules
首先看到BASE的端口掃描通訊區域沒有顯示。
接下來使用使用Kali中的nmap命令對目標IP進行掃描。
同時打開BASE主頁面,發現流量監控數據同步顯示。
打開端口掃描通訊查看詳細信息。
能夠看到掃描流量的詳細信息。
自此,snort測試工做成功,能夠上線運行。
可使用已經配置好的腳本中止IDS。
也能夠手動中止服務。
killall -9 snort barnyard2
經過對網絡安全課程的學習,我學到了不少有關計算機網絡安全方面的知識和技能,對網絡安全領域有了更深層次的理解。經過完成這個項目,使得我對snort網絡入侵檢測系統有了一個具體的瞭解,Snort
IDS(入侵檢測系統)是一個強大的網絡入侵檢測系統。它具備實時數據流量分析和記錄網絡數據流包的能力。對目標網絡從源IP源端口到目的IP和目的端口的整個過程進行總體監控,可以進行協議分析,對網絡數據包內容進行搜索和匹配。它可以檢測各類不一樣的網絡攻擊方式,對異常數據流量實時監控和及時警報。
此外,Snort做爲一個開源的入侵檢測系統,有着良好的擴展性和可移植性,在對基於snort、barnyard2和base的入侵檢測系統的部署於應用的過程當中,也不乏出現各類各樣的問題,如:PHP插件下載,snort對TCP/UDP等信息的檢測配置等問題,經過對報錯緣由和運行日誌的分析,結合藉助各類渠道獲取的相關知識經驗,最終全部問題得以解決,呈現出一個性能良好、穩定可持續運行的網絡入侵檢測系統。
很是感謝老師能給我此次機會,讓我可以獨立的完成一個入侵檢測系統的部署與應用的過程,以此來結合所學知識讓我對以前學到的知識有了更深層次的理解與感悟,對從此的學習與工做有着及其重要的意義。