安全問題
當要維護網絡安全的時候,需要加以了解的關鍵問題就是網絡漏洞可能存在於位於何處。只有了解攻擊者會從何處入手,才能采取相應的措施加強系統的安全。下面部分針對可能存在的安全漏洞進行了簡單的概括,這些地方都是網絡安全需要注意的方面。
物理安全性:網絡竊聽與地址欺騙
物理安全性的安全性非常重要,但這個問題中的大部分內容與網絡安全無關,例如如果服務器被盜竊了,其上面的硬盤就能被竊賊使用物理讀取的方式進行分析讀取。這只是一個極端的例子,更一般的情況可能是非法使用者接觸了系統的控制台,重新啟動計算機並獲得控制權,或者通過物理連接的方式竊聽網絡信息。
最近國內報告了幾例 “黑客” 事件,攻擊者通過將物理線路連接到目的線路上,並利用對這些專有的計算機系統的了解來竊取信息。事實上這種攻擊方式不能算一個真正的網絡攻擊,並不用說網絡黑客了。
在物理安全方面,與網絡相關的問題主要在於傳輸數據的安全性。由於TCP/IP協議是一種包交換網絡,各個數據包在網絡上都是透明傳輸的,將經過各個不同的網絡,由那些網絡上的路由器轉發,才能到達目的計算機。由於數據包都是直接經過這些網絡,那麼這些網絡上的計算機都有可能將其捕獲,從而竊聽到正在傳輸的數據。這個物理上的傳輸安全問題對網絡安全非常重要,因為當前的TCP/IP協議本身並沒有對安全傳輸進行考慮,很多應用程序,如telnet、ftp 等,甚至使用明文來傳遞非常敏感的口令數據。獲取網絡上流過全部數據的方法通常被稱為網絡分析(sniffing)。
由於物理網絡的傳輸限制,並不是在網絡上的任意位置都能捕獲數據包信息的。對於最常用的以太網,較老的共享式以太網能在任意一個位置竊聽所有流經網絡的信息包,而新式的交換式以太網能夠在交換機上隔離流向不同計算機的數據,因此安全性更高。然而無論怎樣的網絡,路由器總是一個非常關鍵的位置,所有流入流出網絡的數據都經過這個特殊的計算機,如果攻擊者在路由器上進行竊聽就會造成非常嚴重的安全問題。
交換式以太網並不能保證不能百分之百不被竊聽,高明的竊聽者能通過欺騙以太網交換機來完成竊聽的任務,然而這需要針對具體交換機的弱點進行攻擊,事實上很難進行。
涉及物理安全性的另一個問題是網絡地址欺騙,很多網絡服務將安全性依賴於區分不同計算機的方式,可信任的計算機能夠訪問網絡資源,不可信任的計算機被拒絕訪問。然而非法入侵者可以通過欺騙的方式,使得目的計算機認為它是可信任的計算機,從而達到入侵的目的。
網絡地址欺騙可以分為兩種,一種為假冒其他計算機網卡的硬件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堆棧處於擁塞狀態,而無法正常相應其他請求。