第五章 SNMP的安全風險及防範措施(1 / 2)

第五章 SNMP的安全風險及防範措施

接入Internet的網絡麵臨許多風險,Web服務器可能麵臨攻擊,郵件服務器的安全也令人擔憂。但除此之外,網絡上可能還存在一些隱性的漏洞。大多數網絡總有一些設備運行著SNMP服務,許多時候這些SNMP服務是不必要的,但卻沒有引起網絡管理員的重視。

根據SANS協會(http://www.sans.org)的報告,對於接入Internet的主機,SNMP是威脅安全的十大首要因素之一;同時,SNMP還是Internet主機上最常見的服務之一。特別地,SNMP服務通常在位於網絡邊緣的設備(防火牆保護圈之外的設備)上運行,進一步加劇了SNMP帶來的風險。這一切聽起來出人意料,但其實事情不應該是這樣的。本文提供了一些建議,幫助你正確麵對SNMP服務隱藏的風險。

一、背景知識

SNMP開發於九十年代早期,其目的是簡化大型網絡中設備的管理和數據的獲取。許多與網絡有關的軟件包,如HP的OpenView和NortelNetworks的OptivityNetworkManagementSystem,還有MultiRouterTrafficGrapher(MRTG)之類的免費軟件,都用SNMP服務來簡化網絡的管理和維護。

由於SNMP的效果實在太好了,所以網絡硬件廠商開始把SNMP加入到它們製造的每一台設備。今天,各種網絡設備上都可以看到默認啟用的SNMP服務,從交換機到路由器,從防火牆到網絡打印機,無一例外。

僅僅是分布廣泛還不足以造成威脅,問題是許多廠商安裝的SNMP都采用了默認的通信字符串(例如密碼),這些通信字符串是程序獲取設備信息和修改配置必不可少的。采用默認通信字符串的好處是網絡上的軟件可以直接訪問設備,無需經過複雜的配置。

通信字符串主要包含兩類命令:GET命令,SET命令。GET命令從設備讀取數據,這些數據通常是操作參數,例如連接狀態、接口名稱等。SET命令允許設置設備的某些參數,這類功能一般有限製,例如關閉某個網絡接口、修改路由器參數等功能。但很顯然,GET、SET命令都可能被用於拒絕服務攻擊(DoS)和惡意修改網絡參數。

最常見的默認通信字符串是public(隻讀)和private(讀/寫),除此之外還有許多廠商私有的默認通信字符串。幾乎所有運行SNMP的網絡設備上,都可以找到某種形式的默認通信字符串。

SNMP2.0和SNMP1.0的安全機製比較脆弱,通信不加密,所有通信字符串和數據都以明文形式發送。攻擊者一旦捕獲了網絡通信,就可以利用各種嗅探工具直接獲取通信字符串,即使用戶改變了通信字符串的默認值也無濟於事。

近幾年才出現的SNMP3.0解決了一部分問題。為保護通信字符串,SNMP3.0使用DES(DataEncryptionStandard)算法加密數據通信;另外,SNMP3.0還能夠用MD5和SHA(SecureHashAlgorithm)技術驗證節點的標識符,從而防止攻擊者冒充管理節點的身份操作網絡。有關SNMP3.0的詳細說明,請參見http://www.ietf.org/rfc/rfc2570.txt。

雖然SNMP3.0出現已經有一段時間了,但目前還沒有廣泛應用。如果設備是2、3年前的產品,很可能根本不支持SNMP3.0;甚至有些較新的設備也隻有SNMP2.0或SNMP1.0。

即使設備已經支持SNMP3.0,許多廠商使用的還是標準的通信字符串,這些字符串對黑客組織來說根本不是秘密。因此,雖然SNMP3.0比以前的版本提供了更多的安全特性,如果配置不當,其實際效果仍舊有限。

二、禁用SNMP

要避免SNMP服務帶來的安全風險,最徹底的辦法是禁用SNMP。如果你沒有用SNMP來管理網絡,那就沒有必要運行它;如果你不清楚是否有必要運行SNMP,很可能實際上不需要。即使你打算以後使用SNMP,隻要現在沒有用,也應該先禁用SNMP,直到確實需要使用SNMP時才啟用它。

下麵列出了如何在常見的平台上禁用SNMP服務。

■WindowsXP和Windows2000

在XP和Win2K中,右擊"我的電腦",選擇"管理"。展開"服務和應用程序"、"服務",從服務的清單中選擇SNMP服務,停止該服務。然後打開服務的"屬性"對話框,將啟動類型該為"禁用"(按照微軟的默認設置,Win2K/XP默認不安裝SNMP服務,但許多軟件會自動安裝該服務)。

■WindowsNT4.0