SNIFFER(嗅探器)-如何发现和防止Sniffer
/ns/cn/jc/data/20020812014236.htm
SNIFFER(嗅探器)-如何发现和防止Sniffer
如何在网络中发现一个Sniffer
简单的一个回答是你发现不了。因为他们根本就没有留下任何痕迹。
因为sniffer是如此嚣张又安静,如何知道有没有sniffer存在,这也是一个很难说明的问题,比较有说服力的理由证明你的网络有sniffer目前有这么两条:
网络通讯掉包率反常的高。
通过一些网络软件,可以看到信息包传送情况(不是sniffer),向ping这样的命令会告诉你掉了百分几的包。如果网络中有人在Listen,那么信息包传送将无法每次都顺畅的流到目的地。(这是由于sniffer拦截每个包导致的)
网络带宽出现反常。
通过某些带宽控制器(通常是防火墙所带),可以实时看到目前网络带宽的分布情况,如果某台机器长时间的占用了较大的带宽,这台机器就有可能在监听。在非高速信道上,如56Kddn等,如果网络中存在sniffer,你应该也可以察觉出网络通讯速度的变化。
还有一个办法是看看计算机上当前正在运行的所有程序。但这通常并不可靠,但你可以控制哪个程序可以在你的计算机上运行。
在Unix系统下使用下面的命令: ps -aux 或: ps -augx。 这个命令列出当前的所有进程,启动这些进程的用户,它们占用CPU的时间,占用内存的多少等等。
Windows系统下,按下Ctrl+Alt+Del,看一下任务列表。不过,编程技巧高的Sniffer即使正在运行,也不会出现在这里的。
另一个方法就是在系统中搜索,查找可疑的文件。但可能入侵者用的是他们自己写的程序,所以都会给发现sniffer造成相当大的困难。
还有许多工具,能用来看看你的系统会不会在杂收模式。从而发现是否有一个Sniffer正在运行。
怎样防止被sniffer
对于嗅探器如此强大的‘灵敏度’,我们力求作到:
检测和消灭嗅探器
会话加密
将数据隐藏,使嗅探器无法发现
加密
你最关心的可能是传输一些比较敏感的数据,如用户ID或口令等等。有些数据是没有经过处理的,一旦被sniffer,就能获得这些信息。解决这些问题的办法是加密。
我们介绍以下SSH,它又叫Secure Shell。SSH是一个在应用程序中提供安全通信的协议。它是建立在客户机/服务器模型上的。SSH服务器的分配的端口是22。连接是通过使用一种来自RSA的算法建立的。在授权完成后,接下来的通信数据是用IDEA技术来加密的。这通常是较强的,适合与任何非秘密和非经典的通讯。
SSH后来发展成为F-SSH,提供了高层次的,军方级别的对通信过程的加密。它为通过TCP/IP网络通信提供了通用的最强的加密。如果某个站点使用F-SSH,用户名和口令成为不是很重要的一点。目前,还没有人突破过这种加密方法。即使是sniffer,收集到的信息将不再有价值。当然最关键的是怎样使用它。
SSH和F-SSH都有商业或自由软件版本存在。
其他的方法
另一个比较容易接受的是使用安全拓扑结构。这听上去很简单,但实现起来花销是很大的。
在我们小的时候也许都玩过一种智力游戏,它通常由一系列数字组成。游戏的目的是要安排好数字,用最少的步骤,把它们按递减顺序排好。当处理网络拓扑时,就和玩这个游戏一样。
这样的拓扑结构需要有这样的规则:一个网络段必须有足够的理由才能信任另一网络段。网络段应该考虑你的数据之间的信任关系上来设计,而不是硬件需要。
让我们开始处理这个网络拓扑,来看看:
第一点:一个网络段是仅由能互相信任的计算机组成的。通常它们在同一个房间里,或在同一个办公室里。比如你的财务信息,应该固定在某一节点,就象你的财务部门被安排在办公区域的的一个不常变动的地方。
注意每台机器是通过硬连接线接到Hub的。Hub再接到交换机上。由于网络分段了,数据包只能在这个网段上被sniffer。其余的网段将不可能被sniffer。
所有的问题都归结到信任上面。计算机为了和其他计算机进行通信,它就必须信任那台计算机。作为系统管理员,你的工作是决定一个方法,使得计算机之间的信任关系很小。这样,就建立了一种框架,可以告诉你什么时候放置了一个sniffer,它放在那里了,是谁放的等等。
如果你的局域网要和INTERNET相连,仅仅使用防火墙是不够的。入侵者已经能从一个防火墙后面扫描,并探测正在运行的服务。你要关心的是一旦入侵者进入系统,他能得到些什么。你必须考虑一条这样的路径,即信任关系有多长。举个例子,假设你的WEB服务器对某一计算机A是信任的。那么有多少计算机是A信任的呢。又有多少计算机是受这些计算机信任的呢?在信任关系中,这台计算机之前的任何一台计算机都可能对你的计算机进行攻击,并成功。你的任务就是保证一旦出现的Sniffer,它只对最小范围有效。
Sniffer往往是攻击者在侵入系统后使用的,用来收集有用的信息。因此,防止系统被突破是关键。系统安全管理员要定期的对所管理的网络进行安全测试,防止安全隐患。同时要控制拥有相当权限的用户的数量。请记住,许多攻击往往来自网络内部。