随着Linux在网络中的应用日益广泛,它的安全问题也越来越受到关注。本文主要介绍嗅探器技术的工作原理,及其防范措施。
何谓嗅探器
嗅探器(Sniffer)就是能够捕获网络报文的设备。Sniffer 就是嗅探器,就是窃听器,它静悄悄地工作在网络的底层,把用户的秘密全部记录下来。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确地问题判断。嗅探器在功能和设计方面有很多不同,有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:标准以太网、 TCP/IP、IPX、DECNET、FDDI Token、微波和无线网。
实际应用中的嗅探器还分软、硬两种。软件嗅探器的优点在于比较便宜,易于使用,缺点是往往无法抓取网络上所有的传输数据(比如碎片),也就可能无法真正全面了解网络的故障和运行情况。硬件嗅探器通常称为协议分析仪,它的优点恰恰是软件嗅探器所欠缺的,但是价格昂贵。目前流行的嗅探器工具大多是软件的。
FTP、POP和Telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,嗅探器就可以非常容易地截获这些口令和数据。而且,这些服务程序的安全验证方式也是有弱点的,就是很容易受到“中间服务器”方式的攻击。所谓“中间服务器”攻击方式,就是“中间服务器”冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。服务器和用户之间的数据传送被“中间服务器”转手并做了手脚之后,就会出现很严重的问题。
嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。数据在网络上是以很小的称为帧(Frame)的单位传输的。帧由好几部分组成,不同的部分执行不同的功能。例如以太网的前12个字节存放的是源和目的的地址,这些位告诉网络数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。它通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。在这个传输和接收的过程中,每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器。这一点和Internet地址系统比较相似。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以 “听”到通过的流量,但对不属于自己的报文则不予响应。换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据。如果某工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧。如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。这也是嗅探器会造成安全方面的问题的原因。
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工具提供了许多命令行选项来选择捕获模式、控制输出、指定过滤规则以及指定其他操作特性。这些选项根据它们的功能被分组并且包括以下种类:操作模式、显示选项、报文过滤选项。
操作模式选项用于控制tcpdump 如何捕获和如何显示网络通信的参数。 各选项的意义如下:
- c 捕获指定数量的报文;
- F 使用文件作为过滤表达式的源;
- i 使用可选网络接口捕获报文;
- p 禁止在杂凑模式下捕获;
- r 读取捕获文件而非网络接口;
- w 保存原始报文到文件中。 |
举例说明:
1.pdump arp将捕获并显示所有地址解析协议(ARP)报文。捕获包括请求和应答。
2.pdump host red and tcp将捕获并显示来自(发往)red 主机的所有传输控制协议报文。
3.pdump hos red1 and port 23将捕获并显示发往red1或从red1发出的所有使用23 端口的报文。用来检查网络上从其他系统到该系统的Telnet报文。端口23是对所有传入的报文来说是Telnet服务端口。
嗅探器的危害
嗅探器可以帮助网络管理员查找网络漏洞和检测网络性能。嗅探器是一把双刃剑,它也有很大的危害性。
嗅探器可能造成的危害有:
1.嗅探器能够捕获口令;
2.够捕获专用的或者机密的信息;
3.以用来危害网络邻居的安全,或者用来获取更高级别的访问权限;
4.析网络结构,进行网络渗透。
嗅探器的攻击非常普遍,尤其在Internet上。一个放置好的嗅探器可以捕获成千上万个口令。1994年一个最大的嗅探器攻击被发现。这次攻击被人们普遍认为是记载中最为恶劣的一次,许多可以FTP、Telnet或远程登陆的主机系统都受到了危害。在这件事故(攻击者处于Rahul.net)中,嗅探器只运行了18个小时。在这段时间里,有几百台主机被泄密。受攻击者包括268个站点,如MIT、美国海军和空军、Sun微系统公司、IBM、NASA、 CERFNet和加拿大、以色列、荷兰、比利时的一些大学的机器。
嗅探器可以捕获网络上所有的报文,但实际上,一个攻击者必须要对报文进行选择。嗅探器攻击并不像听起来那么容易,它需要攻击者对网络知识有一定的了解。简单地设置一个嗅探器,并将其放到随便什么地方,将不会起到什么作用。因为即使一个只有5个工作站的网络,在一小时之内也会传输好几千个报文。这样在很短的时间里,嗅探器中用来存储捕获报文的文件就会充斥整个硬盘(如果记录下每一个报文的话)。
为了巧妙地解决这个问题,攻击者只嗅探每个报文的前200到300个字节。用户名和口令都包含在这一部分中,这是所有攻击者真正关心的部分。当然,如果拥有足够的空间进行存储,拥有足够的能力进行处理的话,也可以嗅探给定接口上的所有报文,那将会发现另一些非常可怕的东西。
抵御嗅探器的攻击
有二种方法可能会对抵御嗅探器的攻击有所作用:
1.检测和消灭嗅探器;
2.将数据隐藏,使嗅探器无法发现。
针对于第一种方法:检测和消灭嗅探器,可以采用检测混杂模式网卡的工具。
由于嗅探器需要将网络中入侵的网卡设置为混杂模式才能工作,所以有效检测混杂模式网卡的工具Anto-sniff就是一个好的工具。软件可以在http://www.securitysoftwatech.com/antisniff下载。但是嗅探器是非常难以被发现,因为它们是被动的程序。一个老练的黑客可以轻易通过破坏日志文件来掩盖信息,它并不会给别人留下进行核查的尾巴。
此处将对于第二种方法:将数据隐藏,使嗅探器无法发现重点介绍。
一般有两种防御的方法:
1.安全的拓扑结构;
2.会话加密。
嗅探器只能在当前网络段上进行数据捕获。这就意味着,将网络分段工作进行得越细,嗅探器能够收集的信息就越少。但是,除非你的公司是一个ISP,或者资源相对不受限制,否则这样的解决方案需要很大的代价。网络分段需要昂贵的硬件设备。有三种网络设备是嗅探器不可能跨过的:交换机、路由器、桥。
我们可以通过灵活的运用这些设备来进行网络分段。读者可能采用20个工作站为一组,这是一个比较合理的数字。然后,每个月人为地对每段进行检测(也可以每个月采用MD5随机地对某个段进行检测)。网络分段只适应于小的网络。如果有一个500个工作站的网络,分布在50个以上的部门中,那么完全的分段是价格所不允许的。即使在单位预算时有安全方面的考虑,也难以让单位主管相信需要50个硬件设备,而这只是为了防止嗅探器的攻击。在这样的情况下,对会话进行加密就是一种很好的选择。会话加密提供了另外一种解决方案。不要特别地担心数据被嗅探,而是要想办法使得嗅探器不认识嗅探到的数据。这种方法的优点是明显的:即使攻击者嗅探到了数据,这些数据对他也是没有用的。但是,其存在的缺点也非常明显。在加密时有两个主要的问题:一个是技术问题,一个是人为问题。
技术问题包括是否该加密到足够强大的程度,还是仅仅是想当然地认为它比较强大。例如,40位的加密就可能不够,而且并不是所有的应用程序都集成了加密支持。而且,跨平台的加密方案还比较少见,一般只在一些特殊的应用之中才有。再者,有些用户可能抵制使用加密,他们觉得这太麻烦。用户在开始时可能会同意使用加密,但他们很少能够坚持下。总之我们必须寻找一种友好的媒介,它还要具有一定的用户友好性。而Secure Shell(SSH)就具有上述的特征。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间服务器”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为 FTP、POP,甚至PPP提供一个安全的“通道”。SSH绑定在端口22上,其连接采用协商方式使用RSA加密。身份鉴别完成之后,后面的所有流量都使用IDEA进行加密。SSH(Secure Shell)程序可以通过网络登录到远程主机并执行命令。SSH的加密隧道保护的只是中间传输的安全性,使得任何通常的嗅探工具软件无法获取发送的内容。它提供了很强的安全验证可以在不安全的网络中进行安全的通信.所以它是防范嗅探器的一种方法。
简单使用SSH
安装
1.下载软件包,下载地址为,下载最新软件包SSH2。最好下载源程序软件包自己进行自行编译。
2.解压及安装:
# tar -zxvf ssh2-2.4.0.tar.gz
# cd ssh2-2.4.0
# ./configure
# make
#make install |
安装完成。这一过程实际上将服务器软件包及客户端软件一起安装了,不必再次安装客户端软件包。
已编译好的二进制软件包以rpm格式存放在ftp://ftp.ssh.com/pub/ssh/rpm目录下。它是一个给非商业用户使用的软件包,软件包名称为:ssh-2.4.0-1.i386.rpm,其中包含了对X-Window的支持。另一个不支持X-Window的软件包为ssh-2.4.0- 1nox.i386.rpm,下载后可以直接安装。安装程序将SSH2软件包安装在/usr/local/bin及/usr/local/sbin下。
配置
SSH的配置文件在/etc/ssh2下,其中包括sshd2的主机公钥和私钥:hostkey和hostkey.pub。这两个文件通常是在安装SSH时自动生成的。你可以通过下面的命令重新来生成它们:
#rm/etc/ssh2/hostkey*
#ssh-keygen2?P/etc/ssh2/hostkey |
而ssh2_config文件一般情形下无需修改。
启动
在Uinux/Linux环境下,服务器程序放置在/usr/local/sbin目录下,启动方法如下:
可以看到SSHD已经启动了。如果不希望每次重启动系统,都要手工运行启动SSHD,则可以自己写一个脚本,放置在init.d目录下,让系统启动后,自动执行SSHD服务的启动工作。或者直接在rc.local中加入/usr/local/sbin/sshd。
使用SSH
客户端在Uinux/Linux系统中就是SSH,存放在/usr/local/bin目录下,中有SSH2、scp等客户端工具。用SSH登录远程主机方法如下:
其使用方法如同Telnet一样,不同之处是要求用户输入认证字符串。如果认证字符串通过了认证,则用户直接登录成功;如果不成功,则是要求用户输入系统口令。口令认证成功后,用户也可以成功登录系统。从使用上看,它与Telnet没有什么不同之处。而且有了SSH客户端软件,那么你要上传文件就不必向以前一样再开一个FTP窗口,再次认证,然后上传文件。使用SSH客户端自带的scp工具,就可以直接将文件上传到远端服务器上。使用方法如下:
host1:dir/filename host2:/home/abc/filename |
嗅探器技术被广泛应用于网络维护和管理方面。它工作的时候就像一部被动声纳,默默的接收来自网络的各种信息。通过对这些数据的分析,网络管理员可以深入了解网络当前的运行状况,以便找出网络中的漏洞。这里并不想否定嗅探器好的作用。在网络安全日益被注意的今天,我们不但要正确使用嗅探器,还要合理防范嗅探器的危害。嗅探器能够造成很大的安全危害,主要是因为它们不容易被发现。可以通过学习使用嗅探器、了解黑客如何使用嗅探器进行攻击的方法,来抵御嗅探器的攻击。同时也要看到,最好地抵御嗅探器的方法是安全的拓扑结构和会话加密。
阅读(335) | 评论(0) | 转发(0) |