隨著Internet越來越普及,各種各樣的虛擬主機也越來越多,由于虛擬主機需要同時向大量不同的用戶提供安全的網絡應用環(huán)境,因此搭建一個虛擬主機平臺除了需要架設WEB和FTP服務器,還涉及到一些虛擬主機環(huán)境所特有的問題。以下就對這些特有的問題進行歸納和分析。我個人認為在建立虛擬主機時主要需要注意以下三個大方面: 1.用戶與磁盤空間和域名的綁定;
/ _* T( d, ~3 j 2.用戶使用磁盤空間的容量限制(磁盤配額);- x$ I/ V2 h3 F: h. a: x
3.IIS和用戶環(huán)境的安全問題(我使用的是Windows Server系統(tǒng));
: X& y6 {2 w% d! r2 S$ }7 n 下面我就以這三個方面在Windows 2003 Enterprise Server具體如何實現(xiàn)做一個詳細的介紹。
% c& i8 n* Q" w; D 一、用戶與磁盤空間和域名的綁定
' ]' D2 K9 _+ m' f3 B9 V 先打開計算機管理(要是服務器已經升成為AD模式,就打開Active Directory用戶與計算機),點擊展開本地用戶和組,右鍵單擊用戶模塊分別創(chuàng)建兩個用戶帳號。我這里建立的用戶帳號依次為test1、test2。注意,為了安全考慮,請在組的模塊中新建一個組。把用于虛擬主機的用戶歸納到里面,并把用戶原來隸屬于的User組刪除。(作為一個稱職的管理員,需要注意的小細節(jié)是很多的,不然一個錯誤的細節(jié)就會引起災難)如圖1:8 C0 R0 [1 U+ a1 K% ~* d: U
圖1:建立虛擬主機的用戶組 建立好帳號后,就在FTP空間目錄下先建立一個LocalUser文件夾。然后對應所使用的帳號建立子文件夾。如:要是FTP空間指定的是D:\ WEB_Space文件夾,那就在這個文件夾下創(chuàng)建一個LocalUser文件夾。接著建立兩個子文件夾:test1、test2.如圖2:( P# \" S$ n9 f; ] G: k
圖2:建立LocalUser文件夾 由于剛才我們建立用戶帳號時,把它們單獨的歸納到一個組中,這時就需要在FTP空間根目錄屬性的安全選項卡中把這個組添加進去,用戶將無法通過FTP訪問。如圖3:
2 ?8 Z+ s; C# @- T+ A6 V7 ~7 Q圖3:設置用戶組權限 接著我們需要建立FTP 用戶隔離站點。這個功能是以前版本的IIS中FTP站點所沒有的,F(xiàn)TP 用戶隔離為 Internet 服務提供商 (ISP) 和應用服務提供商提供了解決方案,使他們可以為客戶提供上載文件和 Web 內容的個人 FTP 目錄。FTP 用戶隔離通過將用戶限制在自己的目錄中,來防止用戶查看或覆蓋其他用戶的 Web 內容。
: x" ~1 M0 T# E6 J) S 因為頂層目錄就是 FTP 服務的根目錄,用戶無法瀏覽目錄樹的上一層。在特定的站點內,用戶能創(chuàng)建、修改或刪除文件和文件夾。FTP 用戶隔離是站點屬性,而不是服務器屬性。無法為每個 FTP 站點啟動或關閉該屬性。所以在建立FTP站點的時候就應該選擇好,不然站點建立以后,將無法修改。2 r4 Y8 O8 S. S' |+ F
不隔離用戶:該模式不啟用 FTP 用戶隔離。該模式的工作方式與以前版本的 IIS 類似。由于在登錄到 FTP 站點的不同用戶間的隔離尚未實施,該模式最適合于只提供共享內容下載功能的站點或不需要在用戶間進行數(shù)據(jù)訪問保護的站點。4 y2 }2 t9 l* V1 Y D: p" G# w; O: S! d
隔離用戶:該模式在用戶訪問與其用戶名匹配的主目錄前,根據(jù)本機或域帳戶驗證用戶。所有用戶的主目錄都在單一 FTP 主目錄下,每個用戶均被安放和限制在自己的主目錄中。不允許用戶瀏覽自己主目錄外的內容。如果用戶需要訪問特定的共享文件夾,您可以再建立一個虛擬根目錄。該模式不使用 Active Directory 目錄服務進行驗證。 注意 當使用該模式創(chuàng)建了上百個主目錄時,服務器性能會下降。
& Z% f! T8 ^* c 用 Active Directory 隔離用戶:該模式根據(jù)相應的 Active Directory 容器驗證用戶憑據(jù),而不是搜索整個 Active Directory,那樣做需要大量的處理時間。將為每個客戶指定特定的 FTP 服務器實例,以確保數(shù)據(jù)完整性及隔離性。當用戶對象在 Active Directory 容器內時,可以將 FTPRoot 和 FTPDir 屬性提取出來,為用戶主目錄提供完整路徑。
& C/ T4 u; _* S 如果FTP 服務能成功地訪問該路徑,則用戶被放在代表 FTP 根位置的該主目錄中。用戶只能看見自己的 FTP 根位置,因此受限制而無法向上瀏覽目錄樹。如果 FTPRoot 或 FTPDir 屬性不存在,或它們無法共同構成有效、可訪問的路徑,用戶將無法訪問。; W; \: H' b! ?
打開Internet信息服務(IIS)管理器,點擊展開服務器,右鍵單擊FTP站點,新建一個FTP站點,在建立向導中,因為我的服務器不是Active Directory模式,所以我們選擇隔離用戶這個選項。如圖4:, S2 U4 x" ^4 x- z+ h
圖4:FTP用戶隔離選項 完成建立向導后,開打新建立的FTP站點屬性,點擊屬性中的安全用戶選項卡,把允許匿名連接關閉。確定后退出。; E& F6 c! W1 C, E
最后是域名的綁定,域名綁定有兩種定義,第一種是直接使用完整域名綁定WEB服務,如在服務器上提供www.test1.com和[url=http://www.zhongdushi.cn/www.test2.com]www.test2.com[/url]空間服務,第二種是開設子域名服務,如提供test1.yesky.com和test2.yesky.com空間服務。這兩種在工作原理上是一樣的,但第二種在操作上有一些不同。需要自己服務器的DSN支持。, W4 g5 R8 [/ c; U4 Z
' l% _8 M3 f% r5 f4 X6 v1 I" D5 B 首先我們讓我們來了解一下關于域名(DNS)的基本知識,在我們要了解DNS,首先要了解幾個名詞:域名空間;根域;頂級域;二級域;主機名;區(qū)域。/ {+ C3 b! e+ Y( L) O9 H1 z. h
域名空間:是DNS名的結構統(tǒng)稱,他的結構主要是由根域,頂級域,二級域和主機名組成。
4 Z( |9 x- u' ^6 X& ` 根域:是處在整個結構的頂級,是用點(.)表示的。由國外的幾個公司管理的。55555沒有我們的份~郁悶!!)" |5 e1 [+ L8 I+ E4 m; u
頂級域:是由2-3個英文字母組成,并且有著一定的意義,一般采用相對意義的英文單詞縮寫或相對代碼。如:COM是指商業(yè)機構,GOV是指政府機構,CN是指中國…… d$ ^" d3 O9 G4 Y
二級域:是由一些域名提供商出租給個人或企業(yè)、機構的服務。如www.souod.com這個域名中souod就屬于二級域。
7 r; Z; k t/ J0 y 主機名:是用來表示Internet或內部網的計算機名稱,但大家注意一點,在Internet上,有的時候主機名指代表一臺服務器的IP地址,而不是服務器的名稱,這一點是和內部網有區(qū)別的!
% q& p- o$ {3 b( W1 l 區(qū)域:是域名空間中的一個離散部分。區(qū)域主要是用來把一個域名變成可管理的幾個部分,如: www.souod.com這個域名我們可以把他劃分成www和souod.com這兩個部分。這樣,我們就可以利用souod.com這部分生成不同的主機名。如mail.souod.com;bbs.souod.com等等。這一點比較重要。
" V8 X9 \" N' n1 k3 I6 l$ ? DSN服務工作的流程我們可以把它稱作名字解析過程,它共分為兩種:正向搜索和反向搜索。正向搜索是把一個域名解析成一個IP,我們這里就用Internet上的www.niyaole.cn域名做一個案例。
9 f9 l8 c2 f: A" M* b 我們先在IE瀏覽器中輸入www.niyaole.cn這個域名,然后計算機將自動把這個域名傳遞給本地DNS服務器(也就是指在本機網卡屬性中TCP/IP協(xié)議的DSN服務器輸入框里輸入的IP地址所對應的服務器),DNS服務器收到信息后,將在自己的區(qū)域表中搜索有沒有該域名所對應的IP!有則返回,若沒有,它則會把搜索的信息傳遞給國外的幾個根域DSN服務器之一,請求解析該域名。
6 S6 c- @, d* B% n# l 根域DSN服務器則返回一條對COM域DNS服務器的IP地址給本地DNS服務器引用(由于niyaole.com的頂級域是COM所以返回COM域DNS服務器的IP地址),本地DNS服務器在根據(jù)IP地址給COM域DNS服務器發(fā)送一條www.niyaole.cn域名解析請求的信息,COM域DNS服務器返回一條對DSN服務器的IP地址指引,然后本地DNS服務器再根據(jù)收到的IP地址給yeDSN服務器,發(fā)送一條www.niyaole.cn域名解析請求的信息,DSN服務器根據(jù)請求反饋給www的IP地址,本地服務器再把這個IP反饋給我們。這時解析完成,我們也就打開了www.niyaole.cn的網頁。
' h7 \4 b! ~- [+ [. _ 反向搜索正好相反,它是把一個IP地址解析成一個域名,??匆姷闹T如Windows 2003下的Nslookup命令工具。由于DNS服務是按域名而不是按IP地址索引的,反向搜索一搜索就會搜索所有的信息,很消耗資源。為了避免這種情況,DNS服務創(chuàng)建了一個叫in-addr.arpa的特殊二級域,它使用的是與其他域名空間結構相同的方法,但它不采用域名,而是采用IP地址。
1 T8 |$ P: N3 G' B+ \2 | 注意,要想做Internet上第二種虛擬主機,最好向域名提供商申請DNS轉移權,要求提供商把DNS解析權指定到你的DNS服務器上,這樣你就能自己利用Windwos Server的DSN服務隨意開設子域名了,不然你每次要用一個新的子域名都要向域名提供商申請,那是很麻煩的,而且DSN在自己的服務器上還有很多好處,如開設MAIL服務等等。
& S6 f, g$ G2 Z 先來打開DNS管理器,點擊展開服務器,在正向查找區(qū)域新建一個區(qū)域。選擇創(chuàng)建主要區(qū)域,輸入你申請的域名,注意,只要輸入我上面所說的區(qū)域就可以了,如yesky.com、sina.com.cn。完成。如圖5:5 C A9 X9 j2 c1 E2 p" G( R: w4 _
圖5:創(chuàng)建主要區(qū)域 創(chuàng)建好區(qū)域后,就在你創(chuàng)建的區(qū)域里創(chuàng)建主機。最好創(chuàng)建的主機名與你的用戶名相同,這樣方便管理。當然,如果你的系統(tǒng)已經升級到AD模式,那這步可以跳過,因為在AD模式下,你每創(chuàng)建一個帳戶,就會自動的生成對應的主機名稱。如圖6:
4 h* F8 B, g/ \5 g圖6:創(chuàng)建主機 所有的主機都創(chuàng)建好了后,就打開Internet信息服務(IIS)管理器,在WEB站點下創(chuàng)建新的WEB站點。在站點創(chuàng)建向導的IP地址和端口設置對話框中輸入需要綁定的完整域名,如www.test.com、test1.test.com、test12.test.com,創(chuàng)建完成后,域名就和空間綁定了。如圖7:
@# y2 K* T6 d5 x圖7:域名和空間的綁定 在DNS中有多少個主機,就可以建立多少個子域名WEB站點。也可以用域名提供商提供的直接指定IP的域名。但這里需要注意的是,一旦服務器中Internet信息服務(IIS)管理器里出現(xiàn)了帶主機頭的站點后,有時將會導致沒有主機頭的站點出錯,這個問題很奇怪,可是能DNS映射引起的。0 C; Y/ i, E& r; d8 O* Q* F. N
二、用戶使用磁盤空間的容量限制(磁盤配額)
- c/ w3 `. p, Z0 Y7 M4 j f0 U- G3 A% B3 f# F% I
在配置之前,讓我們先了解一下磁盤配額管理的一些基礎知識,以便我們更容易理解它的工作方法。Windows 2003磁盤配額會跟蹤每個用戶在每個盤符中的使用情況。并根據(jù)用戶的磁盤配額進行控制。因為配額是以每個用戶做為單位進行跟蹤的,所以不管用戶在這個盤符下的任何地方儲存文件都會被記錄。磁盤配額共有二個比較顯著的特點:
, {" P' W' n5 t1 T9 X X1 ?- U& w 1.根據(jù)每個用戶所擁有的文件和文件夾來計算使用磁盤的空間量。當一個新建、復制、保存文件到開啟了磁盤配額的盤符上,或獲得盤符上某文件所有權時,系統(tǒng)就自動從磁盤配額管理所限定的空間中扣減該用戶的空間容量。( U1 n+ G8 U) Z( } B, C5 q$ |
2.系統(tǒng)在計算用戶使用磁盤空間時是忽略壓縮的,它按照未壓縮的字節(jié)計算用戶使用的硬盤空間,而不管用戶實際使用了多少磁盤空間。這樣做是因為現(xiàn)在很多不同的文件類型在壓縮的時候所壓縮的比例不同。會造成文件長度的很大差異,給磁盤管理帶來很大的工作負擔。
- b7 J; h% Y8 a ~ 注意,磁盤配額必須建立在NTFS格式的盤符上。不然無法使用。% _- R+ q3 S. l$ y2 U7 i K
選擇你FTP空間所在的盤符,打開盤符的屬性對話框,單擊配額選項卡,選擇啟用配額管理復選框,開啟磁盤配額管理。這是原本一些灰色不能使用的屬性開始能使用了。請根據(jù)情況修改它們:如圖8:) @" |/ W! y+ r" A0 z2 G2 c
圖8:修改磁盤配額 拒絕將磁盤空間給超過配額限制的用戶:選擇這個復選框,當用戶超過了分配的磁盤空間時,他們就會收到一個空間已用完的消息,而且不能在往空間里面寫任何東西6 ^' {- u1 g" s
不限制磁盤使用:當你不打算限制用戶磁盤空間時,單擊這個選項。3 w1 v* e+ E5 G: j! |: h
將磁盤空間限制為:配置用戶可以使用的磁盤空間容量
) y; }6 n5 N+ Z 將警告等級設置為:配置在用戶登陸空間時,如果空間使用已經達到警告空間等級,將會發(fā)送一個信息給該用戶,提醒用戶空間快使用完了8 c! P% n. m6 u1 h8 D9 k- C2 a
配額項:單擊這個按鈕可以打開配額項對話框,在這個對話框中,可以通過配置菜單分別定制每個用戶磁盤空間。也可以刪除老用戶空間配額限制。另外它的主界面就是一個用戶配額監(jiān)控器。如圖9:$ h4 d+ d5 p: ~6 G6 p8 y
圖9:用戶配額監(jiān)控器 設置好后確定-關閉屬性窗口,這時用戶的磁盤配額就已經設置好了。還是比較簡單的。
! p$ o, `& N% I0 r4 b 三、IIS和用戶環(huán)境的安全問題
- k6 ]# Q* P& l/ F9 I% ?3 J# u% A* [: j/ m: W1 Y! ]: Q N
記得一位資深的安全人士曾經說過,從Windows 2000 Server開始,本身的系統(tǒng)漏洞和網絡漏洞已經不是那么多了,甚至可以說Windows本身安全系數(shù)已經超越了LINUX系統(tǒng)本身,(這里我只是引用語句,希望不會引發(fā)Windows和LINUX向來的爭論)但由于Windows周邊產品漏洞和不安全因數(shù)太多,尤其是IIS服務。才導致人人說它不安全。! \$ t3 r0 q. I7 h, `7 n |
由于系統(tǒng)的安全問題實在是太過于龐大,所分的體系也非常多,不可能面面具到,所以我根據(jù)個人經驗說幾個和虛擬主機密切相關的安全問題,但由于這些問題要想得到徹底的解決說明的話,那需要太多的篇幅,這里我也只能指出這些問題,和解決這些問題的思路。- Y+ Z: V7 c5 ]
支持ASP系統(tǒng)的IIS安全問題:
; s9 I2 x6 [% Y: ]0 [ 在支持ASP的IIS系統(tǒng)中,主要問題有兩個,一個是由于ASP頁面的輸入框引起的安全攻擊。在ASP頁面中,我們經??梢钥匆娸斎肟?,如登錄帳號、密碼、查詢、手機等等..這些控件其實是很危險的,因為這些控件的后臺往往是連接著數(shù)據(jù)庫,(SQL、Oracle等)有經驗的程序員可以通過這些輸入框輸入數(shù)據(jù)庫命令,在通過系統(tǒng)本身的數(shù)據(jù)庫執(zhí)行后,得到數(shù)據(jù)庫帳號和密碼。那也意味著離得到SYSTEM或Administrator帳號不遠了。
, Q* z I4 t2 d! `3 @1 w5 T G 所以,一般在做ASP頁面時,我們在有這些輸入框的窗口上都做一些限制,如最多只能輸入多少個字符、哪些特殊字符不允許輸入等等。但現(xiàn)在很少有網站能做到滴水不漏的,可能也是因為工作量太大的緣故吧:( 第二個問題是FileSystemObject這個組件為 ASP 提供了對默認的Windows Server服務器硬盤上的任何文件進行讀、寫、復制、刪除、改名等操作。權限實在是太大。也導致一些惡意虛擬主機租借用戶利用這個ASP組件來攻擊和控制系統(tǒng)。所以在不是必要的情況下,請不要啟用它。太危險了。; h8 J# N+ c! z3 a- b- o
基本系統(tǒng)設置安全問題:5 @5 f% V0 h5 R. B
一、端口設置。端口是計算機和外部網絡相連的邏輯接口,也是計算機的第一道屏障,由于做虛擬主機的系統(tǒng)一般不需要開太多的端口,所以可以在網卡屬性、Internet協(xié)議(TCP/IP)屬性、高級、選項、TCP/IP篩選屬性里進行添加。不過Windows Server TCP/IP篩選設置做的有點問題:只允許開哪些端口,不允許關哪些端口,郁悶吧。# ~6 |' P) F6 V9 }2 B1 J
二、IIS設置:首先,把C盤中的默認的IIS目錄Inetpub徹底刪掉,在Internet信息服務(IIS)管理器中將默認WEB網站給停止,從新建立你所需要的WEB發(fā)布站點,但注意,請把你要發(fā)布站點的目錄建立在其他盤符,并不要給其命名一些相對簡單或容易猜中的名字,如WEB、IIS、Inetpub等。其次,在Internet信息服務(IIS)管理器中刪除在你虛擬主機上不想用到的文件名映射,如,你的系統(tǒng)只需要支持ASP和HTML的話,那只要保留這個兩個文件名映射就可以了,其他的都可以刪除,步驟為在Internet信息服務(IIS)管理器中右擊主機、屬性、WWW服務、編輯、主目錄配置、應用程序映射,然后就開始一個個刪吧。最后在的應用程序調試書簽內將腳本錯誤消息改為發(fā)送文本就基本可以了。1 C% Q: r3 Z% q6 T' C8 e
三、預防DoS: DOS:即Denial Of Service,拒絕服務的縮寫,原理就是生產出大量的數(shù)據(jù)包讓服務器不停的處理,導致服務器不能對其他的數(shù)據(jù)產生響應。在注冊表HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中更改以下值可以幫助你防御一定強度的DoS攻擊 SynAttackProtect REG_DWORD 2 EnablePMTUDiscovery REG_DWORD 0 NoNameReleaseOnDemand REG_DWORD 1 EnableDeadGWDetect REG_DWORD 0 KeepAliveTime REG_DWORD 300,000 PerFORMRouterDiscovery REG_DWORD 0 EnableICMPRedirects REG_DWORD 0
( {. V2 J9 @, p' N6 t 四、工作進程隔離:在虛擬主機上經常會出現(xiàn)由于某個用戶WEB站點的應用程序出錯,進入無限循環(huán),導致服務器資源大量消耗,最終死機的情況,這個問題在以往的IIS中是很難解決的,有時還得借助第三方軟件。! p% U4 T( N* ~: o, w2 X' y) I+ P8 _
# h* a% b1 V. J 但現(xiàn)在,IIS 6.0 引入了工作進程隔離模式,該模式可以在隔離環(huán)境中運行所有的 Web 應用程序。當在工作進程隔離模式下運行 IIS 時,可以將應用程序配置成在單獨的應用程序池中運行。每個應用程序池在邏輯上表示一個可配置的工作進程,并且鏈接到池中的應用程序。工作進程彼此獨立運行;它們可能失敗,但不會影響其他工作進程。應用程序池保護其中的應用程序免受支持其他應用程序池的工作進程的影響。這樣,就可以避免應用程序相互影響。
/ X2 n$ z1 Q1 o1 v/ L 在工作進程隔離模式下,超文本傳輸協(xié)議 (HTTP) 請求被直接路由到服務于已配置的應用程序的內核應用程序池隊列。服務于應用程序池的工作進程會將請求直接從該隊列中拉出,避免了進程切換的開銷。為進一步保護 WWW 服務,IIS 6.0 會隔離關鍵的萬維網發(fā)布服務組件,如 HTTP 協(xié)議堆棧和 WWW 服務管理和監(jiān)控,避免其受到在工作進程中運行的第三方代碼的影響。3 U4 n* h. ~8 v6 y, q3 s( [+ P
HTTP 協(xié)議堆棧接受 WWW 服務請求并將其排入隊列。當工作進程處于不正常的狀態(tài)并因此中斷處理請求時,HTTP 協(xié)議堆棧會繼續(xù)處理請求。同時,WWW 服務將檢測不正常的工作進程并將其關閉。如果要求新工作進程為請求提供服務,WWW 服務會啟動一個新工作進程以便從 HTTP 協(xié)議堆棧中獲取隊列中的請求。即使工作進程失敗,WWW 服務仍會繼續(xù)處理請求并保護用戶免于丟失服務。打開 Internet信息服務(IIS)管理器,展開服務器,右鍵點擊應用程序池,選擇屬性。就可以在彈出的對話框中根據(jù)自己的系統(tǒng)環(huán)境進行進程隔離設置了。如圖10:
6 @ j3 R! V3 K- |2 ~圖10:Internet信息服務(IIS)管理器 由于系統(tǒng)環(huán)境比較多樣化,所以很難有一個設置的標準,所以具體的設置請參考Windows 2003的幫助。( P& p4 n, B: Y* @
五、查看事件查看器:作為一個網管就應該時時刻刻的觀察服務器的安全性,而事件查看器可以反映系統(tǒng)80%的安全情況,這需要我們要養(yǎng)成每天分析事件查看器的習慣。一般情況是每天早晚各查看一次,并保留一個星期的日志。 |