Nessus 3.0 简介
http://www.cert.org.tw/documen....php?key=103--------------------------------------------------------------------------------
前言:弱点检测概述
随着电子化时代来临,不管是在日常生活或工作上,电脑及网路都已变成人们及企业
赖以为生的工具,各式各样的软体应用程式、硬体设备、网路频宽都因需求而蓬勃发展,
不过在为求便利而大量使用电脑及网路的情况下,相对的许多弱点也相依而生。弱点指的
是在软体程式开发时的一些有意或无意的程式设计错误,或系统管理者的一些不当安装设
定软体的方式,使得攻击者可以在有安装这些软体的机器上,利用这些尚未修补的错误来
入侵,获取到系统的机密资讯或是系统的权限。每套软体或多或少都有弱点存在以及这些
弱点被攻击者拿来利用入侵的可能,尤其是当软体越装越多,系统服务开启的越多,那么
被攻击的可能性就越大,而系统管理者要发现及避免那么多软体及服务所带来有形及无形
的弱点实在不是那么容易的事,所以若能透过一些自动化的检测方式来检测我们的系统,
再来针对这些检测报告所提供相关的因应措施来修补系统上所发现的弱点,是比较正确与
方便的管理方法,且让我们能快速地反应与避免弱点所带来的风险。这就是所谓的弱点检
测的概念。
一、有名的弱点检测工具:Nessus
而弱点检测工具大致上可以依扫描的对象与方式分为主机型与网路型,主机型的检测
工具可以找出系统上不安全的档案权限设定、尚未更新的安全弱点,以及侦测系统有无被
安装后门与木马程式等等。网路型的检测工具则能与连上网路的主机与设备连线,找出这
些机器上所开放的服务及其服务的相关弱点,也可进行大范围网段的检测。而今天要介绍
的 Nessus 是属于网路型的弱点检测工具。
Nessus是一套非常简单易用且功能强大的检测工具,在 Nessus 2.x 版及其以前的版
本都是开放原始码,而目前 3 版之后的版本则已经是不再开放原始码。我们可以先列举
Nessus 的几个主要特色来概述:
‧Client-Server 架构:Nessus 采用 Client-Server 的架构来进行扫描检测,也就是必
须先架设好 Nessus 的扫描 Server,再使用 Client 端的连线程式与 Server 做连线,
再设定一些扫描的设定如欲检测的主机 IP 及欲检测的项目等,待 Server 扫描完毕后会
将扫描检测的报表结果传回给 Client 观看。
‧采用 plug-in 的新增弱点测试项目:这些一只只所谓的 plugins 就是 Nessus 的扫描
剧本,每只 plugin 都有其要检测的目标弱点,它会告诉 Nessus 去检测主机上的某个服
务,去测试这个服务下有无存在这只 plugin 所要测试的弱点,可以说测试一只 plugin
就代表测试一项弱点。而 Nessus 的 plugins 常常都在更新,官方每天都有新的 plugin
弱点检测项目公布,Nessus Server 可以直接使用网路来线上更新这些新的 plugins,使
得 Nessus 可以及时检测出更新、更多的弱点,这也是 Nessus 所强大的地方。
‧呼叫外部程式以增强测试的能力:Nessus 扫描时也会呼叫一些程式来额外增强检测的
能力,如呼叫 Nmap 来扫描、Hydra 来测试系统上的脆弱密码、Nikto 来测试 Web 程式
的弱点等等。
就像上面提到的,plugins 是 Nessus 最重要的部分也是功能强大的原因,所以有必
要再对 plugins 有进一步的认识。这种 Nessus 所用的弱点检测项目其实主要是用 NASL
(Nessus Attack Scripting Language)语言所撰写,只有一小部分是以 C 来撰写,所以
我们可在安装完 Nessus 后的资料夹底下发现很多副档名是「.nasl」的 plugin 档案。
二、Nessus 2 版与 3 版的差异
本文虽然是以 Nessus 的 3版为主题,但其实就使用面来看,2 版与 3 版的使用方
式并无明显不同,基本架构也一样,不过在现在 plugin 日益繁多的情况下,Nessus 2
版解析 nasl 的引擎效能较为不好,导致扫描检测的过程缓慢,而根据 Nessus 官方宣称
在 3 版最大的改变,就是开发了新的处理 nasl 的引擎,不论在 nasl 的执行时间、扫
描时间、同一时间下可扫描的主机数量、记忆体的耗用情形、系统的负载量都有很大的改
善与进步,新版的 nasl 也有更大的延伸性可以针对更多各种不同的安全漏洞做检测,虽
然 3 版以后已经不再开放原始码,不过以往为人诟病的扫描速度已经增快很多,能够更
快速地获得扫描结果报表是最大的优点。这些 2 版与 3 版之间差异的更多详细资讯请参
考以下的网址:http://www.nessus.org/documentation/index.php?doc=nessus3。
三、Nessus 3 的安装与使用
安装 Nessus 3 是非常容易的事情,大概只要几行的指令就能安装完成,现在 Nessus
3 可运行的作业系统有 Red Hat ES3 ES4、Fedora Core 1,3,4,5、SUSE 9.3,10、Debian
3.1、Freebsd 5.4,6.0、Solaris 9,10、Mac OS X,甚至 Windows 上也有测试版本了。
在安装方面,首先从
http://www.nessus....nload/ 选择适合的作业系统版本的
Nessus 下载,这里我们以 Freebsd 5.4 为例子,下载完档案后,以 root 身分登入执行
下列指令「pkg_add Nessus-3.0.3-fbsd5.tbz」就能完成安装:
Freebsd 会将 Nessus 安装至「/usr/local/nessus」下的目录,注意若是安装在其
他作业系统上可能会有不一样的安装路径。此目录下就包含了所有 Nessus Server 的档
案如执行档、设定档、plugins等等。
安装完成后,我们必须先做一些 Nessus 的初始设定才能供 Client 连线,首先我们
要先初始新增一个 Nessus 的使用者,之后才能用这个使用者登入开始扫描。键入指令
「/usr/local/nessus/sbin/nessus-add-first-user」:
其中要注意的是设定 User 的 rules,设置 rules 的意义是可以规范这个使用者的
权限,可允许或拒绝这个使用者所要求扫描的 IP 网段等等,设定方式例如输入「accept
IP」表示可允许扫描的 IP,「deny IP」表示无法扫描的 IP,「default accept」及
「default deny」表示不在设定档里的 IP 分别是允许或拒绝。我们在此没有设定任何
rules 表示此使用者没有任何的限制。
再来我们要设定 Nessus 的认证,因为 Nessus 扫描完后的弱点报表资讯是相当重要
的,如果被别人窃取反而变成攻击者的入侵教科书。所以 Nessus Server 和 Client 的
传输是经过加密认证来传送这些弱点资讯,所以我们必须在 Nessus 的 Server 上设定产
生认证,键入「/usr/local/nessus/sbin/nessus-mkcert」指令,一般来说都按照预设值
就可完成设定,设定完后可以看到其相关认证档案所摆放的位址。接下来我们可以键入
「/usr/local/nessus/sbin/nessusd –D」的指令来启动刚刚安装好的 Nessus server,
等待所有的 plugins 都载入后就已经完成启动了 Nessus。
再来我们就可以用 Client 端软体与 Nessus 连线来扫描了,同样在到下面网址里下
载到 Nessus for Client 的软体 (
http://www.nessus....nload/ ),在 Windows
下我们使用名称为 NessusWX 的 Client 程式来当作我们 Client 端的连线工具,下载解
压缩后执行「NessusWX.exe」,就会出现视窗化操作介面,我们点选「Communications」
标签里的「Connect…」选项,设定我们欲连线的 Nessus Server 的 IP 位址与刚刚建立
的使用者帐号与密码。
按下连线按钮后,Server 就会传送一个凭证要求 Client 接受,接受后我们可以看
到 Client 已经开始接受 Server 传送的必要资讯。与 Server 连线完成后下方视窗则会
显示目前载入了多少只的 plugins 可供扫描检测,而从 NessusWX 的「Communications」
标签里下的「Plugin list」选项我们可以看到刚刚 Server 所送来的一些 plugins 的静
态资讯。
接下来我们可以来做一些扫描的相关设定,从 NessusWX 的「Session」标签里的
「New…」选项开启一个新的 Session,接着点选 Session 右键里的「Properties」就可
以设定这次扫描的选项,例如可以设定欲扫描主机的 IP 或一整个网段、扫描使用那些的
通讯埠、以及可以自定选择那些 plugins 来扫描等等,在此我们以所有载入的 plugins
来扫描 Windows XP 主机来做个试验,扫描参数都设定好后点选 Session 右键里的
「Execute…」就可以开始进行弱点扫描检测了,可以看到扫描正在进行以及扫描进度。
以上大概就是简单的安装与使用 Nessus 的流程,更详细的使用文件请参考 Nessus
的网址:http://www.nessus.org/documentation。
四、扫描结果与报表
等待扫描检测完成后,NessusWX 会列出所有曾经扫描过的纪录,我们点选刚刚扫描
的那一笔纪录,按下右边的「Report」键可以将这笔扫描纪录整理存成报表供我们观看,
我们可以选择要存成 .txt、.html、或 .pdf 的档案格式,在此我们选择存成 html 格式
再用浏灠器开启这份报表观察。
从报表中我们可以很清楚地看出这些扫描的资讯与结果,包括了所检测的主机 IP 与
主机上所开启的通讯埠、扫描时间等,和这些安全风险的描述与相对应的解决方法。所以
藉由 Nessus 的检测,我们可以很容易方便地来检测与管理我们的系统,从扫描的结果报
表可以得知目前系统上存有什么样的弱点,使我们及早修补这些安全漏洞,从而降低了被
攻击者攻击的可能。
五、定期更新Nessus Server的plugins
上面曾经提过 Nessus 之所以强大的地方就是在于 plugins 几乎是每天都有新的公
布出来,可以提供我们更快速地检测与反应新的安全弱点。而安装好的 Nessus Server
直接就能向 Nessus 网站做线上的更新,非常的方便。在更新之前我们必须先取得 Nessus
plugins的启动码,我们可在
http://www.nessus.org/...ndex.php 注册填入我们
的 E-mail 信箱,就会得到一组注册的启动码,而依照信件里的启动码与指令输入后,就
可以获得我们 plugins 的更新权,而以后只要定期在安装 Nessus 的主机上执行指令「
Nessus 安装目录 /sbin/nessus-update-plugins」就能更新我们的 plugins 了。不过此
注册免费的更新版本是在最新 plugins 公布后七天才能提供我们更新使用,而若真的要
取得最新的plugins则需要花钱购买。
六、结论
虽然使用 Nessus 的弱点检测是相当地方便,但在使用时有几点必须好好注意,以下
列出这些要点当作本文的结论:
‧在未经由别人同意授权前而任意地扫描主机是违法的行为,所以在扫描前请先考量清楚
扫描的对象。
‧扫描检测并非万能,Nessus本身也会有误判的情况发生,且在扫描后没有发现弱点不代
表系统就一定处在安全无虑的状态下,或许可能是新的弱点尚未被发现。
‧扫描本身就具有一定程度的危险性,不当的使用方式可能造成系统设备或服务的损毁与
当机,所以在扫描之前重要的系统应先做好备份。
‧适当地选择弱点检测项目,不是使用所有的 plugins 扫描就好,因为使用不相关的
plugins 扫描只是白白浪费时间与系统资源,所以在扫描前要对本身的系统与 plugins
及相关的安全通报有一定程度的认知与了解才是真正使用 Nessus 的正确方法。