要
Nessus是一个功能强大而又易于使用的远程安全扫描器,它不仅免费而且更新极快。安全扫描器的功能是对指定网络进行安全检查,找出该网络是否存在有导致对手攻击的安全漏洞。该系统被设计为client/sever模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。在服务端还采用了plug-in的体系,允许用户加入执行特定功能的插件,这插件可以进行更快速和更复杂的安全检查。在Nessus中还采用了一个共享的信息接口,称之知识库,其中保存了前面进行检查的结果。检查的结果可以HTML、纯文本、LaTeX(一种文本文件格式)等几种格式保存。(2002-07-09 13:09:47)
--------------------------------------------------------------------------------
By 书生
1.Nessus简介
Nessus是一个功能强大而又易于使用的远程安全扫描器,它不仅免费而且更新极快。安全扫描器的功能是对指定网络进行安全检查,找出该网络是否存在有导致对手攻击的安全漏洞。该系统被设计为client/sever模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。在服务端还采用了plug-in的体系,允许用户加入执行特定功能的插件,这插件可以进行更快速和更复杂的安全检查。在Nessus中还采用了一个共享的信息接口,称之知识库,其中保存了前面进行检查的结果。检查的结果可以HTML、纯文本、LaTeX(一种文本文件格式)等几种格式保存。
在未来的新版本中,Nessus将会支持快速更快的安全检查,而且这种检查将会占用更少的带宽,其中可能会用到集群的技术以提高系统的运行效率。
Nessus的优点在于:
其采用了基于多种安全漏洞的扫描,避免了扫描不完整的情况。
它是免费的,比起商业的安全扫描工具如ISS具有价格优势。
在Nmap用户参与的一次关于最喜欢的安全工具问卷调查中(评选结果附后),在与众多商用系统及开放源代码的系统竞争中,Nessus名列榜首。群众的眼睛是雪亮的:)。
Nessus扩展性强、容易使用、功能强大,可以扫描出多种安全漏洞。
Nessus的安全检查完全是由plug-ins的插件完成的。到本文完成时为止,Nessus提供的安全检查插件已达18类705个,而且这个数量以后还会增加。比如:在“useless services”类中,“Echo port open”和”Chargen”插件用来测试主机是否易受到已知的echo-chargen攻击。在“backdoors”类中,”pc anywhere”插件用来检查主机是否运行了BO、PcAnywhere等后台程序,可喜的是其中包括了最近肆虐一时的CodeRed及其变种的检测。
在Nessus主页中不但详细介绍了各种插件的功能,还提供了解决问题的相关方案。有关plug-in的详细说明,请看http://cgi.nessus.org/plugins/dump.php3?viewby=family
除了这些插件外,Nessus还为用户提供了描述攻击类型的脚本语言,来进行附加的安全测试,这种语言称为Nessus攻击脚本语言(NSSL),用它来完成插件的编写。
在客户端,用户可以指定运行Nessus服务的机器、使用的端口扫描器及测试的内容及测试的IP地址范围。Nessus本身是工作在多线程基础上的,所以用户还可以设置系统同时工作的线程数。这样用户在远端就可以设置Nessus的工作配置了。安全检测完成后,服务端将检测结果返回到客户端,客户端生成直观的报告。在这个过程当中,由于服务器向客户端传送的内容是系统的安全弱点,为了防止通信内容受到监听,其传输过程还可以选择加密。
2.安装Nessus
前面讲到,Nessus由客户端和服务器端两部分组成。我们先来看服务器端的安装。
2.1 下载与安装
你可以到http://www.nessus.org/download.html去下载nessus的最新版本。Nessus分为服务器端和客户端两部分,而服务器端又分为稳定版和实验版两种版本,建议你下载稳定的版本,如果你不是太急于看到实验版本中的新功能的话。
同样,nessus的客户端有两个版本,JAVA版本及C版本,JAVA版本的可以在多个平台中运行,C版本的支持Windows,有了这两个客户端的版本你就可以在局域网的任何的一台机器上进行安全检查了。
下面我们来看看服务器端的安装。服务器端共有四个安装包组成:
nessus-libraries-x.x.tar.gz
libnasl-x.x.tar.gz
nessus-core.x.x.tar.gz
nessus-plugins.x.x.tar.gz
一定要按照以上的顺序安装各个软件包。首先用tar –xzvf nessus-* 将这四个软件包解开。第一个先安装nessus的lib库:
cd nessus-libaries
./configure
make
以root身份执行make install。
然后以同样的方法按照上面的顺序安装其它三个软件包。
在安装完毕后,确认在/etc/ld.so.conf文件加入安装已安装库文件的路径:/usr/local/lib。如果没有,你只需在该文件中加入这个路径,然后执行ldconfig,这样nessus运行的时候就可以找着运行库了。
2.2 创建一个用户
Nessus服务端有自己的用户资料库,其中对每个用户都做了约束。用户可以在整个网络范围内通过nessusd服务端进行安全扫描。
创建用户的方法如下:
$ nessus-adduser
Addition of a new nessusd user
------------------------------
Login : admin //输入用户名
Password : secret //用户口令
Authentification type (cipher or plaintext) [cipher] : cipher //选择认证过程是否加密,
Now enter the rules for this user, and hit ctrl-D once you are done :
(the user can have an empty rule set)
^D
Login : admin
Pssword : secret
Authentification : cipher
Rules :
Is that ok (y/n) ? [y] y
user added.
Nessus-adduser是Nessusd的附带工具,安装完毕后,在安装目录下会产生这个程序。
2.3 配置Nessus服务端程序Nessusd
它的配置文件为nessusd.conf,位于/usr/local/etc/nessus/目录下。一般情况下,不建议你改动其中的内容,除非你确实有需要。
2.4 启动nessusd
在上面的准备工作完成后,以root用户的身份用下面的命令启动服务端:nessusd –D
3.进行安全扫描
按照上面的方法启动Nessus的服务进程后,就可以执行客户端程序进行安全扫描了。
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/1/8/186239207/nessus_1.jpg');}" src="http://www.linuxaid.com.cn/articles/1/8/186239207/nessus_1.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
上面就是启动界面了。首先提示你登录到nessus服务器,在Nessus Host后面输入Nessus服务器所在的Linux机器IP地址,端口号及加密方式不需要做改动。下面输入用户名,点击Log in登录。一旦登录成功,Log in的按钮会变为Log out,对话框的旁边还会有connected的提示。
好了,下面我们通过选择Plug-in插件来进行相应的安全扫:
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/1/8/186239207/nessus_2.jpg');}" src="http://www.linuxaid.com.cn/articles/1/8/186239207/nessus_2.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
如上图所示,在上半部分的是插件选择,下面是插件所能检查的攻击方法,点击每个攻击方法会弹出一个对话框介绍它的危害性及解决方法,如下图所示:
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/1/8/186239207/nessus_3.jpg');}" src="http://www.linuxaid.com.cn/articles/1/8/186239207/nessus_3.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
建议选择全部的插件以增加安全扫描的完整性。
下面选择扫描的目标主机,点击“target selection”
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/1/8/186239207/nessus_4.jpg');}" src="http://www.linuxaid.com.cn/articles/1/8/186239207/nessus_4.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
在窗口中输入目标地址,如上面所输入的:192.168.6.26,这里作者用的是一个内部地址,你还可以用192.168.6.26/24的方式指定扫描192.168.6.1-192.168.6.255整个网段,抑或用x.y.z及选中下面的Perform a DNS zone transfer选项一起通过域名系统查找目标的IP,
最后还有一个可选项是用户规则,规则是用来对用户所做的扫描操作进行约束,比如我想对除了192.168.6.4这个地址以外的所有192.168.6网段主机进行扫描,那就可以在规则设置中输入:
reject 192.168.6.4
default accept
这一切都OK后,点击start 开始进行扫描。
4.扫描结果
当扫描结束后,会生成如下形式的报表:
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/1/8/186239207/nessus_5.jpg');}" src="http://www.linuxaid.com.cn/articles/1/8/186239207/nessus_5.jpg" onmousewheel="return bbimg(this)" width=545 onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
在窗口的左边列出了所有被扫描的主机,只要用鼠标点击主机名称,在窗口右边就列出了经扫描发现的该主机的安全漏洞。再点击安全漏洞的小图标会列出该问题的严重等级及问题的产生原因及解决方法。
最后,你还可以将扫描结果以多种格式存盘,做为参考资料供以后使用。
摘要
由于Nessusd是一下安全扫描程序,其中附有一些攻击性质的安全扫描,而且用户可以远程启动Nessusd进行操作,所以用户需要对它进行正确的设置,防止有人恶意的使用。(2002-07-09 13:09:58)
--------------------------------------------------------------------------------
By 书生
由于Nessusd是一下安全扫描程序,其中附有一些攻击性质的安全扫描,而且用户可以远程启动Nessusd进行操作,所以用户需要对它进行正确的设置,防止有人恶意的使用。
1.加密
前面提到,如果用户通过网络使用Nessusd,也就是说客户端程序与服务端程序Nessusd不在同一台主机上,Nessusd最终的扫描结果会通过网络返回到客户端,考虑到这其中的内容都是有关网络安全的敏感数据,所以在这里建议用户对二者之间的通话内容进行加密。
在配置安装nessus的时候,执行如下命令:
./configure –enable-cipher
./make
./make install
这样就启用了加密模式,在启动nessusd的时候,还必须为用户指定一个一次性的口令,该口令只在用户第一次登录的时候需要输入,一旦用户登录成功,客户端就向服务端发送公开密钥,这个密钥可以唯一的标识一个用户,所以下一次用户登录的时候就无需输入口令了。增加用户的方法如下:
nessusd –make-user=username,passwd
或
nessusd –P username,passwd
注意在用户名和口令之间除了这个逗号外,不能有空格存在。如果nessusd进程正在运行,你也可以运行这个命令,运行nessusd进行密钥管理,不会重新启动一个nessusd进程。为了验证这个用户的记录已经被保存,可以用这个命令来查看:
nessusd –list-keys 或者nessusd –L
接着,用客户端登录到nessusd,输入刚才建立的用户名及口令。再用上述的命令查看,会发现用户的口令的标识已经由password变为用户的公开密钥user key了。下次用户再用这个用户名进行操作的时候就无需输入用户口令了,但用户所使用的IP地址也因此就被绑定到用户的公开密钥中了,如果在不同的机器中使用同一个用户名进行登录,就会失败。
在当前的版本中,在使用nessus-adduser添加用户时如果指定采用明文的密码,并且按照说明将nessusd.conf中的force_pubkey_auth 项置为no,好象服务端并不能识别该用户,不知道是什么原因。
2.nessusd的启动参数
-D,--background
在后台运行nessusd服务。
-c <config-file>,--config-file=<config-file>
使用另外一个配置文件,默认的配置文件是nessusd.conf。
-a <address>--listen=<address>
只监听来自指定IP地址的连接请求。如 nessusd –a 192.168.6.3,nessusd将只接收来自于192.168.6.3的通信请求,用这个参数可以指定允许连接的客户端地址,防止来自其它机器的使用。
-p <port>, --port=<port>
使nessusd只在指定的TCP端口上监听。默认的监听端口是3001。
-v,--version
显示版本号并退出程序。
-h,--help
显示所有命令。
-d,--dump-cfg
显示当前的配置。
3.nessusd.conf配置文件
nessusd的默认配置文件是/nessus/etc/nessusd.conf。它每行的内容都类似于:<关键字>=<值> 这种形式。它的关键字及其意义如下:
plugins_folder:包含插件的文件夹。一般它位于/nessus/lib/nessus/plugins,你也可以改变它的位置。
Logfile:日志文件所在的路径。如果它的值为syslog,所有nessusd的信息都会通过syslog来进行记录。如果为stderr,所有的信息将会被输出到标准输出设备中。
Max_threads:允许开启连接的最大线程数。建议不要将该值设置太大。该值设置过大,虽然到加快工作速度,但也会导致在测试过程当中丢包,影响扫描的准确程序。建议设为50。
Users:用户资料库文件的路径。
Rules:向规则资料库文件的路径。
Language:指定生成报表所采用的语言。目前只支持english和french两种语言。
Check_read_timeout:指定在检查过程当中客户端与服务端的连接超时时间。
Peks_username:用来在私有密钥数据库中标识nessusd服务的名字。
Peks_keylen:公用密钥的最小长度。
Peks_keyfile:私有密钥数据库的路径。
Peks_usrkeys:用户公用密钥及用户口令数据库的存放路径。
Peks_pwdfail:口令错误的最大重试次数。
force_pubkey_auth:是否强制采用公钥体制加密。
下面给出作者的nessusd.conf的配置文件内容:
4.规则的定义格式
在Nessus中有三个部分用到了规则定义:
规则资料库:这里面这义的规则适用于全体用户。
用户资料库中的规则:其中的规则只适用于一个用户。
客户端的规则:由用户在客户端程序中指定的规则,该规则用来设定扫描目标的范围。
这三个地方的规则是有优先级的,其优先级顺序由高往底为:规则资料库中的规则->用户资料库中的规则->客户端的规则。所以,在低优先级的规则中定义的权限不能超过上一级规则中定义的权限。
规则的定义格式是:
关键字 IP/mask
供使用的关键字包括:deny,accept和default。另外,IP地址前还可以加“!”的前缀,表示“not”的意思。
我们以规则资料库为例来看看规则的定义。规则资料库文件名为nessusd.rules,其中存放的是在系统范围内应用的规则,起到约束全体用户的作用。它的语法如前面所讲。如:
accpet 127.0.0.0/8
deny 192.168.1.1/32
deny !192.168.0.0/16
default deny
这些规则组合在一起说明:允许在用户在本地进行操作,可以接受来自于192.168.0.0/16网段中除了192.168.1.1/32以外的所有主机的操作请求。
用户还可以用client_ip这个关键字来代表本地主机的IP地址,如果你希望用户只能在本地主机中进行操作,规则表达如下:
accept client_ip/32
default deny
5.定义用户资料
用户资料库存放在文件nessusd.users中。用户资料库中包含了允许使用nessusd服务进程的用户资料。在用户资料库中创建多个不同的用户,与相应的规则结合,就可以限定在特定的网段甚至特定一台机器的用户才可以进行扫描操作。
用户资料库中的记录格式很简单:
user:password [rules]
其中user是用户的登录名。用户的登录名可以是任意的。
Password:就是该用户的口令。它的内容是名文,如果用户使用公钥体制进行登录,那么password这一项的内容为空,用户的公钥放在nessusd.user-keys文件中。
Rules:适用该用户的规则。
下面是一个典型的nessusd.users文件内容:
# 用户名为foo,口令为bar
foo:bar
deny 192.168.1.1/32
accept 192.168.0.0/16
default deny
#
# 用户oof通过公钥体制进行认证
#
oof:
deny 192.168.1.1/24
accept 192.168.0.0/16
default deny
摘要
Nessus是一个功能强大而又易于使用的远程安全扫描器,它不仅免费而且更新极快。安全扫描器的功能是对指定网络进行安全检查,找出该网络是否存在有导致对手攻击的安全漏洞。该系统被设计为client/sever模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。(2002-06-24 14:43:04)
--------------------------------------------------------------------------------
By Wing
经过前面的介绍,相信大家已经了解到Nessus的强大功能了。现在你可能会耽心她的工作效率,特别是对一个具有相当规模的局域网来进行一个全面的安全扫描,将会是一个相当漫长的过程,而且在进行安全扫描的过程当中也会占用一定的网络带宽。如此一来用户必须挑选时间进行安全扫描,以避开网络使用的繁忙期,这岂不是很伤脑筋?
其实Nessus的开发者们就想到这些问题了,通过适当的设置您就可以实现后台扫描和断点续查等功能。只不过这些功能的使用都建立在KB saving之上。KB即资料库(knwledge base),其中保存了从被扫描主机中收集来的信息,包括主机中打开的端口、主机的操作系统类型等。它首先是为了减少多余的测试,比如说:插件A扫描的结果可以共享给其它插件使用。测试结束后KB将会从内存释放,在下一次扫描中再重新使用。它设计的出发点是尽量利用其它的检查结果,减少占用网络资源,同时也能提高工作效率。
1.KB saving
KB 保存功能是一个实验功能,所以在缺省的情况下它并没有被激活。这里实验功能并不代表着其代码中含有的许多bug,只是因为这个功能是在nessus1.0版以后才被开发出来的,而1.0版本是一个运行稳定的版本,所以将该功能做为缺省的功能在1.0版本中打开,可能会对1.0版本的运行带来潜在的不稳定因素。在Nessus1.1.0及后继版本中KB保存功能将会被做为缺省开启的。
打开KB saving功能,需要重新编译nessus:
./configure –enable-save-kb
make
make install
编译安装完毕后,运行nessusd –d 确认KB保存功能已经被开启:
/usr/local/sbin/nessusd -d
This is Nessus 1.0.5 for Linux 2.2.16-3
compiled with gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
Current setup :
Experimental session-saving : disabled
Experimental KB saving : enabled
Thread manager : fork
Crypto layer : peks/0.8
nasl : 1.0.5
libnessus : 1.0.5
Running as euid : 0
运行客户端程序会出现一个新的选项,如下图所示:
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/5/2/521031773/1.jpg');}" src="http://www.linuxaid.com.cn/articles/5/2/521031773/1.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
需要在客户端选择“Enable KB saving”才能激活这些功能,这样,收集到的远程主机的所有相关内容都会保存到硬盘上,如下图所示:
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/5/2/521031773/2.jpg');}" src="http://www.linuxaid.com.cn/articles/5/2/521031773/2.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
如果你只选择该选项,nessusd也只做这一项动作,即保存你在远程主机上所在的测试的所有数据,仅此而已,这样还没有体现出它的优势。每个主机的测试内容都会分别保存在一个文件中。这些文件位于:/usr/local/var/nessus/username/kds目录中。Username是用户登录到nessusd的用户名。
在激活了”Enable KB saving”以后,以后的操作可以减少测试主机的工作量,当然这是建立在用户已经进行扫描所收集的数据资料之上的。用户可以选择只对资料库中已有的主机进行扫描,也可以选择扫描资料库中没有的主机,或者选择扫描已经过了时间期限的主机。
为了完成这几种扫描功能,KB saving提供了以下三个选项如下图,这三个选项分别是:“Test all hosts”,”Only test hosts that have been tested in the past”,”Only tests hosts that have never been tested in the past”。
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/5/2/521031773/3.jpg');}" src="http://www.linuxaid.com.cn/articles/5/2/521031773/3.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
这三个选项分别完成的功能是:
If Test all hosts:该选项将对用户设定的全部主机进行扫描。
Only test hosts that have been tested in the past:只对资料库中已有的主机,也就是以前曾经扫描过的主机再进行一次扫描。这样在target中设置的主机范围内,只对上一次进行测试的主机进行扫描,减少了扫描占用的网络带宽。
Only test hosts that have never been tested in th past:对以前从未扫描过的主机或是超过指定时间未进行的扫描的主机进行扫描,这样将会在资料库中建立新的数据。
重复使用资料库中保存的数据是比较危险的,对于假设的这种情况:如果一台前天刚经过扫描的主机,在昨天被黑客攻入,黑客在主机主开启了一个服务端口,这时如果我们按照资料库的记录进行扫描就不会扫描这个端口。但是另一方面,对于一个安全性比较好的网络,利用历史扫描资料库可以节少大量的时间,提高扫描速度,用节省下来的时间对主机进行指定的安全检查。
选中Reuse the knowledge bases about the hosts for the test,
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/5/2/521031773/4.jpg');}" src="http://www.linuxaid.com.cn/articles/5/2/521031773/4.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
则在进行扫描时nessusd会使用调入到内存中的旧资料库,用以下几个选项可以控制nessusd的下一步操作:
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/5/2/521031773/5.jpg');}" src="http://www.linuxaid.com.cn/articles/5/2/521031773/5.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
如果选择了”Do not execute scanners that have already been executed“,扫描时将不会使用以前使用过的扫描插件,下面的三个选项也是对扫描选使用的插件进行了相同的限制。如果你只是想利用最新下载的plugins进行安全检查,应该将这三个选项全部选中。
前面提到了资料的时间期限问题,这个期限是可以设置的,max age of a saved KB定义了资料库中数据的有效期,它的缺省值是864000(单位秒),即10天,过了这个时间期限的数据都要做废,要重新进行扫描获取新的资料,该参数可以根据你的实际情况进行灵活设置。
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/5/2/521031773/6.jpg');}" src="http://www.linuxaid.com.cn/articles/5/2/521031773/6.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
2.断点续查(session-saving)
有些时候,负责发起安全扫描的主机会因为某种原因down掉,这样就需要重新进行安全扫描,这无疑是一个既消耗时间,又消耗网络带宽的过程。为了解决这个问题,nessus引进了session-saving功能。该功能可以使得新的扫描过程从上一次中断的地方开始,所以我称之为断点续查。
基于与KB saving相同的原因,该功能目前也被当做实验功能,在使用时用户需要将之激活。同样的,在nessus1.1.0及其后继版本中该功能将会被缺省设置为使能。为了激活session-saving功能需要编译nessus:
cd nessus-core
./configure --enable-save-sessions
make
make install
运行nessusd –d可以查到以下信息表示session saving功能已经打开了:
[root@prof /root]# /usr/local/sbin/nessusd -d
This is Nessus 1.0.5 for Linux 2.2.16-3
compiled with gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
Current setup :
Experimental session-saving : enabled
Experimental KB saving : disabled
Thread manager : fork
Crypto layer : peks/0.8
nasl : 1.0.5
libnessus : 1.0.5
Running as euid : 0
执行客户端程序,在target selection选项下会出现save this session选项,如下图所示:
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/5/2/521031773/7.jpg');}" src="http://www.linuxaid.com.cn/articles/5/2/521031773/7.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
只要选中这个选项,就可以使用断点续查了。下面我们来看看在扫描中断后,如何从中断的断点继续进行扫描检查。
在中断后,重新启动客户端程序连接到服务端,这时可以看见上次保存的session名称,session名称格式是,如:200010830-200514,指明了上次扫描中断的日期及时间。要从断点继续扫描只需要选择这个session 名字,然后点击Restore session按钮。点击Delete session按钮可以删除session。
如果造成扫描中断的原因是由于nessusd运行出错, 客户端可能看不到已经保存的session,这是因为该session被锁住了,这时需要管理员在服务端进行如下操作解锁:
rm /usr/local/var/nessus/foo/sessions/.*.lck
或者也可以重新启动nessusd,nessusd也会将锁去除。
3.后台扫描
所谓后台扫描就是指用户可能关闭客户端,由服务端发起安全扫描。
同样的,该功能并没有做为默认的选项安装在nessus1.0中,使用这个功能需要激活前面介绍的kb saving和session saving功能。安装了kb saving后,在Scan options功能键下会出现三个新的选项。如下图:
500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.linuxaid.com.cn/articles/5/2/521031773/8.jpg');}" src="http://www.linuxaid.com.cn/articles/5/2/521031773/8.jpg" onmousewheel="return bbimg(this)" onload="if(this.widthscreen.width-255) {this.width=screen.width-255;this.alt='本图片已被缩小,点击查看原大小图片。';}" border=0
这三个新增的选项是:
Detached scan:将扫描置于后台工作,也就是说客户端将不能实时的获得扫描结果。
Continuous scan:设置连续扫描。
Send results to this email address:将扫描结果发送到指定的邮箱中。
Delay between two scans:设置两次扫描的间隔时间。时间是以秒为单位的,所以如果在这里输入3600就表示每1小时进行一次安全扫描检查。
了解了这三个选项的功能后,我们来看看如何在后台完成安全扫描检查。首先要将session saving功能激活,接着需要选中Scan 选项中的Detached scan和Deactivate the option Continuous scan两个选项,在Target 选择选项下选中Save this session选项。
这时就可以启动扫描了。完成这后你可以退出客户端进行其它工作直到你重新启动客户端,在Target 选项的Previous session中会列出这次检查的session(如果没有,说明该次检查还没有结束)。如果在设置时指定了e-mail地址,nessusd就会将扫描结果发送到你的邮箱中。
前面提到过KB即资料库是需要及时更新的,它的更新过程即是一个扫描过程。利用后台扫描功能可以减少该过程对用户的影响,方法是在nessusd进行安全扫描的时候,只对过期的资料库中的内容进行扫描检查。方法如下:
3.1.在kb选项中选择以下几个选项:
Enable KB saving
Only test hosts that have never been tested in the past
Reuse the knowledge bases about the hosts for the test
Do not execute...选项
将Max age of a saved KB 设置为相应的值如432000 (天)。
3.2在scan选项中选择以下的内容:
Detached scan
Detached scan
Continuous scan
设置 Delay between two scans 为一适当的值,如 3600 (1小时)。
通过以上的设置,Nessusd将只对网络中5天以内没有进行检查的主机进行扫描,然后等待一个小时,继续进行扫描。
4.如何获得最新的插件
在NESSUSD中所有的扫描操作都是由插件完成的,如果有发现新的安全漏洞及攻击手段,都会有相应的扫描插件推出,所以需要随时更新这些插件,这样才能最大程度的保证扫描结果是完全及可靠的。
下载这些插件方法有两种,一种是全自动的,另外一种方式费些事。自动的方式是以root的身份执行nessus-update-plugins命令,该程序就可以自动从nessus的网站下载最新的插件到相应的目录中。当然这样做需要较快的网络速度。如果你的网络速度无法保障下载过程不会中断,那么采用第二种方法比较可靠:
首先采用网络蚂蚁或是下载快车之类的断点续传软件从nessus网站中下载最新的插件,在nessus的官方网站中提供了下载所有插件的链接
http://www.nessus.org/nasl/all.tar.gz;然后将这些文件复制到/usr/local/lib/nessus/plugins中,这个路径是安装Nessus的默认路径,nessusd.conf配置文件中指定了插件所在的具体目录。
最后重启nessusd新下载的插件即可启用。
5.如何使nessusd在幕后自动工作
考虑这种应用情况:有没有可能一次将nessusd配置好,然后一直运行,直到其发现一个安全隐患为止才向你发出报告。下面我们就来看看解决方案:
安装Nessus1.06或更高的版本
在编译时选择session-saving和kb saving功能:./configure –enable-save-kb --enable-save-session即可。
将sendmail加入到 $PATH中。这是为了调用sendmail发送邮件。
在配置Nessusd之前,建议用Nessusd对网络先进行一次周详的安全检查,这虽然会费一些时间,但对于一个以前没有进行过安全扫描检查的网络,这么做可以使你对网络的安全情况心中有数,并采取措施补救。以后由Nessusd发现的安全隐患就可以即时补救了。
在Scan options面版中:
将 max threads 的值设置得小一些(这不是绝对的,如果要扫描的网络比较大的话,这个值也可以调得大一些)。
选择'Optimize the test 选项
选择Detached scan选项
在Send results to this email address中填入你的电子邮件地址。
选择Continuous scan
将Delay between two scan设置为适当的值。 (建议设置得尽可能小一些)。
在KB面版中:
选择Enable KB saving选项
选中Test all hosts 按钮
选中Reuse the knowledge bases about the hosts for the test 选项
选中Do not execute...,以减小其对网络产生的影响。你也可以选择进行所有的安全检查,如果你关心网络的安全胜于关心Nessusd对网络的负载造成的影响的话。
特别重要的是要选择'Only show the differences with the previous scan,这样可以减少其日志的大小。
设置 max. age of a saved KB为合适的值(最小也得几天吧)。
在Target selection面版中
§ 设置 'Save this session' (这项是可选的)
§ 输入要检查的主机IP地址
一切都设置完毕后,启动nessusd进行安全扫描检查,这时nessusd会慢慢的进行检查,如果有什么发现就会通过电子邮件通知你。
最后,还要用crond每隔一定的时间就调用一次nessus-update-plugins,使nessusd的插件保持最新的更新,这个时间个人认为在12个小时左右较为合适,这样在nessusd进行扫描时就会加载新的安全扫描检查方法了。