asp和asp.net虛擬機器主機的安全配置

來源:互聯網
上載者:User

為了研究下asp和asp.net虛擬機器主機更好的安全配置,決定對自己的機子下手。
  下面對win2003+SP2+IIS6配置成功,系統安裝在c盤下,所有盤的檔案系統都為ntfs,如果是fat32就沒什麼意思了。

第一步,系統硬碟的許可權。
1)C盤中除了administrators,system外其他的組或者使用者全部刪除。

2)C盤下的所有檔案和檔案夾(包括windows)把除了administrators,system外其他的組或者使用者全部刪除【以前看的一些文章說需要把user組載入windows上,其實並不需要】。

3)C:\Program Files\Common Files\System下的所有dll檔案加上user組的讀取和運行許可權。(對asp的,server.createobject時需要,如adodb.connection什麼的之類的dll在此檔案夾下放著。),如果想偷懶,可以直接載入system目錄上。

4)c:\windows下的所有檔案和檔案夾把除了administrators,system外其他的組或者使用者全部刪除。
【可以安全設定的進階選項中的“允許父項的繼承許可權傳播到該對象和所有子物件,包括哪些在此明確定義的項目”和“用在此顯示的可以應用到子物件的項目替代所有子物件的許可權項目”複選框】

在下面就是重點了。是asp和asp.net程式運行時要用到的許可權。

asp.net程式
1)增加iis背景工作處理序組IIS_WPG對c:\windows\assembly的讀取和運行許可權(由於assembly是特殊目錄,不能直接使用右鍵然後屬性來添加,需要使用cacls命令來添加),要不訪問asp.net程式會出現“伺服器應用程式不可用”的錯誤。運行命令“cacls c:\windows\assembly /T /G IIS_WPG:R administrators:F SYSTEM:F”【命令就是給iis_wpg組的讀許可權,administrators和system的完全控制許可權並且更改目前的目錄及其所有子目錄中指定檔案的ACL。】,加上許可權後需要重新啟動對應的應用程式集區或者從工作管理員中結束對應的w3wp.exe進程使用許可權生效,要不重新整理網頁還是出現如上錯誤。
2)C:\WINDOWS\Microsoft.NET\Framework目錄,加上IIS_WPG的讀取和運行許可權。此時只剩下了IIS_WPG,administrators和system。C:\WINDOWS\Microsoft.NET\Framework目錄下的你對應的framework版本檔案夾加上user的讀取和運行許可權,其他的檔案夾如URTInstallPath_GAC可以不加。又到重點了,asp.net編譯產生的檔案在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files下,所以需要給user組對Temporary ASP.NET Files的寫入權限。如果你用到了其他版本的framework(如1.1的),注意對應的Temporary ASP.NET Files也要有user組的寫入權限。
3)IIS_WPG需要有對C:\WINDOWS\WinSxS目錄的讀取和運行許可權。要不訪問時應用池程式會自動停止。事件檢視器中出現“啟動應用池失敗"的錯誤。
附:如果Temporary ASP.NET Files下出現編譯檔案有多個檔案的提示錯誤【大概是這個意思吧,公司伺服器沒安裝中文協助文檔,顯示的英文資訊。。】,可以先停止iisadmin,刪除Temporary ASP.NET Files 檔案夾下的asp.net編譯產生的所有檔案和檔案夾,然後啟動iis讓asp.net重新編譯即可。【要注意停止iis,要不刪除了Temporary ASP.NET Files下的檔案和檔案夾,提示檔案被佔用】。

asp程式
1)如果你使用的資料庫是mssql什麼的非access資料庫,可以忽略此步驟。如果你使用的是access資料庫那就要注意,需要給C:\WINDOWS\temp加上user組的寫入權限。要不串連access資料庫時會出現“Microsoft JET Database Engine 錯誤 '80004005' 未指定的錯誤 ”次錯誤。
2)給C:\WINDOWS\system32加上user組的讀取和運行許可權,這是fso要用到的,如scrrun.dll。【當然如果你有時間,可以找到對應的dll檔案加上user組的讀取和運行許可權,個人是直接加system32上了。】

asp程式和asp.net共同需要的
1)IIS_WPG組需要對C:\WINDOWS\IIS Temporary Compressed Files有讀許可權。這個好像是iis壓縮網頁需要的。如果沒有IIS_WPG組的讀許可權,在“時間查看器”的系統那欄目那裡會出現一條“指定的用來緩衝壓縮的內容 C:\WINDOWS\IIS Temporary Compressed Files 的目錄無效。將禁用靜態壓縮。”警告資訊。
2)user組需要擁有對c:\windows\Registration檔案夾的讀取和運行許可權,要不當使用了session對象時會提示“http1.1無法建立新的會話”的錯誤。需要重新啟動iis或者對應的應用程式集區才能消除此錯誤。

到此已經完成系統硬碟的安全配置了。

第二步,其他盤(包括放asp,asp.net程式的盤)
盤和盤下面的所有檔案和檔案夾全部設定為只有administators組有完全控制許可權,其他的組和使用者全部刪除。

第三步,IIS和使用者部分(建立測試應用程式集區,測試網站和系統使用者)
1)運行compmgmt.msc開啟電腦管理,找到本機使用者和組,點擊使用者,然後建立使用者。(為了簡便我就把密碼和使用者名稱都設定一樣了)
useriis:用來運行iis的,隸屬於IIS_WPG組。
userweb:用來訪問web網站的,隸屬於GUESTS組,許可權最低。
2)開啟iis,建立應用程式集區。然後右鍵剛才建的應用池,選擇屬性。在“標誌”頁,選擇“配置”,而不是“預定義賬戶”【預定義是使用預設的network service使用者來運行IIS】。然後輸入使用者名稱useriis或者瀏覽找到useriis,並且輸入密碼。
3)_建立一個測試網站,網站指向“e:\iisdebug”。右鍵此網站選擇屬性,目錄安全性,編輯。勾選“啟用匿名訪問”,然後輸入剛才建立的userweb使用者名稱和密碼。
4)選擇iis的“web 服務擴充”,允許"Active Server Pages"和"ASP.NET v2.0.50727",iis6預設是禁止asp的,後面安裝framework2.0也不會自動允許。

到此完成第三步。

第四步,放置asp,asp.net程式的檔案夾的許可權(我的放到e:\iisdebug,下面均直接稱為iisdebug)
給iisdebug加上剛才建立的兩個使用者名稱useriis和userweb,許可權為讀寫和運行。
在iisdebug下建立兩個檔案,test.asp和test.aspx和t.mdb(access資料庫檔案)用來測試剛才的配置是否成功。
test.asp檔案可以把useriis使用者刪除,但是test.aspx檔案不能刪除,需要useriis和userweb。【意思就是asp程式只需要加上訪問網站的使用者名稱即可,asp.net程式需要訪問網站的使用者和運行iis的使用者】。t.mdb需要加上userweb的寫入權限,如果你需要向access資料庫寫資料或者更新裡面的資料時。還有一點注意的是如果有上傳檔案到某個檔案夾時,此檔案夾需要有useriis和userweb的寫入許可權。

到此基本上已經完成配置了,下面是test.asp和test.aspx的代碼。
test.asp

+展開-VBScript
sub testObj(key)
on error resume next
err=0
set o=server.createobject(key)
if err<>0 then
   response.write "建立“"&key&"”<font color='red'>失敗</font><br/>"
else
   response.write "建立“"&key&"”<font color='green'>成功</font><br/>"
   set o=nothing
end if
on error goto 0
end sub

set cn=server.createobject("adodb.connection")
response.write cn.state&"<br/>"
cn.open "provider=microsoft.jet.oledb.4.0;data source="&server.mappath("t.mdb")
response.write cn.state&"<br/>"
cn.close
set cn=nothing

'測試木馬常用的組件,最後再給出如何防止asp木馬的配置。
call testobj("scripting.filesystemobject")
call testobj("adodb.stream")
call testobj("wscript.network")
call testobj("wscript.shell")
call testobj("shell.application")
response.write now

test.aspx

+展開-HTML
<%@ Page Language="C#" debug="true"%>
<%
Response.Write(System.IO.File.Exists(Server.MapPath("jtb.rar"))+"<BR/>");
System.IO.File.Delete(Server.MapPath("t.htm"));
Response.Write(DateTime.Now);
%>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.