LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 738|回复: 0

Snort FAQ v1.7.5

[复制链接]
发表于 2004-11-2 14:03:38 | 显示全部楼层 |阅读模式
转自 www.linuxaid.com.cn  

问:snort显示"BACKDOOR SIGNATURE..."之类的信息,难道我的系统中有特洛伊木马?
问:什么是"CGI Null Byte attacks"?
问:从哪里我可以得到更多关于IDS的资料和课程信息?
问:我如何才能把日志记录到多个数据库?
问:所有这些"ICMP destination unreachable"报警是什么?
问:在编译snort时,为什么会出现引用丢失的信息?
问:为什么在编译snort时,会遇到有关yylex和lex_init的错误信息?
问:使用-r命令开关读取tcpdump二进制格式日志文件有什么用处?
问:我怎么才能让snort同时记录报文的包头和数据?
问:snort会完整地记录产生报警的数据包吗?
问:为什么对于pass规则处理的数据包snort还会产生报警?
问:snort会重装TCP数据流吗?
问:为什么SMB无法工作?
问:我的系统既没有以太网卡也没有和另外的系统连接,我怎么才能测试snort呢?
问:从哪里可以得到更多帮助?
问:我怎样才能把snort日志信息转换成HTML格式?
问:在ACID中,为什么某些报警的IP为未知?
问:使用ACID删除一个报警记录时,为什么会出现"error deleting alert"信息?
问:为什么使用lynx会造成ACID崩溃?
问:可以设置ACID报警的优先权吗?
问:当执行长操作(例如:删除大量的报警记录)时,ACID连接超时。
问:为什么snort会报告"acket loss statistics are unavailable under Linux"信息?
问:SYNFIN扫描是什么意思?
问:"SMB Name Wildcard"是什么意思?
问:命令行和规则文件哪个的优先权高?
问:/var/log/snort目录已经非常大了,怎么办?
问:可以使用snort在防火墙中加入ipfilter/ipfw规则吗?
问:我如何才能让snort运行在多个网络接口上?
问:我得到"snort [pid] uses obsolete (PF_INET, SOCK_PACKET)"警告信息,是怎么回事?
问:如果网络接口的IP地址是动态分配的,我能够使用snort吗?
问:snort无法运行,并显示"can not create file",而我还有大量的硬盘空间,这是怎么回事?
问:当我启动snort时,出现有关规则文件的错误信息,为什么?
问:snort发出太多的"IIS Unicode attack detected"或者"CGI Null Byte attack detected"误报警,如何避免?
问:snort不能把信息记录到数据库,为什么?
问:数据库不能记录portscan的信息,为什么?
问:snort不能向syslog记录信息,为何?

问:snort显示"BACKDOOR SIGNATURE..."之类的信息,难道我的系统中有特洛伊木马?
答:如果你正在复制检查报文的数据负载,snort就会进行这种报警。这些规则造成的误报警率非常高,因为它们只是基于对端口号的检查。

问:什么是"CGI Null Byte attacks"?
答:这是http预处理器的一部分,最基本的情况下,如果http解码例程在一个http请求中发现一个%00,snort就会发出这些报警信息。有时候,站点使用url编码的二进制数据cookie,或者你正在扫描443号端口和获得一个SSL加密的报文,都可能造成类似的误报警。如果你记录了引起报警的报文,可以检查引起报警的字符串,判断是否是误报警。还有unicode报警也受这种误报警的干扰。只有检查引起报警的报文负载才能确定你是否真的遭到了攻击。

问:从哪里我可以得到更多关于IDS的资料和课程信息?
答:sans研究中心有关于IDS的课程。这里有几本可以参考的教材:

Network Intrusion Detection An Analyst's Handbook
作者:Stephen Northcutt
ISBN 0735708681
中文译本叫作<<网络入侵检测分析员手册>>
人民邮电出版社
ISBN7-115-08372-X/TP.1511

TCP/IP Illustrated, Volume 1 The Protocols
作者:W. Richard Stevens
ISBN 0201633469
国内也有中文译本<>
机械工业出版社
还有影印版
清华大学出版社

问:我如何才能把日志记录到多个数据库?
答:你可以使用多个输出插件建立冗余输出。例如:

多个数据库插件实例: output database: log, mysql, dbname=snort host=localhost user=xyz
output database: log, mysql, dbname=snort host=remote.loghost.com user=xyz

远程数据库和本地tcpdump格式: output database: log, mysql, dbname=snort host=remote.loghost.com user=xyz
output log_tcpdump: /var/log/snort.tcpdump

接着,你可以使用snort使用tcpdump格式的二进制日志文件重新建立数据库。

问:所有这些"ICMP destination unreachable"报警是什么?
答:这都是连接失败的ICMP不可达数据包的前4个字节。

问:在编译snort时,为什么会出现引用丢失的信息?
答:你必须使用--install-incl选项编译libpcap。

问:为什么在编译snort时,会遇到有关yylex和lex_init的错误信息?
答:你需要安装lex和yacc工具,对应的GNU软件是flex和bison。

问:使用-r命令开关读取tcpdump二进制格式日志文件有什么用处?
答:和一个snort规则文件配合使用,tcpdump数据能够帮助你分析恶意内容、端口扫描或者其它snort能够检测的东西。snort只能一解码的格式简单地显示报文内容,更加容易进行分析。

问:我怎么才能让snort同时记录报文的包头和数据?
答:使用-d命令选项。

问:snort会完整地记录产生报警的数据包吗?
答:是的。它们被记录在以源主机IP命名的目录下。

问:为什么对于pass规则处理的数据包snort还会产生报警?
答:规则行为的默认处理顺序是报警优先,pass次之,log最后。可以使用-o命令选项改变这个顺序。

问:snort会重装TCP数据流吗?
答:是的,这种功能在snort1.7版还出于测试阶段。

问:为什么SMB无法工作?
答:在执行./configure脚本时,要包括--enable-smbalerts选项。

问:我的系统既没有以太网卡也没有和另外的系统连接,我怎么才能测试snort呢?
答:你只能使用dummy设备了:

modprobe -a dummy (内核应该支持dummy设备)
ifconfig dummy0 192.168.0.1
ifconfig dummy0:0 192.168.0.2
telnet 192.168.0.3 12345

注意:两个IP地址应该在同一个接口,不能是dummy1或者dummy2等,而且你试图访问的不能是其中任意一个IP地址。然后以嗅探器模式启动snort监听这个IP地址段。(HOMEDIR=192.168.0.0/16)

问:从哪里可以得到更多帮助?
答:http://lists.sourceforge.net/mailman/listinfo/snort-users

问:我怎样才能把snort日志信息转换成HTML格式?
答1:使用SnortSnarf。

http://www.silicondefense.com/snortsnarf/

答2:如果你想把日志记录到一个数据库,你可以使用ACID。

http://www.silicondefense.com/snortsnarf/

问:在ACID中,为什么某些报警的IP为未知?
答:当某条规则触发一个报警,snort数据库输出插件只记录报文的数据信息。所以,因为由portscan和mini-fragmen预处理模块产生的报警没有响应规则,因此不能记录报文信息。由于这个原因ACID不能显示任何报文级(例如:IP)的信息。

问:使用ACID删除一个报警记录时,为什么会出现"error deleting alert"信息?
答:主要是数据库用户的权限设置不当造成的。用户除了需要INSERT、SELECT权限外,还要DELETE权限。

可以通过在数据库中插入一条记录,然后删除来确定权限是否正确:

以ACID使用的凭证(用户名、密码等)登录MySQL数据库。 %mysql -u username -p password

在event表中插入一条测试记录。 mysql> INSERT INTO event (sid, cid, signature, timestamp) VALUES (1,1000000, "test", "0");
(这里假设ID=1000000以前没有用过)

删除新插入的记录 mysql> DELETE FROM event WHERE sid=1 AND cid=10000000;
如果无法删除,那么就是权限有问题。以MySql的root用户重新登录,使用GRANT命令赋予ACID用户DELETE权限:
GRANT DELETE on snort.* to acid@localhost
(这里假设我的报警数据库是snort,用户名是acid,主机是本地主机,实际使用时,需要你根据自己的实际情况决定)

问:为什么使用lynx会造成ACID崩溃?
答:这是一个广为人知的问题了。lynx会破坏URL之后的一些表单参数。使用Netscape、Opera或者IE没有这个问题。

问:可以设置ACID报警的优先权吗?
答:不行。

问:当执行长操作(例如:删除大量的报警记录)时,ACID连接超时。
答:PHP有一组内部变量限制脚本的执行时间。用来阻止一些写的不好的代码无限制地执行。可以修改php.ini文件的max_execution_time变量改变超时的时间限制。

问:为什么snort会报告"acket loss statistics are unavailable under Linux"信息?
答:Linux系统的IP协议栈不能报告包丢失状态,2.4内核会有所改观。BSD系统支持这项功能。

问:SYNFIN扫描是什么意思?
答:顾名思义,就是把扫描数据包的SYN和FIN标志全部打开。

问:"SMB Name Wildcard"是什么意思?
Whitehats IDS177指定的一种从外部网络流入本地网络的报文。允许netbios报文经过公共网络通常不太安全。

问:命令行和规则文件哪个的优先权高?
答:命令行。

问:/var/log/snort目录已经非常大了,怎么办?
答:使用如下脚本归档、清理:

问:可以使用snort在防火墙中加入ipfilter/ipfw规则吗?
答:可以。需要额外的软件--Guardian,它在源代码的contrib/目录下。但是,这很危险,除非你确实知道你做了什么,否则最好不要使用。

Guardian是一个perl脚本。snort检测到攻击后,可以通过它使ipchains拒绝后面的攻击。

Guardian的主页在:
http://www.chaotic.org/~astevens/Guardian/index.html
你也可以使用它的镜像:
http://www.cyberwizards.com/~midnite/Guardian/index.html

警告:运行外部程序会造成系统性能上的损失,你还应该看一看Christopher Cramer关于这个问题的论述:


对于这个想法以前已经有过讨论,但是我认为这是一个馊主意,攻击者可以通过它实现对系统的拒绝服务攻击。他们可以发送一些伪造地址的触发跋文,诱使snort启动这项功能,达到拒绝服务攻击的目的。

因为我不想进入你的系统,但是可以通过这种方式让你不得安宁,而且我勿需担心反馈的数据。我所做的只不过是在包头加入一些要让你阻塞的IP地址,然后发出,如此而已。但是,你一觉醒来,就会发现已经被踢出这个世界了。

问:我如何才能让snort运行在多个网络接口上?
答:如果你使用的系统版本不是linux 2.1.x/2.2.x或者更高,那么只好在每个接口上运行一个snort实例了。对于linux 2.1.x/2.2.x以及更高版本,S. Krahmer为libpcap库打了补丁,你可以把接口名字设置为any。这样,snort就能够处理来自与所有网络接口的报文了。

问:我得到"snort [pid] uses obsolete (PF_INET, SOCK_PACKET)"警告信息,是怎么回事?
答:这是由旧版本的libpcap和新版本的Linux内核造成的。这应该不是什么大问题,因为新内核也支持SOCK_PACKET套接字类型。为了避免出现这种信息,你需要升级libpcaphttp://www.tcpdump.org)。

问:如果网络接口的IP地址是动态分配的,我能够使用snort吗?
答:可以。对于snort1.7以及以后的版本可以使用_ADDRESS变量。这个变量的值一致被设置为运行snort的网络接口地址/掩码。如果接口关闭然后重新打开(IP地址被重新分配),你需要重新启动snort。对于早期的版本,有些脚本可以实现这种功能。

问:snort无法运行,并显示"can not create file",而我还有大量的硬盘空间,这是怎么回事?
答:可能是磁盘没有用过的inode数量不足,导致你不能在分区上建立更多的文件。删除一些文件就可以了。

问:当我启动snort时,出现有关规则文件的错误信息,为什么? 下面是经常出现的错误信息:
ERROR somefile.rules:yy => Port value missing in rule!
ERROR somefile.rules:yy => Bad port number: "(msg:"blah"
ERROR somefile.rules:yy => Couldn't resolve hostname blah
我该怎么办?

答:somefile.rules文件是发生语法错误的规则文件,yy是错误规则的行号。主要有下面几种可能:

规则的端口值没有定义,端口号无效,或者是主机名错误。
更常见的情况是,规则是正确的,但是某个变量没有声明。
问:snort发出太多的"IIS Unicode attack detected"或者"CGI Null Byte attack detected"误报警,如何避免?
答:这些信息是由http_decode预处理模块造成的。在规则文件中加入下面一行可以避免出现这些信息:

preprocessor http_decode: 80 8080 -unicode -cginull
问:snort不能把信息记录到数据库,为什么?
答1:配置文件中没有设置数据库输出插件。

答2:你的数据库版本太旧。

答3:命令行选项覆盖了配置文件的设置,主要是-A或者-s选项造成的。注意:如果你也想把信息记录到syslog中,需要在配置文件中进行配置,而不要使用命令行。

答4:数据库配置不当。要确定snort使用的用户名有正确的权限,数据库已经运行。

问:数据库不能记录portscan的信息,为什么?
答:把输出特性由log改为alert,portscan插件只能调用以alert注册的输出插件,而不是以log注册的。

output database: alert, mysql, user=snort dbname=snort host=localhost

问:snort不能向syslog记录信息,为何?
答1:命令行选项把配置文件覆盖了。通常是-A造成的。

答2:有可能记录到别的地方了。先检查syslog配置是否正确。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表