IT运维管理,创造商业价值!
中国IT运维网首页 | 资讯中心 | 运维管理 | 信息安全 | CIO视界 | 云计算 | 最佳案例 | 运维资源 | 专题策划 | 知识库 | 论坛

利用好BackTrack保护企业环境免遭远程入侵

2013年04月01日
51CTO/51CTO

攻击者通常寻找远程安全漏洞,目的是为了对你网络上的资源搞破坏。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。 

限制网络暴露程度

针对每一项暴露的服务,你应该确定该服务是不是果真有必要暴露。若没有必要暴露,一个办法就是,确保该服务只侦听本地回送接口(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)这个值得关注的理念和办法。

发表评论请到:http://bbs.cnitom.com

相关阅读

图文热点

详细剖析:企业采用Linux系统注意事项
详细剖析:企业采用Linux系统注意事项你是否已经厌烦了整日为Windows Sever打补丁,是否已经开始怀疑Windows Sever 服...
揭穿零日漏洞的七大误区
揭穿零日漏洞的七大误区又过了一个月,又有一个零日漏洞被报告,而恶意攻击者借助恶意软件,发动了钻这个...

本类热点