snort报警规则设计和测试
snort简单的报警规则
在官网下载规则包(需要注册登陆)
https://www.snort.org/downloads
我下载的是29151版本的
将snort安装目录的包用规则包进行替换
替换到snort-2.9.17文件夹内
练习一条规则
👉在rules/local.rules下进行规则配置。实现对内网的ICMP相关流量进行检测,并报警
编辑文件的时候都采用vim的方式 vim <文件路径>
以下操作都在snort的文件夹内完成。 cd /snort-2.9.17
把下面的内容添加到local.rules里
1 | vim rules/local.rules |
1 | alert icmp any any -> 172.16.68.139 any (msg:"ICMP";sid:41409) |
测试规则,看是否有报错
小猪猪跑出来,成功运行
1 | snort -c rules/local.rules -T |
利用Snort检测ping攻击
在rules/icmp-info.rules文件中设置如下规则:
1 | alert icmp any any -> 172.16.68.139 any (msg:"ICMP Large ICMP Packet";dsize:>800;reference:arachoids,246; sid:499;rev:4;) |
tip:官方文档:This configuration file enables active response, to run snort in test mode -T you are required to supply an interface -i
检验规则是否报错:
1 | snort -c rules/icmp-info.rules -T |
开启检测模式
1 | snort -i eth0 -c /snort-2.9.17/etc/snort.conf -A fast -l log/snort-detect/ |
⛔️报错:Invalid keyword ‘preprocessor’
官网下载的配置文件,默认把preprocessor reputation注释掉。找到这行。看配置文件,把preprocessor注释打开。
不设置黑白名单,可以把黑白名单注释掉。
❗️注意!!!!!!!!!逗号问题!!!!在每个配置的最后一行,不能有,\。 不然会出现类似这种的报错。莫名其妙的,天真的我之前还认真的去看了官网配置。。
再次运行监测模式
⛔️报错:ERROR: Perfmonitor: Cannot open base stats file “/var/snort/snort.stats”. Fatal Error, Quitting..
💚打开sonrt.conf这行注释掉 # preprocessor perfmonitor: time 300 file /var/snort/snort.stats pktcnt 10000
没有报错了!小猪猪跑出来,运行如德芙巧克力一般丝滑~尽享愉悦,纵享丝滑~
在另一台主机上ping snort所在主机,log下面会生成警报日志
kali 上开启snort入侵检测
1 | snort -i eth0 -c /snort-2.9.17/etc/snort.conf -A fast -l log/snort-detect/ |
另一台主机去ping
生成了alert警告日志
日志内记录的内容
捕捉关键字Search记录打开Google网页的动作
👉编写一个规则,通过捕捉关键字Search记录打开Google网页的动作,并将符合规则的数据包输出到Alert文件中
在Snort的Rules文件夹下创建myrule文件,输入如下内容:
1 | alert tcp any any -> 172.16.68.139 any (msg:"Google Search Query";content:"search";nocase; sid:10000001;) |
sid snort id ,这个关键字被用来识别snort规则的唯一性。sid 的范围是如下分配的:
<100 保留做将来使用
100-1000,000 包含在snort发布包中
1000,000 作为本地规则使用 msg 标示一个消息.
但是规则中的msg不起作用,sid和msg的对应关系查阅sid-msg.map。
所以这里自定义了一个sid为10000001.
在Snort.conf文件中添加新建的规则文件
1 | include $RULE_PATH/myrule.rules |
开启检测模式。打开浏览器,输入www.google.com到google页面。到Log文件夹下查看Alert文件,规则中的字符串已经被记录了下来,即Snort成功地检测到载入Google网页的动作,所定义的规则起到了预想的作用
1 | snort -i eth0 -c /snort-2.9.17/etc/snort.conf -A fast -l log/snort-detect/ |
注意vm中宿主机和虚拟机的网络模式
尝试定义几个更为实用的规则,并在使用中检验它们的效果。
👉在new.rules中添加如下3条规则:
1 | alert icmp any any -> any any (dsize:0;itype:8;msg:"NMAP PING SCAN"; sid:1000002;) |
运行Snort,在局域网另一台主机上运行Nmap,对主机进行端口扫描。首先使用Nmap的-sP选项进行ping扫描,然后使用-sS选项的SYN扫描,最后使用-sA选项进行ACK扫描。
nmap -sP 172.16.68.0/24
ping 扫描
sudo nmap -sS 172.16.68.0/24
SYN扫描
sudo nmap -sA 172.16.68.0/24
ACK扫描
扫描完成后,回到kali主机查看Alert文件。