信息安全 | 威胁特征规则介绍与编写:Snort规则

Snort规则

Snort是一个轻量级的网络入侵检测系统。具有实时数据流量分析日志IP网络数据包捕获的能力,能够进行协议分析,对内容进行搜索/匹配。通过编写规则文件,能够检测各种不同的攻击方式,对攻击进行实时告警。


支持平台

Windows,Linux和Mac OS


参考文档

wangan.com/docs/snortnet


规则组成

  • 规则头

    • 规则行为
    • 协议类型
    • 源/目的IP地址
    • 子网掩码
    • 方向操作符
    • 源/目的端口
  • 规则选项

    • 告警信息
    • 异常数据的信息(特征码、signature)

例子

alert tcp 202.110.8.1 any -> 122.111.90.8 80 (msg:”Web Access”; sid:1)

规则头

  1. 规则行为

“alert”表示如果这条规则被触发则告警,属于规则行为。除了alet以外,规则行为还有4种,分别是log、pass、activate、dynamic。

  • alert:使用选定的告警方法产生告警信息,并且记录数据包。
  • log:记录数据包
  • pass:忽略数据包
  • activate:告警,接着打开其它的dynamic规则 。
  • dynamic:保持空闲状态,直到被activete规则激活,作为一条log规则。
  1. 协议

每条snort规则的第二项为协议类型,目前支持分析的协议类型:TCP、UDP、ICMP,不排除未来可能对ARP、ICRP、GRE、OSPF、RIP、IPX等协议的支持。

  1. 源/目的IP地址

any 则为定义任意IP地址,比如![192.168.1.0/24,10.1.1.1.0/24]表示非这两个网段的IP。

  1. 端口号

any 则为定义任意端口号,也可以通过设置static静态端口号,或者通过设置端口号的范围,比如 1:1024表示端口号1到端口号1024、500:表示大于等于500的端口号、!1:500表示除了端口号1到500

  1. 方向操作符号

除了单向 “->”方向操作符外,还有“<>”双向操作符。通俗的说就是代表数据包的流向,操作符左边代表源地址\源端口,操作符右边代表目的地址\目的端口。


规则描述

msg:在报警和包日志中打印一个消息。
logto:把包记录到用户指定的文件中而不是记录到标准输出。
ttl:检查ip头的ttl的值。
tos:检查IP头中TOS字段的值。
id:检查ip头的分片id值。
ipoption:查看IP选项字段的特定编码。
fragbits: 检查IP头的分段位。
dsize:检查包的净荷尺寸的值 。
flags:检查tcp flags的值。
seq:检查tcp顺序号的值。
ack:检查tcp应答(acknowledgement)的值。
window:测试TCP窗口域的特殊值。
itype:检查icmp type的值。
icode:检查icmp code的值。
icmp_id:  检查ICMP ECHO ID的值。
icmp_seq: 检查ICMP ECHO 顺序号的值。
content:在包的净荷中搜索指定的样式。
content-list  在数据包载荷中搜索一个模式集合。
offset:content选项的修饰符,设定开始搜索的位置 。
depth:content选项的修饰符,设定搜索的最大深度。
nocase:指定对content字符串大小写不敏感。
session:记录指定会话的应用层信息的内容。
rpc:监视特定应用/进程调用的RPC服务。
resp:主动反应(切断连接等)。
react:响应动作(阻塞web站点)。
reference:外部攻击参考ids。
sid:snort规则id。
rev:规则版本号。
classtype:规则类别标识。
priority:规则优先级标识号。
uricontent:在数据包的URI部分搜索一个内容。
tag: 规则的高级记录行为。
ip_proto:IP头的协议字段值。
sameip:判定源IP和目的IP是否相等。
stateless:忽略刘状态的有效性。
regex:通配符模式匹配。
distance:强迫关系模式匹配所跳过的距离。
within:强迫关系模式匹配所在的范围。
byte_test:数字模式匹配。
byte_jump:数字模式测试和偏移量调整。
flow:这个选项要和TCP流重建联合使用。它允许规则只应用到流量流的某个方向上。这将允许规则只应用到客户端或者服务器端

规则例子

  • 记录所有telnet登陆到一个特定主机的数据包
log tcp any any -> 192.168.1.1/32 23
  • 在第一条规则基础上记录双向流量
log tcp any any <> 192.168.1.1/32 23
  • 记录了所有到达本地主机的icmp数据包
log icmp any any -> 192.168.1.0/24 any
  • 允许双向的从你的机子到其他站点的http包
pass tcp any 80 <> 192.168.1.0/24 any
  • 这条告警规则显示了本地主机对其他主机的111端口的访问,并在log中显示端口影射调用(‘portmapper call’)信息
alert tcp 192.168.1.0/24 any -> any 111 (msg:"Portmapper call";)
  • 记录其他任意地址的小于1024端口访问本地小于1024端口的流量
log tcp any :1024 -> 192.168.1.0/24 :1024
  • 规则将会发现SYN FIN扫描
alert tcp any any -> 192.168.1.0/24 any (msg:"SYN-FIN scan!"; flags: SF;)
  • 规则将会发现空tcp扫描
alert tcp any any -> 192.168.1.0/24 any (msg:"Null scan!"; flags: 0;)
  • 规则将会发现Queso fingerprint扫描
alert tcp any any -> 192.168.1.0/24 any (msg:"Queso fingerprint";flags: S12;)
  • 这条规则将进行基于内容的查找以发现溢出攻击
alert tcp any any -> 192.168.1.0/24 143 (msg:"IMAP Buffer overflow!"; content:"|90E8 C0FF FFFF|/bin/sh";)
  • 这条规则将会发现PHF攻击
alert tcp any any -> 192.168.1.0/24 80 (msg:"PHF attempt"; content:"/cgi-bin/phf";)
  • 规则将会发现traceroute包
alert udp any any -> 192.168.1.0/24 any (msg:"Traceroute"; ttl:1;)
  • 规则将会发现其他主机对本地发出的icmp包
alert udp any any -> 192.168.1.0/24 any (msg:"Traceroute"; ttl:1;)
  • 这条规则发现nmap的tcp 的ping扫描
alert tcp any any -> 192.168.1.0/24 any (flags: A; ack: 0; msg:"NMAP TCP ping!";)
  • 这条规则将会发现源路由的数据包(源路由攻击)
alert tcp any any -> any any (ipopts: lsrr; msg: "Source Routed packet!";)

Kali下安装Snort

sudo apt-get update
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install aptitude
sudo aptitude install libpcap-dev
sudo apt-get install automake
sudo ldconifg
aptitude install libpcre3-dev
aptitude install libdumbnet-dev
aptitude install zlib1g-dev
wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
tar xvzf daq-2.0.7.tar.gz
cd daq-2.0.7
./configure && make && sudo make install
wget https://www.snort.org/downloads/snort/snort-2.9.16.1
.tar.gz
tar xvzf snort-2.9.16.1.tar.gz
cd snort-2.9.16.1
./configure --disable-open-appid --enable-sourcefire && make && sudo  make install
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值