开源入侵检测系统—Snort的配置与检测规则编写
IDS(入侵检测系统)模式配置1、创建snort用户和组,其中snort为非特权用户groupadd snortuseradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort2、配置目录IDS 模式运行时会创建一些目录,其中配置文件储存在 /etc/snort 中,规则储存在 /etc/snort/rules中,编译规则储存在 /usr/local/
IDS(入侵检测系统)模式配置
1、创建snort用户和组,其中snort为非特权用户
groupadd snort
useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
2、配置目录
IDS 模式运行时会创建一些目录,其中配置文件储存在 /etc/snort 中,规则储存在 /etc/snort/rules中,编译规则储存在 /usr/local/lib/snort_dynamicrules 中,日志粗存在 /var/log/snort 中
#创建snort目录
mkdir /etc/snort
mkdir /etc/snort/rules
mkdir /etc/snort/rules/iplists
mkdir /etc/snort/preproc_rules
mkdir /usr/local/lib/snort_dynamicrules
mkdir /etc/snort/so_rules
#创建储存规则文件
touch /etc/snort/rules/iplists/black_list.rules
touch /etc/snort/rules/iplists/white_list.rules
touch /etc/snort/rules/local.rules
touch /etc/snort/sid-msg.map
#创建日志目录
mkdir /var/log/snort
mkdir /var/log/snort/archived_logs
#修改文件权限
chmod -R 5775 /etc/snort
chmod -R 5775 /var/log/snort
chmod -R 5775 /var/log/snort/archived_logs
chmod -R 5775 /etc/snort/so_rules
chmod -R 5775 /usr/local/lib/snort_dynamicrules
#修改文件属主
chown -R snort:snort /etc/snort
chown -R snort:snort /var/log/snort
chown -R snort:snort /usr/local/lib/snort_dynamicrules
#将配置文件从源文件复制到/etc/snort/中
cd /snort-2.9.18.1/etc/ # (进入snort安装目录,每个人可能不同)
cp *.conf* /etc/snort
cp *.map /etc/snort
cp *.dtd /etc/snort
cd /root/snort-2.9.18.1/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor
cp * /usr/local/lib/snort_dynamicpreprocessor/
3、配置规则
我们使用官方给的免费的社区规则,如果有需要的话可以选择官方的其他套餐
(社区套餐免费;注册即可领注册套餐;付费套餐)
wget https://www.snort.org/downloads/community/community-rules.tar.gz
解压,添加
tar -xvzf community-rules.tar.gz
cp community-rules/* /etc/snort/rules/
4、修改配置文件
vim /etc/snort/snort.conf
# 在45行附近 ipvar HOME_NET <any>修改为本机的内部网络
ipvar HOME_NET <ip>.1/24
# 在104行附近 配置规则文件路径
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/prepproc_rules
var WHITE_LIST_PATH /etc/snort/rules/iplists
var BLACK_LIST_PATH /etc/snort/rules/iplists
#在515行 output unified2:....... 之后添加
output unified2: filename snort.u2, limit 128
#546行,取消注释local.rules文件,后面的 include 文件均注释掉
include $RULE_PATH/local.rules
保存,退出
检查规则是否配置完成
snort -T -c /etc/snort/snort.conf
出现如下界面说明规则配置完成
至此我们已经成功的将 Snort 配置为 IDS 来保护我们的网络
5、检测规则编写
snort规则格式
snort允许用户编写自己的规则来生成传入/传出的网络数据包日志
snort的规则主要由 “标题”和 “选项" 组成,两者由不同的字段组成,如下:
###标题字段(必须)
action:snort发现匹配规则时要执行的动作,包括(alert、log、pass、activate、dynamic)
Protocol:流量使用的协议(ip、tcp、udp、icmp等)
Source IP:攻击者/访问者的 IP
Source port:攻击者/访问者的 端口
方向运算符:" ->"、"<>" 表示发送方和接收方网络流量方向
Destination IP:目标IP,一般是收IDS保护的主机 IP
Destination Port:目标端口,一般是接受流量的主机端口
###选项字段(在括号中,可选。参数和值之间以冒号分隔,参数和参数之间以分号分隔)
###选项字段有四大类(常规、有效载荷、非有效载荷、检测后触发器)
###如下是一般规则
1).msg:在报警和日志中打印的消息,
2).logto:把日志记录到一个用户指定的文件,而不是输出到标准的输出文件,如:logto:'<filename>';
3).ttl:测试IP包头的TTL域的值
4).tos:测试IP包头的TOS域的值
5).id:测试IP分组标志符(fragment ID)域是否是一个特定的值
6).ipoption:查看IP选项(IP option)域
7).fragbits:测试IP包头的分片位(fragmentation bit)
8).dsize:测试数据包包数据段的大小
9).flags:测试TCP标志(flag)是否是某个值
10).seq:测试TCP包的序列号是否是某个值
11).ack:测试TCP包的确认(acknowledgement)域是否为某个值
12).itype:测试ICMP数据包的类型(type)域
13).icode:测试ICMP数据包的编码(code)域
14).icmp_id:测试ICMP回送包的标志符(ICMP ECHO ID)是否为某个值
15).content:在数据包的数据段中搜索模式(pattern)
16).content-list:在数据包的数据段中搜索模式清单
17).offset:设置开始搜索的偏移量
18).depth:设置搜索最大深度
19).nocase:大小写不敏感匹配内容字符串
20).session:剥离一个对话的应用层信息
21).rpc:观察RPC服务对特定应用程序的调用
22).resp:激活反应措施(断开连接等)
23).react:激活反应措施(阻塞WEB站点)
实践一下,检测对 80 端口的访问,可以像下面这样
vim/etc/snort/rules/local.rules
alert tcp any any -> 192.168.43.97 80 (msg:"A test guys";reference:"A Robot";sid:1)
编写来自 ping 的数据包
alert icmp any any -> 192.168.43.97 any (msg:"A boring guys";reference:"A Robot";sid:2)
保存,退出
激活 snort 控制台检测流量
snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i ens33
浏览器访问 80 端口
从上图能过够看到攻击者的 IP 及 端口
现在模拟其他用户/攻击者去 ping 该主机
ping 192.168.43.97
可以看到控制台上检测的流量
从 192.168.43.206 到 192.168.43.97
下一篇更多的熟悉检测规则
详细规则见:
http://drops.xmd5.com/static/drops/%E6%9D%A9%E6%84%AE%E6%B7%AE%E7%80%B9%E5%A4%8A%E5%8F%8F-9232.html
更多推荐
所有评论(0)