网络安全之紧急响应与恢复
一次性进群,长期免费索取教程,没有付费教程。
教程列表见微信公众号底部菜单
进微信群回复公众号:微信群;QQ群:16004488
微信公众号:计算机与网络安全
ID:Computer-network
在系统被入侵之后,就要面临系统的恢复过程。系统的恢复过程中,通常需要解决两个问题:一是被入侵所造成的影响评估和系统的重建,二是恰当的外部措施的采取。其中外部措施的采取,又直接与评估和重建过程中所形成的结论相关,因此我们将重点介绍入侵所造成的影响评估和系统重建过程。
一、系统恢复
在系统恢复的过程中,应当注意的是,所有步骤都应该与组织的网络安全策略中所描述的相符。如果安全策略中没有描述如何进行系统的恢复,那么可以先和管理人员协商,与管理人员协商的好处在于,当管理人员得知系统被入侵后后,可以从更高的角度判别出这一入侵事件的重要性,从而系统的恢复过程可以得到更多部门的支持和配合。另外一个重要的用处在于,组织可以因此决定是否进行法律相关的调查,系统在被入侵后,是否要进行法律调查诉讼、与媒体的关系是两个需要重视的外部关系问题。
1、切断被入侵系统的入侵者访问途径
为了夺回对被侵入系统的控制权,首先需要避免入侵者造成更严重的破坏。如果在恢复过程中,没有断开被侵入系统的入侵者访问途径,在恢复的过程中,入侵者就可能破坏恢复工作。曾经发生过这样的事情,在恢复过程中,系统管理员发现自己所进行的修改完全没有起到预想中的作用,事后才发现当自己修改配置的时候,入侵者同时也在进行操作。切断入侵系统的入侵者访问途径,可以有多种选择。如果入侵者来自于网络,可以将其从网络上断开。如果可以确认入侵者来自于外部网络,那么可以在边界防火墙上面进行恰当的设置,以确保入侵者无法再进行访问。断开以后,可以进入UNIX系统的单用户模式或者NT的本地管理者(local administrator)模式进行操作,以夺回系统控制权。不过,这样做的代价是,可能会丢失一些有用的信息,比如说入侵者正在运行的扫描进程或监听进程。另外,如果决定要追踪入侵者,那么也可以不采取这些措施,以避免被入侵者察觉,但是这时应当采取其他措施保护那些内部网络尚未被入侵的机器,以避免入侵的蔓延。
在对系统进行恢复的过程中,如果系统处于UNIX单用户模式下,会阻止用户、入侵者和入侵进程对系统的访问或者对主机的运行状态的意外改变。
2、复制一份被侵入系统
在进行入侵分析之前,最好先备份被侵入的系统,这些原始的数据和记录,会起到很多的重要作用。如果将来决定进行法律诉讼,那么这些数据也将会成为有力的证据。在必要的时候,可以将这些数据保存为档案。可以使用UNIX命令dd将被侵入系统复制到另外一个硬盘。
例如,在一个有两个SCSI硬盘的Linux系统中,以下命令将在相同大小和类型的备份硬盘(/dev/sdb)上复制被侵入系统(在/dev/sda盘上)的一个拷贝:
# dd if=/dev/sda of=/dev/sdb
还有一些其他的方法备份被侵入的系统。在NT系统中没有类似于dd的内置命令,但可以使用一些第三方的程序复制被侵入系统的整个硬盘。
在记录下备份的卷标、标志和日期后,将之保存到一个安全的地方以避免损坏。
3、入侵途径分析
入侵途径分析,重要的在于分析入侵者提升自己权限的手段。否则,即使重新安装了系统,也无法保证系统会是安全的。入侵途径的分析,还有助于发现入侵者留下的后门和对系统的改动。这些信息对于评估系统的受损程度,有着重要的意义。
首先,应该对被入侵的系统进行全面的风险评估。进行全面的风险评估,不仅可以帮助发现入侵者的进入途径,而且也有助于发现入侵者所使用的工具和遗留物。全面的风险评估,还可以帮助管理员明确该系统所面临的其他安全风险,尽管这些问题在本次入侵中也许没有用到,但是并不表明将来不会。
在进行风险评估后,通常会找到最具有可能性的几个入侵途径。这时,需要结合系统情况来发现入侵者进入的途径。有几个方面的数据比较重要,分别是日志文件、显示器输出以及新增的文件。日志文件是发现入侵者最有力的工具,很多入侵程序都利用了系统或服务程序运行时的异常情况,这些异常情况往往会留下一些记录。有的时候,聪明的入侵者会把这些记录抹去,但是显示器上的输出,却仍然留了下来。另外,入侵者所留下的文件有时也可以显示出他所使用的攻击手段。最后,部署在系统之外的入侵检测系统和防火墙,能够提供最可信的证据。
详细地审查系统日志文件,有助于了解系统是如何被侵入的,入侵过程中,攻击者执行了哪些操作,以及哪些远程主机访问了这一系统。通过这些信息,可以对入侵有更加清晰的认识。对于UNIX系统,可以查看/etc/syslog.conf文件确定日志信息文件在哪些位置。NT或者Windows 通常使用三个日志文件,记录所有的NT事件,每个NT事件都会被记录到其中的一个文件中,可以使用Event Viewer查看日志文件。其他一些NT应用程序可能会把自己的日志放到其他的地方,例如ISS服务器默认的日志目录是c:\winnt\system32\logfiles。
以下是一个通常使用的UNIX系统日志文件列表。由于系统配置的不同,它们在系统中的位置可能有所不同。
messages:messages日志文件保存了大量的信息。可以从这个文件中发现异常信息,检查入侵过程中发生了哪些事情。
xferlog:如果被侵入系统提供FTP服务,xferlog文件就会记录下所有的FTP传输。这些信息可以帮助确定入侵者向系统上载了哪些工具,以及从系统下载了哪些东西。
utmp:保存当前登录每个用户的信息,使用二进制格式。这个文件只能确定当前登录用户。使用who命令可以读出其中的信息。
wtmp:每次用户成功地登录、退出以及系统重启,都会在 wtmp 文件中留下记录。这个文件也使用二进制格式,需要使用工具程序从中获取有用的信息。last 就是一个这样的工具。它输出一个表,包括用户名、登录时间、发起连接的主机名等信息。检查在这个文件中记录的可疑连接,有助于确定牵扯到这起入侵事件的主机,并找出系统中的可能被侵入的账号。
secure:某些版本的UNIX系统(例如,RedHat Linux)会将tcp_wrappers信息记录到secure文件中。如果系统的inetd使用tcp_wrappers,每当有连接请求超出了inetd提供的服务范围,就会在这个文件中加入一条日志信息。通过检查这个日志文件,可以发现一些异常服务请求,或者从陌生的主机发起的连接。
审查日志,最基本的一条就是检查异常现象。
很多入侵者会把所有相关的日志记录全部抹掉,这时,如果系统外部运行有入侵检测系统和防火墙,则往往可以提供更宝贵的信息。好的入侵检测系统不仅可以发现有什么样的攻击,还可以判断出这一攻击是否已经成功。而且,入侵者在入侵前所运行的扫描软件,一般也可以被入侵检测系统检测出。检查入侵检测系统,通常就足以发现有关此次入侵途径的足够的信息。
除了这些方法之外,对入侵者遗留物的分析也是一个发现线索的重要内容。由于遗留物的分析,还关系到后门的清除,因此我们在下面详细介绍。
4、遗留物分析
(1)检查入侵者对系统软件和配置文件的修改
①校验系统中所有的二进制文件
在检查入侵者对系统软件和配置文件的修改时,一定要记住:所使用的校验工具本身可能已经被修改过,操作系统的内核也有可能被修改了,这在目前来说,已经越来越普遍了。因此,建议用一个可信的内核启动系统,然后使用一个静态连接的干净的系统来进行检查。对于UNIX系统,可以通过建立一个启动盘,然后对其写保护来获得一个可信的操作系统内核。
彻底检查所有的系统二进制文件往往是十分必要的,可以把它们与原始发布介质(例如光盘)做比较,以确保攻击者没有在系统中安装特洛伊木马。
在 NT 系统上,特洛伊木马通常会传播病毒,或者所谓的“远程管理程序”,例如 Back Orifice和NetBus,特洛伊木马会取代处理网络连接的一些系统文件。
目前,由于一些工具的流行,一些木马程序具有和原始二进制文件相同的时间戳和 sum校验值,通过简单的校验和无法判断文件是否被修改。因此,通常可以采用两种方法进行比较,一种是可以使用cmp程序直接把系统中的二进制文件和原始发布介质上对应的文件进行比较,另外一种则是比较二者的MD5校验值。
②校验系统配置文件
在UNIX系统中,应该进行如下检查:
检查/etc/passwd文件中是否有可疑的用户。
检查/etc/inet.conf文件是否被修改过。
如果系统允许使用r命令,例如rlogin、rsh、rexec,则需要检查/etc/hosts.equiv或者.rhosts文件。
检查新的SUID和SGID文件。下面命令会打印出系统中的所有SUID和SGID文件:
#find / ( -perm -004000 -o -perm -002000 ) -type f -print
对于NT,通常需要进行如下检查:
检查不成对的用户和组成员。
检查启动登录或者服务的程序的注册表入口是否被修改。
检查“net share”命令和服务器管理工具共有的非验证隐藏文件。
检查pulist.ext程序无法识别的进程。
(2)检查被修改的数据
入侵者经常会修改系统中的数据。所以建议对Web页面文件、FTP存档文件、用户目录下的文件以及其他的文件进行校验。
(3)检查入侵者留下的工具和数据
入侵者通常会在系统中安装一些工具,以便继续监视被侵入的系统。
入侵者一般会在系统中留下如下种类的文件:
网络监听工具:网络监听工具就是监视和记录网络行动的一种工具程序。入侵者通常会使用网络监听工具获得在网络上以明文进行传输的用户名和密码。
特洛伊木马程序:特洛伊木马程序能够在表面上执行某种功能,而实际上执行另外的功能。因此,入侵者可以使用特洛伊木马程序隐藏自己的行为,获得用户名和密码数据,建立后门以便将来再次访问被侵入系统。
安全缺陷攻击程序:系统运行存在安全缺陷的软件是其被侵入的一个主要原因。入侵者经常会使用一些针对已知安全缺陷的攻击工具,以此获得对系统的非法访问权限。这些工具通常会留在系统中,保存在一个隐蔽的目录中。
后门:后门程序将自己隐藏在被侵入的系统,入侵者通过它就能够不通过正常的系统验证,不必使用安全缺陷攻击程序就可以进入系统。
入侵者使用的其他工具
以上所列无法包括全部的入侵工具,攻击者在系统中可能还会留下其他入侵工具。这些工具包括:系统安全缺陷探测工具、对其他站点发起大规模探测的脚本、发起拒绝服务攻击的工具、使用被侵入主机计算和网络资源的程序、入侵工具的输出。
还有可能会发现入侵工具程序留下的一些日志文件,其中包含着其他相关站点,例如攻击者的“大本营”站点,或者是入侵者利用这一系统攻破的其他站点。
因此,建议对系统进行彻底的搜索,找出上面列出的工具及其输出文件。一定要注意:在搜索过程中,要使用没有被攻击者修改过的搜索工具拷贝。
搜索主要可以集中于以下方向:
检查UNIX 系统/dev/目录下意外的 ASCII 文件。一些特洛伊木马二进制文件使用的配置文件通常在/dev目录中。
仔细检查系统中的隐藏文件和隐藏目录。如果入侵者在系统中建立一个新的账户,那么这个新账户的起始目录以及他使用的文件可能是隐藏的。
检查一些名字非常奇怪的目录和文件,例如,...(三个点)、..(两个点)以及空白(在UNIX 系统中)。入侵者通常会在这样的目录中隐藏文件。对于 NT,应该检查那些名字和一些系统文件名非常接近的目录和文件。
(4)检查网络监听工具
入侵者侵入一个UNIX系统后,为了获得用户名和密码信息,一般会在系统上安装一个网络监听程序。对于NT,入侵者则通常使用远程管理程序实现上述目的。
判断系统是否被安装了监听工具,首先要看当前是否有网络接口处于混杂(Promiscuous)模式下。如果任何网络接口处于混杂模式下,就表示可能系统被安装了网络监听程序。使用ifconfig命令就可以知道系统网络接口是否处于混杂模式(注意一定使用没有被入侵者修改的ifconfig):
#/ifconfig -a
有一些工具程序可以用来检测系统内的监听程序:
cpm(Check Promiscuous Mode)--UNIX可以从以下地址下载:ftp://coast.cs.purdue.edu/pub/tools/unix/cpm/
ifstatus--UNIX可以从以下地址下载:ftp://coast.cs.purdue.edu/pub/tools/unix/ifstatus/
neped.c可以从以下地址得到:ftp://apostols.org/AposTolls/snoapshots/neped/neped.c
不过一些合法的网络监听程序和协议分析程序也会把网络接口设置为混杂模式,因此,检测到系统处于混杂模式后,还应当找出使用该设备的系统进程。在UNIX下面,可以使用lsof来找出。根据相应的进程名字,才可以断定是否这是一个入侵者建立的监听程序。
但是,在Phrack杂志的一篇文章(Phrack Magazine Volume 8,Issue 53 July 8,1998,article 10 of 15,Interface Promiscuity Obscurity)中,有人提供了一些针对FreeBSD、Linux、HP-UX、IRIX和Solaris系统的模块,可以擦除IFF_PROMISC标志位,从而无法通过检查设备的状态来发现监听程序的存在,因此,使用以上的方法后没有发现监听程序,并不说明入侵者没有在系统中安装这些工具。而且LKM(Loadable Kernel Model,可加载内核模块)的广泛应用,也增加了检测的难度。
还有一个应该注意的问题,监听程序的日志文件通常会增加较快。使用df或者find程序来发现变化过快的文件或者是比较大的文件,有时也可以发现监听程序的蛛丝马迹。使用lsof程序发现进程打开文件、设备的情况,也可以起到一定的作用。一旦在系统中发现了监听程序,建议检查监听程序的输出文件以确定哪些主机可能会面临攻击威胁。不过,一些监听程序会给日志文件加密以增加检查的难度。
5、检查网络上的其他系统和涉及的远程站点
除了已知被侵入的系统外,还应该对网络上所有的系统进行检查。主要检查和被侵入主机共享网络服务(例如NIS、NFS)或者通过一些机制(例如hosts.equiv、.rhosts文件,或者kerberos服务器)和被侵入主机相互信任的系统,以发现这些系统是否也被入侵。
可以使用CERT的入侵检测检查列表进行这一步检查工作。
http://www.cert.org/tech_tips/intruder_detection_checklist.html
http://www.cert.org/tech_tips/win_intruder_detection_checklist.html
在审查日志文件、入侵程序的输出文件和系统被侵入以来被修改的和新建立的文件时,要注意哪些站点可能会连接到被侵入的系统。根据经验那些连接到被侵入主机的站点,通常已经被侵入了。所以要尽快找出其他可能遭到入侵的系统,通知其管理人员。
6、评估入侵事件的影响,重建系统
以上所有对入侵的分析,都是为了对入侵所造成的影响进行恰当的评估,借以决定所应采取的措施,同时重建系统。重建系统相对来说要容易一些,只要考虑到以上步骤所得的结果,或者抹掉入侵者的痕迹、途径和其他安全隐患,重新试运行系统,或者是重新安装系统之后进行安全配置。一般说来,在系统重建之后,往往要经历一个试运行阶段,以判断是否目前的系统已经足够安全。
对入侵所造成的影响进行评估,是一件相当困难的过程。入侵所造成的损害,可以有以下几个方面:
对数据保密性的损害。发生入侵之后,需要判断哪些保密的数据有可能已经泄露,这些信息的泄露造成多大的影响,需要采取的应对措施造成的开销。
对数据完整性造成的损害。这些数据的损害、丢失所造成的影响。这些数据是否已经被传给了第三方,是否会因此承受其他损失。
声誉、信任度、媒体报道所造成的影响。这些影响所造成的潜在损失。
当然,影响不仅限于这些方面,尤其是当一次入侵事件广为人知时,所造成的损害更难以评估。
在评估出影响后,根据事件处理当中所得到的资料,组织可以决定出对此次事件是否采取一些追加措施。比如说,是否进行入侵追踪,是否借助于媒体进行一些公告,是否向入侵者来源地报告,是否提起法律诉讼等等。恰当的追加措施往往能够减少一部分由于入侵产生的不利影响。
由于进一步措施的采取涉及很多的法律问题,因此可以向组织的法律顾问进行咨询,在此我们就不进行详细的论述了。
二、后门的检查和清除
1、什么是后门
入侵者入侵后往往会清除自己留下的痕迹并留下再次进入的方便途径。清除所留的痕迹,主要涉及两个方面问题:如何来隐藏文件和如何来隐藏进程。为了隐藏文件,入侵者可以有多种选择:替换一些系统常用命令如“ls”",“du”",“fsck”;在底层方面,把硬盘里的一些区域标记为坏块并把文件放在那里;或者是,更有甚者,把文件放入引导块里。为了隐藏进程,也有多种选择,如替换“ps”程序,通过修改 argv[]来使程序看起来像一个合法的服务程序,或者是在内核进程列表中屏蔽该进程。
Rootkit就是其中最著名的一种。在rootkit中,包括了日志清理器、后门、伪造的ps、ls、who、w、netstat等程序,使用rootkit,可以使系统被入侵之后,管理员无法通过这些命令得到系统的准确的状态描述,并为入侵者提供一个再次进入的方便途径。最近新出现了一种技术,即 LKM 技术。它利用现代操作系统的模块技术,作为内核的一部分运行。这种 rootkit比传统技术更加强大且更不易被发觉。一旦被安装运行到目标系统上,察觉和清除就会变得分外困难。
在这些程序中,为入侵者提供一个方便下次进入途径的程序通常被称作后门。后门对于入侵者的意义有这样两点:一是防止管理员在给系统打补丁后,自己无法再次进入;二是防止其他入侵者进入。由于后门会给系统的安全带来极大的影响,因此在系统被入侵后,后门的清除就成了一个重要的问题。
2、常见的后门种类
后门程序的目的就是即使系统管理员已经弥补了系统漏洞,入侵者也可以取得对系统的访问权限。常见的后门有:修改配置文件、建立系统木马程序、修改系统内核等方法来实现入侵者以后从非特权用户使用root权限。
修改配置文件:修改配置文件是最简单的一种添加后门的方法,因此被广泛使用。通常入侵者比较喜欢修改的配置文件有:
(1).rhosts文件。用户根目录下的.rhosts文件,通常被R协议用于判断主机和账号间的信赖关系。如果一个账号根目录下的.rhosts文件中含有“++”,则任何人在任何地方都可以不用密码用这个账号来登录。尤其是超级用户根目录下,更有可能出现。
(2)hosts.equiv文件。是系统信任主机的列表。
(3)inetd.conf文件或者是xinetd.d目录。通常是入侵者将一个shell绑定到一个特定的tcp端口,任何人telnet这个端口都可以获得交互的shell。通常是在该文件中增加或者修改一行来达到。
(4)ssh认证密钥。入侵者把自己的公共密钥放到目标机器的ssh配置文件“authorized_keys”里,从而可以用该账号来访问机器而不需要密码。
(5)Cron 后门。入侵者在 cron 增加或修改一些任务,在某个特定的时间程序运行,从而取得对系统的访问权限。
(6)启动任务。通常在/etc/rc.d/或者是/etc/rc?.d/下,入侵者可以增加一些启动的服务程序,这样自己可以利用这些服务程序取得对系统的控制。在修改这些配置文件时,经常还伴随着系统其他处文件的修改和增加。
建立系统木马程序:任何服务程序都可以成为木马来为远程用户提供访问权限。例如,通过修改in.telnetd或者是login程序,当入侵者输入某一定的密码时,即取得超级用户权限。入侵者通常习惯于更改的木马程序有:
(1)in.telnetd、login等登录程序。通过修改这些登录程序,入侵者通过自己定义的一个口令就可以取得系统的控制权。
(2)入侵者会修改一些系统的动态连接库来作为后门,这样做对入侵者的好处是一方面比较隐秘,另外一方面,被管理员检查出来的可能性要小一些。
(3)增加一些新的服务程序,通过inetd启动或者是通过rc脚本启动。这种后门对入侵者使用比较方便,但也比较容易被查出。
修改内核:如Knark,它是新一代的rootkit工具,它基于LKM(loadable kernel module)技术,可以有效地隐藏后门的信息。使用knark,可以
(1)隐藏或显示文件或目录;
(2)隐藏TCP或UDP连接;
(3)程序执行重定向;
(4)非授权的用户权限增加(“rootme”);
(5)改变一个运行进程的UID/GID的工具;
(6)非授权的、特权程序远程执行守护进程;
(7)Kill –31来隐藏运行的进程。
联合使用程序执行重新定向和文件隐藏,入侵者能执行各种后门程序。由于执行重定向是在内核级别进行的,因此文件检测工具不会发现程序文件被修改,原始的执行程序并没有被修改,因此配置检测工具在路径环境中也不会发现任何异常。
如果Knark结合另外一个用来隐藏系统当前加载的模块的LKM工具modhide,就可能实现,甚至通过lsmod命令也不能发现knark的存在。Knark的作者还设计了一个Knark的清除程序knarkfinder,可以用来发现knark所隐藏的程序。
3、常用的检测和清除的工具软件
在了解了木马的种类后,事实上,木马的清除已经比较容易了。在这里我们只简要介绍一下其中可能会用到的工具软件。
(1)lsof
lsof 是一个用于查看进程所打开文件的工具。在系统恢复过程中使用这个工具,通常有如下两个意义:首先,可以发现一个正在运行的进程所打开的文件,这样,有助于通过可疑进程发现那些入侵者遗留物的具体位置;其次,可以用来发现某个端口所对应的进程,在系统恢复过程中,常常会用外部扫描程序来发现系统是否有木马存在,如果发现提供后门的端口,那么就需要确定这一端口是由哪个程序所占用,这时使用lsof程序,就能够达到这个目的。当然,lsof 的作用不止于此,它还能够对一些系统中出现的故障进行调试。
通过进程来寻找该进程所使用的文件或设备,是lsof的最基本的功能。格式如下:lsof –p pid。有时,并不知道该进程的进程号,或者是想知道某个命令所使用的文件或设备,这时可以使用-c选项,lsof –c command,可以找出这个命令所打开的文件或设备。有时发现了一个入侵者的配置文件,希望知道哪些进程打开了这个配置文件,这时可以使用lsof filename来找出所有打开此文件的进程。
lsof在系统恢复过程中最常用的是其定位端口和进程关系这一能力。lsof的-i选项可以达到这个目的。lsof –iprotocol@host:port,其中protocol、host、port都可以省去,protocol可以是TCP、UDP等。例如:lsof –i@aaa.bbb.ccc将列出所有和aaa.bbb.ccc进行网络会话的进程,而lsof –iTCP@aaa.bbb.ccc则列出其中使用TCP连接的进程,lsof –iTCP@aaa.bbb.ccc:21则列出其中所有使用21端口的进程。通过这一方法,可以容易地发现与某一端口对应的进程,从而发现入侵者的遗留物。
(2)Tripwire
Tripwire 是一个完整性检测工具,用来检测对文件系统的未授权修改。它对于系统恢复和遗留物的发现十分有用。Tripwire 通过比较文件的数字摘要来判断一个文件是否被更改。这样已被添加、删除或更改内容的文件就可以被找出来,系统管理员能够因此采取相应的措施。Tripwire是由Eugene Spafford和Gene Kim 1992年在普度大学开发的,其软件包在1998年被商业化,现在由Tripwire Security Inc.来维护(http://www.tripwiresecurity.com)。该公司提供商业和免费两种版本的软件包,能在绝大多数UNIX系统中运行。为了准确地判断出文件内容是否被修改,Tripwire使用了10种单向哈西函数。其程序包括:RSA Data Security公司的MD5、MD4和MD2哈西函数;Snefru(Xerox 安全哈西函数);SHA和Haval编码。它还包含两个传统的CRC过程。其缺省安装为每个数据条目使用两个签名,这使得攻击者通过填充额外字符来掩盖踪迹变得十分困难。
当第一次运行 Tripwire 时,程序创建一个签名的初始数据库。下一次运行时,它使用tw.config文件产生一个新的签名数据库。然后,它比较两个数据库,实施用户定义的任何屏蔽选项(排除经常更改的文件),最后通过电子邮件或显示器在终端上输出一个可读的报告。
Tripwire有四种操作模式:数据库生成、完整性检查、数据库更新或交互式更新。
数据库生成模式产生一个初始数据库,为未来的比较打下基础。
完整性检查是Tripwire的主要模式,把当前文件签名和初始数据库进行比较来进行检查。
两种更新模式是为了方便用户调整Tripwire数据库以去掉不感兴趣的结果或正常的系统变化而设立的。
Tripwire缺省使用MD5和Snefru算法进行校验,这两种算法一起提供强大的保护。不过同时也会消耗大量的CPU时间。因此对安全性和Tripwire性能之间进行均衡是很重要的,可以选择运行程序的6个签名算法及两个校验和中的任一个来保护文件。不过这些中有些算法开销很大,特别是Snefru运行很慢。绝大多数情况下,运行MD5一种就可以了。
Tripwire的配置文件可以让使用者精确地控制程序监测的文件和目录。文件tw.config包含一个这些文件和目录的列表,文件每一行与一个选项屏蔽相关联,告诉程序哪些文件属性的改变可以被忽略。
选项屏蔽由几个标志组成,每个标志包含一个不同的属性。例如“s”标志是文件大小,“a”是访问时间戳。每个标志前面的增加(“+”)或删除(“-”)符号表示是否应当监视后面的属性变化。一个tw.config条目如下:
/home/xyz+s -a
意思是跟踪文件/home/xyz的文件大小变化而忽略文件访问时间的变化。
表1所示是一些常见标志的含意。
表1 常见标志的含意
每个Tripwire签名过程被赋予一个标识,用户可以指明为文件或目录条目使用哪些算法(Tripwire缺省使用1和2)。Tripwire的签名编号如表2所示。
表2 Tripwire的签名编号
Tripwire 很灵活,但选项可能比较复杂。设计者通过创建包含常用选项标志组合的模板来补偿这种复杂性。多数情况下,用户在tw.config中使用模板。5个主要模板如表3所示。
表3 常用选项标志组合的模板
R模板是缺省的。这时Tripwire将在模式位、i节点号、链接数、uid、gid、文件大小、修改时间和MD5及Snefru签名有任何变化时进行报告。它将忽略访问和i节点时间戳的变化。
条目前的“!”是例外标志,如果条目是一个文件,则表示不含这一文件,如果条目是一个目录,则表示不含其中所有文件。“=”标志表示“only”,如果后面的条目是一个目录,将只对目录进行监测而不包括其中的文件。
模板也可以与标志相混合。如“R - 2”表示缺省检测不使用Snefru。
在完成配置后,运行命令 tripwire 将使Tripwire 在完整性检查模式下运行,这时将进行比较并报告任何差异。
也可以在交互模式或数据库更新模式中运行 Tripwire。在交互模式中,每次发现一个文件或目录被增添、删除或修改时,都将提示用户更新数据库。输入命令 tripwire -interactive使Tripwire运行在交互模式下。数据库更新模式在命令行提供一种快速升级数据库的方法,假如刚安装了文件/usr/local/bin/new.file,可以用下面命令更新数据库:
# tripwire -update /usr/local/bin/new.file
该命令也可以用来更新目录中所有的文件。
(3)chkrootkit
与以上两个具有通用功能的软件不同,chkrootkit 是专门为发现系统中的 rootkit 而设计的。它由一系列小的程序组成,基本上可以发现所有著名的后门程序。chkrootkit由七个小程序组成,主程序是chkrootkit,用于发现各种后门;其余的几个分别是ifpromisc,用于检测某个网络接口是否处于混杂模式;chklastlog、chkwtmp、chkwtmpx,用于检测系统的三个日志文件是否曾经遭到过破坏;chkproc,则用于发现LKM木马和隐藏的进程;strings,与UNIX自带的strings类似。
这个工具的使用很简单,在此就不详述了。值得注意的是,该程序只检测出各个遗留物的存在,它并没有消除这些遗留物,因此在检测之后,还应当采取措施将相应的后门和遗留物从系统中抹去。
微信公众号:计算机与网络安全
ID:Computer-network