安全评估工具 一、漏洞测定 2 二、知己知彼 2 三、测定和测试 3 建立一套方法 4 四、评估工具 5 1.使用 Nmap 来扫描主机 5 2.Nessus 6 3. Nikto 7 4. VLAD 扫描器 7 5. 预先考虑未来需要 8 五、Nessus工具介绍 8 1.前言 8 2.网络漏洞扫描的实现 9 3.安全评估及措施 11 4.Nessus的安装及配置 12 4.1.Nessus安装 12 4.2.准备工作 13 4.3.开始运行 14 4.4.根据扫描结查,分析 21 一、漏洞测定 只要有足够的时间、资源、和动力,怪客能够闯入几乎所有系统。说到底,所有的安全手续和当前可用的技术都无法保证系统能免受入侵威胁。路由器有助于保护通向互联网的网关的安全性;防火墙有助于保护网络边缘地带的安全性;虚拟专用网能够在加密流中安全地传递数据;入侵检测系统能够在出现蓄意活动的时候向你发出警告。可是,以上这些技术的成功与否都有很多依赖因素,这些因素包括: 负责配置、监视和维护相关技术的职员的专业程度。 进行快速有效地更新或给服务和内核打补丁的能力。 负责时刻警戒网络动静的职员的能力。 数据系统和技术的动态性使得保护公司企业资源的任务变得相当复杂。这种复杂性又给寻求各方面的系统专家带来一定难度。虽说要找到在信息安全的许多领域内都有渊博知识的人员是可能的,但是要保留这些多领域内的专家却不容易。这主要是因为信息安全的每一领域都要求其专业人士全身投入和时刻关注。而且信息安全本身也不是一种原地不动、停滞不前的行业。 二、知己知彼 假设你是某个企业网络的管理员。这类网络通常包括操作系统、应用程序、服务器、网络监视器、防火墙、入侵检测系统等等。现在,想像一下要在以上每个方面都保持更新状态。鉴于今天的软件和网络环境的复杂性,程序漏洞和错误肯定存在。使用补丁和勘误来保持整个网络的更新状态对于拥有混合系统的大机构来说不能不算是一项繁杂冗长的任务。 由于对专业人才需求方面的严格性,以及保持更新状态任务的艰巨性,所以不该发生的事件难免会发生,系统的防守难免会被攻破,数据也难免遭到破坏,服务也会被迫中断。 要增强保安技术,协助对系统、网络和数据的保护,你应该想敌人所想,从怪客的角度来检测系统的弱点。对自己的系统及网络资源进行防范性弱点测定有助于发现潜在的问题,这些问题可以在攻击者找到利用方法之前被解决。 弱点测定是对你的网络和系统安全的内部审查;其结果会揭示你的网络的保密性、完好性、以及可用性情况。典型的弱点测定从勘察开始。勘察过程会收集有关目标系统和资源的重要数据。这之后的筹备阶段会检查目标系统中的所有已知弱点。随后的报告阶段会把所有的发现按威胁性的严重程度被分成高、中、低几级;最后,提高安全性(或减小弱点所造成的潜在威胁)的方法会被讨论。 如果你要对你的居住点进行安全检查,你很可能会检查一下所有的门户是否关闭上锁了。你还会检查每扇窗户,确定它们也被关紧插严。系统、网络和电子数据的保安方法也是基于相同的原则。恶意用户是数据盗贼。关注他们使用的工具、他们的所思所想、以及他们的动机和出发点,你就能够迅速地对他们的行动做出反应。 三、测定和测试 弱点测定可以被分化成两类:“由外向里看”(Outside looking in)和“由里向外看”(inside looking around)。 在进行“由外向里看”的弱点测定时,你是在试图从外部打入你的系统。站在系统之外会给你提供怪客的视角。你会看到怪客所见 — 可公开选路的 IP 地址、位于 DMZ 上的系统、整个防火墙的外在界面等等。DMZ 代表“停火区域”。它是指位于可信任的内部网络(如公司专用网)和不可信任的外部网络(如公共互联网)之间的计算机或小型子网。典型的 DMZ 包括可被互联网交通进入的设备,如万维网(HTTP)服务器、FTP 服务器、电子邮件(SMTP)服务器和 DNS 服务器。 在进行“由里向外看”的弱点测定时,你占据一定的优势,因为你是局内人,你的状态被提升为可信任级别。这是你和你的同事在系统上登录后的视角。你会看到打印服务器、文件服务器、数据库、以及其它资源。 这两类弱点测定截然不同。站在局内人的角度给你更多特权 — 比局外人要多得多。可是,现在的多数机构中,保安配置的目的仍是旨在把入侵者拒之门外。在保持机构内部安全方面(如部门间的防火墙、用户级别的安全控制、内部资源的验证手续、等等)做的却相当少。典型情况下,如果从内部看,可用资源要比从外部看多得多,因为多数系统都是公司内部使用的。一旦你步出公司之外,你就会被立即给予不信任级别。你可以使用的系统资源就会大受限制。 考虑一下弱点测定和侵入测试(penetration tests)的区别。弱点测定应该是侵入测试的第一步。测定中所积累的信息将会用于测试。弱点测定是检查漏洞及潜在缺陷的过程,而侵入测试是试图利用这些漏洞缺陷的实践行为。 测定网络体系是一个动态过程。信息安全和物理安全都是动态的。执行测定只会显示一个大概,它有可能会造成一些假象,让你白担心或者空欢喜一场。 安全管理员只能尽其工具和知识经验之能。使用任何当前可用的测定工具,在系统上运行它们,你几乎可以肯定会出现一些假警报。不管这是程序错误还是使用错误,其结果都是一样的。工具可能会发现实际上不存在的弱点(false positive);甚至更糟糕的是,它可能会漏掉实际上存在的弱点(false negative)。 现在,弱点测定和侵入测试之间的区别已经被表明了,在进行侵入测试前仔细评审弱点测定中的发现通常是一个良好的习惯。 警告 试图寻找生产资源上的漏洞弱点会给你的系统和网络的生成力和效率带来不利影响。 以下列表讨论了执行弱点测定会给你带来的优势。 积极地将注意力集中到信息安全上 在怪客找到潜在漏洞前发现它们 通常导致系统的时刻更新和补丁的及时应用 鼓励成长,并有助于职员深化其专业知识 减少财政损失和消极宣传 建立一套方法 为了帮助弱点测定中的工具选择,建立一套弱点测定方法是明智之举。不幸的是,目前还没有预先定义的或被行业批准的方法论;然而,常识和经验通常足以充当向导。 目标是什么?我们在看一个服务器还是整个网络,抑或是网络内的一切?我们是在公司之内还是公司之外?这些问题的答案是很重要的,因为它们不但能够帮助你判定应该选择哪些工具,还能够帮助你判定该如何使用这些工具。 关于建立方法论的更多信息,请参考以下网站: http://www.isecom.org/projects/osstmm.htm — The Open Source Security Testing Methodology Manual (OSSTMM),《开源安全测试方法指南》 http://www.owasp.org/ — The Open Web Application Security Project,开放万维网应用安全计划 四、评估工具 典型的测定可以从收集信息开始。在测定整个网络时,首先使用布局图来找出运行着的主机位置。找到后,逐个检查每台主机。这需要你使用另一套工具。懂得使用恰当的工具是寻找弱点的关键所在。 如同我们的日常生活一样,每件事都可以有好几种做法。执行弱点测定也是如此。操作系统、应用程序、甚至网络(根据使用协议而定)都有其特殊的测定工具。某些工具是免费的,而某些却不是。某些工具很形象易用,而某些虽然晦涩难懂又没有充足的文档,但是却有其它工具没有的功能。 找到恰当的工具不是件轻而易举的事。说到底,经验最重要。如果可能,设立一个测试试验室,尽可能地多试一些工具,记录每个工具的强弱点。回顾工具的 README 文件或说明书页。此外,还可以在互联网上寻找更多信息,例如文章、指南、甚至专门讨论某个工具的邮件列表。 以下讨论的工具只是从可使用的大量工具中截取的一小部分。 1.使用 Nmap 来扫描主机 Nmap是一个很流行的工具,可以被用来判定网络布局。Nmap 已经存在多年,可能是最常使用的收集信息工具。它的说明书页对其选项和用法都有详尽的描述。管理员可以在网络上使用 Nmap 来寻找其中的主机系统和开放的端口。 Nmap 是比较合适的弱点测定的第一步。你可以用它制定出网络内的所有主机的布局图,甚至传递选项来试图识别在某个主机上运行的操作系统。Nmap 为建立使用安全服务和停运不被使用服务的政策奠定了良好基础。 使用 Nmap Nmap 可以从 shell 提示下运行。在 shell 提示下,键入 nmap 命令,随后是要扫描的主机名或 IP 地址。 nmap foo.example.com 扫描的结果(可能会花几分钟时间,根据主机所在位置而定)和以下相似: Starting nmap V. 3.50 ( www.insecure.org/nmap/ ) Interesting ports on localhost.localdomain (127.0.0.1): (The 1591 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 25/tcp open smtp 111/tcp open sunrpc 443/tcp open https 515/tcp open printer 950/tcp open oftep-rpc 6000/tcp open X11 Nmap run completed -- 1 IP address (1 host up) scanned in 71.825 seconds Nmap 测试多数常用网络通信端口上的监听或等待服务。这些信息对于想要关闭不必要服务的管理员来说很有帮助。 关于使用 Nmap 的更多信息,请参阅以下 URL 上的官方网站: http://www.insecure.org/ 2.Nessus Nessus 是一个功能完全的安全扫描器。Nessus 的插件体系允许用户为他们的系统和网络自行定制。和其它扫描器一样,Nessus 只能和它所依赖的签名数据库一样有效。幸运的是,Nessus 被频繁更新。它的功能包括:完整报告、主机扫描、真实时间的弱点搜索。记住,假警报可能会出现,即便是像 Nessus 这样的功能强大而又被时时更新的工具也不例外。 注记 Nessus 没有被包括在 红帽企业 Linux 中,也不被支持。它被包括在本文档中,只是为了给有兴趣使用这个流行程序的用户提供一个参考。 关于使用 Nessus 的更多信息,请参阅以下 URL 上的官方网站: http://www.nessus.org/ 3. Nikto Nikto 是一个优秀的 CGI(公用网关接口)扫描器。Nikto 不仅具备检查 CGI 弱点的能力,它还能够用一种比较难以捉摸的方法来进行,这样就能躲过入侵检查系统。该程序还附带了优异的文档。你在运行程序前应该仔细阅读文档。如果你的万维网服务器提供 CGI 脚本,Nikto 是检查这些服务器安全性的杰出资源。 注记 Nikto 没有被包括在红帽企业 Linux 中,也不被支持。它被包括在文档中,只是为了给有兴趣使用这个流行程序的用户提供一个参考。 关于 Nikto 的更多信息,可以在以下 URL 上找到: http://www.cirt.net/code/nikto.shtml 4. VLAD 扫描器 VLAD 是 Bindview, Inc. 的 RAZOR 组开发出来的弱点扫描器。它会检查 SANS 十大常见安全问题(SNMP 问题、文件共享问题等等)。虽然不像 Nessus 那么功能全面,VLAD 仍值得一试。 注记 VLAD 没有被包括在红帽企业 Linux 中,也不被支持。它被包括在文档中,只是为了给有兴趣使用这个流行程序的用户提供一个参考。 关于 VLAD 的更多信息可以在以下 URL 上的 RAZOR 组的网站上找到: http://www.bindview.com/Support/Razor/Utilities/ 5. 预先考虑未来需要 根据你的目标和资源而定,可以使用的工具不胜枚举。这些工具有用于无线网络、Novell 网络的,也有用于 Windows 系统、Linux 系统的。执行测定的另一个重要部分可能会包括审核物理安全性、人员安全审查、或声音/PBX 网络测定。一些新的概念,如 war walking — 扫描企业物理结构的边缘来寻找无线网络的可乘之机 — 是你可以进行调查的新兴概念,若必要,还可以包括在你的弱点测定中。在计划和执行弱点测试过程中,唯一的限制只是你的想象力和系统的暴露程度。 五、Nessus工具介绍 1.前言 漏洞扫描是保证系统和网络安全必不可少的手段,以下将介绍如何使用免费的远程安全扫描器Nessus进行漏洞扫描。 面对互联网入侵,如果我们能够根据具体的应用环境,尽可能早地通过网络扫描来发现安全漏洞,并及时采取适当的处理措施进行修补,就可以有效地阻止入侵事件的发生。因此,漏洞扫描非常重要和必要。漏洞扫描就是对计算机系统或者其他网络设备进行安全相关的检测,以找出安全隐患和可被黑客利用的漏洞。 漏洞扫描通常采用两种策略,第一种是被动式策略,第二种是主动式策略。所谓被动式策略就是基于主机之上,对系统中不合适的设置,脆弱的口令以及其他同安全规则抵触的对象进行检查; 而主动式策略是基于网络的,它通过执行一些脚本文件模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞。 基于网络的检测技术,采用积极的,非破坏性的办法来检验系统是否有可能被攻击崩溃。它利用了一系列的脚本模拟对系统进行攻击的行为,然后对结果进行分析。它还针对已知的网络漏洞进行检验。网络检测技术常被用来进行穿透实验和安全审记。 2.网络漏洞扫描的实现 网络漏洞扫描方式通过远程检测目标主机TCP/IP不同端口的服务,记录目标给予的回答。通过这种方法,可以搜集到很多目标主机的各种信息,例如是否能用匿名登陆,是否有可写的FTP目录,是否能用Telnet等。在获得目标主机TCP/IP端口和其对应的网络访问服务的相关信息后,与网络漏洞扫描系统提供的漏洞库进行匹配,如果满足匹配条件,则视为漏洞存在。 漏洞扫描软件从最初的专门为Unix系统编写的一些只具有简单功能的小程序,发展到现在,已经出现了多个运行在各种操作系统平台上的、具有复杂功能的商业程序。对于用户来说,有如下几种实现方式: ● 使用插件(plug-in)。每个插件都封装一个或者多个漏洞的测试手段,主扫描程序通过调用插件的方法来执行扫描。仅仅是添加新的插件就可以使软件增加新功能,扫描更多漏洞。在插件编写规范公布的情况下,用户或者第三方公司甚至可以自己编写插件来扩充软件的功能。同时这种技术使软件的升级维护都变得相对简单,并具有非常强的扩展性。 ● 使用专用脚本语言。这其实就是一种更高级的插件技术,用户可以使用专用脚本语言来扩充软件功能。脚本语言的使用,简化了编写新插件的编程工作,使扩充软件功能的工作变得更加容易和方便。 ● 由漏洞扫描程序过渡到安全评估专家系统。最早的漏洞扫描程序只是简单地把各个扫描测试项的执行结果罗列出来,直接提供给测试者而不对信息进行任何分析处理。而当前较成熟的扫描系统都能够将对单个主机的扫描结果整理,形成报表,能够对具体漏洞提出一些解决方法,但对网络的状况缺乏一个整体的评估。未来的安全扫描系统,应该不但能够扫描安全漏洞,还能够智能化的协助网络信息系统管理人员评估本网络的安全状况,给出安全建议,成为一个安全评估专家系统。 而Nessus是一个功能强大的远程安全扫描器(该软件可以从http://www.nessus.org/上下载),它不仅免费而且更新极快。安全扫描器的功能是对指定网络进行安全检查,找出该网络是否存在有导致对手攻击的安全漏洞。该系统被设计为Client/Sever模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。在服务端还采用了插件的体系,允许用户加入执行特定功能的插件,以进行更快速和更复杂的安全检查。在Nessus中还采用了一个共享的信息接口,称为知识库,其中保存了前面进行检查的结果。检查的结果可以HTML、纯文本、LaTeX等几种格式保存。 用户可以指定运行Nessus服务的机器、使用的端口扫描器及测试的内容及测试的IP地址范围。Nessus本身是工作在多线程基础上的,所以用户还可以设置系统同时工作的线程数。这样用户在远端就可以设置Nessus的工作配置了。安全检测完成后,服务端将检测结果返回到客户端,客户端生成直观的报告。在这个过程当中,由于服务器向客户端传送的内容是系统的安全弱点,为了防止通信内容受到监听,其传输过程还可以选择加密。 在Nessus安全测试系统中,所有的安全测试都是由nessusd进程发动的。在测试过程中,Nessus会为每个主机维护一份由扫描测试插件获得的基本信息。各种其他的测试插件应该尽可能地利用这些信息,以提高测试效率。每个安全测试插件需要向Nessus服务器进行注册后,才能使用。注册信息包括名字、描述、作者等。 3.安全评估及措施 在实现了对服务器的安全扫描后,便可根据扫描结果,对服务器的安全性能进行评估,给出服务器的安全状况。下面根据给出一个大致的评价标准。需要特别注意的是: 评价标准应该根据应用系统、应用背景的不同而有相应的改变,并不存在绝对的评估标准。 A级: 扫描结果显示没有漏洞。虽然这并不表明没有漏洞,因为有许多漏洞是尚未发现的,但我们只能针对已知的漏洞进行测试。 B级: 具有一些泄漏服务器版本信息之类的不是很重要的漏洞,或者提供容易造成被攻击的服务,如允许匿名登录,这种服务可能会造成许多其他漏洞。 C级: 具有危害级别较小的一些漏洞,如可以验证某账号的存在,可以造成列出一些页面目录,文件目录等,不会造成严重后果的漏洞。 D级: 具有一般危害程度的漏洞,如拒绝服务漏洞,造成服务器不能正常工作,可以让黑客获得重要文件的访问权的漏洞等。 E级: 具有严重危害程度的漏洞,如存在缓冲区溢出漏洞,存在木马后门,存在可以让黑客获得根用户权限或根用户的shell漏洞,根目录被设置一般用户可写等一些后果非常严重的漏洞。 4.Nessus的安装及配置 4.1.Nessus安装 下载安装,你可以到http://www.nessus.org/ 去下载Nessus的最新版本,一般情况下下载下来是四个后缀为 .tar.gz的软件包,名字分别为 nessus-libraries-x.x.tar.gz libnasl-x.x.tar.gz nessus-core.x.x.tar.gz nessus-plugins.x.x.tar.gz 1、运行tar zvfx *****.tar.gz -C /nessus 将四个压缩包解到根目录下nessus文件夹。 2、进入nessus目录,会看到四个子目录 3、开始安装 A.nessus-libraries cd nessus-libraries ./configure make make install B.安装 libnasl cd libnasl ./configure make 作为root,用户,执行如下命令: make install C.安装nessus-core cd nessus-core ./configure make make install D.安装nessus-plugins. cd nessus-plugins. ./configure make make install 4.vi /etc/ld.so.conf,加入/usr/local/lib,执行ldconfig –v (注:如是Soaris系统,vi ~/.profile,加入export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib) 另外:如果不想客户端使用GTK (或如果操作系统缺少X11),在编译nessus-core 时,加下选项--disable-gtk: cd nessus-core ./configure --disable-gtk make && make install 4.2.准备工作 1.创建nessusd需要的账号 Nessusd服务器有自己的用户数据库, 每个用户有一套限制。允许你共享单个nessusd 服务器为整个网和不同的管理员只测试部分网络用。 使用nessus-adduser创建新账号 输入:nessus-adduser回车(/usr/local/sbin/nessus-adduser ) Login : 在这里输入用户名 然后Authentication (pass/cert) [pass] : 提示选择认证方式,我们直接 回车,用默认的密码认证,不用证书 然后在Login password : 处输入密码,按Ctrl+D保存 然后我们nessusd -D启动服务 注意大小写 如果系统出现说是否已经生成证书,然后服务启动失败的话,就执行nessus-mkcert 随便输入一些信息,生成证书,然后启动nessusd –D 服务启动以后在命令行里执行nessus就会出来主程序 在此之前我们还可以执行一下:nessus-update-plugins 来升级扫描插件,然后开始扫描 Nessus配置文件/usr/local/etc/nessus/nessusd.conf,修改参数 启动nessusd服务器 #nessusd -D 4.3.开始运行 1、初始化: 现在你可以运行nessus了,只要键入 /usr/local/bin/nessus & 就OK,第一次运行它会提示你 输入一个密码,这是client的密码,完成后会弹出一个图形化的登陆界面如下: nessus host:就是server所在的主机,看你在哪台机上运行的nessusd -D就填什么,正 常情况下——单机用户不必改,就是localhost. port :要看你运行nessusd时有无附带端口参数,如果没有,便是1241 login :填上你运行nessus-adduser时的注册名 然后按log on now!,如果一切无误的话,你就可以在十来秒后看到connected 的字样了,当然 第一次登陆它会问你在SERVER上的密码,只需确认一次就够了,下回启动则不再询问。 2、瞄准:你选定target selection可以见到 你可以在target(s)里填写你想要扫描的主机,中间用逗号隔开,或者也可以将目标 用VI或者其它编辑器写入文件,然后读取,我选定的目标是: www.soong.org.tw(填IP与域名效果是一样的,有时ping得到的IP不同,所以直接填域名) 203.95.230.131 210.65.1.165 210.142.192.130 3、配置plugins插件 是设定要检查的有关安全项目,如果你对某个检查项目有什么不明白的话可以点击下半部份 的具体条目,程序会弹出一个POP窗口简述该项目的情况如风险程度、补丁方法等…… 需要特别说明的是,如果你在第一步没有连接上主机,plugins的栏目里会是空的 4、其它设定:转到pref. 这里是插件的参数选择,某些安全扫描需要额外配置参数,举例来说吧,比如pop2溢出,需要 在主机上有有效的pop帐号;queso插件需要填写它的配置文件路径;FTP writeable directory 插件要求确定是turst the permission或者attempt to store a file…… 5、然后是scan options 这里你可以调整最大线程数,扫描的端口范围,用什么方式来扫描……我喜欢nmap tcp connect() 因为它比较快,当然它会留下痕迹……TCP SYN CONNECT半开扫描可能会好些…… 6、看看user里有些什么 rule——扫描时的一些规则 7、那就start the scan吧,该键按下后会弹出一个attack status的窗口 (由于版面设计的关系,改变了下面这幅图的尺寸,如果要得到清晰的图像,点击它吧) 扫描速度还是不错的,特别要提的一点是——Nessus还能“断点续扫”——其实可能大多数扫描器都可 以的——因为它们的原理也只是连接上主机端口,查找主机是否有某些文件……在断线的情况 下,扫描器会当成是网络传传输质量太差并且再度连接 8.查看结果: 扫描完毕Nessus会将结果文件保存为nsr后缀的文件,用Nessus的load report可以打开文件如下: [Here] - in .NBE format, that can be read by the unix client. [Here] - in .NSR format (which is deprecated in favor of NBE) and graphs [Here] - in HTML format [Here] - in ASCII text [Here] - in LaTeX format (pdf here, obtained by using pdflatex) 你会发现端口前面的圆点标注有红有黑——红的漏洞风险比较高——仔细看看它的输出吧,从里面还能学到一些网络安全设置的知识呢——它对每个安全漏洞都有简单的描述,非常不错。 4.4.根据扫描结查,分析 通过安全评估后,用户则可以根据情况采取措施,包括给系统打补丁(从技术网站上下载)、关闭不需要的应用服务等来对系统进行加固。可以看出,漏洞扫描、安全评估、采取措施是一个循环迭带、前后相继的流程,用户可以在使用中多加揣摩,从而保证Linux网络系统的安全。