日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

如何配置和部署安全的.NET三层应用

發(fā)布時間:2025/6/17 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何配置和部署安全的.NET三层应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
引用:http://www.dnnstudy.com/Default.aspx?tabid=52&ctl=Detail&mid=403&Id=1562

本文中我們所提到的安全主要是針對于利用.NET技術(shù)開發(fā)的、基于三層架構(gòu)的應(yīng)用程序(3-tier application)。先簡單介紹一下利用三層架構(gòu)開發(fā)的應(yīng)用程序。

1. 前言

隨著.NET技術(shù)日新月異的發(fā)展和Windows2003的推出,越來越多的人開始熟悉和使用.NET開發(fā)的產(chǎn)品。我們的程序員在開發(fā).NET的程序的過程中往往忽略了安全的重要性,認為只要能運行就是好產(chǎn)品,或者盲目的把安全推給.NET環(huán)境來解決。這是完全錯誤的。.NET環(huán)境提供了一整套安全防護措施,我們必須合理的運用這些安全措施并貫穿于開發(fā)和部署的每一個環(huán)節(jié),才能達到所預(yù)期的安全效果。

本文中我們所提到的安全主要是針對于利用.NET技術(shù)開發(fā)的、基于三層架構(gòu)的應(yīng)用程序(3-tier application)。先簡單介紹一下利用三層架構(gòu)開發(fā)的應(yīng)用程序。

本文適合于熟悉.NET開發(fā),熟悉SQL Server 2000,并裝配Windows 2003的讀者。

2. 三層架構(gòu)應(yīng)用

三層架構(gòu)的全稱是“Three-Tier Application Using an XML Web Service”詳情請見MSDN。究竟三層是指哪三層?第一層:客戶端應(yīng)用層(包括瀏覽器頁面)。第二層:Web Service層。第三層:數(shù)據(jù)庫層。詳見圖一。

(圖1)

???這樣做的好處是:
???1.開發(fā)者可以快速簡單的開發(fā)程序。
???2.使用者可以在任何可以連接到Internet的地方適用應(yīng)用程序。
???3.數(shù)據(jù)訪問層集中在Web Service上便于更新維護,不用升級客戶端。
???4.數(shù)據(jù)訪問與前臺實現(xiàn)隔開。

3. 本文演示程序簡述

由于本文講述的是如何安全的部署.NET三層應(yīng)用,而不是如何開發(fā)。所以這個演示程序就不做詳細介紹了。這是從數(shù)據(jù)庫中列出所有顧客并能查詢每個顧客訂單的小演示程序。

文件目錄:
根目錄 \demo
子目錄 \demo\demo_Client Application 客戶端應(yīng)用
??????????????\demo\demo_Database 數(shù)據(jù)庫
??????????????\demo_WebService Web 服務(wù)
注:由于強調(diào)安全性,所以與數(shù)據(jù)庫的交互全部由存儲過程實現(xiàn)。點擊此處下載演示程序。

客戶端如下圖二:

(圖2)

4. 配置你的系統(tǒng)

4.1. 總述

安全的體系結(jié)構(gòu),訪問權(quán)限要責(zé)任明確,盡量使用專用身份進行訪問,而且應(yīng)該將權(quán)限設(shè)置為“恰好夠用”的最小授權(quán)。主要從四個方面考慮。
???(1).客戶端匿名用戶以IUSR_MACHINENAME的身份訪問IIS。
???(2).IIS以Application Pool設(shè)定的身份(默認情況下,NT AUTHORITY\Network Service)的身份執(zhí)行Web Service。
???(3).如果沒有發(fā)生新的角色扮演,或者在web.config中進行配置,則Web Service以執(zhí)行它的身份訪問SQL Server。
???(4).SQL Server以某個特定的受限用戶身份(在我們的例子中,_SQLSERVER_)訪問資源。

4.2. 為SQL Server 2000單獨建一個用戶

4.2.1. 原因

在Windows中系統(tǒng)為IIS建了兩個帳戶,IUSR_MACHINENAME(Internet 來賓帳戶)、IWAM_MACHINENAME(啟動IIS進程帳戶)。這樣做的好處是,由于這兩個帳戶的權(quán)限很低(通常只能訪問IIS)所以即使IIS被入侵,可以把損失降到最低。

在SQL Server中卻沒有類似的專用帳戶,在安裝SQL Server的時候通常設(shè)定SQL Server的訪問資源的帳戶是以本地系統(tǒng)(NT AUTHORITY\LOCAL SYSTEM)身份,這一身份擁有比Administrator更多的特權(quán)。這樣給SQL Server的權(quán)限實在太高了,一旦被攻陷,后果不堪設(shè)想。

我們可以手動為SQL Server建立一個用戶并給它最低的權(quán)限(指給它訪問數(shù)據(jù)庫文件的權(quán)限)。現(xiàn)在我將從頭開始建立。

4.2.2. 新建用戶

新建用戶如圖三所示:

(圖3)

???注:
???1. 這是標(biāo)準(zhǔn)的Windows 2003 的新建用戶對話框
???2. 用戶名可以隨便起,這里用_SQLSERVER_,全稱是SQL Server Jail User意思是這個專用用戶被關(guān)進了“監(jiān)獄”。
???3. 密碼應(yīng)該盡量長(64字節(jié)以上),盡量復(fù)雜(包含大小寫、數(shù)字、特殊符號等,最好是隨機生成)。Don’t panic這個密碼一共只用一次,所以最好先記在文檔里。
???4. 同時選擇用戶不能更改密碼和密碼永不過期兩項。

4.2.3. 給這個用戶配權(quán)限
修改權(quán)限如圖四:

(圖4)

???注:
???1.右鍵點擊_SQLSERVER_用戶,選擇屬性。
???2.進入“隸屬于”頁,將Users組刪除。這樣_SQLSERVER_就不屬于任何組了,這個用戶沒有任何權(quán)限。注意:對于Windows 2000來說,由于所有驅(qū)動器上默認的Everyone完全控制授權(quán),需要進行一些額外的配置。

4.3. 建議重裝你的SQL Server

4.3.1. 原因

重新建立安全的SQL Server。確保SQL Server以SQL Server Jail User 身份訪問計算機資源。確保SQL Server只信任命名管道等。所以建議重裝SQL Server。

4.3.2. 修改SQL Server服務(wù)帳戶

在安裝SQL Server的過程中有一步是指定SQL Server 服務(wù)是以什么身份運行。如圖五:

(圖5)

???注:
???1.這里把我們剛才添加的SQL Server Jail User 添加為Services Accounts。
???2.在Username中填入“_SQLSERVER_”;在Password中將密碼復(fù)制過來。
???3.徹底刪除記錄密碼的文件,這個密碼只用一次。這個用戶就像被關(guān)進了SQLSERVER監(jiān)獄中了,除了SQL Server沒有程序可以使用它。
???4.點擊Next

4.3.3. 指定SQL Server登錄驗證模式和網(wǎng)絡(luò)連接方式

如圖六、圖七所示:

(圖6)

???注:
???1.我們不信任SA的登錄模式,只信任windows身份驗證模式
???2.SA身份有很多缺點:(1).SA身份沒有過期時效。(2).SA身份沒有用戶鎖定,這樣SA口令最終總能被窮舉出來。(3).SA身份的權(quán)限太高,一但SA密碼被獲取,則可以以SQL Server的身份運行任何程序。

(圖7)

???注:
???1.不信任除命名管道以外的任何網(wǎng)絡(luò)連接
???2.將默認選中的TCP/IP Sockets取消(如果需要在分布式環(huán)境中運行,則應(yīng)配置Active Directory域)。
???3.原則是除非必須需要其他的連接,否則請不要選

4.3.4. 安裝SQL Server SP3

在安裝SP3的時候有一步會提示你必須指定SA密碼,因為在安裝SQL Server的時候不允許以SA身份登錄,所以SA密碼為空。SP3認為SA密碼為空是不安全的(即使SA不能用作登錄)。我們要做的就是輸入一串盡可能長且復(fù)雜的密碼。


5. 開始部署demo程序(將權(quán)限配的最小)

5.1. 部署之前

5.1.1. 將demo目錄復(fù)制到“C:\sample\”目錄下

5.1.2. 先配最小權(quán)限

修改sample目錄的安全,使sample目錄及所有子目錄和文件只能被administrators組的成員完全控制。其他默認訪問控制刪除。如圖八。

(圖8)

???注:
???1.右鍵單擊sample文件夾,點“屬性”;選擇“安全”頁。默認有四種身份可以訪問該文件夾。再點擊“高級”如圖八。
???2.將“允許父項的繼承權(quán)…… ……”復(fù)選框的勾取消。這樣會彈出一個對話框,點擊“刪除”按鈕。
???3.這樣就將所有從父目錄繼承的權(quán)限刪除了。只剩Administrators組有訪問權(quán)限。

如圖九:

(圖9)

5.1.3. 附加數(shù)據(jù)庫(attach database)

在SQL Server企業(yè)管理器中附加數(shù)據(jù)庫,在選擇數(shù)據(jù)庫的時候會發(fā)現(xiàn),File Browser無法遍歷進Sample文件夾。這是由于SQL Server 是以_SQLSERVER_身份運行的,而_SQLSERVER_身份無法訪問Sample文件夾和數(shù)據(jù)庫文件,接下來要給_SQLSERVER_遍歷文件夾的權(quán)限和完全控制數(shù)據(jù)庫文件的權(quán)限。

同樣,在sample“屬性”的“安全”中,點擊“高級”,彈出“Sample的高級安全設(shè)置”的對話框,點擊“添加”,輸入“_SQLSERVER_”點擊“確定”按鈕 ,在權(quán)限項目表中選擇“_SQLSERVER_”,點擊“編輯”按鈕,彈出“權(quán)限項目”設(shè)置對話框。在“應(yīng)用到”下拉框中選擇“只有該文件夾”;在“列出文件夾/讀取數(shù)據(jù)”復(fù)選框后選擇“允許”。按“確定”退出。如圖十。

按照此方法依次將sample,demo,demo_Database文件夾配權(quán)限。

最后給數(shù)據(jù)庫文件“demo_DB_Data.MDF”和“demo_DB_Log.LDF”配權(quán)限,在這里由于SQL Server需要對這兩個文件進行各種操作,所有應(yīng)給_SQLSERVER_身份配完全訪問權(quán)。與上述分配權(quán)限方法雷同,在最后一步選擇“完全控制”。如圖十一。

回到SQL Server 企業(yè)管理器中就可以附加數(shù)據(jù)庫了。將Special Database Owner設(shè)為_SQLSERVER_。如圖十二。

(圖10)

(圖11)

(圖12)

5.2. 部署Web Service

5.2.1. 為Web Service新建一個應(yīng)用程序池(application pool)

我推薦至少為每一個Web Service建立一個應(yīng)用程序池。在IIS 6.0中建立一個應(yīng)用程序池非常簡單。啟動IIS6.0,右鍵單擊“應(yīng)用程序池”,選擇“新建”“應(yīng)用程序池”,則彈出添加應(yīng)用程序池對話框,輸入應(yīng)用程序池名稱。如圖十三。

(圖13)

給AppPool-Demo應(yīng)用程序池配權(quán)限,右鍵單擊“AppPool-Demo”選“屬性”彈出屬性對話框。在這里可以設(shè)置一些應(yīng)用屬性。我們關(guān)心的是“標(biāo)識”頁,確保應(yīng)用程序池安全帳戶的預(yù)定義帳戶是“網(wǎng)絡(luò)服務(wù)”(即Network Service帳戶)。如圖十四。

(圖14)

5.2.2. 給Web Service添加虛擬目錄

虛擬目錄名為demo,對應(yīng)的路徑是“C:\sample\demo\demo_Webservice”。新建虛擬目錄就不再詳述了。

現(xiàn)在給虛擬目錄配權(quán)限,由于IIS以Application Pool 設(shè)定的身份(Network Service)的身份執(zhí)行Web Service。所以應(yīng)該給Network Service訪問和運行虛擬目錄的權(quán)限。

在IIS中右鍵單擊demo虛擬目錄,選擇“權(quán)限”,則彈出該目錄的安全設(shè)置對話框。添加“Network Service”帳戶。并選擇“讀取和運行”的權(quán)限。如圖十五。

給Web Service一個應(yīng)用程序池,右鍵單擊demo虛擬目錄,選擇“屬性”。在“應(yīng)用程序池”下拉框選擇剛才建立的應(yīng)用程序池(AppPool-Demo)。

現(xiàn)在試試Web Service是否可以正常工作了。在IIS中單擊“demo”虛擬目錄,在右邊的文件列表中,右鍵單擊“demo.asmx”選擇“瀏覽”。檢查Web Service是否正常。如圖十六表示W(wǎng)eb Service正常。若不正常請檢查上述的每一步。

(圖15)

(圖16)

5.3. 配置數(shù)據(jù)庫

5.3.1. 添加訪問數(shù)據(jù)庫用戶

打開SQL Server企業(yè)管理器,展開Demo_DB樹,右鍵點擊“User”。選擇“New Database User”,則彈出新建用戶對話框,在“Login Name”下拉框中選擇“New”,則又彈出一個對話框,手動向“Name”下拉框中填入“NT Authority\Network Service”。(說明:在SQL Server中必須手動填寫全稱,不能搜索此用戶。對此,我也表示不解)。選擇數(shù)據(jù)庫為“demo_DB”。點擊“確定”按鈕。如圖十七

則退到第一個對話框中,在“Login Name”下拉框中選擇“NT Authority\Network Service”并給與“Public”權(quán)限。點擊“確定”按鈕。

(圖17)

5.3.2. 為這個用戶配權(quán)限

在SQL Server 企業(yè)管理器中展開“demo”數(shù)據(jù)庫目錄,點擊“Users”,在右邊的用戶列表中右鍵單擊“NT Authority\Network Service”,選擇“屬性”彈出對話框,點擊“Permissions”按鈕,則彈出權(quán)限對話框,將程序的兩個用戶定義的存儲過程的“EXEC”權(quán)限點成“允許”。如圖十八。

說明:一個安全的應(yīng)用程序,所有對數(shù)據(jù)庫表和視圖的訪問都應(yīng)該由存儲過程來處理。所以我們在設(shè)置權(quán)限的時候應(yīng)該只給訪問存儲過程的權(quán)限,不給訪問表和視圖的權(quán)限。在數(shù)據(jù)庫中認為只要不畫勾,就認為沒有權(quán)限訪問,所以,只給兩個存儲過程畫勾。

(圖18)

6. 運行客戶端程序

6.1. 運行

這個時候會發(fā)現(xiàn)程序無法運行,彈出一個error對話框,如圖十九。

(圖19)

這是由于客戶端程序是以IUSR_MACHINENAME的身份訪問的網(wǎng)絡(luò)資源,在Web Server以Application Pool所指定的身份運行前,IIS是以IUSR_MACHINENAME的身份讀取服務(wù)器資源的,直到IIS發(fā)現(xiàn)所請求的資源是Web Server程序,便以Application Pool所指定的身份執(zhí)行Web Server。所以我們要向Web Server加入IUSR_MACHINENAME的可讀取權(quán)限。如圖二十。

(圖20)

???注:
???1.在IIS中右鍵單擊demo虛擬目錄,選擇“權(quán)限”,則彈出該目錄的安全設(shè)置對話框。添加“IUSR_MACHINENAME”(每臺計算機的名稱會有所不同,一般是IUSR_加上主機名)帳戶。并選擇“讀取”的權(quán)限
???2.運行客戶端。看看是不是可以運行了,若有錯誤,請詳細檢查上述的每一步。

轉(zhuǎn)載于:https://www.cnblogs.com/wxmxiaoming/archive/2005/12/28/306774.html

總結(jié)

以上是生活随笔為你收集整理的如何配置和部署安全的.NET三层应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。