Web應(yīng)用安全保障“六要素”
Web應(yīng)用程序比客戶端應(yīng)用程序更難保證安全性,因?yàn)樗幌駑eb服務(wù)器有四五個主要供應(yīng)商的web服務(wù)器,它有大量的web應(yīng)用程序和自定義腳本數(shù)量,而且每個都可能包含潛在的漏洞。對于開發(fā)人員來說,確保應(yīng)用程序安全的最佳方法是使用建議的安全措施和可以掃描代碼的軟件,并提醒用戶潛在的安全問題。管理員需要定期掃描其Web站點(diǎn)中的漏洞。
應(yīng)用程序的安全性主要是由應(yīng)用程序的開發(fā)者控制的。管理員可以緊固一些應(yīng)用程序的安全性,但是如果應(yīng)用程序本身不安全,便不可能確保其安全。
編寫安全的應(yīng)用程序是困難的,因?yàn)閼?yīng)用程序的各個方面,如圖形用戶界面,網(wǎng)絡(luò)連接,操作系統(tǒng)交互,和敏感數(shù)據(jù)的管理,需要大量的安全知識以確保其安全。大多數(shù)程序員不具備這方面的知識或不考慮用應(yīng)用程序安全的重要性來衡量額外工作。
但從管理者的角度來看,有一些安全問題要謹(jǐn)記在心:
◆運(yùn)行權(quán)限權(quán)限
◆應(yīng)用程序管理
◆應(yīng)用程序更新
◆與操作系統(tǒng)集成的安全性
◆遠(yuǎn)程管理安全
◆會話安全
要素一:運(yùn)行權(quán)限管理
管理員應(yīng)該盡可能設(shè)置應(yīng)用程序的低權(quán)限性。這樣做可以防止多種電腦威脅:
◆如果應(yīng)用程序被攻擊者利用,他們將擁有應(yīng)用程序的特權(quán)。如果該權(quán)限是足夠低的,攻擊者將不能進(jìn)一步的攻擊。
◆低權(quán)限保護(hù)計(jì)算機(jī)免受嵌入式木馬(在應(yīng)用程序中),因?yàn)樘幚砟抉R時擁有較少的權(quán)限。
◆當(dāng)應(yīng)用程序具有較低的權(quán)限,用戶將無法保存敏感據(jù)區(qū)域的數(shù)據(jù)(如操作系統(tǒng)領(lǐng)域),甚至不能進(jìn)入核心資源。
在開發(fā)應(yīng)用程序時,為了節(jié)省開發(fā)時間,程序員往往做出臆斷。其中的一些假設(shè),需要管理權(quán)限才能訪問。這雖然削減了編程時間,但它降低了管理員保護(hù)系統(tǒng)安全的能力。當(dāng)普通用戶被授予管理權(quán)限,可以刪除或訪問周圍的配置,威脅安全。
當(dāng)安裝程序時,因?yàn)榘惭b程序可能需要訪問敏感的操作系統(tǒng)目錄,它通常需要有更高的權(quán)限,甚至管理權(quán)限。最好是先在一個相似配置的測試計(jì)算機(jī)上安裝應(yīng)用程序。這樣,安裝在正式計(jì)算機(jī)之前,你可以看到是否有問題。如果應(yīng)用程序并無明顯原因需要管理員權(quán)限,或者你不信任該應(yīng)用程序,可以在沙盒中運(yùn)行它。沙盒是一個安全應(yīng)用程序,它可以攔截正在運(yùn)行的應(yīng)用程序的系統(tǒng)調(diào)用,確保應(yīng)用程序?qū)⒅荒茉L問管理員允許的資源。沙盒可以限制訪問注冊表,操作系統(tǒng)數(shù)據(jù)的目錄和網(wǎng)絡(luò)。將應(yīng)用程序與敏感OS區(qū)域以及其它用戶定義的敏感數(shù)據(jù)域隔離開來。#p#
要素二:應(yīng)用程序管理
大多數(shù)應(yīng)用程序提供了一些接口進(jìn)行管理(主要用于應(yīng)用程序配置),且每次施用方法會產(chǎn)生須解決的安全風(fēng)險(xiǎn),如這些:
◆INI/ conf文件
◆GUI
◆基于Web的控制
管理的一個應(yīng)用程序的最基本的方法是通過基于文本的文件來控制它。為了保護(hù)這樣的應(yīng)用程序,管理員需要限制訪問權(quán)限。如果文件存儲在本地,可以通過內(nèi)置的OS權(quán)限管理系統(tǒng);如果文件存儲在其他地方,可以通過使用身份驗(yàn)證登錄到遠(yuǎn)程存儲位置(確保認(rèn)證方法受保護(hù))。
大多數(shù)應(yīng)用程序有一個圖形用戶界面用于管理它們。除了在提供GUI級別的安全性,管理員應(yīng)該對圖形用戶界面和應(yīng)用程序之間的通信提供安全保障。
當(dāng)GUI和應(yīng)用程序的物理位置在同一臺計(jì)算機(jī)時,管理員應(yīng)該給GUI盡可能少的權(quán)限(如有必要,應(yīng)用程序可以具有較高的權(quán)限)。#p#
要素三:應(yīng)用程序更新
使用最新的安全補(bǔ)丁使應(yīng)用程序保持更新是你可以采取的最重要的安全措施之一。本節(jié)討論一些輕松地更新應(yīng)用程序的機(jī)制:
◆手動更新
◆自動更新
◆半自動更新
◆物理更新
手動更新
手動更新需要管理員手工下載一個文件(或使用所提供的媒體,如CD)和相關(guān)的系統(tǒng)上安裝更新。這個選項(xiàng)是最不可取的,因?yàn)樗仁构芾碚呋~外的時間來修補(bǔ)一個工作系統(tǒng)。手動更新是非常常見的開源項(xiàng)目(比如Apache)。
自動更新
當(dāng)應(yīng)用程序使用自動更新,它會定期在網(wǎng)站上進(jìn)行檢測,如果存在的話,它會下載并在系統(tǒng)上安裝它。用這種方法有兩個問題:
帶寬使用:考慮上千臺計(jì)算機(jī)組織運(yùn)行相同的每天自動更新的防病毒軟件。每一天,同一個相同更新的副本被下載到成千上萬運(yùn)行此程序的計(jì)算機(jī)。
安裝有問題的補(bǔ)丁:有時補(bǔ)丁(廠商通過發(fā)布更新軟件修復(fù)安全問題和漏洞)會導(dǎo)致弊大于利,因?yàn)檠a(bǔ)丁急于解決關(guān)鍵問題。開發(fā)商不能預(yù)見所有可能的環(huán)境,補(bǔ)丁可以停止應(yīng)用程序或?qū)е鲁绦蛭蓙y。這就是為什么測試是必要的。
半自動更新
有些應(yīng)用程序允許管理員決定何時下載更新。更新下載之后,應(yīng)用程序?qū)⒏碌南螺d的分配到所有連接的客戶端。
物理更新
使用實(shí)際收到的更新來更新系統(tǒng)。一個有目的的攻擊者可以通過偽造一個看起來就像原版的但包含了木馬或其他惡意軟件的更新,創(chuàng)建一個“假的”補(bǔ)丁。為了反抗此類攻擊,管理員可以在廠商的網(wǎng)站檢查更新的大小和CRC32簽名,并與實(shí)際副本相比較。#p#
要素四:與操作系統(tǒng)安全集成
當(dāng)一個應(yīng)用程序集成了操作系統(tǒng)的安全性,它可以使用的操作系統(tǒng)的安全信息,甚至在需要的時候修改操作系統(tǒng)。這有時是一個應(yīng)用程序的需求,或是它可能會提供一個可選功能。操作系統(tǒng)安全集成允許應(yīng)用程序無論是在實(shí)時操作系統(tǒng)的進(jìn)口或訪問用戶及其權(quán)限的列表。想象一下,一個組織有幾千名員工的需要訪問中央企業(yè)資源規(guī)劃(ERP )應(yīng)用程序。管理員可以手動輸入上千個用戶進(jìn)入ERP的管理控制臺,以及他們的權(quán)限,但這種方法耗時且需要雙重管理。如果組織有一個以上的中央系統(tǒng),需要用戶手動錄入,這種情況會更糟。
安全信息人工錄入
一個應(yīng)用程序可以允許管理員導(dǎo)入所有的用戶信息,并用它來管理應(yīng)用程序認(rèn)證。雖然這種方法可能會加快應(yīng)用部署,之后還會有雙重管理。例如,當(dāng)一個雇員離開了組織,管理員既要從組織用戶列表中刪除用戶,也要從應(yīng)用程序列表中刪除。
另一個需要考慮的問題是應(yīng)用程序如何存儲用戶信息。它受保護(hù)的嗎?加密?明文存儲?如果你不信任你的應(yīng)用程序的數(shù)據(jù)存儲安全,可以加密整個硬盤。
安全信息的自動集成
安全信息的自動集成允許應(yīng)用程序?qū)崟r查詢操作系統(tǒng)的用戶憑證。這樣,無論是最初的部署時間和雙重管理問題都解決了。不過,在這種情況下有兩個問題:
如果OS的用戶數(shù)據(jù)庫被刪除或丟失,應(yīng)用程序不能訪問。
應(yīng)用程序和操作系統(tǒng)之間的網(wǎng)絡(luò)連接的用戶數(shù)據(jù)庫必須被保護(hù)以防止攻擊者竊聽或使用假的服務(wù)器獲得信息用戶的憑據(jù)。
使用操作系統(tǒng)的安全授權(quán)
應(yīng)用程序可以使用操作系統(tǒng)安全授權(quán)。在這種情況下,應(yīng)用程序設(shè)置一個特殊的目錄或資源(如共享內(nèi)存,一個信道或命名管道)只能由用戶誰擁有某些特權(quán)訪問和操作系統(tǒng)的保護(hù),訪問該目錄或資源。
保持操作系統(tǒng)安全集成可選而不是必要
有時有必要部署一個小型應(yīng)用程序,該應(yīng)用程序?qū)⑹褂弥挥幸粋€或兩個操作系統(tǒng)的安全選項(xiàng)。如果應(yīng)用程序迫使我們使用與操作系統(tǒng)安全集成的選項(xiàng)而不顧具體的應(yīng)用場景的話,那么它結(jié)果只會降低安全(如果它使用一個不安全的方法)以及降低部署速度(因?yàn)槲覀冎挥幸粋€或兩個用戶)。此外,管理員可能不愿使應(yīng)用程序能夠修改用戶目錄(和潛在的損害)。#p#
要素五:遠(yuǎn)程管理安全
今天的大多數(shù)應(yīng)用程序提供遠(yuǎn)程管理作為其功能的一部分, 關(guān)鍵它是安全的。如果攻擊者設(shè)法滲透到管理設(shè)施,其他安全措施可以被破壞或繞過。各種原因證實(shí)需要遠(yuǎn)程管理:
◆轉(zhuǎn)移服務(wù)器:管理員需要一個接口來管理所有的轉(zhuǎn)移Web服務(wù)器(那些屬于組織系統(tǒng)的電腦,實(shí)際位于ISP)。
◆外包服務(wù):管理安全產(chǎn)品需要一些組織不具備的知識,所以他們經(jīng)常將他們的整個安全管理外包給專門從事該領(lǐng)域的公司。為了節(jié)約成本,該公司需要通過互聯(lián)網(wǎng)來管理所有的安全產(chǎn)品。
◆物理距離:管理員可能需要管理組織中大量的計(jì)算機(jī)。有些組織跨越幾棟建筑(或城市)進(jìn)入計(jì)算機(jī) ,是一個繁瑣而耗時的任務(wù)。此外,物理訪問可以被限制為實(shí)際的數(shù)據(jù)中心。
使用Web界面進(jìn)行遠(yuǎn)程管理
使用Web界面來遠(yuǎn)程管理應(yīng)用程序或計(jì)算機(jī)有許多的優(yōu)點(diǎn),但它也有成本,以及一些優(yōu)缺點(diǎn)。以下為遠(yuǎn)程Web管理的一些優(yōu)點(diǎn):
◆快速的開發(fā)時間:在開發(fā),調(diào)試和部署方面,開發(fā)一個web界面比開發(fā)一個GUI客戶端快。
◆操作系統(tǒng)支持:可以通過瀏覽器從所有主要的操作系統(tǒng)訪問Web接口(除非開發(fā)人員使用的特定操作系統(tǒng)解決方案,如ActiveX ,這只能在Windows上運(yùn)行)。
◆可訪問性:一個Web界面可以從Internet上的任何位置進(jìn)行訪問。即使管理員不在辦公室也可以進(jìn)行管理。
◆用戶的學(xué)習(xí)曲線:管理員知道如何使用瀏覽器,因此管理員學(xué)習(xí)曲線會更短。
◆雖然遠(yuǎn)程Web管理有一些缺點(diǎn),但對于大多數(shù)管理員他們都微不足道。但還是應(yīng)當(dāng)注意:
◆可訪問性:因?yàn)閃eb管理可以從任何地方訪問,因此黑客想要攻擊也是可以的。
◆瀏覽器控制:由于瀏覽器控制接口,攻擊者不需要設(shè)計(jì)特殊的產(chǎn)品來控制GUI (可能很難逾越的) 。
◆支持:基于Web的應(yīng)用程序通常更易于支持和維護(hù)。
驗(yàn)證基于Web的遠(yuǎn)程管理
當(dāng)連接到遠(yuǎn)程web管理界面,第一關(guān)要明確的是認(rèn)證過程。如果驗(yàn)證較弱,攻擊者可以繞過它控制應(yīng)用程序或計(jì)算機(jī)。
HTTP身份驗(yàn)證方法
深入研究遠(yuǎn)程管理的問題,通過現(xiàn)有可用來驗(yàn)證HTTP連接目前的方法是非常重要的:
◆基本身份驗(yàn)證:當(dāng)一個頁面需要基本身份驗(yàn)證,它回復(fù)到瀏覽器的錯誤代碼為401 (未授權(quán)) ,并指定基本身份驗(yàn)證是必需的。瀏覽器使用BASE64的編碼用戶名和密碼編碼,并將其發(fā)送回服務(wù)器。如果登錄成功,服務(wù)器返回代碼200 ,這意味著一切順利 。如果登錄失敗,則回復(fù)和以前相同的401錯誤代碼。
◆簡要身份驗(yàn)證:簡要身份驗(yàn)證通過由Web服務(wù)器提供的一個挑戰(zhàn),用MD5分解用戶名和密碼。
◆安全套接層(SSL ): SSL可以被配置為要求提供客戶端證書(可選),當(dāng)他們有一個已知的證書的時候驗(yàn)證用戶身份。
◆加密的基本身份驗(yàn)證:基本身份驗(yàn)證可以與常規(guī)的SSL(安全套接層)結(jié)合起來使用。由此對包括BASE64編碼(這是一種非常薄弱的編碼,很容易被解碼因此不是加密)的用戶名及密碼在內(nèi)的整個會話進(jìn)行加密。
◆驗(yàn)證碼:這是一個比較流行的方法用來驗(yàn)證人的另一端是一個人類。它通過展示一個被扭曲的人體圖像的字母和數(shù)字,要求用戶正確輸入以達(dá)到驗(yàn)證目的。
保護(hù)網(wǎng)絡(luò)層面的遠(yuǎn)程管理
安全登錄到網(wǎng)絡(luò)管理的服務(wù)器的最佳解決方案是要么使用常規(guī)SSL或者是加密的基本身份驗(yàn)證,其中常規(guī)SSL可以檢查客戶端證書(SSL同時還可以針對第三方證書權(quán)威機(jī)構(gòu)來驗(yàn)證這個服務(wù)器是否就是你想要連接的那一個)。另一個選擇是使用安全的自定義登陸(需要與服務(wù)器腳本一起實(shí)施),但這可能包含網(wǎng)絡(luò)攻擊。
自定義遠(yuǎn)程管理
網(wǎng)管會用GUI(圖形用戶界面)或者應(yīng)用程序控制臺來對一些程序進(jìn)程遠(yuǎn)程控制,這種類型的程序包括SQL(數(shù)據(jù)庫)服務(wù)器、交換服務(wù)器、防火墻和入侵檢測系統(tǒng)(IDS)等等。一個應(yīng)用也可能用探頭控制客戶端,一個IDS就可以做到。專有網(wǎng)絡(luò)連接有一些安全問題需要解決(網(wǎng)絡(luò)連接就是其中一個)。與網(wǎng)絡(luò)遠(yuǎn)程管理一樣,自定義遠(yuǎn)程管理也是既有優(yōu)點(diǎn)也有缺點(diǎn)。
自定義遠(yuǎn)程管理的優(yōu)點(diǎn):
◆復(fù)雜的圖形:有時控制臺需要呈現(xiàn)的復(fù)雜圖形在普通的網(wǎng)絡(luò)管理界面中無法顯示
◆身份驗(yàn)證和加密:應(yīng)用程序可以使用一個更強(qiáng)大驗(yàn)證方法或更強(qiáng)的加密方法來確保會話的安全(比如使用SSL不支持的更大的密鑰長度)
◆可用性:這種應(yīng)用只能被專門的GUI來控制,攻擊者必須要將這種專門的GUI安裝在自己的電腦上(而進(jìn)入和安裝這種GUI都不一定能實(shí)現(xiàn))
◆雖然自定義的遠(yuǎn)程管理也有一些缺點(diǎn),但他們對大多數(shù)管理員來說通常不是特別重要。然而,它們也值得注意:
◆特定的操作系統(tǒng):一些供應(yīng)商要求用特定的OS來運(yùn)行控制GUI,如果這種特定的OS沒有被安裝,管理者必須要自己安裝(如果操作系統(tǒng)不是免費(fèi),管理者還需要花費(fèi)額外的成本)。
◆不可用性:只有裝有GUI的電腦才可以管理該應(yīng)用,如果管理員不在辦公室,那么很有可能沒有辦法在其他電腦上管理該應(yīng)用。
要素六:會話安全
客戶端(GUI或者控制臺)與應(yīng)用程序之間的會話安全十分重要,否則,攻擊者可能能夠獲取信息,竊取憑據(jù),甚至進(jìn)行重放攻擊。如果會話被稱為是不安全的,管理員可以很容易地通過VPN或安全隧道(SSH)將其傳遞到安全位置。
有些應(yīng)用程序使用操作系統(tǒng)的網(wǎng)絡(luò)服務(wù),如遠(yuǎn)程過程調(diào)用(RPC)或分布式組件對象模型(DCOM),它允許管理員添加數(shù)據(jù)的完整性,加密和身份驗(yàn)證。如果你不信任的操作系統(tǒng)安全的措施,你可以通過VPN連接來打通網(wǎng)絡(luò)連接的通道。
總的來說,就像Web應(yīng)用程序的連接,如果是應(yīng)用程序不支持的選項(xiàng),我們不能強(qiáng)迫其安全通信。解決的辦法是要么使用VPN或者通過一個安全會話(SSH)打通數(shù)據(jù)會話的通道。