当前位置:Linux教程 - Linux - SNARE-系统入侵分析和报告环境

SNARE-系统入侵分析和报告环境

SNARE-系统入侵分析和报告环境

来源:InterSect Alliance
编译:nixe0n


1.简介
2.SNARE综述
3.SNARE的安装、删除和使用
4.审计配置
5.审计结果显示
6.总结




1.简介


在长期的对对Sun Microsystems Solaris、Microsoft Windows NT/2000、Novell Netware、IBM AIX和 IBM MVS (ACF2 and RACF)等系统平台的日志审计和入侵检测过程中,InterSect Alliance的团队积累了丰富的经验。这个团队在IT安全工具、商业领域的运作等方面也具有丰富的经验。通过这些经验我们知道了如何有效地配置主机和网络入侵检测系统,从而加强各个组织的商业安全,这些思想都是独一无二的。(能够把自己的成果与人分享多么令人尊敬,虽然有点自吹自擂的味道。^_^)

我们认为,在很长一段时间内有一个重要的因素妨碍了Linux操作系统更为广泛地应用,尤其是在对安全要求教高的组织内应用,这个因素就是Linux操作系统缺乏基于主机的入侵检测能力。也即使说,一个内部的系统事件审计或者事件日志的功能。然而,我们承认把审计/事件日志能力直接放到内核智能造成内核的臃肿。而有些情况下,根本不会用到这种功能。

最近,在提交的Linux 2.5内核中,把模块化安全延伸(modular security extension)放到Linux内核,受到这个消息的鼓舞,InterSect Alliance发布了一个动态加载模块来实现基本的主机入侵检测系统和Linux的C2风格的审计/事件日志能力。如果想使用这个动态加载模块需要重新编译内核。这就是SNARE(System iNtrusion Analysis & Reporting Environment)工程。InterSect Alliance使用GPL作为SNARE的许可证。



2.SNARE综述


总体上,SNARE由三部分组成:



内核动态加载模块auditmodule.o。

在用户空间运行的审计监控程序auditd。

图形截面的配置和报告工具snare。


auditmodule包装(wrap)了一些比较危险的系统调用,例如:execve、open、mkdir,它把这些系统调用放到一个信息收集的例程,收集进程和用户执行的一些有疑问的系统调用信息。接着,这个模块把获得的信息放到一个临时缓冲区,用户空间的监控程序auditd从这个缓冲区可以获得这些信息。

用户空间的监控程序auditd通过/dev/audit设备获得auditmodule模块收集的信息,把这些二进制审计数据转换为文本格式的数据,并使用一系列标记对信息进行分割。除此之外,为了方便后续的处理,还需要使用三个域分割符:TABS分割标记;COMMAS分割每个标记中的数据;SPACES分割数据中的元素。原始的事件经过auditd的处理后,看起来这样:


objective,clear,Mon Aug 6 19:43:25 2001,The program /usr/bin/gimp has been
executed by the user leigh event,execve(),Mon Aug 6 19:43:25 2001
user,leigh(500),users(500),leigh(500),users(500) process,1651,sh
path,/usr/bin/gimp arguments,gimp return,0


但是即使是这样的格式,对于普通用户来说也非常难以理解。因此SNARE提供一个用于日志分析的图形前端snare。通过这个图形前端可以容易地进行事件日志参数的配置和事件的显示。下面就是一个snare主窗口的屏幕快照。




图.1.主窗口


SNARE的开发平台是Linux2.4版内核,通过重新编译,可以运行于任何打开内核模块支持的Linux内核。为了方便用户的使用,SNARE工程组提供了一些针对当前主流厂商二进制发布,包括:RedHat、SuSe和Debian。



3.SNARE的安装、删除和使用


安装RPM包

通过RPM软件包来安装SNARE非常容易,SNARE的RPM发布由四个文件组成,这三个文件是:



snare-core-0.8-1.i386.rpm

包括安装auditmodule和SNARE内核审计组件必须的二进制文件。这个包可以单独安装,不过为了方便应用还是建议安装snare图形界面。注意这个包中的内核模块是针对RedHat-7.1默认的内核版本(2.4.2),如果你使用其它版本的内核需要重新编译。


snare-0.8-1.i386.rpm

只包括snare图形前端。这个包需要snare-core-0.8-1.i386.rpm,否则根本无法使用。


snare-core-0.8-1.src.rpm

包括snare-core的源代码。


snare-0.8-1.src.rpm

snare图形前端的源代码。


你可以根据自己的情况下载需要的软件包,如果使用的是RedHat7.1默认的内核,只要按照以下步骤进行安装,运行就可以了。



以roo用户登录

#rpm -ihv snare-core-0.8-1.i386.rpm snare-0.8-1.i386.rpm

#/etc/init.d/auditd start


如果你使用的内核不是RedHat 7.1默认的内核,在执行以上命令之前,需要使用源代码RPM包重新构造RPM包:


#rpm -rebuild snare-core-0.8-1.src.rpm


手工安装

如果你不能使用RPM,就需要从使用源代码压缩包安装。首先,下载snare-core-0.8-1.tar.gz和snare-0.8.tar.gz文件,将其解压。然后分别按照如下步骤进行安装:



snare-core

#make clean
#make
#make install


图形前端

#./autogen.sh
#make
#make install
#cp snare-icon.png /usr/share/pixmaps
#cp snare.desktop /usr/share/gnome/apps/System
#cp snare.desktop /usr/share/gnome/ximian/Programs/Utilities
#cp Snare.kdelnk /usr/share/applnk/System


运行SNARE

安装完成后,使用Ximian、KDE和Gnome的用户可以从菜单启动SNARE的图形前端snare。对于Ximian,snare菜单项的位置是:Programs->Utilities->Snare - Event Logging;对于GNOME,snare菜单项的位置是:Programs->System->Snare ->Event Logging;在KDE中,SNARE菜单项位于系统菜单内。如果看不到这些菜单项,只要输入snare命令就可以通过命令行方式启动SNARE图形前端。如果没有安装图形前端,你需要手工配置审计配置文件。

通过NFS输出snare日志目录(默认是/var/log/audit),在远程的图形前端上也可以查看本地事件日志。不过,远程图形前端不能控制本地的监控进程auditd。


4.审计配置


SNARE的审计配置文件是/etc/audit/audit.conf。这个文件保存了auditd监控程序所需的所有配置选项。配置文件的错误不会使auditd终止,只会造成分析结果无法阅读。注意:手工编辑/etc/audit/audit.con文件时一定要小心,而且如果手工配置之后,又通过图形前端修改配置,原来手工配置的结果就会被覆盖。

最简单有效的方法是通过图形前端修改审计配置。在主窗口上选择Setup -> Audit Configuration菜单,或者直接点击工具条上的按钮,可以进入审计配置界面。

审计控制(Auditing Control)

初始的审计配置参数包括:



审计报告的可信度

报告类型

日志文件的位置


这三个参数在配置窗口的第一个表(Auditing Control)中显示,如图所示:




图2.审计配置窗口-审计控制(Auditing Control)表


Linux是一个多任务分时操作系统,任何活动的进程都可能产生审计信息,因此audit内核模块必须对审计数据进行缓冲,等auditd获得进入运行状态后从缓冲区取出审计数据进行分析。如果auditd所得CPU时间不足,不能及时从缓冲区取出审计数据,就可能造成审计数据的丢失。如果用户选择了grade of auditing的C2 Style按钮,系统内核就会放慢运行产生审计数据的进程,以便auditd能够跟上审计数据产生的速度,但是这个选项会造成系统效率的下降。如果用户选择normal按钮,则可能造成审计数据的丢失。

审计类型可以是原始内核事件(raw kernel events)或者对象(objective,用户定义的事件过滤器)。如果选用“原始内核事件”审计类型,会将导致选择的系统调用产生的事件被直接写入日志文件,而不经过任何的过滤。被审计的系统调用可以通过Kernel选择,如图3。这种方法更适合于C2风格的审计。




图2.kernel表


通过设置对象(objective),可以对选择的事件进行更高级的审计。用户设置的所有对象都在审计配置窗口的objective卡中列出,如图:



对象(objective)

对象(objective)为事件的选择和报告提供高层控制。事件通过一组高层条件选择,由选择的过滤器进行筛选。事件按照如下条件分组:



打开/建立一个文件/目录。

删除一个文件/目录。

启动/停止一个程序。

修改系统文件/目录的属性。

改变用户/组的标志。

登录/退出(SNARE0.8版还没有实现)。


对于每个组,都可以赋予一个危险级别。危险级别分为:ritical、priority、warning、information和clear。使用危险级别,用户可以把审计事件影射到自己推广的商业安全产品。通过SNARE图形前端,还可以迅速地把审计事件利用彩色按钮进行显示,如图1所示。

下面的过滤器可以用于审计事件数据的筛选:



针对特定事件可匹配项目的过滤

每个事件都有一段核心数据用于通讯。例如:对于打开/建立一个文件/目录,这段核心数据就是被打开/创建的文件和目录;对于启动/停止一个程序,核心数据就是可以程序的名字。事件匹配有三三种方式:部分匹配(partial)、准确匹配(exact)和正则匹配(regular expression)。

部分匹配就是在指定事件的可匹配项目中查询某个字符序列。例如:在打开/建立一个文件/目录组中,对字符串pass进行部分匹配,那么下面的文件名都会被命中:


/etc/passwd
/usr/lib/passfilt.so
/home/red/khyber_pass.txt


而如果我们需要对字符串/etc/passwd进行准确匹配(exact),那么只有文件名/etc/passwd会被命中,而象/etc/passwd.backup之类的文件名将不会被命中。

正则匹配(regular expression)是在匹配字符串中使用正则表达式,从而实现高级的匹配。例如:*[Pp]ass(word|wd).*将会得到如下匹配结果:


etc/passwd
/tmp/PasswordFile


而不会命中:


/etc/PASSWD



针对用户的过滤器

通过这种过滤,可以对任意数量用户的行为进行审计。每个用户名使用逗号分开。如果没有指定用户名,系统将对所有的用户进行审计。


返回值过滤器

事件审计会返回成功/失败状态码。使用返回值过滤,用户可以对审计的返回值进行过滤。


一旦上面的设置全部完成,先面就可以点击Save Configuration保存结果了。不过,如果希望甚至结果能够马上生效,需要点击Saveand Apply按钮。



5.审计结果显示


完成以上配置后,SNARE的图形前端的主窗口就会显示满足指定条件的审计事件。在主窗口中显示的是每个事件的概述。如果想知道某个事件的细节,可以使用鼠标双击这个事件,然后会回弹出一个描述事件细节的窗口。例如:



如果想看以前的事件,可以选择Activity->Reload Log File菜单或者点击对应的按钮。此外,主窗口的事件列表,可以通过Activity->Clear all Current Events菜单或者对应的按钮清除。



6.审计管理


前面讲过,审计监控程序是SNARE的一个独立组件,SNARE图形前端可以对其主要操作进行管理。除此之外,图形前端还可以对其它两个功能进行设置。

通过Activity->Apply and Restart Audit菜单可以直接重新启动auditd进程。这样可以使auditd在配置修改后,重新读取配置文件。

通过 View->Audit Status菜单或者对应的按钮可以查看auditd的状态,包括其是否活动、进程ID、SNARE版本。

SNARE的日志文件可能很大也可能比较小,这取决于其配置。在任何情况下,SNARE只会不断地向日志文件写入事件日志,时间太长会造成日志文件太大而难以管理。使用logrotate,定期保存历史日志文件可以有效控制日志文件的大小。


7.网络配置


除了日志功能之外,SNARE还可以使用电子邮件或者UDP协议把事件日志通过网络把事件日志发送到远程主机。相关的选项可以使用setup菜单设置。注意:在SNARE0.8版中这个功能尚未实现。



6.总结


在很长一段时间里,缺乏基于主机的入侵检测能力,阻碍了Linux系统的广泛应用。SNARE的推出,可以有效地解决这个问题。不但如此,其友好的用户界面,使用户可以象使用Windows系统的事件查看器一样审计系统日志。