9.3. 網路為基礎的 IDS

網路為基礎的入侵偵測系統與主機為基礎的 IDS 操作方式不同,網路為基礎之 IDS 的設計 理論是在路由器或主機層級掃描網路封包,稽核封包資訊,以及紀錄任何可疑的封包到一個 含有延伸資訊的特殊紀錄檔案。 根據這些可疑的封包,一個網路為基礎的 IDS 可以掃描它 自己已知的網路攻擊簽章資料庫,然後為每一個封包指派一個嚴重性等級。 假如嚴重性等級 夠高的話,將會傳送一個警告電子郵件或傳呼訊息到保全小組的成員,以使他們能夠進一步 調查這個異常狀況。

由於網際網路不斷地擴展,網路為基礎的 IDS 也漸漸受到歡迎,可以掃描大部分的網路行為以及 可以成功標識可疑傳輸的 IDS 已在安全性工業中受到極大的重視。 由於 TCP/IP 固有的不安全 特性,使得人們勢必要開發掃描程式、網路監聽程式以及其他網路稽核與偵測工具以防止由於以 下惡意的網路行為所導致的安全性破壞:

大部分網路為基礎的 IDS 需要主機系統的網路裝置設定為promiscuous 模式,這將會允許裝置擷取網路上傳輸的每一個封包,您可以透過如下的 ifconfig 指令來設定 promiscuous 模式:

ifconfig eth0 promisc

以不含選項的方式執行 ifconfig 表示 eth0 目前是以 promiscuous (PROMISC) 模式執行。

eth0      Link encap:Ethernet  HWaddr 00:00:D0:0D:00:01  
          inet addr:192.168.1.50  Bcast:192.168.1.255  Mask:255.255.252.0
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:6222015 errors:0 dropped:0 overruns:138 frame:0
          TX packets:5370458 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:2505498554 (2389.4 Mb)  TX bytes:1521375170 (1450.8 Mb)
          Interrupt:9 Base address:0xec80 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:21621 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21621 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1070918 (1.0 Mb)  TX bytes:1070918 (1.0 Mb)

使用例如 tcpdump (Red Hat Enterprise Linux 已收錄) 工具,我們可以看到相當大量的網路流量穿越網路:

tcpdump: listening on eth0
02:05:53.702142 pinky.example.com.ha-cluster > \
 heavenly.example.com.860:  udp 92 (DF)
02:05:53.702294 heavenly.example.com.860 > \
 pinky.example.com.ha-cluster:  udp 32 (DF)
02:05:53.702360 pinky.example.com.55828 > dns1.example.com.domain: \
 PTR? 192.35.168.192.in-addr.arpa. (45) (DF)
02:05:53.702706 ns1.example.com.domain > pinky.example.com.55828: \
 6077 NXDomain* 0/1/0 (103) (DF)
02:05:53.886395 shadowman.example.com.netbios-ns > \
 172.16.59.255.netbios-ns: NBT UDP PACKET(137): QUERY; BROADCAST
02:05:54.103355 802.1d config c000.00:05:74:8c:a1:2b.8043 root \
 0001.00:d0:01:23:a5:2b pathcost 3004 age 1 max 20 hello 2 fdelay 15 
02:05:54.636436 konsole.example.com.netbios-ns > 172.16.59.255.netbios-ns:\
 NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
02:05:56.323715 pinky.example.com.1013 > heavenly.example.com.860:\
 udp 56 (DF)
02:05:56.323882 heavenly.example.com.860 > pinky.example.com.1013:\
 udp 28 (DF)

請注意並非傳送到我們機器(pinky.example.com)的封包 也都被掃描,而且由 tcpdump 所紀錄。

9.3.1. Snort

雖然 tcpdump 是很有用的稽核工具,它並不被認定為一個真實的 IDS, 因為它並不分析並且標示異常的封包。 tcpdump 會列出所有的封包資訊到螢幕上,或者是到一個紀錄檔案中(而不進行任何的分析)。 一個妥善的 IDS 將會分析封包,並且標識潛在的惡意封包傳輸,然後儲存它們到一個格式好的紀錄檔中。

Snort 是一種 IDS,它可以廣泛且正確地成功紀錄5惡意的網路行為,並且於可能的破壞發生時 通知系統管理員。 Snort 使用標準的 libcap 函式庫以及 tcpdump 來當作一個封包紀錄的後端。

除了它的功能性外,Snort 最令人稱許的特色是它靈活的攻擊簽章子系統。 Snort 擁有一個經常 更新的攻擊資料庫,您可以增加新的資訊於其中,以及透過網際網路來更新。 使用者可以根據 新的網路攻擊以建立簽章,並且呈送它們到 Snort 簽章的郵遞論壇(位於 http://www.snort.org/lists.html),以使得所有的 Snort 使用者都可以受益。 這種分享的社群道德已經促使 Snort 發展成為目前最更新且功能最完整的網路為基礎的 IDS。

注請注意
 

snort 並未收錄在 Red Hat Enterprise Linux 中,而且也不受支援,我們將它收錄在這份文件中, 以方便對使用這個應用程式有興趣的使用者參考用。

如需關於使用 Snort 的更多資訊,請參考位於 http://www.snort.org/ 的官方網站。