预处理程序

预处理程序从Snort版本1.5开始引入,使得Snort的功能可以很容易地扩展,用户和程序员能够将模块化的插件方便地融入Snort之中。预处理程序代码在探测引擎被调用之前运行,但在数据包译码之后。通过这个机制,数据包可以通过额外的方法被修改或分析。使用preprocessor关键字加载和配置预处理程序。在Snort规则文件中的preprocessor指令格式如下: 
preprocessor <name>: <options> 
例子: 
preprocessor minfrag: 128 


HTTP Decode 
HTTP Decode用于处理HTTP URI字符串并且将串中的数据转化为可读的ASCII字串。HTTP对于一些特性定义了一个十六进制编码方法,例如字符串%20被解释成一个空格。Web服务器被设计成能够处理无数的客户端并且支持多种不同的标准。 
格式: 
http_decode:<port list> [unicode] [iis_alt_unicode][double_encode] [iis_flip_slash] [full_whitespace] 
例子: 
preprocessor http_decode: 80 8080 unicode iis_flip_slash iis_alt_unicode 

Portscan Detector 
Snort Portscan预处理程序的用处: 
向标准记录设备中记录从一个源IP地址来的端口扫描的开始和结束。 
如果指定了一个记录文件,在记录扫描类型的同时也记录目的IP地址和端口。 
端口扫描定义为在时间T(秒)之内向超过P个端口进行TCP连接尝试,或者在时间T(秒)之内向超过P个端口发送UDP数据包。端口扫描可以是对任一IP地址的多个端口,也可以是对多个IP地址的同一端口进行。现在这个版本可以处理一对一和一对多方式的端口扫描,下一个完全版本将可以处理分布式的端口扫描(多对一或多对多)。端口扫描也包括单一的秘密扫描(stealth scan)数据包,比如NULL,FIN,SYNFIN,XMAS等。如果包括秘密扫描的话,端口扫描模块会对每一个扫描数据包告警。为避免这种情况,可以在Snort标准发行版中的scan-lib文件里把有关秘密扫描数据包的小节注释掉,这样对每次扫描就只记录一次。如果使用外部记录特性,可以在记录文件中看到(端口扫描的?)技术和类型。该模块的参数如下: 
network to monitor 监视端口扫描的目标网络以network/CIDR表示。 
number of ports 在探测期间访问的端口数目。 
detection period 以秒计数的端口访问时间限制。 
logdir/filename 告警信息存放的目录/文件名,告警也可以写入标准的告警文件中。 
格式: 
portscan: <monitor network> <number of ports> <detection period> <file path> 
例子: 
preprocessor portscan: 192.168.1.0/24 /var/log/portscan.log 

Portscan Ignorehosts 
如果用户的服务器(比如NTP,NFS和DNS服务器)会妨碍端口扫描的探测,可以通知portscan模块忽略源自这些主机的TCP SYN和UDP端口扫描。该模块的参数为IPs/CIDR的列表。 
格式: 
portscan-ignorehosts: <host list> 
例子: 
preprocessor portscan-ignorehosts: 192.168.1.5/32 192.168.3.0/24 

Frag2 
Frag2是一个新的IP碎片重组预处理器。Frag2的内存使用和碎片时间超时选项是可配置的。不给出参数,frag2将使用缺省的内存量(4MB)和时间超时值(60秒)。这个时间值用来决定一个没有重组的分段将被丢弃的时间长度。 
格式 
preprocessor frag2: [memcap <xxx>], [timeout <xx>], [min_ttl <xx>], [detect_state_problems], [ttl_limit <xx>] 

timeout <seconds> 在状态表中保存一个不活跃的流的最大时间值,如果发现活动就重新刷新对话并且这个会话被自动拾起。缺省值是30秒。 
memcap <bytes> 内存消耗的最大值,如果超出这个值,frag2就强制削减那些不活跃的会话,缺省值是4MB。detect_state_problems turns on alerts for events such as overlapping fragments 
min_ttl <xx> 设置frag2接受的最小ttl值。 
detect_state_problems 发现重叠分段时报警。 
ttl_limit <xx> 设置ttl的极限值,它可以避免报警。 (初始化段 TTL +/- TTL Limit) 
例子: 
preprocessor frag2: memcap 16777216, timeout 30 

Stream4 
Stream4模块使snort 具有 TCP流从新组装和状态分析能力。强壮的流重组能力使得snort能够忽视无“状态”攻击,例如,stick粘滞位攻击。Stream4也能够给大量用户提供超过256个TCP同步连接。Stream4缺省配置时能够处理32768个TCP同步连接。Stream4有两个可配置的模块,stream4 preprocessor 和相关的 stream4_reassemble 插件。stream4_reassemble有如下选项: 
Stream4 格式: 
preprocessor stream4: [noinspect], keepstats [machine|binary], [timeout <seconds>], [memcap <bytes>], [detect_scans], [detect_state_problems], [disable_evasion_alerts], [ttl_limit <count>] 

noinspect 关闭状态监测能力。 
keepstats [machine|binary] 保持会话统计,如果是“machine”选项就从机器以平坦的模式读入,如果是“binary”选项就用统一的二进制模式输出。 
timeout <seconds> 在状态表中保存一个不活跃的流的最大时间值,如果发现活动就重新刷新对话并且这个会话被自动拾起。缺省值是30秒。 
memcap <bytes> 内存消耗的最大值,如果超出这个值,frag2就强制削减那些不活跃的会话,缺省值是8MB。 
detect_scans 打开portscan 的报警能力。 
detect_state_problems 打开流事件报警能力,例如,没有RST的数据包、带有数据的SYN包和超出窗口序列号的包。 
disable_evasion_alerts 关闭事件报警能力,例如,TCP重叠。 
ttl_limit 设置ttl的极限值。 

Stream4_Reassemble 格式: 
preprocessor stream4_reassemble: [clientonly], [serveronly],[noalerts], [ports <portlist>] 
clientonly 对一个连接的客户端提供重组 
serveronly 对一个连接的服务器端提供重组 
noalerts 对于插入和逃避攻击事件不发出报警 
ports <portlist> 一个空格分隔的执行重组的端口列表,all将对所有的端口进行重组。缺省对如下端口重组: 21 23 25 53 80 110 111 143 和 513 

注: 在配置文件中仅仅设置stream4和stream4_reassemble 命令而没有参数,它们将会使用缺省的参数配置。Stream4引入了一个新的命令行参数:-z 。在TCP流量中,如果指定了 –z 参数,snort将只对那些通过三次握手建立的流以及那些协作的双向活动的流(即,一些流量走一个方向而其他一些除了一个RST或FIN外走相反方向)检测报警。当设置了-z 选项后snort就完全忽略基于TCP的stick/snot攻击。 

Conversation 
Conversation 预处理器使Snort 能够得到关于协议的基本的会话状态而不仅仅是由spp_stream4处理的TCP状态。 
目前它使用和stream4相同的内存保护机制,所以它能保护自己免受DOS攻击。当它接收到一个你的网络不允许的协议的数据包时,它也能产生一个报警信息。要做到这一点,请在IP协议列表中设置你允许的IP协议,并且当它收到一个不允许的数据包时,它将报警并记录这个数据包。 
格式: 
preprocessor conversation: [allowed_ip_protocols <protonumbers|all>], [timeout <sec>], [alert_odd_protocols], [max_conversations <number>] 

Portscan2 
这个模块将检测端口扫描。它要求包含Conversation预处理器以便判定一个会话是什么时间开始的。它的目的是能够检测快速扫描,例如,快速的nmap扫描。 
格式: 
preprocessor portscan2: [scanners_max <num>], [targets_max <num>], [target_limit <num>], [port_limit <num>], [timeout <sec>] 

scaners_max 一次所支持的扫描一个网络的主机数 
targets_max 分配代表主机的节点的最大数 
target_limit 在一个扫描触发前,一个扫描器所允许扫描的最大的主机数 
port_limit 在一个扫描触发前,一个扫描器所允许扫描的最大的端口数 
timeout 一个扫描行为被忘记的秒数 

Telnet Decode 
telnet_decode 预处理器使snort能够标准化telnet会话数据的控制协议字符。它把数据包规格和成单独的数据缓存,这样原始数据就能够通过rawbytes content 修饰词来记录或者检验了。缺省情况下,它运行在21, 23, 25, 和119端口. 
格式: 
preprocessor telnet_decode: <ports> 

RPC Decode 
Rpc_decode 预处理器将RPC的多个碎片记录组合成一个完整的记录。它是通过将数据包放在标准缓存中来做到这一点的。如果打开stream4预处理器功能。它将只处理客户端的流量。它缺省运行在 111和 32771端口。 
格式: 
preprocessor rpc_decode: <ports> alert_fragments [no_alert_multiple_requests] [no_alert_large_fragments] [no_alert_incomplete] 

Perf Monitor 
这个模块是用来评估snort各方面性能的一个工具。它的输出格式和参数格式都是变化的,在这里就不给出注释了。 

Http Flow 
使用这个模块可以忽略HTTP头后面的HTTP服务响应。

转载于:https://my.oschina.net/u/1462613/blog/223834

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值