攻击者通常寻找远程安全漏洞,目的是为了对你网络上的资源搞破坏。BackTrack Linux是一款用于测试安全的发行版,可帮助你检查自己的网络和服务器,查找远程安全薄弱环节和潜在的安全漏洞。
BackTrack基于Ubuntu,捆绑了渗透测试和安全审计所必不可少的各种工具。你其实没必要运行BackTrack就可以使用它提供的工具,但是启动BackTrack自生系统光盘(live CD)让你可以马上开始入手。
在你开始入手之前有必要提醒一下:扫描网络可能会耗用系统和网络资源。所以,确保在贵公司内部全面协调你的扫描工作,并告知管理班子。
利用Nmap探测网络环境
你最先想试用的工具之一是Nmap,这是一款功能强大的智能化命令行网络扫描工具。实际上,Nmap显示了开启的端口以及侦听这些端口的服务方面的一些信息。
Nmap随带许多有用的选项,这些选项在默认情况下已启用。比如说,你在探测网络时,端口随机化(扫描端口顺序随机化)可防止简单的入侵检测和预防系统检测和阻止你。另外一些有用的选项包括:
·--script--在一套脚本的帮助下执行扫描。Nmap自身捆绑了根据用途分类的几套脚本,比如用于检测拒绝服务攻击(DOS)、蛮力攻击及其他薄弱环节。你可以在Nmap脚本引擎的主页(http://nmap.org/nsedoc/)上找到完整列表。如果你心里没底,不知道该用什么脚本,那就选择默认值:与其他一些选项相比,默认值更稳当,干扰更小。
·-p--指定你对哪些端口有兴趣。就UDP和TCP这两种协议而言,大多数合法服务在1:10000这个端口范围里面运行。扫描更大范围的端口需要耗用更多的时间和资源。
·-sV--显示了开启端口的服务和版本信息。这很有用,可以表明某项服务是否在侦听非默认端口,比如侦听TCP端口8080的Apache;而版本信息可能表明过时的软件和潜在的安全漏洞。如果你借助Nmap检测到这类过时的应用程序,就要确保尽快给它们打上补丁。
·target--把目标主机或网络定义为Nmap命令的最后实参。
把上述选项组合起来,你就能得到这样的一个命令:
nmap --script=default -p U:1-10000,T:1-10000 -sV 192.168.1.0/24
在这个例子中,目标是一个内部专用网络(192.168.1.0/24)。如果你在寻找真正远程的安全漏洞,应该从本地网络外面执行扫描。不过,内部扫描也很有用,可以显示没必要暴露的服务,这始终是个安全风险。
这个实例的输出类似:
...
Nmap scan report for example.org (192.168.1.102)
Host is up (0.0017s latency).
Not shown: 9997 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.0p1 Debian 3 (protocol 2.0)
...
80/tcp open http Apache httpd 2.2.22 ((Debian))
|_http-methods: No Allow or Public header in OPTIONS response (status code 200)
...
3306/tcp open mysql MySQL 5.5.28-1
...
来自Nmap输出的上述片段显示了在192.168.1.102上运行的SSH、HTTP和MySQL等服务的信息。它清楚地显示了每个软件的名称和版本:OpenSSH 6.0p1、Apache httpd 2.2.22和MySQL 5.5.28-1。#p#
限制网络暴露程度
针对每一项暴露的服务,你应该确定该服务是不是果真有必要暴露。若没有必要暴露,一个办法就是,确保该服务只侦听本地回送接口(127.0.0.1)。当MySQL服务只服务本地请求时,这对该服务来说是个好办法。为此,就MySQL服务而言,编辑my.cnf文件。当MySQL侦听所有接口时, bind-address命令看起来像这样:bind-address = 0.0.0.0。想让它只侦听本地接口,将它更改成bind-address = 127.0.0.1。
此外,MySQL让你可以明确限制允许用户连接的远程主机,连接远程主机是MySQL的连接验证过程的一部分。这样一种额外的安全限制有助于防范蛮力攻击,但是通常对防范远程软件安全漏洞无济于事。
你还可以使用防火墙来限制对服务的访问。如果配置得当,防火墙可以只允许某些主机连接至某项特定服务。MySQL的一个示例iptables命令看起来像这样:iptables -I INPUT -s 192.168.1.1 -p TCP --dport 3306 -j ACCEPT; iptables -I INPUT -p TCP --dport 3306 -j DROP。这个示例命令只允许从IP地址192.168.1.1进行MySQL连接。
作为最后一招,你可以决定为某项服务更改默认端口。这通常适用于必须仍然保持相对隐藏,但从外面仍可以完全访问的敏感服务。当系统管理员想从任何地方获得访问权时,SSH常常是这种情况。你可以把SSH端口更改成通常扫描的范围(1-10000)之上的一个端口。比如说,如果你设置SSH守护进程,以便侦听端口19999,它不大可能被检测出来,但是你仍能够从任何地方访问该服务,只要你知道这个端口。想更改SSH端口,编辑文件/etc/ssh/sshd_config 中的命令Port,然后重启服务。当以后用你的SSH客户端进行连接时,别忘了指定该端口(Linux外壳中的ssh -p)。
这些是限制远程连接、防范外部攻击的几个最简单的方法。如果你有兴趣想了解更高级的手段,可以考虑采用端口碰撞(port knocking)这个值得关注的理念和办法。
限制暴露的信息
通过我们的实例处理SSH和MySQL服务后,只有Web服务仍暴露着。按理说,外界通过标准的HTTP TCP端口80,完全可以访问该服务;我们无法把该服务隐藏在一个不同的端口后面,也无法限制对该服务的访问。我们唯一的选择就是,关于它的信息尽量少透露。
按照上一个实例,Apache版本是Apache httpd 2.2.22((Debian))。这为攻击者提供了大量的信息:Web服务器名称、版本、甚至还有操作系统。你可以限制这些信息,只需更改Apache配置,并且将服务器权标设置为ServerTokens ProductOnly。之后,当你再次运行扫描时,你会看到版本信息只有Apache httpd。
就算我们使用那个基本的Nmap实例,也能获得除版本之外的更多信息。就Apache而言,Nmap还显示了OPTIONS报头被允许;http方法方面没有什么限制 :|_http-methods: No Allow or Public header in OPTIONS response (status code 200)。从安全的角度来看,将允许的HTTP方法限制在你网站真正需要的几种方法很重要,因而为攻击者提供了较少的办法。
比如说,TRACE HTTP方法回应用户输入。很显然,这项特性适用于调试,但是在生产环境的Web服务器中不需要。TRACE方法被某些攻击所采用,因为可以允许访问敏感信息,所以它应该几乎总是被禁用。实际上,大多数普通的Web服务器应该只支持两种HTTP方法:GET和POST。为了禁止其余方法,请使用Apache命令limitexcept,就像这样:
Order deny,allow
Deny from all
隐藏服务器权标,并禁止不需要的联系方法,这开了个好头,但还远远不够。还需要应用防火墙,这种防火墙提供了更全面深入的保护。几乎所有可以公共访问的服务都有这样一种防火墙解决方案。以Apache为例,请查阅文章《如何借助ModSecurity保护你的Web服务器》(http://www.openlogic.com/wazi/bid/188075/)。
仔细检查Nmap的输出,对任何公共暴露的服务进行类似的处理。你应该能够挫败通常的一般性的非针对性攻击,这类攻击随机地扫描互联网,查找过时或配置不当的软件。#p#
借助Nessus,更深入地分析渗透测试
Nmap功能强大,让你可以对自己的环境进行一番严格的渗透测试,但是用起来不如一些更高级的安全漏洞扫描工具来得容易,功能也不如它们全面。比如说,Nessus是一款商用安全漏洞扫描工具,允许家庭用户有限地免费使用。想在BackTrack中开始使用它,你得先注册领取一个许可证密钥,按照官方的Nessus on BackTrack指南(http://www.tenable.com/blog/enabling-nessus-on-backtrack-5-the-official-guide)里面描述的几个预备步骤即可。
一旦你在BackTrack中让Nessus设置并运行起来,可以通过能够在https://localhost:8834访问的直观的Web界面来控制它。Web界面让你很容易配置渗透测试;一旦配置完毕,可以生成界面专业的报告。
Nessus可以检测所有暴露层面上的50000余个安全漏洞,这些暴露层面从配置不当的服务,到过时软件,不一而足。一旦它检测出了安全漏洞,就会报告所有的相关信息;最为重要的是,还会建议采用什么样的解决办法。这为你节省了时间,确保你遵守解决问题的最佳实践,并确保你符合最高的安全标准。
Nessus是企业用户最青睐的渗透测试解决方案。不过,Nmap依然是网络扫描领域的瑞士军刀,因为它为探测网络环境提供了一条最快捷、最简单的路径,又不必束缚于许可证、花费大量资金。
无论你选择哪个应用程序,最重要的事情就是明白远程安全这个概念。不要暴露没必要的服务,也不要暴露没有明确要求的任何信息。这应该可以确保你不会吸引可能利用零日漏洞的四处横行的安全威胁。
原文地址:http://www.openlogic.com/wazi/bid/271899/BackTrack-and-its-tools-can-protect-your-environment-from-remote-intrusions