随着Linux在网络中的应用日益广泛,它的安全问题也越来越受到关注。本文主要介绍嗅探器技术的工作原理,及其防范措施。
何谓嗅探器
嗅探器(Sniffer)就是能够捕获网络报文的设备。Sniffer 就是嗅探器,就是窃听器,它静悄悄地工作在网络的底层,把用户的秘密全部记录下来。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确地问题判断。嗅探器在功能和设计方面有很多不同,有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:标准以太网、 TCP/IP、IPX、DECNET、FDDI Token、微波和无线网。
实际应用中的嗅探器还分软、硬两种。软件嗅探器的优点在于比较便宜,易于使用,缺点是往往无法抓取网络上所有的传输数据(比如碎片),也就可能无法真正全面了解网络的故障和运行情况。硬件嗅探器通常称为协议分析仪,它的优点恰恰是软件嗅探器所欠缺的,但是价格昂贵。目前流行的嗅探器工具大多是软件的。
FTP、POP和Telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,嗅探器就可以非常容易地截获这些口令和数据。而且,这些服务程序的安全验证方式也是有弱点的,就是很容易受到“中间服务器”方式的攻击。所谓“中间服务器”攻击方式,就是“中间服务器”冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。服务器和用户之间的数据传送被“中间服务器”转手并做了手脚之后,就会出现很严重的问题。
嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。数据在网络上是以很小的称为帧(Frame)的单位传输的。帧由好几部分组成,不同的部分执行不同的功能。例如以太网的前12个字节存放的是源和目的的地址,这些位告诉网络数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。它通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。在这个传输和接收的过程中,每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器。这一点和Internet地址系统比较相似。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以 “听”到通过的流量,但对不属于自己的报文则不予响应。换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据。如果某工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧。如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。这也是嗅探器会造成安全方面的问题的原因。
#p#Linux环境下的嗅探器
Linux环境下的嗅探器有tcpdump、Nmap、linSniffer、LinuxSniffer、hunt、sniffit等。下面就只介绍Linux下优秀的嗅探器——tcpdump。
tcpdump 在Linux下的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。这里我们讲 rpm包的形式安装。这种形式的安装是最简单的安装方法。rpm包是将软件编译后打包成二进制的格式,通过rpm命令可以直接安装,不需要修改任何东西。
以超级用户登录,使用命令如下:
#rpm -ivh tcpdump-3_4a5.rpm
这样tcpdump就顺利地安装到Linux系统中。
tcpdump 是一个多用途的网络通信监测器,可捕获和显示报文及其内容。它可用来作为协议分析器,在系统及网络设备间提供一个最佳途径来探查通信和(或)连通性问题。大多数时候,网络疑难问题集中在网络配置问题以及诊断硬件相关故障。然而,用户将常常面对协议相关问题并且被迫钻研特定协议的机制来解决问题。使用 tcpdump,被检查的报文将用长格式或短格式(根据使用的命令行选项)显示其信息。tcpdump 有一个非常强有力的过滤机制,可用来查找与指定字符串或规则相匹配的报文。
tcpdump 提供两种主要的捕获模式:杂凑和非杂凑。在杂凑模式下,捕获每个在网络上传递的报文,不管该报文是否发送到执行tcpdump 的系统。举例来说,该模式就是RMON探测器在监测网络通信时使用的模式。网络探测器(probe)在网络上侦听通信并收集协议信息和统计数据。因为局域网(LAN)协议(如Ethernet)是基于广播的,每个被传送的帧可被连接到LAN上的任何网络接口所获得。任何设备可读取每个传送的帧,只要该设备选择这么做并配置成该方式就可以读取。当一个设备或接口从网络读取每个帧,就说明它处于杂凑模式了。实际中,接口必须为杂凑操作进行配置,并且仅仅用于需要网络诊断的特殊场合。由于这个缘故,仅有root可以在一个接口上启用杂凑模式。这是非root用户不允许调用tcpdump 的主要原因。tcpdump工具提供了许多命令行选项来选择捕获模式、控制输出、指定过滤规则以及指定其他操作特性。这些选项根据它们的功能被分组并且包括以下种类:操作模式、显示选项、报文过滤选项。
操作模式选项用于控- w 保存原始报文到文件中。
举例说明:制tcpdump 如何捕获和如何显示网络通信的参数。 各选项的意义如下:
- c 捕获指定数量的报文;
- F 使用文件作为过滤表达式的源;
- i 使用可选网络接口捕获报文;
- p 禁止在杂凑模式下捕获;
- r 读取捕获文件而非网络接口;
1.pdump arp将捕获并显示所有地址解析协议(ARP)报文。捕获包括请求和应答。
2.pdump host red and tcp将捕获并显示来自(发往)red 主机的所有传输控制协议报文。
3.pdump hos red1 and port 23将捕获并显示发往red1或从red1发出的所有使用23 端口的报文。用来检查网络上从其他系统到该系统的Telnet报文。端口23是对所有传入的报文来说是Telnet服务端口。
#p#嗅探器的危害
嗅探器可以帮助网络管理员查找网络漏洞和检测网络性能。嗅探器是一把双刃剑,它也有很大的危害性。
嗅探器可能造成的危害有:
1.嗅探器能够捕获口令;
2.够捕获专用的或者机密的信息;
3.以用来危害网络邻居的安全,或者用来获取更高级别的访问权限;
4.析网络结构,进行网络渗透。
嗅探器的攻击非常普遍,尤其在Internet上。一个放置好的嗅探器可以捕获成千上万个口令。1994年一个最大的嗅探器攻击被发现。这次攻击被人们普遍认为是记载中最为恶劣的一次,许多可以FTP、Telnet或远程登陆的主机系统都受到了危害。在这件事故(攻击者处于Rahul.net)中,嗅探器只运行了18个小时。在这段时间里,有几百台主机被泄密。受攻击者包括268个站点,如MIT、美国海军和空军、Sun微系统公司、IBM、NASA、 CERFNet和加拿大、以色列、荷兰、比利时的一些大学的机器。
嗅探器可以捕获网络上所有的报文,但实际上,一个攻击者必须要对报文进行选择。嗅探器攻击并不像听起来那么容易,它需要攻击者对网络知识有一定的了解。简单地设置一个嗅探器,并将其放到随便什么地方,将不会起到什么作用。因为即使一个只有5个工作站的网络,在一小时之内也会传输好几千个报文。这样在很短的时间里,嗅探器中用来存储捕获报文的文件就会充斥整个硬盘(如果记录下每一个报文的话)。
为了巧妙地解决这个问题,攻击者只嗅探每个报文的前200到300个字节。用户名和口令都包含在这一部分中,这是所有攻击者真正关心的部分。当然,如果拥有足够的空间进行存储,拥有足够的能力进行处理的话,也可以嗅探给定接口上的所有报文,那将会发现另一些非常可怕的东西。
【编辑推荐】