夫 營運者、善假於物也、形如 sniffer(嗅探器)
sniffer 在網路安全領域是一把雙刃劍、或被駭客作為網路攻擊工具、或協助營運診斷網路故障
本文以 Linux 平台下三個常用的網路嗅探器 Tcpdump、Ethereal 和 EtherApe 為例
介紹如何藉助 sniffer 來診斷網路故障,從而保障網路高效安全地運行
但由於 sniffer 實在太強大、本文也只是
入門性
的做些介紹、有興趣的朋友可進一步學習
● Tcpdump是一個命令列方式的網路流量監測工具。它誕生的時間較早,是許多圖形化嗅探器的雛形
● Ethereal是一個圖形化的網路流量監測工具,比命令列方式的Tcpdump友好很多,可以即時地觀看捕獲過程
● EtherApe也是一個圖形化的網路流量監測工具、與Ethereal不同,EtherApe可以通過對主機間的串連進行檢測
㈠ Tcpdump
在網路效能急劇下降的時候,可以通過 Tcpdump 來分析原因,找出造成網路阻塞的根源
Tcpdump 能截獲網卡上收到的資料包,並能夠協助網路系統管理員對其中的內容進行相應的分析
對於營運人員、瞭解如何使用 Tcpdump 來捕獲感興趣的資料包是一項必須掌握的基本功
⑴ Tcpdump 安裝
GNU/Linux 發行版預設都會安裝、如果沒有可到:http://www.tcpdump.org 下載
⑵ Tcpdump 命令列選項
Tcpdump是一個命令列方式的網路嗅探器、如果不進行過濾,過多數量的包會使營運人員很難理清頭緒
Tcpdump 常用命令列選項:
-a : 將網路地址和廣播位址轉變成容易識別的名字
-d : 將已截獲的資料包的代碼以人容易理解的格式輸出
-dd : 將已截獲的資料包的代碼以C程式的格式輸出
-ddd: 將已截獲的資料包的代碼以十進位格式輸出
-e : 輸出資料連結層的頭部資訊
-f : 將internet地址以數字形式輸出
-l : 將標準輸出變為行緩衝方式
-n : 不將網路位址轉譯成易識別的主機名稱,只以數字形式列出主機地址(如IP地址),這樣可以避免DNS查詢
-t : 不輸出時間戳記
-v : 輸出較詳細的資訊,例如IP包中的TTL和服務類型資訊
-vv : 輸出詳盡的報文資訊
-c : 在捕獲指定個數的資料包後退出
-F : 從指定的檔案中讀取過濾規則,忽略命令列中指定的其它過濾規則
-i : 指定監聽的網路介面
-r : 從指定的檔案中讀取資料包(該檔案一般通過-w選項產生)
-w : 將截獲的資料包直接寫入指定的檔案中,不對其進行分析和輸出
-T : 將截獲的資料包直接解釋為指定類型的報文
⑶ 例子
① 從指定的網路介面截獲5個 ARP 資料包,並且不將網路位址轉譯成主機名稱
[root@Rocky ~]# tcpdump arp -i eth0 -c 5 -ntcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes10:59:46.728425 arp who-has 192.168.1.1 tell 192.168.1.11011:00:17.315719 arp who-has 192.168.1.1 tell 192.168.1.11111:00:17.317911 arp who-has 192.168.1.1 tell 192.168.1.11111:00:17.418271 arp who-has 192.168.1.1 tell 192.168.1.11111:00:17.418980 arp who-has 192.168.1.1 tell 192.168.1.1115 packets captured5 packets received by filter0 packets dropped by kernel
10:59:46:為截獲資料包的時間
728425 :為毫秒數
arp:表明該資料包時 ARP 請求
who-has 192.168.1.1 tell 192.168.1.110:表示 110 請求 1 的 MAC 位址
② 截獲主機“9.185.10.57”所有收到和發出的資料包
tcpdump host 9.185.10.57
③ 截獲在主機“9.185.10.57”和主機“9.185.10.58”或“9.185.10.59”之間傳遞的資料包
tcpdump host 9.185.10.57 and \>\(9.185.10.58 or 9.185.10.59\)
④ 截獲主機“9.185.10.57”和除主機“9.186.10.58”外所有其它主機之間通訊的IP資料包
tcpdump ip host 9.185.10.57 and ! 9.185.10.58
⑤ 截獲主機“9.185.10.57”接收或發出的FTP(連接埠號碼為21)資料包
tcpdump tcp port 21 host 9.185.10.57
⑥ 如果懷疑係統正受到(DoS)攻擊,可通過截獲發往原生所有ICMP包,確定目前是否有大量的ping流向伺服器
tcpdump icmp -n -i eth0
㈡ Ethereal
⑴ 下載並安裝
***請確認 libpcap 包已經安裝****
# cp ethereal-0.9.9.tar.bz2 /usr/local/src/
# cd /usr/local/src/
# bzip2 -d ethereal-0.9.9.tar.bz2
# tar xvf ethereal-0.9.9.tar
# cd ethereal-0.9.9
# ./configure
# make
# make install
⑵ 簡單的捕獲過程
大概可分 2 步:
Ⅰ 點擊 "filter":可直接在預置的條件裡選擇、也可自己建立、比如:
Filter name:Rocky
Filter string: host 124.127.185.106
Ⅱ 點擊 "capture "、在 "capture filter"選項框裡面填上過濾條件
㈢ EtherApe
⑴ 安裝
# gunzip etherape-0.9.11.tar.gz
# tar vxf etherape-0.9.11.tar
# cd etherape-0.9.11
# ./configure
# make
# make install
⑵ 簡單的捕獲過程
大致如下:
Ⅰ 單擊“Pref.”按鈕,開啟“Preferences”,在“Capture”屬性頁面中“Capture filter”
Ⅱ 如果對IP資料包感興趣,這時可以將EtherApe切換到IP模式。單擊“Capture”菜單,選擇“Mode”功能表項目