監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉

保護(hù)XML Web服務(wù)免受黑客攻擊 [第一部分] [第二部分]

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

AMTeam.org

保護(hù)XML Web服務(wù)免受黑客攻擊 [第一部分] [第二部分]


Matt Powell

Microsoft Corporation

2001 年 9 月 5 日

簡(jiǎn)介

在與開發(fā)人員就 XML Web 服務(wù)的將來(lái)談話的過(guò)程中我們得知,他們最大的擔(dān)心之一就是害怕軟件中存在的弱點(diǎn)可能使服務(wù)受到不懷好意的用戶的攻擊。這可以說(shuō)既是一個(gè)壞消息,又是一個(gè)好消息。說(shuō)它是壞消息,是因?yàn)楣艨赡軐?dǎo)致服務(wù)的可用性受限制、私有數(shù)據(jù)泄露,更糟糕的情況是,使計(jì)算機(jī)的控制權(quán)落入這些不懷好意的用戶的手中。說(shuō)它是好消息,是因?yàn)槟梢垣@得一些真正的保護(hù),以減少這些攻擊所帶來(lái)的風(fēng)險(xiǎn)。我們將介紹已出現(xiàn)的攻擊類型,以及您如何保護(hù)自己在部署、設(shè)計(jì)和開發(fā)領(lǐng)域的心血。此主題的第一篇專欄文章將集中講述部署時(shí)應(yīng)考慮的問(wèn)題,下一篇專欄文章將講述在開發(fā) XML Web 服務(wù)時(shí)需注意的設(shè)計(jì)和開發(fā)問(wèn)題。

攻擊類型

要找出風(fēng)險(xiǎn)所在并了解如何避免,第一步應(yīng)了解服務(wù)可能遭受的攻擊類型。在了解了可能遇到的問(wèn)題種類后,就可以采取適當(dāng)?shù)拇胧﹣?lái)減小這些問(wèn)題所帶來(lái)的風(fēng)險(xiǎn)。

攻擊通??煞譃槿箢悾?/P>

欺騙

利用錯(cuò)誤

拒絕服務(wù)

欺騙

在要求身份驗(yàn)證的系統(tǒng)上,最常見的黑客攻擊之一是算出某個(gè)用戶的身份驗(yàn)證證書,以該用戶登錄,然后訪問(wèn)該用戶的信息。這已經(jīng)很糟糕了,但如果被泄露的證書屬于系統(tǒng)管理員或其他某個(gè)具有更高權(quán)限的用戶,則風(fēng)險(xiǎn)會(huì)更大。因?yàn)?,在這種情況下,攻擊可能不僅限于泄露單個(gè)用戶的數(shù)據(jù),而且有泄露所有用戶數(shù)據(jù)的可能。

黑客可能會(huì)使用多種方法來(lái)確定用戶的密碼。例如:嘗試對(duì)該用戶有意義的字,如該用戶的姓名、其寵物的名字或生日。更有恒心的黑客甚至?xí)L試字典中的每個(gè)字(字典攻擊)。獲取證書信息的其他方法包括:捕捉網(wǎng)絡(luò)數(shù)據(jù)包并讀取發(fā)送的數(shù)據(jù)中的信息;通過(guò) DNS 欺騙,插入一臺(tái)不懷好意的計(jì)算機(jī),作為客戶端和服務(wù)器之間的中介;假裝系統(tǒng)管理員,以排除故障為由,要求用戶給出其證書;或者,記錄與服務(wù)器的登錄握手,然后重復(fù)這一過(guò)程,嘗試通過(guò)身份驗(yàn)證。

可以通過(guò)采取諸如強(qiáng)制實(shí)現(xiàn)加強(qiáng)密碼等措施以及使用安全身份驗(yàn)證機(jī)制,來(lái)緩解由欺騙所帶來(lái)的大多數(shù)風(fēng)險(xiǎn)。

利用錯(cuò)誤

決定系統(tǒng)弱點(diǎn)的關(guān)鍵因素之一是運(yùn)行在該系統(tǒng)上的代碼的質(zhì)量。系統(tǒng)錯(cuò)誤不僅僅局限于使某個(gè)特定的線程出現(xiàn)異常。黑客可能利用這些弱點(diǎn)在系統(tǒng)上執(zhí)行他們自己的代碼,訪問(wèn)具有較高權(quán)限的資源,或者,只是利用可能潛在地引起系統(tǒng)速度減慢或變得不可用的資源漏洞(由錯(cuò)誤引起的)。這種攻擊中最著名的一個(gè)例子就是紅色代碼蠕蟲病毒,這種病毒利用 Index Server ISAPI 擴(kuò)展中的錯(cuò)誤,在受感染的系統(tǒng)上執(zhí)行它選擇的代碼,然后繼續(xù)尋找其他有弱點(diǎn)的計(jì)算機(jī)。

另外一種常見攻擊就是利用輸入數(shù)據(jù)的有效性假設(shè)方面的錯(cuò)誤。例如,XML Web Service 希望用戶名作為參數(shù)輸入的情況。如果您假設(shè)用戶名僅包含 ASCII 字符串,并因此將它直接放入您的 SQL 查詢,可能會(huì)使您的服務(wù)出現(xiàn)嚴(yán)重的弱點(diǎn)。例如,假設(shè)您的代碼中有一個(gè) SQL 查詢,如下所示:

sqlQuery = "SELECT * FROM Users WHERE (Username='" & UsernameInput & "')

如果 UsernameInput 參數(shù)包含的內(nèi)容恰好如下所示

Bob') or not (Username='0

那么您的服務(wù)可能會(huì)返回所有記錄,而不只是特定用戶的記錄。

拒絕服務(wù)

拒絕服務(wù)攻擊的目的不在于闖入一個(gè)站點(diǎn),或更改其數(shù)據(jù),而在于使站點(diǎn)無(wú)法服務(wù)于合法的請(qǐng)求。紅色代碼蠕蟲病毒不僅感染計(jì)算機(jī),并繼而尋找并感染其他計(jì)算機(jī),而且,還使得被感染的計(jì)算機(jī)向官方的白宮 Web 站點(diǎn)發(fā)送大量的數(shù)據(jù)包。因?yàn)閿?shù)千臺(tái)計(jì)算機(jī)被感染,所以發(fā)往白宮 Web 站點(diǎn)的請(qǐng)求的數(shù)目極高。因?yàn)榧t色代碼蠕蟲病毒會(huì)導(dǎo)致從大量計(jì)算機(jī)發(fā)出請(qǐng)求,所以被視作“分布式拒絕服務(wù)攻擊”。由于涉及到如此眾多的計(jì)算機(jī),因此這種攻擊極難限制。

拒絕服務(wù)請(qǐng)求可能有多種形式,因?yàn)榭梢酝ㄟ^(guò)多種級(jí)別發(fā)送偽請(qǐng)求,以攻擊您的系統(tǒng)。例如,您的站點(diǎn)可能允許用戶 PING 您的 IP 地址,從而使 ICMP 消息被發(fā)送到您的服務(wù)器,然后又被返回。這是一種排除連接故障的有效方法。但是,如果數(shù)百臺(tái)計(jì)算機(jī)同時(shí)向您的服務(wù)器發(fā)送數(shù)千個(gè)數(shù)據(jù)包,您會(huì)發(fā)現(xiàn)您的計(jì)算機(jī)忙于處理 PING 請(qǐng)求,而無(wú)法獲得 CPU 時(shí)間來(lái)處理其他正常的請(qǐng)求。

級(jí)別稍高的是 SYN 攻擊,這種攻擊需要編寫一個(gè)低級(jí)網(wǎng)絡(luò)程序,所發(fā)送的數(shù)據(jù)包看起來(lái)有如 TCP 連接握手中的第一個(gè)數(shù)據(jù)包(SYN 包)。這種攻擊比 PING 請(qǐng)求攻擊危害更大,因?yàn)閷?duì)于 PING 請(qǐng)求,您可以在必要時(shí)將其忽略,但對(duì)于 SYN 攻擊,只要有應(yīng)用程序在偵聽 TCP 端口(如 Web 服務(wù)器),則無(wú)論您何時(shí)收到看似有效的連接請(qǐng)求,都需要花費(fèi)資源。

最高級(jí)別的拒絕服務(wù)攻擊可以呈現(xiàn)一種向 XML Web Service 發(fā)送多個(gè)基本有效的 SOAP 請(qǐng)求的形式,這種請(qǐng)求將導(dǎo)致數(shù)據(jù)庫(kù)開始查找操作。數(shù)據(jù)庫(kù)查找可能需要花費(fèi)一段很長(zhǎng)的時(shí)間。因此,如果每秒鐘向服務(wù)器發(fā)送數(shù)千個(gè)這樣的請(qǐng)求,會(huì)使得接收請(qǐng)求的 Web 服務(wù)器和后端數(shù)據(jù)庫(kù)服務(wù)器變得非常忙。而且,這也會(huì)使您的服務(wù)無(wú)法及時(shí)處理其他請(qǐng)求。

如果您的計(jì)算機(jī)上有包含錯(cuò)誤的代碼,那么拒絕服務(wù)攻擊會(huì)更加容易。例如,如果投入使用的 Web Service 有這樣一個(gè)錯(cuò)誤:當(dāng)出現(xiàn)某個(gè)特定類型的錯(cuò)誤時(shí),會(huì)顯示一個(gè)消息框,黑客可以利用這一缺陷向您的計(jì)算機(jī)發(fā)送數(shù)目相對(duì)較少的請(qǐng)求,使該消息框顯示出來(lái)。這會(huì)鎖定所有的線程處理請(qǐng)求,因此有效地阻止了其他人訪問(wèn)您的服務(wù)。

部署問(wèn)題

到目前為止,我們已介紹了幾種不同的攻擊類型,那么我們能對(duì)這些可惡的攻擊采取什么措施呢?有一個(gè)好消息可以告訴您,您可以采取很多種方法來(lái)保護(hù)自己的服務(wù),而且,這些保護(hù)大都十分簡(jiǎn)單。讓我們首先來(lái)看一看只需控制 Web 服務(wù)器和后端服務(wù)器的配置方法就可以實(shí)現(xiàn)的保護(hù)類型。

應(yīng)采取許多重要的保護(hù)措施確保您的 Web 服務(wù)器不會(huì)受到攻擊的破壞,包括一些眾所周知的措施,如確保具有最新的安全性更新。下面列出了自我保護(hù)措施中最重要的步驟。其中的許多步驟并不特別針對(duì)托管 Web 服務(wù),而是適用于所有的 Web 服務(wù)器托管內(nèi)容。

安裝安全性更新

首先,確保您具有最新的更新,以避免受到紅色代碼蠕蟲病毒的攻擊??梢栽?Installing the patch that stops the Code Red worm(英文)中找到有關(guān)安裝更新的說(shuō)明和下載修補(bǔ)程序的鏈接。

對(duì)紅色代碼蠕蟲病毒的修復(fù)以及其他修復(fù)最終會(huì)包含在 Microsoft? Windows? 2000 的下一個(gè)服務(wù)包中,并已在 Microsoft? Windows? XP 中得到解決。

當(dāng)然,更大的問(wèn)題是如何避免其他潛在的弱點(diǎn),并保護(hù)自己免受將來(lái)可能出現(xiàn)的問(wèn)題的侵害。有關(guān) Microsoft 產(chǎn)品安全問(wèn)題的信息,可以訂閱“Microsoft 安全性通知列表”。對(duì)于出現(xiàn)的任何新問(wèn)題,都將以電子郵件的形式通知訂閱者。有關(guān)如何訂閱的說(shuō)明,請(qǐng)查看 Product Security Notification(英文)網(wǎng)頁(yè)。

限制 Web 服務(wù)器的訪問(wèn)者

如果您對(duì)攻擊的問(wèn)題很關(guān)注,尤其是如果您的 XML Web 服務(wù)上包含私有信息,那么您應(yīng)限定僅合法的用戶可以訪問(wèn)您的站點(diǎn)。這可以用多種方法來(lái)實(shí)現(xiàn),但下面講述的幾種方法可以防止黑客訪問(wèn)您的 XML Web 服務(wù)。

通過(guò)使用 HTTP 身份驗(yàn)證來(lái)對(duì)用戶進(jìn)行驗(yàn)證,然后限定他們可以訪問(wèn)哪些資源。身份驗(yàn)證的配置方法:用鼠標(biāo)右鍵單擊 Internet 服務(wù)管理器中的 Web 站點(diǎn)、虛擬目錄或單個(gè)文件;從彈出菜單中選擇“屬性”;進(jìn)入“目錄安全性”選項(xiàng)卡,單擊“匿名訪問(wèn)和身份驗(yàn)證控制”下面的“編輯”按鈕。
限定可以訪問(wèn)您的 Web 服務(wù)器的 IP 地址。如果有一些可以使用您站點(diǎn)的合法用戶,那么可以只允許這些用戶的特定 IP 地址訪問(wèn)您的 Web 站點(diǎn)。您還可以限定某些 IP 地址范圍具有訪問(wèn)權(quán)限,或拒絕某個(gè) IP 地址或某個(gè) IP 地址范圍的訪問(wèn)權(quán)限。甚至可以根據(jù)域名進(jìn)行限定,但在與您計(jì)算機(jī)連接的 IP 地址上,可能需要花費(fèi)很長(zhǎng)的時(shí)間來(lái)進(jìn)行域名查找。修改 IP 地址限制的方法:轉(zhuǎn)至步驟 1 中提到的“目錄安全性”選項(xiàng)卡,單擊“IP 地址及域名限制”下面的“編輯”按鈕。圖 1 顯示了“IP 地址及域名限制”對(duì)話框,其中將訪問(wèn)權(quán)限限制為三個(gè)特定的 IP 地址。

 


圖 1:設(shè)置 Web 站點(diǎn)的 IP 地址限制

要求與客戶端證書具有安全套接字層 (SSL) 連接。這可能是對(duì)訪問(wèn)您站點(diǎn)的用戶進(jìn)行身份驗(yàn)證的最安全的方法。SSL 限制也是在“目錄安全性”選項(xiàng)卡的“安全通信”下進(jìn)行設(shè)置。

將路由器配置為僅允許符合要求的訪問(wèn)

路由器就是您的防火墻。它可以阻斷發(fā)送到您計(jì)算機(jī)的大量不合法的請(qǐng)求。流行的路由器大多都可以將訪問(wèn)限制在特定的 TCP 端口上,因此您可以只允許從端口 80(默認(rèn)的 HTTP 端口)傳入請(qǐng)求。這可以防止防火墻外的任何人試圖連接到您計(jì)算機(jī)上的其他任何服務(wù)。打開其他服務(wù)的端口時(shí)請(qǐng)務(wù)必小心。您可以很方便地從終端服務(wù)客戶端打開一個(gè)端口,連接到您的 Web 服務(wù)器,以便進(jìn)行遠(yuǎn)程管理。但隨后,任何人都可以通過(guò)終端服務(wù)器連接嘗試連接到您的計(jì)算機(jī)。即便黑客不知道有效的用戶名和密碼,也仍然可以通過(guò)同時(shí)建立只顯示登錄屏幕的多個(gè)會(huì)話,來(lái)用完您計(jì)算機(jī)上的大量資源。

在篩選掉可能用完您計(jì)算機(jī)資源的非法數(shù)據(jù)包時(shí),也需要用到路由器這一重要工具。對(duì)于明顯存在問(wèn)題的數(shù)據(jù)包,只需將它丟棄即可(大多數(shù)路由器都會(huì)自動(dòng)執(zhí)行這一功能)。但是,目前已有許多路由器具有檢測(cè)諸如 TCP SYN 包的能力,這些數(shù)據(jù)包慌稱它們是從某個(gè) IP 地址發(fā)送過(guò)來(lái)的,但實(shí)際并非如此。通過(guò)啟用這種保護(hù)措施,可以避免前面在拒絕服務(wù)攻擊中提到的那些 SYN 攻擊。

而且,請(qǐng)記住,防火墻限制只會(huì)影響到防火墻處的流量。這似乎是顯而易見的事情,但假定您從 Internet 服務(wù)提供商 (ISP) 處購(gòu)買了一根 T1 線,并在您所在的 T1 線的那一端放置了一個(gè)具有安全配置的路由器。如果 ISP 無(wú)法在他們的路由器上啟用非法 SYN 請(qǐng)求檢測(cè)功能,那么他們的路由器就有可能受到 SYN 攻擊,從而潛在地拒絕對(duì)您的 T1 線另一端的服務(wù),最后結(jié)果是有效地切斷了對(duì)您站點(diǎn)的訪問(wèn)。

考慮更復(fù)雜的環(huán)境,如某個(gè)特定連接的兩端都放置有多個(gè)路由器,由于每個(gè)路由器都有可能遭受攻擊,因此可能會(huì)影響到為您站點(diǎn)的合法用戶提供服務(wù)。要列出數(shù)據(jù)包到達(dá)您的服務(wù)器途中所要經(jīng)過(guò)的路由器,請(qǐng)使用 TRACERT.EXE 實(shí)用工具。

配置 TCP/IP 篩選以限制接受連接的端口

如果您沒(méi)有路由器作為防火墻,或者,如果您由于任何原因無(wú)法管理自己的路由器,都可以通過(guò)限制您計(jì)算機(jī)將接收的傳入連接種類,有效地使您自己的計(jì)算機(jī)成為防火墻。在 Windows 2000 中,單擊“開始”按鈕,選擇“設(shè)置”,選擇“網(wǎng)絡(luò)和撥號(hào)連接”,用鼠標(biāo)右鍵單擊連接到 Internet 上的網(wǎng)卡,然后選擇“屬性”。選擇“Internet 協(xié)議 (TCP/IP)”,單擊“屬性”按鈕,單擊“高級(jí)”按鈕,進(jìn)入“選項(xiàng)”選項(xiàng)卡。選擇“TCP/IP 篩選”,然后單擊“屬性”按鈕。將出現(xiàn)如圖 2 所示的一個(gè)對(duì)話框。您可以在該對(duì)話框中限制將接受連接的端口。在如圖 2 所示的示例中,限制了只允許在端口 80 和 443 上分別進(jìn)行 HTTP 和 HTTPS 連接。

圖 2:配置 TCP/IP 篩選

刪除不必要的服務(wù)和軟件

計(jì)算機(jī)上運(yùn)行的軟件越多,就越有可能受到攻擊,尤其是在您作為某種具有較高權(quán)限的用戶運(yùn)行服務(wù)的時(shí)候更是如此。如果您的計(jì)算機(jī)專門運(yùn)行 Web 服務(wù),且 Web 服務(wù)獨(dú)立于其他服務(wù),那么應(yīng)在您的計(jì)算機(jī)上禁用其他某些服務(wù),包括 FTP 服務(wù)、SMTP 服務(wù)以及諸如終端服務(wù)客戶端等的 Windows 服務(wù)。

也應(yīng)限制可通過(guò) Internet Information Server 運(yùn)行或訪問(wèn)的軟件數(shù)量。確保僅配置了您需要的虛擬站點(diǎn)和目錄。首先,應(yīng)該刪除管理 Web 站點(diǎn)。其次,還應(yīng)該刪除 IISSamples 虛擬目錄。同樣,如果您的計(jì)算機(jī)專門運(yùn)行 Web 服務(wù),應(yīng)刪除其他任何虛擬目錄。

即便對(duì)于已經(jīng)安裝某些軟件的虛擬目錄,也必須弄清楚哪種軟件是訪問(wèn)您的 Web 站點(diǎn)時(shí)可以使用的。在 Internet 服務(wù)管理器中,用鼠標(biāo)右鍵單擊某個(gè)站點(diǎn)或虛擬目錄,從所出現(xiàn)的菜單中選擇“屬性”,選擇“虛擬目錄”選項(xiàng)卡,然后單擊“配置”按鈕,將出現(xiàn)“應(yīng)用程序映射”選項(xiàng)卡,其中列出了與不同的 ISAPI 擴(kuò)展或 CGI 應(yīng)用程序相關(guān)聯(lián)的所有擴(kuò)展。如果您沒(méi)有使用這些擴(kuò)展,請(qǐng)將它們從列表中刪除。.IDQ 文件的索引服務(wù)器擴(kuò)展自身存在錯(cuò)誤,紅色代碼蠕蟲病毒就利用了這個(gè)錯(cuò)誤。如果您是在虛擬站點(diǎn)級(jí)進(jìn)行此項(xiàng)更改,那么您不需要為所創(chuàng)建的每個(gè)虛擬目錄都進(jìn)行此項(xiàng)工作。

使用 Microsoft Internet Information Server 安全性核對(duì)表

Microsoft 為 Internet Information Server 4.0 創(chuàng)建了一個(gè)安全性核對(duì)表,其中除了我在本文中提到的所有安全事項(xiàng)以外,還提到了其他更多的安全事項(xiàng)。使用此核對(duì)表來(lái)確保您至少已經(jīng)考慮了所有的安全性選項(xiàng)。雖然您運(yùn)行的可能不是 Internet Information Server 4.0(5.0 版是隨 Windows 2000 一起發(fā)布的版本),但本文中的大多數(shù)步驟仍然適用,而且,對(duì)于將來(lái) Internet Information Server 版本,也仍然適用。可以從 Microsoft Internet Information Server 4.0 Security Checklist(英文)中找到此核對(duì)表。

總結(jié)

根據(jù)您計(jì)算機(jī)和網(wǎng)絡(luò)配置的不同,會(huì)有多種保護(hù)措施,您應(yīng)采取相應(yīng)的措施保護(hù)您的 Web 服務(wù)器免受黑客攻擊。在下一篇專欄文章中,我們將研究開發(fā)人員和設(shè)計(jì)人員在創(chuàng)建其 XML Web Service 時(shí)需注意的問(wèn)題,并繼續(xù)探討保護(hù)您的 XML Web Service 免受黑客攻擊的方法。

發(fā)布:2007-03-24 17:59    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
上海OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢