邪恶八进制信息安全团队技术讨论组's Archiver

goldberg 2006-11-9 17:16

[转载]Snort常见问答辑

信息来源:安全矩阵
作者:不详

问:参与 snort 这些人士的名字如何发音?
问:此 Fyodor Yarochkin 和写 nmap 这套软体的 Fyodor 是同一个人吗?
问:我如何执行运作 snort?
问:记录档会存放在哪里?用什麽档名?
问:实际上配置 snort senor 的地方哪儿比较好?
问:我是在以交换器构成的网路中,我还能使用 snort 吗?
问:有一大堆某种型态的警报(alert)产生出来了,我该怎麽办?可以从哪里发现更多相关资讯?
问:这些错误警报(false alarms)是什麽?
问:在 /var/log/snort 目录下的 ICMP 档案有何什麽用处?
问:我的网路包含了好几个次网路(subnets),我该如何定义 HOME_NET?
问:我的网路卡有两个别名(aliases),如何强制 snort 从听取两个位址的封包?
问:如何忽略来自特定位址的流量?
问:为什麽埠号扫瞄(portscan)的 plugin 会纪录隐藏(stealth)的封包,尽管机器已经在埠号扫瞄
忽略位址的名单中了?
问:如何在没有 IP 位址的网路介面上执行 snort?
问:为什麽在 var/log/snort 下没有关於 IP 位址的次目录?
问: Libpcap 发生关於权限的问题,倒底怎麽回事?
问:为什麽 snort 会说 /var/log/snort 有一些问题?
问:如何让 snort 忽略一些网路流量?
问:为什麽有那麽多的 snort 规则中有 P(TCP PuSH) 和 A(TCP ACK) 这些旗号(flags)?
问:我想我找到一个 snort 的程式错误(Bug),怎麽办?
问:snort 有处理 IP 封包片段(fragment)吗?
问:snort 报告说 "Garbage Packet with Null Pointer discarded!"(空指标的垃圾封包已被丢弃),
这是啥?
问:我装了 RedHat(红帽linux)而且....
问:我该如何在秘密(stealth)介面上安装 snort?
问:我要建立一台 snort 的机器,这台线上的机器能处理那多麽流量吗?
问:什麽是 CIDR 网路遮罩(netmask)?
问:哪里可以取得最新版的 libpcap?
问:在警报讯息中那些 IDS 的编号是什麽?
问:snort 报告说 "BACKDOOR SIGNATURE",这意味着我的电脑有木马程式吗?
问:什麽是 "CGI Null Byte attacks"(CGI空位元攻击)?
问:我可以从哪里得到更多关於Snort的阅读材料及课程?
问:我如何将记录写入多个资料库?
问:这些 "ICMP destination unreachable"(目的地无法到达)的警报讯息是什麽意思?
问:为什麽在编译 snort 时会有 missing references 的错误讯息?
问:为什麽在编译 snort 时会因为 yylex 和 lex_init 的错误讯息而失败?
问:那个使用 "-r" 这个选项去读 tcpdump 的档案是什麽意思?
问:我如何使用 snort 同时去记录封包的表头和其内容?
问:snort 有把它产生警报的那些封包内容完全记录下来吗?
问:为什麽程式会对那些通过规则的封包产生警报?
问:snort 会对 TCP 的串流进行重组吗?
问:SMB 的警报没有作用,发生了什麽问题?
问:我如何在没有乙太网路卡或是无法跟其他电脑连接的环境测试 snort?
问:我在令 snort 将记录存入资料库时遇到问题...
问:哪里可以获得更多关於 snort 的协助?
问:如何使 snort 以 win32 服务的型态执行?
问:如何将 snort 的记录转换成 HTML 的报表?
问:为什麽在 ACID 中有一些警报中有『未知』的IP(Unknown IP)?
问:当尝试要使用 ACID 删除一个警报时,为什麽有 "error deleting alert"(删除错误) 的讯息?
问:ACID 似乎没办法和 Lynx 搭配使用?
问:可以利用 ACID 指定警报的优先权吗?
问:当执行长时间的动作时,我的 ACID 资料库连线逾时中断了?(例如,删除很多数目的警报。)
问:为什麽 snort 报告 "Packet loss statistics are unavailable under Linux"(封包流失统计在 linux
中不能使用) 的讯息?
问:SYN-FIN 扫瞄是什麽玩意?
问:什麽是 "SMB Name Wildcard" 警报?
问:何者优先权较高?命令列(command line)或是规则档案(rule file)?
问:我的 /var/log/snort 目录变得很庞大,该怎麽办?.
问:有没有可能使用 snort 对防火墙(firewall)加入 ipfilter/ipfw 的规则?
问:我如何在同时拥有多介面的电脑上使用 snort?
问:我看到一个 "snort [pid] uses obsolete (PF_INET, SOCK_PACKET)" 的警示讯息,到底是什麽问题?
问:我的网路介面的位址是动态分配而得的,我可以在其上使用 snort 吗?
问:在 HPUX 的平台上,产生 "device lan0 open: recv_ack: promisc_phys: Invalid argument" 的错误
讯息?
问:snort 挂掉了,而且有"can not creat file"(无法产生档案)的错误,但我还有很多磁碟空间,这是怎
麽回事?

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:参与 snort 这些人士的名字如何发音?

答:正式来说,"Roesch" 发音像是 "fresh" 少掉 "f" 字母。此外, "Ruiu" 发音像是 "screw you"
而没有 "sc"。 Jed 的姓发音像 "pick-el" 而不是 "pickle"。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:此 Fyodor Yarochkin 和写 nmap 这套软体的 Fyodor 是同一个人吗?

答:不是。[email]fyodor@insecure.org[/email] 是 nmap 的作者,而他的笔名(假名)和 snort 作者群中 Fyodor
的姓一样。是呀,有很多信件寄到我的信箱来,但我想现在要改变两者之一都来不及罗。 :-)

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我如何执行运作 snort?

答:执行 snort 在侦察模式(sniffer)使用(snort -dvi eth0)之类的命令,并且要确定它可以看到所
有的封包。 然後在你的规则档案(rule file)中适当地定义 HOME_NET 以保护你的网路。有个预
设的规则档案在 snort 的套件中,叫做 "snort.conf"。你可以用下面的命令列来使用这个基本
的规则组:

snort -Afull -c snort.conf

如果全部设定正确无。,只要它正在执行,执行 ""ifconfig -a" 确定网路介面在混杂模式
(promiscuous mode)。 (从萤幕上列印出来选项区段就可以看到)。如果不是的话,就要用手动
来设定。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:记录档会存放在哪里?用什麽档名?

答:如果你用 "-l" 参数来指定记录目录,那麽记录档就在那个目录。如果没有指定,snort 会把记
录存在 /var/log/snort/ 中。

过去,执行 snort 於 daemon 模式(使用-D参数),会产生一个档案叫 "snort.alert"。但现在
为了一致的缘故,已经有所改变。不管是标准或 daemon 模式,都是产生记录档叫 "alert" 。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:实际上配置 snort senor 的地方哪儿比较好?

答:这会必须根据你公司或单位的政策而定,而且你想要保护哪些。有一个方面来看,你要把它摆
在防火墙之前或之後。把入侵侦测系统(IDS)放在防火墙之前会让你可以监测所有对你网路的攻
击,不管它们会不会被防火墙所阻止。这几乎就是说,入侵侦测系统会比放在防火墙之後的入
侵侦测系统看到更多的事件,更多的纪录会被产生。如果你只对监测那些穿越过防火墙的流量
有兴趣,就把入侵侦测系统摆在防火墙之後。如果资源许可的话,最好是放在一台在防火墙之
前,一台在防火墙之後。这样你就可以看到所以要到你的网路的流量,及任何真正进入你网路
的流量。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我是在以交换器构成的网路中,我还能使用 snort 吗?

答:这要依你所使用的交换器而定,如果他有提供流量监测的功能,你可以把流量导向执行 snort
的机器。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:有一大堆某种型态的警报(alert)产生出来了,我该怎麽办?可以从哪里发现更多相关资讯?

答:有一些规则会比其他规则容易产生正常而误认的警报(false positive)。这通常会随着网路不
同而变动。你首先要确定这是正常而误认的警报。有些规则会参用 ID 号码。下列是一些常见
的识别系统,去那儿找关於某个警报的更多讯息。

系统 范例 URL位址
---------------------------------------------------------------
IDS IDS182 [url]http://www.whitehats.com/IDS/182[/url]
CVE CVE-2000-0138 [url]http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2000-0138[/url]
Bugtraq BugtraqID 1 [url]http://www.securityfocus.com/vdb/bottom.html?vid=1[/url]
McAfee Mcafee 10225 [url]http://vil.nai.com/vil/dispVirus.asp?virus_k=10225[/url]

如果这个封包是正常而误认的警报,可能需要检查封包的负载(payload)。使用 "-d" 这个选项
来记录封包负载。如果你决定这些是正常而误认的警报,你可以为这些制造大量警报的封包写
一些放行的规则。如果一个规则对不同的机器都产生大量无法管理的正常而误认的警报,你可以
对此规则的流量都放行。不过,这该是最後的一个方法。
--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--

问:这些错误警报(false alarms)是什麽?

答:大部分的人会认为一堆正常而误认的警报是很不喜欢的。然後他们可以关掉那些他们不要的。
相反的,如果规则组小,会使人们满足地认为 snort 正在做它该做的事,而且没什麽好担心的。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:在 /var/log/snort 目录下的 ICMP 档案有何什麽用处?

答:大部分是像到目的地无法到达(destination unreachable)或目的埠无法到达(port unreachables)
的封包,这是因为通讯尝试连线失败的状况,而且被 snort 侦测到。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我的网路包含了好几个次网路(subnets),我该如何定义 HOME_NET?

答:Snort 1.7 版支援 IP 表列。你可以指派一群位址给一个变数,例如:

var HOME_NET [10.1.1.0/24,192.168.1.0/24]

注意:不是所有的前处理程式(preprocessors)此刻都支援 IP 表列。除非特别声明,假设任何
使用 IP 表列变数的前处理程式都使用第一个数值来当作 HOME_NET 的数值。像是埠号扫
瞄前处理器(portscan preprocessor)就是个例子。要捉取所有可以侦测的埠号扫瞄,用
0.0.0.0/0 当作第一个参数。

preprocessor portscan: 0.0.0.0/0 5 3 portscan.log

使用埠号扫瞄忽略位址前处理器(portscan-ignorhosts preprocessor)去微调并且忽略那
些来自杂讯多但被信赖的机器的流量。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我的网路卡有两个别名(aliases),如何强制 snort 从听取两个位址的封包?

答:如果你使用最新版的 snort 1.7,你可以指定 IP 列表像这样:

var HOME_NET [192.168./24,/32]

如果你是用较旧的版本(version 1.6.3-patch2 或其他),你可以重复定义 HOME_NET 多次,如
此例:

var HOME_NET 10.1.1.0/24

include scan-lib

等等...

var HOME_NET 192.168.1.0/24

include scan-lib

等等...

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:如何忽略来自特定位址的流量?

答:写一个放行的规则,并且把他们加到埠号扫瞄忽略位址前处理器(portscan-ignorhosts preprocessor)。
执行 snort 时使用 "-o" 的选项器启动放行规则。
也请见 [url]http://www.snort.org/writing_snort_rules.htm[/url] 以获取更多讯息。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:为什麽埠号扫瞄(portscan)的 plugin 会纪录隐藏(stealth)的封包,尽管机器已经在埠号扫瞄
忽略位址的名单中了?

答:那些 tcp 封包的型态本来就很可疑,不管它们从哪里来。埠号扫瞄侦测程式会假设这些隐藏
的封包应该被指认出来,尽管来自不被监测埠号扫瞄的位址。未来可能会有忽略隐藏封包的
选项。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:如何在没有 IP 位址的网路介面上执行 snort?

答:ifconfig ethN up

答:启动网路介面而不使用 IP 位址, 请见
[url]http://www.geocrawler.com/archives/3/4890/2000/9/0/4399696/[/url]

答:使用乙太网路分接器(tap)或制作你自己的 '只接收' 以太网路线。请见
[url]http://www.robertgraham.com/pubs/sniffing-faq.html#receive-only[/url]

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:为什麽在 var/log/snort 下没有关於 IP 位址的次目录?

答:视你如何设定 snort 记录的方式。如果他用二进位(binary)格式记录,你必须去处理二进位
的格式才能得到文字。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问: Libpcap 发生关於权限的问题,倒底怎麽回事?

答:你要嘛就是没有使用 root 的身份来执行 snort,不然就是没有设定正确。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:为什麽 snort 会说 /var/log/snort 有一些问题?

答:snort 需要这个目录来记录警报。使用 "mkdir /var/log/snort" 来解决。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:如何让 snort 忽略一些网路流量?

答1:在命令列设定 bpf 过滤规则,tcpdump 的手册有关於 bpf 过滤器的描述说明。
答2:使用放行规则。
答3:埠号扫瞄前处理器(portscan preprocessor)有它自己的排除表列,使用
portscan-ignorehosts.rules 档案指令。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:为什麽有那麽多的 snort 规则中有 P(TCP PuSH) 和 A(TCP ACK) 这些旗号(flags)?
答:设定 PA 旗号产生警报的原因是为了降低正确而误判的机会。这样你就只会对顺利的连线
产生一个警报。如果你要看到所有的尝试,可以更动这些特徵(signatures),加入你自己
定义的特徵,或是用防火墙纪录是对特定一个埠号的尝试是否发生。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我想我找到一个 snort 的程式错误(Bug),怎麽办?

答:先取得比较多的诊断资讯,并请发表在 [url]http://www.sourceforge.net[/url] 的 "snort-users"
区。

要获得更多诊断资讯,请编译 snort 以:

make clean; make CFLAGS=-ggdb

或是:

make clean; make "CFLAGS=-ggdb -DDEBUG"

追踪 coredump 以:

gdb /path/to/snort /path/to/snort/core

gdb where
gdb bt
gdb print $varname, varname, $$varname etc..

或者如果 core 档没产生,那麽以下列方法执行 snort:

gdb snort
gdb run

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:snort 有处理 IP 封包片段(fragment)吗?

答:是的,使用 "preprocessor defrag" 的功能。snort现在可以用 "minfrag" 的规则选项来找寻
小的片段,然後只针对片段的大小而产生警报。这是正确的策略,因为市面上没有任何商业的
设备会产生长度小於 256 位元组的片段封包,而大部分的骇客封包通常会尽量让他们的流量中
片段越小越好。这个 "minfrag" 的选项让你可以指定片段的长度门槛而让 snort 产生警报。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:snort 报告说 "Garbage Packet with Null Pointer discarded!"(空指标的垃圾封包已被丢弃),
这是啥?

答:这是一个内部诊断的讯息,这是由比较旧版的片段重组前处理器(defragmentation preprocessor)
所产生的。请升级到最新版的 snort。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我装了 RedHat(红帽linux)而且....

答:检查 libpcap 的版本 如果它不是大於等於 0.5 ,那麽你应该更新。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我该如何在秘密(stealth)介面上安装 snort?
????????????????

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我要建立一台 snort 的机器,这台线上的机器能处理那多麽流量吗?

答:那视情况而定。 ;-) 降低规则的数目是提升效能的标准方式。关掉那些你不需要或是不在意的
的规则。已经有很多关於调整效能如『我有多少 mb 和某某机器的设定』之类的讨论了。去看看
snort-users 版上的讨论。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:什麽是 CIDR 网路遮罩(netmask)?

答:节录自 [url]http://public.pacbell.net/dedicated/cidr.html[/url]

CIDR 是 Internet 上一种新的定址方式,可以比旧有 Class A, B, C 的定址方式更有效地分
配 IP 位址。

CIDR 区块前置字(prefix) # 相对应的 Class C # 位址数
/27 1/8th of a Class C 32 hosts
/26 1/4th of a Class C 64 hosts
/25 1/2 of a Class C 128 hosts
/24 1 Class C 256 hosts
/23 2 Class C 512 hosts
/22 4 Class C 1,024 hosts
/21 8 Class C 2,048 hosts
/20 16 Class C 4,096 hosts
/19 32 Class C 8,192 hosts
/18 64 Class C 16,384 hosts
/17 128 Class C 32,768 hosts
/16 256 Class C 65,536 hosts (= 1 Class
/15 512 Class C 131,072 hosts
/14 1,024 Class C 262,144 hosts
/13 2,048 Class C 524,288 hosts

欲获得更多关於 CIDR 的技术资料,请至 [url]http://www.rfc-editor.org/rfcsearch.html[/url],然後
输入你有兴趣的 RFC 号码:

RFC 1517: Applicability Statement for the Implementation of CIDR
RFC 1518: An Architecture for IP Address Allocation with CIDR
RFC 1519: CIDR: An Address Assignment and Aggregation Strategy
RFC 1520: Exchanging Routing Information Across Provider Boundaries in the CIDR Environment

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:哪里可以取得最新版的 libpcap?

答:[url]http://www.tcpdump.org/[/url]

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:在警报讯息中那些 IDS 的编号是什麽?

答:IDS 是指 "Intrusion Detection Signature" (真的吗?) 而且定义一个已知的攻击尝试。你可
以得到更多关於特定 IDS 号码的资料,请使用 arachNIDS 搜寻引擎,位址
[url]http://www.whitehats.com/[/url]

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:snort 报告说 "BACKDOOR SIGNATURE",这意味着我的电脑有木马程式吗?

答:如果你有记录封包的资料部分,请再检视一下。这些规则通常只是根据数字的埠号而有高的错误
率。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:什麽是 "CGI Null Byte attacks"(CGI空位元攻击)?

答:那是 HTTP 前处理器(http preprocessor)的一部份。基本上来说,如果 HTTP 的编码程序在
HTTP 的需求(request)发现一个 "%00",它就会发出这个讯息。有时是误报,因为有些站台利
用 url 编码二进位资料的方式来使用 cookie,或者你扫瞄埠号 443,然後得到 SSL 编码过的
流量。如果你记录到这种警报,可以检视引起警报真正的字串。而且, unicode 的警报也是相
同的原因。只有把封包内容记录下来才有办法去确定是否为真的攻击,这对任何以内容为基准的
的警报来说都是一样的。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我可以从哪里得到更多关於Snort的阅读材料及课程?

答: Sans 有出一些课程。还有一堆书你可以拿来看:

Network Intrusion Detection An Analyst's Handbook
By Stephen Northcutt
ISBN 0735708681

TCP/IP Illustrated, Volume 1 The Protocols
By W. Richard Stevens
ISBN 0201633469

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我如何将记录写入多个资料库?

答:你可以使用多个输出 plugin 来造成多个备份。这儿是一些例子:

资料库 plugin 的多重定义:

output log_database: mysql, dbname=snort host=localhost user=xyz
output log_database: mysql, dbname=snort host=remote.loghost.com user=xyz

远端资料库和近端的 tcpdump :

output log_database: mysql, dbname=snort host=remote.loghost.com user=xyz
output log_tcpdump: /var/log/snort.tcpdump

然後你可以利用 snort 重播 tcpdump 的档案来重新产生资料库内容。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:这些 "ICMP destination unreachable"(目的地无法到达)的警报讯息是什麽意思?

答:它们是失败的连线。ICMP 目的地无法到达的封包会带着原来封包前 64 位元组资料。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:为什麽在编译 snort 时会有 missing references 的错误讯息?

答:你必须以 "--install-incl" 的选项编译 libpcap。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:为什麽在编译 snort 时会因为 yylex 和 lex_init 的错误讯息而失败?

答:你需要 lex 和 yacc 这两样工具。或是相对应 GNU 版本的 flex 和 bison。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:那个使用 "-r" 这个选项去读 tcpdump 的档案是什麽意思?

答:和 snort 的规则档案一起使用,tcpdump的资料可用来分析不怀好意的内容,埠号扫瞄,
或是其他 snort 可以用来侦测的。Snort 也可以只是用来以解码後的格式显示封包,那
样许多人会认为比直接看 tcpdump 原本的输出格式来得容易阅读多了。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我如何使用 snort 同时去记录封包的表头和其内容?

答:使用 "-d" 这个命令列选项。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:snort 有把它产生警报的那些封包内容完全记录下来吗?

答:是的,它们应该放在跟产生警报来源 IP 位址名称相同的目录中。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:为什麽程式会对那些通过规则的封包产生警报?

答:预设的顺序是先采用警报规则,放行规则,然後才是记录规则。这样的顺序是确保说你
写了 50 条重要的警报规则,却意外地因一条错误的放行规则而全部关闭功能的状况不
会发生。如果你要改变顺序,使用 "-o" 命令列选项让放行规则先采用。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:snort 会对 TCP 的串流进行重组吗?

答:是的,这个性能在 1.7 版发行中做 BETA 测试。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--

问:SMB 的警报没有作用,发生了什麽问题?

答:当你执行 "./configure" 时,确定你有包含 "--enable-smbalerts"。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我如何在没有乙太网路卡或是无法跟其他电脑连接的环境测试 snort?

答:你必须在两个 dummy devices上作路径选定(routing):

modprobe -a dummy (dummy device 必须由系统核心建立)

ifconfig dummy0 192.168.0.1

ifconfig dummy0:0 192.168.0.2

telnet 192.168.0.3 12345

很重要的是第二个 IP 位址要在同样的介面,而不是 dummy1 或 dummy2。而且你要存取的
IP 位址不是上面你放在介面上的位址。使用 snort 在杂乱模式(promiscious mode)去听
一整个 IP 位址范围 (HOMEDIR=192.168.0.0/16)。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我在令 snort 将记录存入资料库时遇到问题...

答:有些关於 snort 1.6.3 的问题写道:

Lee wrote..
Initializing rule chains...
log_database: Database type is mysql
log_database: Database name is snort
log_database: Host set to localhost
log_database: User set to root
Problem obtaining SENSOR ID (sid) from mysql-snort-event

在 1.6.3 的版本,结果有很多看过这个错误讯息因为他们没有编译好去支援他们的资料库。
1.7 版应该没问题了。

对旧版的 snort,一个简单的修理方法是在 Makefile 里的 LIBS 或 LDFLAGS 变数加上 "-lm":

LIBS = -lm -lmysqlclient -lpcap -lsocket -lnsl

然而,如果你还是有这个问题,你可以看一下下列网址中更新过的安装和设定资讯:

[url]http://www.incident.org/snortdb[/url]

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:哪里可以获得更多关於 snort 的协助?

答:[url]http://lists.sourceforge.net/mailman/listinfo/snort-users[/url]

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:如何使 snort 以 win32 服务的型态执行?

答:服务型态支援从 snort-1.6.3-patch2 开始加入。你可以下载执行档:

[url]http://www.datanerds.net/~mike/dev/snort-1.6.3-patch2-service.zip[/url]

现在只有执行档版本。

Snort 服务程式常见问答辑:

1) 必须使用完整路径,任何时候。命令列,设定档,任何东西。例如:
所有包含的叙述都要完全路径,像是 "include scan-lib" 是错的,
"include C:\snort\scan-lib" 才是正确的。
所有的的命令列选项都要使用完全路径,像是 "snort.exe -l ./log" 是错的。
"snort.exe -l C:\snort\log" 才正确。

2) 必须要利用命令列(-l 选项)给予一个存放记录的目录。如果你没有设定的话,snort 服务
不会开始,在 NT/Win2k ,开机程序会悬迟大约四分钟。

3) 如何安装 snort 服务?
以命令列执行 snort 像你原先要执行的样子,但是多加一个 "-I"的选项。例如:
'snort.exe -c snort.conf -l ./log -h 192.168.1.0/24 -s' 改成
'snort.exe -c C:\snort\snort.conf -l C:\snort\log -h 192.168.1.0/24 -s -I'
对使用所用的档案或目录要用完整路径。
注意:你不需要加上 "-D" 选项,如果你没加的话, snort 会自动加上这个选项。

4) 如何移除 snort 服务?
执行 "snort -R" 。

5) Snort服务可以在 9x/ME 上使用吗?
可以。它使用一个可怕的技巧让它可以运作。因为当你开机时,在 snort 变成背景模式执行
前,你会看到一个大约五秒钟黑色的命令提示视窗。这种服务模式算起来是相当可怕的方法,
也许不是每台机器都能成功。

6) 在 NT 的服务中有提供哪些功能?
现在只有开始和停止。暂停和回复会稍候被实作。(有程式码了,但不是运作很正常)。

任何问题,建议,批评,请寄到 [email]mike@datanerds.net[/email]

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:如何将 snort 的记录转换成 HTML 的报表?

A1: 一个受欢迎的方法是使用 SnortSnarf,它是一个工具可以对 snort 的警报产生 HTML 格式的报表,
并在警报中浏览(而且比这样多一些功能)
[url]http://www.silicondefense.com/snortsnarf/[/url]

A2: 如果你要设定记录到资料库,你可以试试 ACID。有些文件介绍现在 ACID 的功能:
[url]http://www.andrew.cmu.edu/~rdanyliw/snort/snortacid.html[/url]

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:为什麽在 ACID 中有一些警报中有『未知』的IP(Unknown IP)?

答:Snort 资料库的 plug-in 只会记录那些被一个规则(特徵)所触发警报的封包资讯到资料库里。
所以,要是由前处理器像是埠号扫瞄(portscan)及迷你片段(mini-fragment)所产生的警报没有相
对应的规则,也就没有封包资讯可以被纪录到一个条目表示它们的存在。结果, ACID 对这些警报
就不能显示任何封包层次(例如 IP 位址)的资讯。

对这些特别的警报,某些统计结果可能显示没有独一的 IP 位址,於是显示 IP 位址为『未知』。
当解码这些警报时,也没有任何封包的资讯。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:当尝试要使用 ACID 删除一个警报时,为什麽有 "error deleting alert"(删除错误) 的讯息?

答:最可能的是资料库使用者没有在 ACID 中设定足够的权限。除了给予记录警报到资料库的权限
如 INSERT(插入)和 SELECT(选择), 也需要有 DELETE (删除)。

关於这个问题可以用手动加入一行资料,然後尝试删除看看来确认。

1. 使用和你使用 ACID 一样的凭证(例如使用者名,密码)签入 MySQL。

例如:% mysql -u -p

2. 在 event 这个表单(table)加入测试的一行。

mysql INSERT INTO event (sid, cid, signature, timestamp) VALUES (1,1000000, "test", "0");

(这是假设你之前没有一行 ID 栏位是 1000000,如果有的话,你要换其他的 ID 数字。)

3. 现在,删除刚加入的那一行。

mysql DELETE FROM event WHERE sid=1 AND cid=10000000;

如果你现处於不能删除的状况,那就确认了你有权限的问题。用 root 重新签入 MySQL,启用
GRANT 命令(给予 DELETE 权限) 给 ACID DB 使用者。

例如: GRANT DELETE on snort.* to acid@localhost

(这是假设我的警报资料库是 "snort",使用者名称是 "acid",然後从 "localhost" 签入)

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:ACID 似乎没办法和 Lynx 搭配使用?

答:这是已知的问题。Lynx 会把附加於 URL 中的表格参数弄乱。解决方法正在研究中,
此刻你可以用 Netscape,Opera 或 IE。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:可以利用 ACID 指定警报的优先权吗?

答:最快的回答是不行。ACID受到其下资料库的支配,既然 snort 没有指定优先权, ACID 也
没有优先权。然而,有几种方法可改变:

有可能在资料库那一层次以将不同程度警报写入不同的资料库来强迫 snort 的优先权。例如,
危险的警报像是缓冲区溢位(buffer overflow)可以写入一个资料库,而扫瞄的警报可以写入另
一个资料库。然後载入两个不同版本的 ACID,分别指向不同的资料库。

使用人力介入的警报群组 (Alert Groups, AG) 可以指定优先权。实质上来说,这个方法就是
必须对每个不同程度产生一个警报群组,然後当警报来临时手动搬移这些警报到适当的群组。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:当执行长时间的动作时,我的 ACID 资料库连线逾时中断了?(例如,删除很多数目的警报。)

答:PHP 有一个内部变数来限制 script 可以执行的时间。它是用来避免写得很差的程式码无限
期地执行。为了要变更这个逾时的数值,检视在设定档 "php.ini" 中 "max_execution_time"
这个变数。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:为什麽 snort 报告 "Packet loss statistics are unavailable under Linux"(封包流失统计在
linux 中不能使用) 的讯息?

答:Linux IP 层并不提供封包流失的状态统计。可能在 Linux 2.4 会有,但现在没有。可以改用
BSD 系统,这项功能运作地很好。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:SYN-FIN 扫瞄是什麽玩意?

答:SYNFIN 得其名是因为封包内 SYN 和 FIN 旗号同时被设定。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:什麽是 "SMB Name Wildcard" 警报?

答:摘自 Whitehats IDS177,位址:
[url]http://dev.whitehats.com/cgi/test/new.pl/Show?_id=netbios-name-query[/url]
定义那些来自远端而进入你网路中的流量。让 netbios 的流量跑到公共网路上通常是很不安
全的。

如果你使用的规格只参照进来网路的流量,那麽就可以解是你为什麽没有看到一大堆正确而
误判的警报。对任何真的看到一堆误报的,只要你改变规则中的来源位址为 !$HOME (或是
其他可以代表你内部网路的变数),那麽你应该会看到大部分的误报都不见了。

这个检查的数值是预设管理的分享 C$ ADMIN$ 或其他可以被存取。正常使用上应该不能发
生,当人们想要分享档案时,他们应该明白地定义分享目录和存取控制列表(ACL)。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:何者优先权较高?命令列(command line)或是规则档案(rule file)?

答:命令列相对於规则档案通常有较高的优先权。如果想要快速试验一些东西而不用手动编辑
规则档案,他们就可以使用命令列来覆盖很多事项。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我的 /var/log/snort 目录变得很庞大,该怎麽办?.

答:试着用下列的 script 来管理档案。

#!/bin/sh
#
# Logfile roation script for snort writen by [email]jameso@elwood.net[/email].
#
# This script is pretty basic. We start out by setting some vars.
# Its job is tho rotate the days logfiles, e-mail you with what
# it logged, keep one weeks worth of uncompressed logs, and also
# keep compressed tgz files of all the logs. It is made to be run
# at midnight everynight. This script expects you to have a base
# dir that you keep all of your logs, rule sets etc in. You can
# see what sub dirs it expects from looking at the var settings
# below.
#
# Things to note in this script is that we run this script at 12
# every night, so we want to set the dirdate var the day the script
# runs minus a day so we label the files with the correct day. We
# Then create a dir for the days logs, move the log files into
# todays dir. As soon as that is done restart snort so we don't miss
# anything. Then delete any logs that are uncompressed and over a
# week old. Then compress out todays logs and archive them away, and
# end up by mailling out the logs to you.
#

# Define where you have the base of your snort install

snortbase=/usr/snort

# Define other vars
# logdir - Where the logs are kept
# oldlogs - Where you want the archived .tgz logs kept
# weeklogs - This is where you want to keep a weeks worth of log files uncompressed
# dirdate - Todays Date in Month - Day - Year format
# olddirdate - Todays date in the same format as dirdate, minus a week

logdir=$snortbase/log
oldlogs=$snortbase/oldlogs
weeklogs=$snortbase/weeklogs

# When I first wrote this script, I only ran it on BSD systems. That was a
# mistake, as BSD systems have a date command that apperently lets you walk the
# date back pretty easily. Well, some systems don't have this feature, so I had
# to change the way that dates are done in here. I left in the old way, because
# it is cleaner, and I added in a new way that should be portable. If anyone
# has any problems, just let me know and I will try to fix it.
#
# You have to change the system var to either bsd or other. Set it to bsd if
# your system supports the "-v" flag. If you are not sure, set it to other.

system=bsd

if [ $system = bsd ]
then
dirdate=`date -v -1d "+%m-%d-%y"`
olddirdate=`date -v -8d "+%m-%d-%y"`
elif [ $system = other ]
month=`date "+%m"`
yesterday=`expr \`date "+%d"\` - 1`
eightday=`expr \`date "+%d"\` - 8`
year=`date "+%y"`

dirdate=$month-$yesterday-$year
olddirdate=$month-$eightday-$year
fi

# Create the Dir for todays logs.

if [ ! -d $weeklogs/$dirdate ]
then
mkdir $weeklogs/$dirdate
fi

# Move the log files into todays log dir. This is done with
# a for loop right now, because I am afriad that if alot is
# logged there may be to many items to move with a "mv *"
# type command. There may a better way to do this, but I don't
# know it yet.

for logitem in `ls $logdir` ; do
mv $logdir/$logitem $weeklogs/$dirdate
done

# Kill and restart snort now that the log files are moved.

kill `cat /var/run/snort_fxp0.pid`

# Restart snort in the correct way for you

/usr/local/bin/snort -i fxp0 -d -D -h homeiprange/28 -l /usr/snort/log \
-c /usr/snort/etc/08292k.rules /dev/null 2&1

# Delete any uncompressed log files that over a week old.

if [ -d $weeklogs/$olddirdate ]
then
rm -r $weeklogs/$olddirdate
fi

# Compress and save the log files to save for as long as you want.
# This is done in a sub-shell because we change dirs, and I don't want
# to do that within the shell that the script runs in.

(cd $weeklogs; tar zcvf $oldlogs/$dirdate.tgz $dirdate /dev/null 2&1)

# Mail out the log files for today.

cat $weeklogs/$dirdate/snort.alert | mail -s "Snort logs" [email]you@domain.com[/email]
cat $weeklogs/$dirdate/snort_portscan.log | mail -s "Snort portscan logs" [email]you@domain.com[/email]

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:有没有可能使用 snort 对防火墙(firewall)加入 ipfilter/ipfw 的规则?

答:可以的,使用在 contrib 目录下的附加软体。不过除非你知道你在做什麽,否则这可能很危险,
而且不建议这麽做。

在整个 tar 档中,有一个 Guardian 的软体在 contrib 目录中可供使用。

Guardian 是一个 perl 的 script,他会用 snort 来侦测封包,并且用 IPchains 来拒绝任何
後来的攻击。

Guardian 的网页在:
[url]http://www.chaotic.org/~astevens/Guardian/index.html[/url]
或是使用映像站:
[url]http://www.cyberwizards.com/~midnite/Guardian/index.html[/url]

但是有个事先宣告,执行外部执行档也会限制效能,然後也请参阅以下的警告:

Christopher Cramer 写道:

我确定在相类似的讨论有提过这个方法,不过我真得觉得那很糟糕。假设坏人知道我
们是这样做的,他就可以用你阻挡的方法来当作阻断服务的攻击,只要开始送一串
伪造来源封包来触发你的警报。

既然他不再对侵入你的站台有兴趣,但只要让你的生活如地狱一般。我用不着管那些
结果的资料会不会传回来。他所要做的只是开始处理一串 IP 位址,让你不能再跟他
们沟通。当你隔天早晨回来,你会发现根本没法存取世界上其他机器。

只花 $0.02.

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我如何在同时拥有多介面的电脑上使用 snort?

答:如果你不是在 linux 2.1.x/2.2.x 的核心 (有 LPF)上使用 snort,唯一的方法就是执行
多个 snort,每个程序对应一个介面。然而对 linux 2.1.x/2.2.x 或更新版本,你可以使
用 libpcap 程式库加上 S. Krahmer 的修补档,这能让你定义任何介面的名字。这种状况
下,snort就能处理来自所有介面的流量。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我看到一个 "snort [pid] uses obsolete (PF_INET, SOCK_PACKET)" 的警示讯息,到底是什麽
问题?

答:你在较新的 Linux 核心上使用较旧的 libpcap 版本。只要你的系统核心支援 SOCK_PACKET 的
socket 类别,那应该没什麽关系。如果不想看到这个警告讯息,你要升级到最近版本的 libpcap
(推荐使用来自 [url]www.tcpdump.org[/url] 的版本。)

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:我的网路介面的位址是动态分配而得的,我可以在其上使用 snort 吗?

答:是的。使用 snort 1.7 或後来的版本,有一个 _ADDRESS 的变数可供使用。这个变数的数值永远
是被设成你执行snort的介面之 IP 位址/遮罩。如果介面停止又再起来,(而且位址被重新分派)
你必须重新执行 snort。对较早版本的 snort,有一些 scripts 可以达到同样的效果。

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:在 HPUX 的平台上,产生 "device lan0 open: recv_ack: promisc_phys: Invalid argument" 的错误
讯息?

答:那是因为有另外一个执行中的程式正在使用 DLPI 的服务。HP-UX 不像 Linux,它不允许同时间超过一
个使用 libpcap 的程式执行。(摘自 snort.c)

--faq-- --snort-- --faq-- --snort-- --faq-- --snort-- --faq--
问:snort 挂掉了,而且有"can not creat file"(无法产生档案)的错误,但我还有很多磁碟空间,这是怎
麽回事?

答:你可能把剩余的 inodes 都用光了,那基本上来说是指你没有办法在这个分割建立任何档案了。最明显
的解决方法就是杀掉一些。 ;-)

页: [1]
© 1999-2008 EvilOctal Security Team