snort 簡介php
snort是一個基於libpcap的數據包嗅探並能夠做爲一個輕量級的網絡***檢測系統(NIDS)。所謂的輕量級是指在檢測時儘量低地影響網絡的正常操做,一個優秀的輕量級的NIDS應該具有跨系統平臺操做,對系統影響最小等特徵而且管理員可以在短期內經過修改配置進行實時的安全響應,更爲重要的是可以成爲總體安全結構的重要成員。
snort工做模式
snort 有三種工做模式:嗅探器、數據包記錄器、網絡***檢測系統。
嗅探器模式僅僅是從網絡上讀取數據並做爲接二連三的流顯示在終端上;
數據包記錄器模式把數據包記錄到硬盤上;
網絡***檢測模式是最複雜的,並且是可配置的,咱們可讓snort分析網絡數據流以匹配用戶定義的一些規則,並根據檢測結果採起必定的動做。
實驗環境:
snort 主機: 192.168.101.90
模擬***主機:192.168.101.108
注:snort要與internet能夠通訊
1、snort 以及規則安裝
yum install php php-gd php-pear php-mysql mysql-server httpd libpcap
yum localinstall --nogpgcheck snort-2.8.6.1 snort-mysql-2.8.0.1-1.RH5.i386.rpm
tar -zxvf snortrules-snapshot.... -C /etc/snort
修改環境變量
[root@readhat ~]# export PCAP_FRAMES=max
啓用服務
[root@readhat html]# service httpd start && chkconfig httpd on
[root@readhat html]# service mysqld start && chkconfig mysqld on
2、mysql配置
[root@readhat html]# mysqladmin -u root password "123"
建立數據庫
create database snort;
use snort;
source /usr/share/snort-2.8.0.1/schemas/create_mysql; 導入模版,生成數據表
3、adodb安裝
[root@readhat html]# unzip adodb514.zip -d /var/www/html/
[root@readhat html]# cd /var/www/html/
[root@readhat html]# mv adodb5/ adodb
4、base安裝配置
[root@readhat html]# tar -zxvf /root/base-1.4.5.tar.gz -C /var/www/html/
[root@readhat html]# cd /var/www/html/
[root@readhat html]# mv base-1.4.5/ base
pear install --force PEAR-1.8.1
pear upgrade pear
[root@readhat html]# pear install Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman Mail_Mime Mail
[root@readhat html]# cd /var/www/html/base
[root@readhat base]# cp world_map6.png world_map6.txt /usr/share/pear/Image/Graph/Images/Maps/
對base目錄,添加可寫屬性,
[root@readhat html]# chmod o+w base
修改base內的符號連接
[root@readhat html]# ln -s /etc/snort/doc/signatures /var/www/html/base/signatures
訪問 http://192.168.101.90/base
編輯php的配置文件
vim /etc/php.ini
error_reporting = E_ALL
改爲
error_reporting = E_ALL & ~E_NOTICE
再次測試正常
5、base網頁配置
選擇語言格式,及adodb的存放目錄,
設置數據庫的相關屬性,
建立管理員角色,
成功建立相關表、表選項,
base是從mysql中讀取數據,而sort是怎樣將信息輸出到mysql數據庫,並無配置。
snort與mysql的關聯配置
[root@readhat ~]# vim /etc/snort/snort.conf
[root@readhat ~]# snort -v -c /etc/snort/snort.conf &>/dev/null &
[1] 28542
[root@readhat html]# jobs
[1]+ Running snort -v -c /etc/snort/snort.conf >&/dev/null &
查看掃描狀態
局域網內模擬***,進行端口掃描
再次查看狀態
詳細的數據格式
附錄:
snort的工做模式及規則簡單編寫
1、嗅探器模式
所謂的嗅探器模式就是snort從網絡上讀出數據包而後顯示在你的控制檯上。首先,咱們從最基本的用法入手。若是你只要把TCP/IP包頭信息打印在屏幕上,只須要輸入下面的命令:
#snort -v
使用這個命令將使snort只輸出IP和TCP/UDP/ICMP的包頭信息。若是你要看到應用層的數據,可使用:
#snort -vd
這條命令使snort在輸出包頭信息的同時顯示包的數據信息。若是你還要顯示數據鏈路層的信息,就使用下面的命令:
#snort -vde
注意這些選項開關還能夠分開寫或者任意結合在一塊。例如:下面的命令就和上面最後的一條命令等價:
#snort -d -v –e
2、數據包記錄器:
若是要把全部的包記錄到硬盤上,你須要指定一個日誌目錄,snort就會自動記錄數據包:
snort -dev -l ./log
固然,./log目錄必須存在,不然snort就會報告錯誤信息並退出。當snort在這種模式下運行,它會記錄全部看到的包將其放到一個目錄中,這個目錄以數據包目的主機的IP地址命名,例如:192.168.10.1
若是你只指定了-l命令開關,而沒有設置目錄名,snort有時會使用遠程主機的IP地址做爲目錄,有時會使用本地主機IP地址做爲目錄名。爲了只對本地網絡進行日誌,你須要給出本地網絡:
snort -dev -l ./log -h 192.168.1.0/24
這個命令告訴snort把進入C類網絡192.168.1的全部包的數據鏈路、TCP/IP以及應用層的數據記錄到目錄./log中。
注意:生成的數據文件格式是tcpdump格式的,可以使用」#snort -r 數據文件名」來查看
若是你的網絡速度很快,或者你想使日誌更加緊湊以便之後的分析,那麼應該使用二進制的日誌文件格式。所謂的二進制日誌文件格式就是tcpdump程序使用的格式。使用下面的命令能夠把全部的包記錄到一個單一的二進制文件中:
snort -l ./log -b
3、***檢測系統:
snort最重要的用途仍是做爲網絡***檢測系統(NIDS),使用下面命令行能夠啓動這種模式:
snort -dev -l ./log -h 192.168.1.0/24 -c /etc/snort/snort.conf
snort.conf是規則集文件。snort會對每一個包和規則集進行匹配,發現這樣的包就採起相應的行動。若是你不指定輸出目錄,snort就輸出到/var/log/snort目錄。
注意:若是你想長期使用snort做爲本身的***檢測系統,最好不要使用-v選項。由於使用這個選項,使snort向屏幕上輸出一些信息,會大大下降snort的處理速度,從而在向顯示器輸出的過程當中丟棄一些包。
此外,在絕大多數狀況下,也沒有必要記錄數據鏈路層的包頭,因此-e選項也能夠不用:
snort -d -h 192.168.1.0/24 -l ./log -c /etc/snort/snort.conf
這是使用snort做爲網絡***檢測系統最基本的形式,日誌符合規則的包,以ASCII形式保存在有層次的目錄結構中。
編寫snort 規則
snort使用一種簡單的,輕量級的規則描述語言,這種語言靈活而強大。在開發snort規則時要記住幾個簡單的原則。
第一,大多數snort規則都寫在一個單行上,或者在多行之間的行尾用/分隔。Snort規則被分紅兩個邏輯部分:規則頭和規則選項。規則頭包含規則的動做,協議,源和目標ip地址與網絡掩碼,以及源和目標端口信息;規則選項部分包含報警消息內容和要檢查的包的具體部分。
下面是一個規則範例:
alert tcp any any -> 192.168.1.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd access";)
規則動做協議源ip地址源端口號 ->目標ip地址目標端口號(規則選項)
第一個括號前的部分是規則頭(rule header),包含的括號內的部分是規則選項(rule options)。規則選項部分中冒號前的單詞稱爲選項關鍵字(option keywords)。注意,不是全部規則都必須包含規則選項部分,選項部分只是爲了使對要收集或報警,或丟棄的包的定義更加嚴格。組成一個規則的全部元素對於指定的要採起的行動都必須是真的。當多個元素放在一塊兒時,能夠認爲它們組成了一個邏輯與(AND)語句。同時,snort規則庫文件中的不一樣規則能夠認爲組成了一個大的邏輯或(OR)語句。
規則動做:
規則的頭包含了定義一個包的who,where和what信息,以及當知足規則定義的全部屬性的包出現時要採起的行動。規則的第一項是"規則動做"(rule action),"規則動做"告訴snort在發現匹配規則的包時要幹什麼。在snort中有五種動做:alert、log、pass、activate和dynamic.
1、Alert-使用選擇的報警方法生成一個警報,而後記錄(log)這個包。
2、Log-記錄這個包。
3、Pass-丟棄(忽略)這個包。
4、activate-報警而且激活另外一條dynamic規則。
5、dynamic-保持空閒直到被一條activate規則激活,被激活後就做爲一條log規則執行。