关于Snort
snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
安装配置Snort
下载安装包及规则:www.snort.org(下面我使用的安装包版本为2.9.16 x86,x64会有抓不到包的问题,规则包为snortrules-snapshot-29160)
提前安装Winpcap,因为snort需要基于Winpcap抓包的
安装Snort,默认选项一直单击下一步直至安装完成
在snort\bin目录下执行命令,查看snort信息,snort安装完成
snort -V
实现Snort的IDS功能
配置snort
下载规则库后解压
将preproc_rules,rules,so_rules替换到snort目录下,如下:
修改配置文件snort\etc\snort.conf
var RULE_PATH ../rules
var SO_RULE_PATH ../so_rules
var PREPROC_RULE_PATH ../preproc_rules
修改为你的安装目录:
# path to dynamic preprocessor libraries
dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/
# path to base preprocessor engine
dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so
# path to dynamic rules libraries
dynamicdetection directory /usr/local/lib/snort_dynamicrules
后两条暂时用不到,所以直接注释掉,修改为:
这里也暂时用不着,注释掉,否则后面会报错:
这里是规则库,对符合过滤规则的进行匹配,我先注释掉,只留一条include $RULE_PATH/local.rules
开始操作
在snort\rules目录下local.rules文件中最下添加一条
alert tcp any any -> 192.168.134.0/24 80 (content:"and"; msg: "SQL inject attack"; sid:1000001)
这句话的意思是发出警告,tcp流量,任何地址的任何端口到目标ip:192.168.134.0/24的80端口的流量做匹配,匹配规则为'and',报警消息为'SQL inject attack',规则编号1000001(自定义规则必须写,且不能重复)
在一台虚拟机上搭起web服务
查看下本机网卡
snort -W
将cmd路径移到bin目录下,执行命令
snort -i2 -dev -l E:\Snort2.9.16\Snort\log -c E:\Snort2.9.16\Snort\etc\snort.conf
选择网卡2(选择哪个,则会抓哪个网卡的包),这里会输出日志文件到log目录,使用snort.conf配置,注意这里如果conf配置有问题的话,执行命令会报错,我曾解决报错问题解决了一整天
如果报错有winpacp,更换snort包为x86,其它配置各种报错都有,只要按照流程就不会报错,最开始我也是按照流程的,还是报错,解决办法:规则文件和安装包版本匹配(我也不知道为什么)反正是不报错了,还是报错的话,把规则包中的etc文件也替换进去,然后重新配置snort.conf(QAQ,这里我也不知道为什么,按说是一样的,但是我记得我是这么做了就不报错了)
成功执行后:
已经开始抓包了,我们看一下日志
没有什么关键信息,我们去刷新网页
这里再查看日志,还是没有任何变化
重新刷新地址
http://192.168.134.135/?id=1%20and%201=1
再次查看日志,攻击匹配并记录下来了
cmd页面也显示出了流量包内容,注意,在真实环境,不建议打印出来,因为这样会增加snort的负荷,可能会丢包