淺談sniffer的原理與防范
sniffer用英文翻譯的意思為"嗅探器",想必大家都看過"無間道"吧,其中劉德華和梁朝偉兩個人做的是什么職業?臥底.而sniffer也可以這樣比喻.它就象進入敵人內部的臥底一樣.不斷地將敵方的情報送出來.
一、什么是sniffer
sniffer一般運行在路由器或有路由器功能的主機上.這樣就可以達到監控大量數據的目的.它的運行平臺也比較多.如Linux.Lanpatrol.Lanwatch.netmon等.sniffer屬于第二層次(即數據鏈路層)的攻擊.一般是攻擊者進入目標系統.然后利用sniffer來得到更多的信息.(如用戶名.口令.銀行帳戶.密碼等等)它幾乎能得到以太網上傳送的任何數據包.通常.sniffer程序只需要看到一個數據包的前200到350個字節的數據.就可以得到用戶名和密碼等信息.由此可見這種攻擊手段是非常危險的.
二、如何防范sniffer
實際上.在網絡上很難發現sniffer.因為它根本就不會留下任何痕跡.我們可以通過查看進程的方法來發現它.
在Unix系統下我們使用這個命令:
pa -aux 或者是:pa -augx
(這兩個命令是列出當前正在運行的所有進程(類似windows2000下的任務管理器).我們來看看啟動這些進程的用戶.占用內存的大小.占用CPU的時間和大小等等.)
在windowsNT系統下.我們只要按下ctrl+alt+del鍵,就可以通過任務管理器來查看一下進程列表.但是.一般編程技巧高的sniffer.它根本就不會在進程里出現.
防范sniffer并不難.問題就在花費上了.嗬嗬.誰都知道現在的¥¥很難賺的.我們常用的防范sniffer的方法有:
1.傳輸加密.
比較安全的方法就是加密,即對傳輸的數據在傳送之前加密.對方收到后再解迷.就算被sniffer監聽.但它看到的僅僅的加密后的數據.這樣數據包在傳輸的過程中.就算被sniffer程序截獲.它也得不到什么可以利用的信息.不幸的是.傳統的TCP/IP協議并沒有采用加密的方法來進行數據傳輸.數據都是明文方式的.因此,要想徹底解決被sniffer程序監聽的問題.最根本的方法是增強TCP/IP協議.而目前就只能通過打補丁來解決了.(如SSH協議,它是在應用程序中提供安全通信的協議.建立在客戶機/服務器模型上.SSH服務器的服務斷口是22.采用RSA算法來驗證用戶并建立連接.通信數據是采用IDEA技術來加密的.這種加密方法只適合一般的通信)
2.采用安全拓撲結構.
采用安全拓撲結構要遵循一個原則就是一個網絡段必須要有足夠的理由才能相信另外一個網絡段.網絡段的設計考慮數據之間的信任關系.而不是硬件需要.我們做個說明.
一個網絡段僅由能相互信任的計算機組成.象公司的財務系統.它是固定在某個辦公室的.
所有的問題都歸結到信任上了.一臺計算機為了和其他計算機進行通信.就必須信任那臺計算機.作為系統管理員.我們要做的就是用某種方法讓計算機之間的信任關系變小.
局域網和internet連接.僅僅只靠防火墻是不夠的.入侵者已經可以從防火墻后面掃描.并探測正在運行的服務.要考慮入侵者進入系統后.他想得到或者說能得到什么信息.就必須先考慮一條路徑.即信任關系有多長.在信任關系中.任何計算機都可以對確定最小信任關系的那臺計算機進行攻擊.我們要做的就是保證出現的sniffer程序只對最小范圍有效.
總結:sniffer程序一般是入侵者在侵入系統后才會使用它來收集有用的信息.因此.防范系統被入侵才是解決問題的關鍵.,系統管理員要定期的對所管理的網絡進行安全測試.以便即使發現和防止安全隱患.安全隱患隨處可見,并不僅僅出現在sniffer的問題上.我們只是借這個來討論一下.希望大家都能夠保護好自己的計算機.