安全防范Linux嗅探器(1)


随着Linux在网络中的应用日益广泛,它的安全问题也越来越受到关注。本文主要介绍嗅探器技术的工作原理,及其防范措施。

何谓嗅探器

嗅探器(Sniffer)就是能够捕获网络报文的设备。Sniffer 就是嗅探器,就是窃听器,它静悄悄地工作在网络的底层,把用户的秘密全部记录下来。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确地问题判断。嗅探器在功能和设计方面有很多不同,有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:标准以太网、 TCP/IP、IPX、DECNET、FDDI Token、微波和无线网。

实际应用中的嗅探器还分软、硬两种。软件嗅探器的优点在于比较便宜,易于使用,缺点是往往无法抓取网络上所有的传输数据(比如碎片),也就可能无法真正全面了解网络的故障和运行情况。硬件嗅探器通常称为协议分析仪,它的优点恰恰是软件嗅探器所欠缺的,但是价格昂贵。目前流行的嗅探器工具大多是软件的。

FTP、POP和Telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,嗅探器就可以非常容易地截获这些口令和数据。而且,这些服务程序的安全验证方式也是有弱点的,就是很容易受到“中间服务器”方式的攻击。所谓“中间服务器”攻击方式,就是“中间服务器”冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。服务器和用户之间的数据传送被“中间服务器”转手并做了手脚之后,就会出现很严重的问题。

嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。数据在网络上是以很小的称为帧(Frame)的单位传输的。帧由好几部分组成,不同的部分执行不同的功能。例如以太网的前12个字节存放的是源和目的的地址,这些位告诉网络数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。它通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。在这个传输和接收的过程中,每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器。这一点和Internet地址系统比较相似。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以 “听”到通过的流量,但对不属于自己的报文则不予响应。换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据。如果某工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧。如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。这也是嗅探器会造成安全方面的问题的原因。


相关内容