FreeBSD連載(74):安全問題

2000年1月15日 14:21 王波

安全問題

  當要維護網路安全的時候,需要加以了解的關鍵問題就是網路漏洞可能存在於位於何處。只有了解攻擊者會從何處入 手,才能採取相應的措施加強系統的安全。下面部分針對可能存在的安全漏洞進行了簡單的概括,這些地方都是網路安全需要 注意的方面。

  • 物理安全性:網路竊聽與地址欺騙

  物理安全性的安全性非常重要,但這個問題中的大部分內容與網路安全無關,例如如果伺服器被盜竊了,其上面的硬 碟就能被竊賊使用物理讀取的方式進行分析讀取。這只是一個歲N搌漕狺l,更一般的情況可能是非法使用者接觸了系統的控制 台,重新啟動電腦並獲得控制權,或者通過物理連接的方式竊鑒N舋葦H息。

  最近國內報告了幾例 “駭客” 事件,攻擊者通過將物理線路連接到目的線路上,並利用對這些專有的電腦系統 的了解來竊取信息。事實上這種攻擊方式不能算一個真正的網路攻擊,並不用說網路駭客了。

  在物理安全方面,與網路相關的問題主要在於傳輸數據的安全性。由於TCP/IP協議是一種包交換網路,各個數 據包在網路上都是透明傳輸的,將經過各個不同的網路,由那些網路上的路由器轉發,才能到達目的電腦。由於數據包都是 直接經過這些網路,那麼這些網路上的電腦都有可能將其捕獲,從而竊聽到正在傳輸的數據。這個物理上的傳輸安全問題對 網路安全非常重要,因為目前的TCP/IP協議本身並沒有對安全傳輸進行考慮,很多應用程序,如telnet、ftp 等,甚至使用明文來傳遞非常敏感的密碼數據。獲取網路上流過全部數據的方法通常被稱為網路分析(sniffing)。

  由於物理網路的傳輸限制,並不是在網路上的任意位置都能捕獲數據包信息的。對於最常用的以太網,較老的共享式 以太網能在任意一個位置竊聽所有流經網路的信息包,而新式的交換式以太網能夠在交換機上隔離流向不同電腦的數據,因 此安全性更高。然而無論怎樣的網路,路由器總是一個非常關鍵的位置,所有流入流出網路的數據都經過這個特殊的電腦, 如果攻擊者在路由器上進行竊聽就會造成非常嚴重的安全問題。

  交換式以太網並不能保証不能百分之百不被竊聽,高明的竊聽者能通過欺騙以太網交換機來完成竊聽的任務,然而這 需要針對具體交換機的弱點進行攻擊,事實上很難進行。

  防范竊聽的方法是對傳輸的數據進行加密,最簡單的情況下就不要使用明文來傳輸重要的認証信息。在FreeBSD 下可以使用Kerberos認証保証密碼傳輸不被竊聽。更進一步,可以使用支持加密傳輸的應用程序傳輸重要的數據, 如ssh。在數據要通過的不安全網路上設定虛擬專用網也能解決這個問題。目前,從IP層支持數據安全的協議為IPSec ,FreeBSD下也有一個開發組KAME是支持IPSec的(KAME的網址位於http://www.kame.net/ )。以後會有越來越多的應用程序支持IPSec,不再有傳輸安全的問題。

  涉及物理安全性的另一個問題是網路地址欺騙,很多網路服務將安全性依賴於區分不同電腦的方式,可信任的計算 機能夠訪問網路資源,不可信任的電腦被拒絕訪問。然而非法入侵者可以通過欺騙的方式,使得目的電腦認為它是可信任 的電腦,從而達到入侵的目的。

  網路地址欺騙可以分為兩種,一種為假冒其他電腦網卡的硬體MAC地址,這樣就能使得這台電腦能完全冒充另 外那台電腦,突破依賴於MAC地址的訪問限制。很多網卡可以通過驅動程序更改MAC地址,操作系統也能通過軟體的方 法更改其驅動程序中保存的MAC地址。因此MAC地址是不可靠的,不能依賴於它來保護具備敏感性的數據信息。顯然,假 冒MAC地址方法只能存在於同一個局域網之中,不能跨越網路。

  然而對TCP/IP來講,通信還是主要依賴於IP地址,因此更普遍的地址欺騙還是要通過假冒IP地址的方法進 行的。對於任何操作系統來講,更改IP地址非常簡便。在同一個子網當中,更改IP地址之後,它就能假冒那台被信任計算 機。然而在同一個子網之外,假冒IP地址就需要更複雜的技術,首先它需要了解假冒的IP數據包是否能發送到目的電腦 上,這需要依賴於它和目的電腦的路由器的設置,很多的路由器不能分辨IP數據包是否是從正確的子網發送出來的(或者 沒有屏蔽這些非法的IP數據包),這樣假冒的IP數據包就能到達目的電腦。由於假冒的IP數據包中的IP地址與發送 的電腦不相符,因此回應的數據包不會返回假冒IP地址的電腦,這樣就需要假冒的電腦只能依靠猜測來攻擊目的計算 機。

  在地址欺騙中,如果要被假冒的電腦正在運行,勢必要發生衝突。入侵者為了避免出現這些問題,可能會首先攻擊 要被假冒的電腦,使其當機或超負荷運行,而不能響應服務請求。然後才能無妨礙的進行攻擊過程。

  • 操作系統安全性:軟體BUG和後門

  任何軟體系統都可能存在種種系統漏洞,提供相應服務的同時也就可能暴露某個問題。由於FreeBSD繼承了非 常成熟的BSD代碼,以及採用了開放原始碼的策略,FreeBSD是非常安全的系統,然而這也不能絕對保証系統中沒有 問題存在。而那些不公開代碼的商業軟體,由於測試遠遠少於開放代碼的軟體,就可能存在更多的問題。因而,入侵者就能利 用這些漏洞來侵入電腦,或者利用這些漏洞破壞電腦。

  但還沒有登錄入這台電腦的攻擊者,他們會掃描這台電腦的端口,以尋找這台電腦提供的網路服務,然後從這 些網路服務出發,尋找提供這些網路服務的系統守護進程的漏洞,進而入侵系統。

  事實上Internet網路中充斥著這些端口掃描程序,在國內,大部分端口掃描程序是用來尋找代理伺服器的, 由於國內網路的現狀(CERNET中出國訪問按流量收費),這些行為雖然也是為非法使用代理伺服器做準備,然而也是值 得原諒的。

  對於已經進入這台電腦的入侵者,由於一般情況下入侵者進入系統只能獲得普通用戶的權限,並不能控制系統。入 侵者需要獲取更大的權利,來控制整個系統。Unix下root用戶具備最大的權限,能完成所有可以執行的操作,因此就 是入侵者攻擊的目標。能獲得root用戶的權限的基本方法是通過執行root用戶擁有的、並且具備SetUID屬性的 執行程序,一般這些程序只完成特定操作,或者也要預先驗証用戶的身份,因此入侵者並不能直接得逞。然而如果這些SetUID 的程序存在漏洞,那麼入侵者可以通過緩衝區溢出等手段,使這些程序執行入侵者設定的非正常操作,來達到獲得root 身份的目的。此外,得到root身份還能通過系統驅動程序的漏洞、以root用戶權限執行的守護進程漏洞等方法達 到目的。

  SetGID的程序不能使入侵者得到root權限,但可以使入侵者得到其他非法權限,使得入侵者能完成更多的 操作,為獲得root權限起到輔助作用。

  除了這些利用軟體漏洞的方法之外,入侵者還可以通過欺騙用戶,使其執行入侵者的程序,來達到獲得非法權限的目 的。這些入侵者的程序是一些特洛伊木馬程序,它模仿正常程序的行為,但暗中竊取了密碼等重要的數據。入侵者常常設定特 洛伊木馬來獲得更大的權限。

  為了預防這些安全問題,需要盡量減少電腦提供的服務數量,不必要的服務就不要提供。同時盡量減少系統中存在 的SetUID、SetGID程序的數量,不要執行未經驗証的程序,尤其不能以root身份執行。

  一些軟體能比系統提供的軟體提供更詳細的訪問記錄和更細致的訪問限制,以增加網路安全性。例如tcp wrapper ,sudo等。另一些軟體能自動分析電腦提供的服務中存在的漏洞,因而能幫助系統管理員及時彌補被發現的漏 洞。如Satan、Cops等。

  • 服務阻塞

  服務阻塞技術並不一定要利用系統的漏洞,它可能只利用了系統提供的正常功能。很多情況下,提供服務並沒有對使 用服務的使用者占用的資源進行限制,允許用戶使用盡可能多的資源。這因為伺服器信任使用它的用戶,然而惡意的攻擊者能 通過自己不停的申請並占用系統資源,使得伺服器不能正常向外提供正常服務,或者當機。

  在操作系統中也存在這種攻擊方式,例如一個用戶不斷占用磁碟空間,直至系統空間被填滿,其他需要空間的用戶就 不能正常工作。或者一個用戶不斷生成子進程,直至系統進程表被填滿,其他用戶無法啟動進程為止。

  優秀的系統和服務程序,應該考慮到這些問題,因此也可以認為這種問題屬於軟體設計考慮不周,然而這畢竟與軟體 漏洞還是有所不同。如果一個服務程序過多的考慮了各種資源的限制,其效率和可用性都會大大減低的。

  在服務阻塞方面的網路攻擊方法被外部入侵者常用的是IP-SYN攻擊,它能使電腦的TCP/IP堆棧處於擁 塞狀態,而無法正常相應其他請求。