| 网络安全扫描工具Nessus |
|
| 作者:佚名 来源:安全在线
更新时间:2007-8-6 3:01:58 【字体:小
大】 |
|
<%=(int(rnd()*1)+1)%>您当前的位置:中国安全在线cnsafer.com 请进入[技术论坛]发表评论 阅读提示:
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的服务进程后,就可以执行客户端程序进行安全扫描了。
上面就是启动界面了。首先提示你登录到nessus服务器,在Nessus Host后面输入Nessus服务器所在的Linux机器IP地址,端口号及加密方式不需要做改动。下面输入用户名,点击Log in登录。一旦登录成功,Log in的按钮会变为Log out,对话框的旁边还会有connected的提示。
好了,下面我们通过选择Plug-in插件来进行相应的安全扫:
如上图所示,在上半部分的是插件选择,下面是插件所能检查的攻击方法,点击每个攻击方法会弹出一个对话框介绍它的危害性及解决方法,如下图所示:
建议选择全部的插件以增加安全扫描的完整性。
下面选择扫描的目标主机,点击“target selection”
在窗口中输入目标地址,如上面所输入的: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.扫描结果
当扫描结束后,会生成如下形式的报表:
在窗口的左边列出了所有被扫描的主机,只要用鼠标点击主机名称,在窗口右边就列出了经扫描发现的该主机的安全漏洞。再点击安全漏洞的小图标会列出该问题的严重等级及问题的产生原因及解决方法。
最后,你还可以将扫描结果以多种格式存盘,做为参考资料供以后使用。
摘要 由于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是一个功能强大而又易于使用的远程安全扫描器,它不仅免费而且更新极快。安全扫描器的功能 [1] [2] 下一页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力 |
| 文章录入:ls1238 责任编辑:ls1238
|
|
上一篇文章: DDoS攻防演示
下一篇文章: 默认Samba版本在RedHat 9上的溢出获取root |
| 【字体:小
大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】
|