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