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里

vim rules/local.rules
alert icmp any any -> 172.16.68.139 any (msg:"ICMP";sid:41409)

测试规则,看是否有报错

小猪猪跑出来,成功运行

snort -c rules/local.rules -T

利用Snort检测ping攻击

在rules/icmp-info.rules文件中设置如下规则:

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 or test mode will fail to fully validate the configuration and exit with a FATAL error

检验规则是否报错:

snort -c rules/icmp-info.rules -T

开启检测模式

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入侵检测

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文件,输入如下内容:

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文件中添加新建的规则文件

include $RULE_PATH/myrule.rules

开启检测模式。打开浏览器,输入www.google.com到google页面。到Log文件夹下查看Alert文件,规则中的字符串已经被记录了下来,即Snort成功地检测到载入Google网页的动作,所定义的规则起到了预想的作用

snort -i eth0 -c /snort-2.9.17/etc/snort.conf -A fast -l log/snort-detect/

注意vm中宿主机和虚拟机的网络模式

尝试定义几个更为实用的规则,并在使用中检验它们的效果。

👉在new.rules中添加如下3条规则:

alert icmp any any -> any any (dsize:0;itype:8;msg:"NMAP PING SCAN"; sid:1000002;)
alert tcp any any -> any any (flags:SF;msg:"NMAP SYN FIN SCAN"; sid:1000003; )
aler tcp any any -> any any (flags:A;ack:0;msg:"NMAP TCP PING"; sid:1000004)

运行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文件。

评论