WebSphere Application Server V7、V8 和 V8.5 中的高級安全性加強,第 1 部分
安全性加強的概述和方法
WebSphere Application Server V7、V8 和 V8.5 中的高級安全性加強,第 1 部分: 安全性加強的概述和方法
https://www.ibm.com/developerworks/cn/websphere/techjournal/1210_lansche/1210_lansche.html
WebSphere Application Server V7、V8 和 V8.5 中的高級安全性加強,第 2 部分: 高級安全注意事項
https://www.ibm.com/developerworks/cn/websphere/techjournal/1303_lansche/1303_lansche.html?ca=drs-
0
系列內容:
此內容是該系列 2 部分中的第 1 部分: WebSphere Application Server V7、V8 和 V8.5 中的高級安全性加強
簡介
IBM WebSphere Application Server 的安全性在每個版本中都有所改進。除了在新版本中增加了一些新功能之外,我們還不斷增強產品的默認安全性。我們通過改進默認設置不斷提高滿足默認安全性這一關鍵原則的程度。本文的前一個版本 主要關注 WebSphere Application Server V6 和那個版本所需的加強步驟。在後續 WebSphere Application Server 版本中,顯著減少了加強步驟的數量,更重要的是,保留的大多數步驟變得不那麼關鍵了。那篇文章的修訂版 主要關注 WebSphere Application Server V6.1 以及針對 V7.0 的更新。因為 V6.1 與後續版本之間存在重大的差別,這些差別會使討論複雜化,所有我們覺得從內容中刪除 V6.1 的細節對更高版本的用戶會有所幫助。現在,WebSphere Application Server 8.0 和 8.5 版已減少了必要的加強步驟,而增加的一些新功能會更改(或支持額外的)加強需求。因此,是時候用最新的信息來更新本文了。
本文首先簡單討論安全性為什麼如此重要以及加強系統的困難,然後討論如何加強 WebSphere Application Server 環境來解決各種安全性漏洞。因為本文主要討論加強,所以一些信息是概括性的,沒有進行詳細分析。我們儘可能提供相關詳細信息的適當參考資料,讓您能夠進一步研究相關的子主題。
儘管本文中的信息基於 IBM WebSphere Application Server V8.5 和 V8.0,但是討論的大多數問題同樣適用於 V7.0,但在某些情況下,WebSphere Application Server V8.0 對默認安全性設置進行了更改。對於某個版本特有的問題,我們會專門指出這些地方。隨着時間的推移,我們對主要的 WebSphere Application Server 版本進行了產品更改,如果您使用的是 WebSphere Application Server V6 或更低版本,一定要參考 歸檔的文章,如果您使用的是 WebSphere Application Server V6.1,請參考 以前的文章。
配置文件備註
如果熟悉 V8.5 之前的 WebSphere Application Server,您就會知道必須要創建一個或多個配置文件。該配置文件可能是一個 Application Server(或 Base)配置文件、一個 Deployment Manager 配置文件等。在本文的剩餘部分中,這些配置文件將稱為 “完整” 配置文件。進行這樣的區分是為了將這些配置文件與 V8.5 中新增的配置文件(Liberty 配置文件)進行對比。本文還提供了特定於新的 Liberty 配置文件的一些建議。
為什麼需要安全性?
令人欣慰的是,大多數讀者都能夠認識到安全性是企業系統的一個關鍵方面。儘管如此,為了介紹一些考慮安全性的常用方法,我們仍將簡要介紹一下安全性。
安全性的基本目的是 “阻止不懷好意的人進入您的系統“。更準確地說,安全性是一個過程,它應用多種技術來防止未經授權的用戶(通常稱為入侵者)對內容進行未經授權的訪問。
有許多類型的入侵者:外國間諜機構、競爭對手、黑客,甚至是您自己的僱員。每個入侵者都有不同的動機、不同的技能和知識、不同的訪問入口以及不同的需求級別。例如:
僱員可能對公司有攻擊動機。僱員具有非常高的內部訪問級別和系統知識水平,但他們的資源和黑客技能可能很有限。
外部黑客也許是安全性攻擊方面的專家,但是他們對您可能沒有攻擊動機。
外國間諜機構可能對攻擊您很感興趣(這取決於您的業務)並擁有極其豐富的資源。
入侵者可能出於兩個原因入侵您的系統:為了獲取他們本不該擁有的信息,或者為了以某種方式改變系統的正常行為。在後一種情況中,通過改變系統行為,他們可以嘗試執行對其有利的事務,或者只是為了用某種有意思的方式導致系統崩潰,從而造成對您的組織的損害。
關鍵在於,有很多不同類型的入侵者、很多不同的入侵動機以及(我們後面將會看的)許多不同的攻擊類型。在規劃安全性時,必須認識到這些。
同時關注內部和外部威脅
不應該僅將安全措施視為阻擋 “外人” 的大門。這是一種過於簡單的觀點。當前,許多組織將他們的安全措施完全集中在針對組織以外的人群,他們錯誤地認為只有外人才是危險的。實際上並非如此。對於大型公司,往往有數千人能夠訪問內部網絡(其中許多人並不是僱員)。這些人都可能成為入侵者,而且由於他們在內部,所以他們訪問網絡會更方便。常常只需把筆記本電腦插上網線,就能夠訪問公司網絡。一些研究表明,有將近一半的入侵是 由組織內部的僱員或者承包人(或涉及他們的人)造成的。
就算您相信網絡中的每個人都是值得信任的,您能夠相信他們永遠不會犯錯嗎?考慮到通過電子郵件傳播的病毒如此猖獗,而且基於 JavaScript™ 的攻擊程序和其他程序很容易通過插入計算機的優盤和 CD 進入公司網絡,從內部發起攻擊,所以假設整個內部網絡都是可信任的是一種魯莽之舉 —— 不能這樣做。
安全措施應該努力保護系統不被所有的潛在入侵者攻擊,這就是本文為什麼如此之長的原因。安全性不僅僅是在網絡邊界上保護系統不受 “外部” 攻擊的防火牆。它是一組旨在儘可能地加強系統安全的複雜操作和過程。
限制和現實狀況
應該認識到沒有完全安全的系統,這一點很重要。您的目標是在業務的約束下儘可能地保護系統。在考慮安全性時,理想情況下應該:
1. 分析攻擊的各個方面。
2. 考慮每種攻擊的風險。
3. 確定攻擊成功而導致安全性被破壞的可能性。
4. 評估為防止每種攻擊所付出的代價。
在估計安全性遭到破壞而造成的損失時,不要忘記安全性被破壞會導致系統用戶對系統失去信心。因此,“安全性被破壞的代價” 可能包括非常高昂的間接代價(比如,失去投資者的信任)。
一些黑客入侵系統只是為了好玩,因此,如果創建了具有合理安全程度的環境,入侵者就會轉向更容易的目標。
一旦完成上面列出的步驟,就可以對風險與成本進行適當的權衡。從本質上說,目標就是要讓入侵者為入侵系統而付出的代價超過他們可以獲得的利益,同時確保業務能夠承受運行安全系統所付出的代價(參見邊欄)。
歸根結底,需要什麼安全級別是一個業務決策,而不是技術決策。然而,作為技術人員,我們必須幫助所有各方理解安全性的價值和重要性。因此,除了保護內部應用程序免受攻擊外,本文中建議的大多數安全性加強步驟的成本都相當低。大多數組織都應該都有能力實現它們。本文沒有介紹比較複雜和昂貴的安全性方法 —— 強身份驗證、審計和入侵檢測等,它們超出了 WebSphere Application Server 產品功能的範圍。
安全性是一個很大的主題,本文不可能完全覆蓋安全性的所有方面。本文不打算介紹安全性,或者說不是關於如何保護系統的教程。而是提供了涉及 WebSphere Application Server 安全性時需要考慮的核心技術問題的概述或檢查表。本文中的信息應該與創建安全企業的更大型工作結合起來。
社會工程
由於這是一篇技術性文章,因此將重點討論保護系統的技術解決方案,具體地說,主要集中於安全性難題的 WebSphere Application Server 部分。儘管如此,您應該意識到,使用社會工程技術來危害系統往往更簡單。也就是說,通過欺騙組織中的工作人員,攻擊者可以獲取權限,以不當地手段訪問系統和信息。從社會工程攻擊技術可以得出的一個結論是:通過使用社會工程,攻擊者可能來自您的網絡內部。這再次強調了前面提到的觀點:僅僅防禦來自網絡外部的攻擊者是遠遠不夠的。因此,這裡的討論集中於多個級別的安全性。每個級別防範不同的攻擊類型,並提供對攻擊者更有效的屏障。
總的系統觀點:細節問題
在詳細研究具體建議之前,我們先花一些時間來概述創建安全系統的基礎技術。基本觀點是着眼於每個系統邊界或共享點,檢查哪些參與者訪問了這些邊界或共享的組件。也就是說,假設存在這些邊界(假設子系統內部比較可信),那麼入侵者如何突破這些邊界呢?或者,假定某些東西是共享的,那麼入侵者是否可以採用不正當手段共享某些東西呢?
大多數邊界是很明顯的:網絡連接、進程與進程的通信、文件系統、操作系統接口等等,但是有些邊界不容易辨別。例如,如果一個應用程序使用了 WebSphere Application Server 中的 J2C 資源,那麼必須考慮另一個應用程序試圖訪問這些資源的可能性。這是因為第一個應用程序和 WebSphere Application Server 之間以及第二個應用程序和 WebSphere Application Server 之間都存在系統邊界。可能這兩個應用程序都可以訪問這個資源(實際上它們確實可以)。這可能是不合理的共享。
在 WebSphere Application Server 環境中,操作系統對 API 的保護的價值比較有限,因為它們是基於進程標識符的,由於應用服務器同時接受數千用戶發出的請求,所以這是一個非常粗粒度的概念。
要防止各種形式的攻擊,可以應用許多眾所周知的技術。對於較低層的基於網絡的攻擊,可以應用加密和網絡過濾。這樣就可以拒絕入侵者查看或訪問他們不應該看到的內容。還可以依賴操作系統提供的機制來保護操作系統資源不被濫用。例如,不希望普通用戶級代碼能夠訪問系統總線和直接讀取內部通信。還可以利用大多數現代操作系統,對系統 API 進行可靠地保護(參見邊欄)。在較高層面上,應該嚴格應用身份驗證和授權。每個 API、每個方法和每個資源都可能需要某種形式的授權。也就是說,必須根據需求嚴格地限制對這些東西的訪問。當然,如果沒有可靠的身份驗證,授權也就失去了它的價值。身份驗證所做的事情就是可靠地判斷調用者的身份。這裡增加了可靠 這個詞,這是因為容易被偽造的身份驗證是沒有價值的。
如果無法進行適當的身份驗證和授權,那麼只能採用巧妙的設計和過程來防止潛在的問題。我們就用這種方式來保護 J2C 資源。由於 WebSphere Application Server 沒有對訪問 J2C 資源提供授權機制,我們只好應用其他技術來限制(基於配置)應用程序以不正當的方式訪問 J2C 資源的能力。
可以想像到,檢查所有的系統邊界和共享組件這一任務非常困難。此外,保護系統實際上需要充分考慮它的複雜性。關於安全性最困難的事情可能就是創建一個依靠抽象工作的安全系統。也就是說,良好抽象的原則之一就是,對更高層的組件隱藏所關注的問題。這正是人們所需要的一種非常好的做法。遺憾的是,入侵者並不友善。他們並不在乎抽象或者良好的設計。他們的目標是想盡辦法入侵系統,所以他們會在您的設計中尋找漏洞。因此,為了驗證系統的安全性,必須在每個抽象級別上考慮安全性:從最高的架構層到最低的詳細實現層。儘管有許多應用程序掃描工具可以幫助檢查代碼(比如 IBM Rational® AppScan®),但是即使使用掃描工具,仍然需要對所有代碼和設計決策進行手工檢查,以防止應用程序受到攻擊。需要對所有的內容進行嚴格的檢查。
最小的錯誤也可能破壞整個系統的完整性。使用緩衝區溢出技術來控制基於 C/C++ 的系統就是這方面的最好例證。本質上,入侵者會傳遞一個大於現有緩衝區的字符串。因此,多出的信息會覆蓋正在運行的程序的一部分,導致運行時執行本不應該執行的指令。請注意,通過這種方法,入侵者可以讓程序做幾乎任何事情。作為安全架構師,要想識別這種攻擊,就必須深入理解 C/C++ 運行時如何管理內存並執行在運行的程序。即使您了解到緩衝區溢出問題的存在,仍然必須檢查每一行代碼,以發現此漏洞。目前,我們已經了解了這種攻擊,但是它仍然能夠獲得成功,這是因為個別程序員制定了非常小的錯誤決策,該決策會危及整個系統的安全。幸運的是,這種攻擊在 Java™ 中不奏效,但是其他小錯誤仍然可能導致系統受到威脅。
要對安全性進行認真的考慮;這是很難的。
安全性加強概述
J2EE 規範和 WebSphere Application Server 提供了一種用於實現安全系統的強大的基礎架構。遺憾的是,許多人沒有意識到創建基於 WebSphere Application Server 的安全系統的各種相關問題。這些信息有許多自由度和許多不同的來源,所以一些用戶往往會忽視安全性問題,部署的系統不夠安全。為了避免這種情況,本節對最關鍵的問題進行了總結。
安全性加強指的是通過配置 WebSphere Application Server、開發應用程序和配置其他各種相關組件,儘可能地提高安全性——實際上是防止、阻礙或減輕各種形式的攻擊。要使安全性得到有效加強,了解攻擊的形式非常重要。攻擊應用服務器有四種基本方法:
基於網絡的攻擊:這些攻擊依賴於對網絡數據包的低層訪問,試圖通過修改通信流或者發現這些數據包中的信息來危害系統。
基於計算機的攻擊:在這種情況下,入侵者已經可以訪問運行 WebSphere Application Server 的計算機。對於這種情況,我們的目標是限制入侵者損害配置或者看到不應該看到的內容的能力。
基於應用程序的外部攻擊:在這種情況下,入侵者使用應用級的協議(HTTP、IIOP、JMX、Web 服務等)來訪問應用程序,可能通過 Web 瀏覽器或者其他類型的客戶端來實現該訪問。入侵者使用這種訪問方式來試圖超越應用程序的正常使用方法,做一些不正當的事情。關鍵是入侵者會使用定義良好的 API 和協議來進行攻擊。入侵者並不一定在公司外部,而是從應用程序自身的外部執行代碼。這些攻擊類型是最危險的,因為它們需要的技能往往很少,並且只要有可用的 IP 連接,就可以從很遠的地方實施攻擊。
基於應用程序的內部攻擊(也稱為應用程序隔離):在這種情況下,我們關心的是惡意應用程序的危害性。在這種情況下,多個應用程序共享相同的 WebSphere Application Server 基礎架構,我們不能完全信任每一個應用程序。
為了幫助您將保護技術與這些攻擊類別聯繫起來,每種技術使用以下圖形代表這些漏洞:

N:基於網絡的攻擊
M:基於計算機的攻擊
E:基於應用程序的外部攻擊
I:基於應用程序的內部攻擊
以下文章點擊率最高
Loading…