Snort中文手册
- 格式:doc
- 大小:77.00 KB
- 文档页数:25
一、设置网络变量1、网络变量配置用户通过声明网络参数变量配置snort,variables可以包含字符串(路径)、IP和端口。
1)IP变量与IP列表IP有四声明方式:对IP具体声明、列表形式以及CIDR组,或者它们的任意组合。
IP变量以ipvar关键字声明。
示例:ipvar EXAMPLE [1.1.1.1,2.2.2.0/24,![2.2.2.2,2.2.2.3]]2)端口变量与列表端口列表支持端口声明及查找端口列表范围。
端口范围从0到65535.端口变量以portvar声明,示例:portvar EXAMPLE1 80portvar EXAMPLE3 anyportvar EXAMPLE4 [!70:90]portvar EXAMPLE5 [80,91:95,100:200]portvar pvar1 80portvar pvar2 [$pvar1,90]alert tcp any $EXAMPLE1 -> any $EXAMPLE2_PORT (msg:"Example"; sid:1;)alert tcp any $PORT_EXAMPLE2 -> any any (msg:"Example"; sid:2;)alert tcp any 90 -> any [100:1000,9999:20000] (msg:"Example"; sid:3;)配置服务器列表DNS服务:var DNS_SERVERS $HOME_NETSMTP服务:var SMTP_SERVERS $HOME_NETWeb 服务:var HTTP_SERVERS $HOME_NETSQL服务:var SQL_SERVERZ $HOME_NETTelnet服务:var TELNET_SERVERS $HOME_NETFTP服务:var FTP_SERVERS $HOME_NETSNMP服务:var SNMP_SERVERS $HOME_NET配置服务端口这使得snort去跟踪针对特点端口应用的攻击,如web server在端口8180上,则应这样配置:portvar HTTP_PORTS 8180不过这个值通常为80,因此定义为:portvar HTTP_PORTS 80如果希望定义多HTTP端口:portvar HTTP_PROTS [80,8080] 或者portvar HTTP_PROTS[80,8000:8080]eg:定义希望发现SHELLCODE的端口:portvar SHELLCODE_PORTS !80可能发现对ORACLE的攻击:portvar ORACLE_PORTS 1521针对FTP服务的端口:portvar FTP_PORTS 21配置rules文件路径这个可以是一个相对路径var RULE_PATH /etc/snort/rulesvar PREPROC_RULE_PATH /etc/snort/preproc_rules二、配置解码器解码器解码是数据包进入snort的第一个处理过程。
安装方法:如果你安装好了libpcap后,对snort安装将是很简单,关于libpcap的安装说明,你可以看看blackfire(/~bobdai/的一些文章,关于WINDOWS下的winpcap你可以看我站上的SNIFFER FOR NT上的安装说明。
装好libpcap后,你可以使用通常的命令:1.) ./configure 2.) make3.) make install 装好后你可以使用make clean清除一些安装时候产生的文件。
(有些系统如freebsd已经支持了libpcap,所以很轻松,不用再装了)。
而WINDOWS更简单,只要解包出来就可以了;参数介绍:命令行是snort -[options] <filters>选项:-A <alert> 设置<alert>的模式是full,fast,还是none full模式是记录标准的alert模式到alert文件中;Fast模式只写入时间戳,messages, IPs,ports到文件中,None模式关闭报警。
-a 是显示ARP包;-b 是把LOG的信息包记录为TCPDUMP格式,所有信息包都被记录为两进制形式,名字如snort-0612@1385.log,这个选项对于FAST 记录模式比较好,因为它不需要花费包的信息转化为文本的时间。
Snort在100Mbps网络中使用"-b"比较好。
-c <cf> 使用配置文件<cf>,这个规则文件是告诉系统什么样的信息要LOG,或者要报警,或者通过。
-C 在信息包信息使用ASCII码来显示,而不是hexdump,-d 解码应用层。
-D 把snort以守护进程的方法来运行,默认情况下ALERT记录发送到/var/log/snort.alert文件中去。
-e 显示并记录2个信息包头的数据。
-F <bpf>从<bpf>文件中读BPF过滤器(filters),这里的filters是标准的BPF格式过滤器,你可以在TCPDump里看到,你可以查看TCPDump 的man页怎样使用这个过滤器。
在官网下载了最新版的windows平台下的snort安装包Snort_2.9.2.3_Installer.exe和规则文件库snort-2.9.2.3.tar.zip(也有需要付费的规制库),查阅了网上的资料终于把基本的安装和IDS模式配置完成了,写成学习笔记以便加强记忆。
------------------------------------------------------------1、由于我本机已经安装了WinPcap_4_1_2.exe,可满足当前Snort版本对WinPcap版本的要求,所以只下载了Snort。
首先安装Snort_2.9.2.3_Installer.exe,过程比较简单,由于只是自己测试,我没有进行过多的设置一路Next安装完毕,默认路径C:\Snort,最后弹出Snort has successfullly been installed.窗口,点击“确定”安装成功;之后同样步骤完成了WinPcap_4_1_2.exe的安装。
2、配置环境变量(我感觉我不配置也可以啊),如下图所示:3、运行cmd,输入“snort -?”可以查看snort相关命令行,如下图所示:4、导入规则文件库(需网站注册),解压下载下来的snort-2.9.2.3.tar.zip,得到四个文件夹:将文件夹下的文件复制到snort安装目录下对应的文件中,我安完snort安装目录下没有so_rules文件夹,就直接复制过去了。
5、然后启用ids模式,执行以下命令:snort -dev -l c:\snort\log -c c:\snort\etc\snort.conf这时遇到了很多问题,主要都是由于snort.conf配置文件的错误,找了一些资料及snort官网的论坛,终于解决了,可能有些解决的办法不一定是很好的,不管怎样终于可以运行起来了。
第一个错误:ERROR:c:\Snort\etc\snort.conf(39) Unknown rule type:ipvar解决办法:把snort.conf文件中的ipvar改为var(可能不是根本的解决办法)解决之后重复执行上图的运行命令,会弹出第二个错误,以下依次类推。
Snort简明使用手册2007-03-22 22:28Snort2.6——USAGE(中文)1.0 开始使用snortSnort不是很难使用,但是也存在着很多的命令行选项需要掌握,并且它们中许多很多时候并不能一起使用。
这个文件的目的就是使新人能够更简单的使用snort。
在我们进行下一步之前,有一些关于snort的基本概念需要了解。
snort能够配置成三种模式运行:嗅探器(sniffer),包记录器(packet logger)和网络入侵检测系统(NIDS)。
嗅探模式(sniffer mode)简单的读取网络中的数据包,并以连续的数据流显示在控制台上。
包记录模式(packet logger mode)把捕获的数据包记录在磁盘上。
网络入侵检测模式(NIDS mode)是最复杂的、有机的配置,在这个模式下,snort分析网络中的数据,并通过使用用户自定义的规则集进行模式匹配,并根据匹配的结果执行多种操作。
2.0 嗅探模式(sniffer mode)首先,让我们从基础开始。
如果你只是想要在屏幕上打印出TCP/IP的包头信息(嗅探模式),使用下面的命令:./snort –v使用这个命令运行snort,将只显示IP和TCP/UDP/ICMP头信息,而不显示任何其它信息。
如果你想要查看传输的有效负载信息,可以使用如下命令:./snort –vd这条命令在打印协议头信息的同时也打印相应的包数据。
如果你想要一个更详细的现实,可以使用下面的命令来打印出数据链路层头信息:./snort –vde(注:这些选项参数能够分开或者拆散成任和结合的方式。
比如上一个命令也可以写做这种方式:./snort -d -v –e来达到同样的效果)3.0 包记录模式(PACKET LOGGER MODE)好的,上面的命令运行的都相当的好。
但是如果你想要记录包到磁盘上,你需要指定一个记录目录,然后snort将自动的进入包记录模式:./snort -dev -l ./log当然,这里假设你在当前目录下有一个叫做―log‖的目录。
Snort 使用手册,第 1 部分: 安装与配置 保护和分析 Web 站点及其流量2007 年 6 月 24 日Web 站点是 Internet 技术中最脆弱也最易受攻击的部分。
尝试接触 Snort ,它是一款免费、开源的网络入侵防御系统(Network Intrusion Prevention System ,NIPS )和网络入侵检测系统(Network Intrusion Detection System ,NIDS )工具,用于管理和防御黑客入侵您的 Web 站点、应用程序和支持 Internet 的程序。
了解 Snort 能够如何帮助保护您的站点,分析您的网络的真实情况。
学习本文之后,您将懂得利用 Snort 提供的某些高级入侵检测,并根据 Snort 提供的信息来优化您的站点和网络。
安全性是重中之重假设您已经付出了几个月乃至几年的时间来学习最热门的 Web 技术。
您阅读了 developerWorks 的文章,购买了相关图书,在您的 Mac OS X 终端和 Windows® shell 上进行了试验。
您已经设法构建了一个非常出色的约有 100 个页面的 Web 应用程序 ——— 有一部分是静态 HTML ,还有一部分由 PHP 脚本生成。
您已经开始添加某些 Ajax 技术和特效,使您的站点更具交互性,更具响应能力。
您正处于 Web 编程世界的巅峰。
然而某一天早上醒来之后,您突然发现站点上全是某个与您毫无相关的站点的全页横幅广告。
此外,您的购物车也慢得跟蜗牛一样,因为数千个无用数据包正在冲击您的 Web 站点,这也使客户烦恼和愤怒。
尽管听起来很有戏剧性,但大多数认真的 Web 开发人都知道有些人已经遇到过类似的场景,或者自己亲身经历过这样的场景。
无论您的站点或应用程序有多出色,只要未得到周全的保护,即便是相当成功的,也会成为攻击的目标。
无论是十二岁的顽童,还是作为商业间谍的专业黑客,Web 站点都是非常脆弱的,比其他类型的应用程序更容易受到攻击。
Snort 中文手册摘要snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。
嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。
数据包记录器模式把数据包记录到硬盘上。
网路入侵检测模式是最复杂的,而且是可配置的。
我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
(2003-12-11 16:39:12)--------------------------------------------------------------------------------Snort 用户手册第一章 snort简介snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。
嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。
数据包记录器模式把数据包记录到硬盘上。
网路入侵检测模式是最复杂的,而且是可配置的。
我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
嗅探器所谓的嗅探器模式就是snort从网络上读出数据包然后显示在你的控制台上。
首先,我们从最基本的用法入手。
如果你只要把TCP/IP包头信息打印在屏幕上,只需要输入下面的命令:./snort -v使用这个命令将使snort只输出IP和TCP/UDP/ICMP的包头信息。
如果你要看到应用层的数据,可以使用:./snort -vd这条命令使snort在输出包头信息的同时显示包的数据信息。
如果你还要显示数据链路层的信息,就使用下面的命令:./snort -vde注意这些选项开关还可以分开写或者任意结合在一块。
例如:下面的命令就和上面最后的一条命令等价:./snort -d -v –e数据包记录器如果要把所有的包记录到硬盘上,你需要指定一个日志目录,snort就会自动记录数据包:./snort -dev -l ./log当然,./log目录必须存在,否则snort就会报告错误信息并退出。
Snort命令参数详解用法:snort -[options]选项:-A 设置报警模式,alert = full/fast/none/unsock,详解上一篇snort简介。
-b 用二进制文件保存网络数据包,以应付高吞吐量的网络。
-B 将IP地址信息抹掉,去隐私化。
-c 使用配置文件,这会使得snort进入IDS模式,并从中读取运行的配置信息。
-d 显示包的应用层数据。
-D 以后台进程运行snort。
如无指定,Alerts将写到/var/log/snort/alert。
-e 显示数据链路层的信息。
-E 保存报警日志为windows事件日志。
-f 激活PCAP行缓冲(line buffering)。
-F 指定BPF过滤器。
-g 初始化Snort后以组ID(group ID)运行。
-G 为事件生成设置一个基础事件id值。
-h 设置本地网络为hn,如192.168.1.0/24。
-i 设置网络接口为。
可以用-W选项查询网络接口列表,然后用接口序号index指定接口。
如-i 2-I 报警时附加上接口信息。
-J 当以in-line模式运行时,这个选项将只捕获端口的报文。
-k 为all,noip,notcp,noudp,noicmp,or none设置校验和模式。
-K 设置保存文件的格式:pcap,ascii,none。
pcap是默认格式,同于-b选项的格式。
ascii是老的模式格式。
none则关闭数据包记录。
-l 设置数据包文件存放目录。
默认目录是/var/log/snort.-L 设置二进制输出文件的文件名为。
-M 当以非后台模式daemon运行时,保存信息到syslog。
-m 设置snort输出文件的权限位。
-n 出来个报文后终止程序。
-N 关闭保存日志包功能。
-o 改变应用规则的顺序。
从Alert-->Pass-->Log顺序改为Pass-->Alert-->Log,避免了设置大量BPF命令行参数来过滤alert规则。
第二章编写snort 规则基础:snort使用一种简单的,轻量级的规则描述语言,这种语言灵活而强大。
在开发snort规则时要记住几个简单的原则。
第一,大多数snort规则都写在一个单行上,或者在多行之间的行尾用/分隔。
Snort规则被分成两个逻辑部分:规则头和规则选项。
规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源和目标端口信息;规则选项部分包含报警消息内容和要检查的包的具体部分。
下面是一个规则范例:alert tcp any any -> 111 (content:"|00 01 86 a5|"; msg: "mountd access"第一个括号前的部分是规则头(rule header),包含的括号内的部分是规则选项(rule options)。
规则选项部分中冒号前的单词称为选项关键字(option keywords)。
注意,不是所有规则都必须包含规则选项部分,选项部分只是为了使对要收集或报警,或丢弃的包的定义更加严格。
组成一个规则的所有元素对于指定的要采取的行动都必须是真的。
当多个元素放在一起时,可以认为它们组成了一个逻辑与(AND)语句。
同时,snort规则库文件中的不同规则可以认为组成了一个大的逻辑或(OR)语句。
规则高级概念:Includesinclude允许由命令行指定的规则文件包含其他的规则文件。
格式:include: <include file path/name>注意在该行结尾处没有分号。
被包含的文件会把任何预先定义的变量值替换为自己的变量引用。
参见变量(Variables)一节以获取关于在SNORT规则文件中定义和使用变量的更多信息。
Variables变量可能在snort中定义。
格式:var: <name> <value>例子:var MY_NETalert tcp any any -> $MY_NET any (flags: S; msg: "SYN packet"规则变量名可以用多种方法修改。
可以在"$"操作符之后定义变量。
"?" 和 "-"可用于变量修改操作符。
$var - 定义变量。
$(var) - 用变量"var"的值替换。
$(var:-default) - 用变量"var"的值替换,如果"var"没有定义用"default"替换。
$(var:?message) - 用变量"var"的值替换或打印出错误消息"message"然后退出。
例子:var MY_NET $(MY_NET:log tcp any any -> $(MY_NET:?MY_NET is undefined!) 23ConfigSnort的很多配置和命令行选项都可以在配置文件中设置。
格式:config <directive> [: <value>]Directivesorder 改变规则的顺序( snort -o )alertfile 设置报警输出文件,例如:config alertfile: alertsclassification 创建规则分类。
decode_arp 开启arp解码功能。
(snort -a)dump_chars_only 开启字符倾卸功能。
(snort -C)dump_payload 倾卸应用层数据。
(snort -d)decode_data_link 解码第二层数据包头。
(snort -e)bpf_file 指定BPF过滤器(snort -F)。
例如:config bpf_file:set_gid 改变GID (snort -g)。
例如:config set_gid: snort_groupdaemon 以后台进程运行。
(snort -D)reference_net 设置本地网络。
(snort -h). 例如:config reference_net:interface 设置网络接口(snort –i )。
例如:config interface: xl0alert_with_interface_name 报警时附加上接口信息。
(snort -I)logdir 设置记录目录 (snort -l)。
例如:config logdir: /var/log/snortumask 设置snort输出文件的权限位。
(snort -m). Example: config umask: 022pkt_count 处理n个数据包后就退出。
(snort -n). Example: config pkt_count: 13 nolog 关闭记录功能,报警仍然有效。
(snort -N)obfuscate 使IP地址混乱 (snort -O)no_promisc 关闭混杂模式。
(snort -p)quiet 安静模式,不显示标志和状态报告。
(snort -q)checksum_mode 计算校验和的协议类型。
类型值:none, noip, notcp, noicmp, noudp, all utc 在时间戳上用UTC时间代替本地时间。
(snort -U)verbose 将详细记录信息打印到标准输出。
(snort -v)dump_payload_verbose 倾卸数据链路层的原始数据包 ( snort -X )show_year 在时间戳上显示年份。
(snort -y)stateful 为stream4设置保证模式。
min_ttl 设置一个snort内部的ttl值以忽略所有的流量。
disable_decode_alerts 关闭解码时发出的报警。
disable_tcpopt_experimental_alerts 关闭tcp实验选项所发出的报警。
disable_tcpopt_obsolete_alerts关闭tcp过时选项所发出的报警。
disable_tcpopt_ttcp_alerts 关闭ttcp选项所发出的报警。
disable_tcpopt_alerts 关闭选项长度确认报警。
disable_ipopt_alerts 关闭IP选项长度确认报警。
detection 配置检测引擎。
( 例如:search-method lowmem )reference 给snort加入一个新的参考系统。
规则头规则动作:规则的头包含了定义一个包的who,where和what信息,以及当满足规则定义的所有属性的包出现时要采取的行动。
规则的第一项是"规则动作"(rule action),"规则动作"告诉snort 在发现匹配规则的包时要干什么。
在snort中有五种动作:alert、log、pass、activate 和dynamic.1、Alert-使用选择的报警方法生成一个警报,然后记录(log)这个包。
2、Log-记录这个包。
3、Pass-丢弃(忽略)这个包。
4、activate-报警并且激活另一条dynamic规则。
5、dynamic-保持空闲直到被一条activate规则激活,被激活后就作为一条log规则执行。
你可以定义你自己的规则类型并且附加一条或者更多的输出模块给它,然后你就可以使用这些规则类型作为snort规则的一个动作。
下面这个例子创建一条规则,记录到tcpdump。
ruletype suspicious{type log outputlog_tcpdump:}下面这个例子创建一条规则,记录到系统日志和MySQL数据库ruletype redalert{type alert outputalert_syslog: LOG_AUTH LOG_ALERToutput database: log, mysql, user=snort dbname=snort host=localhost}协议规则的下一部分是协议。
Snort当前分析可疑包的ip协议有四种:tcp 、udp、icmp和ip。
将来可能会更多,例如ARP、IGRP、GRE、OSPF、RIP、IPX等。
Ip地址规则头的下一个部分处理一个给定规则的ip地址和端口号信息。
关键字"any"可以被用来定义任何地址。
Snort没有提供根据ip地址查询域名的机制。
地址就是由直接的数字型ip地址和一个cidr块组成的。
Cidr块指示作用在规则地址和需要检查的进入的任何包的网络掩码。
/24表示c类网络,/16表示b类网络,/32表示一个特定的机器的地址。
例如,代表从到的地址块。
在这个地址范围的任何地址都匹配使用这个标志的规则。
这种记法给我们提供了一个很好的方法来表示一个很大的地址空间。
有一个操作符可以应用在ip地址上,它是否定运算符(negation operator)。
这个操作符告诉snort匹配除了列出的ip地址以外的所有ip地址。
否定操作符用"!"表示。
下面这条规则对任何来自本地网络以外的流都进行报警。
alert tcp ! any -> 111 (content: "|00 01 86 a5|"; msg: "external mountd access" 这个规则的ip地址代表"任何源ip地址不是来自内部网络而目标地址是内部网络的tcp包"。
你也可以指定ip地址列表,一个ip地址列表由逗号分割的ip地址和CIDR块组成,并且要放在方括号内“[”,“]”。
此时,ip列表可以不包含空格在ip地址之间。
下面是一个包含ip地址列表的规则的例子。
alert tcp ![10.1.1 any -> [ 111 (content: "|00 01 86 a5|"; msg: "external mountd access"端口号端口号可以用几种方法表示,包括"any"端口、静态端口定义、范围、以及通过否定操作符。
"any"端口是一个通配符,表示任何端口。
静态端口定义表示一个单个端口号,例如111表示portmapper,23表示telnet,80表示http等等。
端口范围用范围操作符":"表示。
范围操作符可以有数种使用方法,如下所示:log udp any any -> 1:1024记录来自任何端口的,目标端口范围在1到1024的udp流log tcp any any -> :6000记录来自任何端口,目标端口小于等于6000的tcp流log tcp any :1024 -> 500:记录来自任何小于等于1024的特权端口,目标端口大于等于500的tcp流端口否定操作符用"!"表示。