编写规则的分析语法分析

alert icmp any any  $HOME_NET any (logto:"task1";msg:"---msg---";sid:100001)
1    2   3  4 5   6   7           8

1.响应机制

snort对规则的响应机制有5种

alert #警报并记录pass #忽略log  #记录
activation #警报并启动另一个动态规则链
dynamic 由其他规则包调用

2.协议

snort能够分析的协议是:TCP、UDP和ICMP

3和4

源IP地址 源IP地址端口 #这些地址只能使用数字/CIDR

5 数据包流向

->单向<-单向双向

6和7

目的ip地址 目的ip地址端口

8可选项内容

1 msg 在警报和记录的数据中打印消息。 2 logto 将数据包记录到一个用户指定的文件 中。 3 ttl 检测 IP 数据包的 TTL 域。 4 id 检测 IP 数据包的分段 ID 域是否等于特定 的值。 5 dsize 检测数据包的有效荷载是否等于特定 的值。 6 content 在数据包的有效荷载重搜索特定的模 式串。 7 offset 设定 content 中所说的起点。 8 depth 设定 content 中所说的终点。 9 nocase 设定搜索中使用与大小写无关的方 式。10 flags 检测 TCP 数据包的标志是否等于特定的 值。11 seq 检测 TCP 的顺序号是否对于特定的值。12 ack 检测 TCP 的应答域否对于特定的值。13 itype 检测 ICMP 类型域是否等于特定的值。14 icode 检测 ICMP CODE域是否等于特定的值。15 session 将应用层中一个指定的会话总的数据 复制出来。16 icmp id 检测 ICMP ECHO ID 域是否等于特 定的值。17 icmp seq 检测 ICMP ECHO 顺序号是否等于 特定的值。18 ipoption 检测 IP 数据包中的协议头部的选项 部分是否存在特定值。19 rpc 检测 RPC服务的特定应用。20 resp 主动应答。格式 key:"pass";

告警设置snort运行参数

-c     指定配置文件-l        指定log存放目录-L        指定log记录名称,与-l配合-r        指定读取的pcap报文

接口配置参数
-i   #指定监听报文接口
-I   #报警输出可以指定某个接口

-h 指定目标主机 192.168.0.0/24指定这个网段的所有主机
-dve 指定显示数据链路层的信息

报警模式的设置

-A fast  #快速警报模式。使用时间戳、警报消息、源和目标IP/端口以简单格式写入警报-A full  #完全警报模式。这是默认警报模式,如果未指定模式,将自动使用-A unsock  #向另一个程序可以监听的unix套接字发送警报-A none  #关闭警报-A console  #向控制台发送“快速样式”警报-A cmg  #生成“cmg样式“警报

snort.conf详解

1)set the network variables  #配置了多组IP变量 端口变量用于rules 部分路径信息寻找规则和库文件 2)Configure the decoder  #解码器报警3)Configure the base detection engine #配置基础检测引擎参数4) Configure dynamic loaded libraries #配置动态加载库路径,动态规则路径5) Configure preprocessors # 配置预处理器的开关,会把部分协议数据转化成变量6) Configure output plugins #配置高速模式下的输出方式7) Customize your rule set #配置自定义规则8) Customize preprocessor and decoder rule set #配置预处理器和解码器规则集合9) Customize shared object rule set  #配置共享对象规则
# 设置要保护的网络地址ipvar HOME_NET any# 设置外部网络地址。在大多数情况下保留为 anyipvar EXTERNAL_NET any# 您网络上的DNS服务器列表ipvar DNS_SERVERS $HOME_NET# 您网络上的SMTP服务器列表ipvar SMTP_SERVERS $HOME_NET# 您网络上的web服务器列表ipvar HTTP_SERVERS $HOME_NET# 您网络上的sql服务器列表 ipvar SQL_SERVERS $HOME_NET# 您网络上的telnet服务器列表ipvar TELNET_SERVERS $HOME_NET# 您网络上的ssh服务器列表ipvar SSH_SERVERS $HOME_NET# 您网络上的ftp服务器列表ipvar FTP_SERVERS $HOME_NET# 您网络上的sip服务器列表ipvar SIP_SERVERS $HOME_NET# 运行web服务器的端口列表portvar HTTP_PORTS [36,80,81,82,83,84,85,86,87,88,89,90,311,383,443,555,591,593,623,631,664,801,808,818,901,972,1158,1220,1270,1414,1533,1581,1719,1720,1741,1801,1812,1830,1942,2231,2301,2375,2381,2578,2809,2869,2980,3000,3029,3037,3057,3128,3443,3702,4000,4343,4592,4848,5000,5054,5060,5061,5117,5222,5250,5416,5443,5450,5480,5555,5600,5814,5894,5984,5985,5986,6080,6173,6988,7000,7001,7005,7070,7071,7080,7144,7145,7180,7181,7510,7770,7777,7778,7779,8000,8001,8008,8014,8015,8020,8028,8040,8080,8081,8082,8085,8088,8090,8095,8118,8123,8161,8180,8181,8182,8222,8243,8280,8300,8333,8344,8393,8400,8443,8484,8500,8509,8694,8787,8800,8852,8880,8888,8899,8983,9000,9001,9002,9050,9060,9080,9090,9091,9111,9200,9201,9290,9443,9447,9700,9710,9788,9830,9850,9999,10000,10080,10100,10250,10255,10297,10443,11371,12601,13014,14592,15489,16000,16992,16993,16994,16995,17000,18081,19980,29991,30007,30018,30888,33300,34412,34443,34444,36099,40007,41080,44449,49152,49153,50000,50002,50452,51423,53331,54444,55252,55555,56712]# 查看shellcode的端口列表,shellcode是一段用于利用软件漏洞而执行的代码portvar SHELLCODE_PORTS !80# 可能看到oracle攻击的端口列表portvar ORACLE_PORTS 1024:# 要查找SSH连接的端口列表portvar SSH_PORTS 22# 运行ftp服务器的端口列表portvar FTP_PORTS [21,2100,3535]#运行SIP服务器的端口列表portvar SIP_PORTS [5060,5061,5600]# 用于文件检查的文件数据端口列表portvar FILE_DATA_PORTS [$HTTP_PORTS,110,143]# GTP预处理器使用的GTP端口列表portvar GTP_PORTS [2123,2152,3386]# 其他变量,不要修改ipvar AIM_SERVERS [64.12.24.0/23,64.12.28.0/23,64.12.161.0/24,64.12.163.0/24,64.12.200.0/24,205.188.3.0/24,205.188.5.0/24,205.188.7.0/24,205.188.9.0/24,205.188.153.0/24,205.188.179.0/24,205.188.248.0/24]# 你的规则文件路径 (可以是相对路径)var RULE_PATH ../rulesvar SO_RULE_PATH ../so_rulesvar PREPROC_RULE_PATH ../preproc_rules#如果使用黑白名单预处理器,请配置这些var WHITE_LIST_PATH ../rulesvar BLACK_LIST_PATH ../rules
三种变量ipvar   定义一组IP 这种定义可以是一种ip或几个ip ipvar example[1.1.1.1,2.2.2.0/24]portvar  定义一组端口,可以是一个端口几个端口 端口范围 portvar exampble[80,91:94]var    定义一个普通变量 var PREPROC_RULE_PATH ../preproc_rules