如何在網(wǎng)絡(luò)中發(fā)現(xiàn)一個(gè)Sniffer
簡單的一個(gè)回答是你發(fā)現(xiàn)不了。因?yàn)樗麄兏揪蜎]有留下任何痕跡。
因?yàn)閟niffer是如此囂張又安靜,如何知道有沒有sniffer存在,這也是一個(gè)很難說明的問題,比較有說服力的理由證明你的網(wǎng)絡(luò)有sniffer目前有這么兩條:
網(wǎng)絡(luò)通訊掉包率反常的高。
通過一些網(wǎng)絡(luò)軟件,可以看到信息包傳送情況(不是sniffer),向ping這樣的命令會(huì)告訴你掉了百分幾的包。如果網(wǎng)絡(luò)中有人在Listen,那么信息包傳送將無法每次都順暢的流到目的地。(這是由于sniffer攔截每個(gè)包導(dǎo)致的)
網(wǎng)絡(luò)帶寬出現(xiàn)反常。
通過某些帶寬控制器(通常是防火墻所帶),可以實(shí)時(shí)看到目前網(wǎng)絡(luò)帶寬的分布情況,如果某臺(tái)機(jī)器長時(shí)間的占用了較大的帶寬,這臺(tái)機(jī)器就有可能在監(jiān)聽。在非高速信道上,如56Kddn等,如果網(wǎng)絡(luò)中存在sniffer,你應(yīng)該也可以察覺出網(wǎng)絡(luò)通訊速度的變化。
還有一個(gè)辦法是看看計(jì)算機(jī)上當(dāng)前正在運(yùn)行的所有程序。但這通常并不可靠,但你可以控制哪個(gè)程序可以在你的計(jì)算機(jī)上運(yùn)行。
在Unix系統(tǒng)下使用下面的命令: ps -aux 或: ps -augx。 這個(gè)命令列出當(dāng)前的所有進(jìn)程,啟動(dòng)這些進(jìn)程的用戶,它們占用CPU的時(shí)間,占用內(nèi)存的多少等等。
Windows系統(tǒng)下,按下Ctrl+Alt+Del,看一下任務(wù)列表。不過,編程技巧高的Sniffer即使正在運(yùn)行,也不會(huì)出現(xiàn)在這里的。
另一個(gè)方法就是在系統(tǒng)中搜索,查找可疑的文件。但可能入侵者用的是他們自己寫的程序,所以都會(huì)給發(fā)現(xiàn)sniffer造成相當(dāng)大的困難。
還有許多工具,能用來看看你的系統(tǒng)會(huì)不會(huì)在雜收模式。從而發(fā)現(xiàn)是否有一個(gè)Sniffer正在運(yùn)行。
怎樣防止被sniffer
對(duì)于嗅探器如此強(qiáng)大的‘靈敏度’,我們力求作到:
檢測和消滅嗅探器
會(huì)話加密
將數(shù)據(jù)隱藏,使嗅探器無法發(fā)現(xiàn)
加密
你最關(guān)心的可能是傳輸一些比較敏感的數(shù)據(jù),如用戶ID或口令等等。有些數(shù)據(jù)是沒有經(jīng)過處理的,一旦被sniffer,就能獲得這些信息。解決這些問題的辦法是加密。
我們介紹以下SSH,它又叫Secure Shell。SSH是一個(gè)在應(yīng)用程序中提供安全通信的協(xié)議。它是建立在客戶機(jī)/服務(wù)器模型上的。SSH服務(wù)器的分配的端口是22。連接是通過使用一種來自RSA的算法建立的。在授權(quán)完成后,接下來的通信數(shù)據(jù)是用IDEA技術(shù)來加密的。這通常是較強(qiáng)的,適合與任何非秘密和非經(jīng)典的通訊。
SSH后來發(fā)展成為F-SSH,提供了高層次的,軍方級(jí)別的對(duì)通信過程的加密。它為通過TCP/IP網(wǎng)絡(luò)通信提供了通用的最強(qiáng)的加密。如果某個(gè)站點(diǎn)使用F-SSH,用戶名和口令成為不是很重要的一點(diǎn)。目前,還沒有人突破過這種加密方法。即使是sniffer,收集到的信息將不再有價(jià)值。當(dāng)然最關(guān)鍵的是怎樣使用它。
SSH和F-SSH都有商業(yè)或自由軟件版本存在。
其他的方法
另一個(gè)比較容易接受的是使用安全拓?fù)浣Y(jié)構(gòu)。這聽上去很簡單,但實(shí)現(xiàn)起來花銷是很大的。
在我們小的時(shí)候也許都玩過一種智力游戲,它通常由一系列數(shù)字組成。游戲的目的是要安排好數(shù)字,用最少的步驟,把它們按遞減順序排好。當(dāng)處理網(wǎng)絡(luò)拓?fù)鋾r(shí),就和玩這個(gè)游戲一樣。
這樣的拓?fù)浣Y(jié)構(gòu)需要有這樣的規(guī)則:一個(gè)網(wǎng)絡(luò)段必須有足夠的理由才能信任另一網(wǎng)絡(luò)段。網(wǎng)絡(luò)段應(yīng)該考慮你的數(shù)據(jù)之間的信任關(guān)系上來設(shè)計(jì),而不是硬件需要。
讓我們開始處理這個(gè)網(wǎng)絡(luò)拓?fù)洌瑏砜纯矗?br>第一點(diǎn):一個(gè)網(wǎng)絡(luò)段是僅由能互相信任的計(jì)算機(jī)組成的。通常它們?cè)谕粋€(gè)房間里,或在同一個(gè)辦公室里。比如你的財(cái)務(wù)信息,應(yīng)該固定在某一節(jié)點(diǎn),就象你的財(cái)務(wù)部門被安排在辦公區(qū)域的的一個(gè)不常變動(dòng)的地方。
注意每臺(tái)機(jī)器是通過硬連接線接到Hub的。Hub再接到交換機(jī)上。由于網(wǎng)絡(luò)分段了,數(shù)據(jù)包只能在這個(gè)網(wǎng)段上被sniffer。其余的網(wǎng)段將不可能被sniffer。
所有的問題都?xì)w結(jié)到信任上面。計(jì)算機(jī)為了和其他計(jì)算機(jī)進(jìn)行通信,它就必須信任那臺(tái)計(jì)算機(jī)。作為系統(tǒng)管理員,你的工作是決定一個(gè)方法,使得計(jì)算機(jī)之間的信任關(guān)系很小。這樣,就建立了一種框架,可以告訴你什么時(shí)候放置了一個(gè)sniffer,它放在那里了,是誰放的等等。
如果你的局域網(wǎng)要和INTERNET相連,僅僅使用防火墻是不夠的。入侵者已經(jīng)能從一個(gè)防火墻后面掃描,并探測正在運(yùn)行的服務(wù)。你要關(guān)心的是一旦入侵者進(jìn)入系統(tǒng),他能得到些什么。你必須考慮一條這樣的路徑,即信任關(guān)系有多長。舉個(gè)例子,假設(shè)你的WEB服務(wù)器對(duì)某一計(jì)算機(jī)A是信任的。那么有多少計(jì)算機(jī)是A信任的呢。又有多少計(jì)算機(jī)是受這些計(jì)算機(jī)信任的呢?在信任關(guān)系中,這臺(tái)計(jì)算機(jī)之前的任何一臺(tái)計(jì)算機(jī)都可能對(duì)你的計(jì)算機(jī)進(jìn)行攻擊,并成功。你的任務(wù)就是保證一旦出現(xiàn)的Sniffer,它只對(duì)最小范圍有效。
Sniffer往往是攻擊者在侵入系統(tǒng)后使用的,用來收集有用的信息。因此,防止系統(tǒng)被突破是關(guān)鍵。系統(tǒng)安全管理員要定期的對(duì)所管理的網(wǎng)絡(luò)進(jìn)行安全測試,防止安全隱患。同時(shí)要控制擁有相當(dāng)權(quán)限的用戶的數(shù)量。請(qǐng)記住,許多攻擊往往來自網(wǎng)絡(luò)內(nèi)部。


