|
一.虛擬主機需要的軟體及環境
1.Serv-U
2.Mysql資料庫
3.Mssql資料庫
4.PcAnyWhere遠端控制
5.殺毒軟體,我一般使用諾頓
6.php
7.ActivePerl
以上各種軟體,除Mssql資料庫以為,其他的都應去官方網站下載推薦版本安裝。下面開始就是安裝設定了,從系統安裝完開始。假設系統安裝的windows2000進階伺服器版,系統分為c碟,d盤和e盤,全部是ntfs格式。
二.系統連接阜設定
虛擬主機,一般同時使用PcanyWhere和終端服務進行控制,終端服務要更改連接阜,比如修改成8735連接阜。根據要開放的服務,去設定TCP/IP篩選。為什麼不使用本機安全原則了?個人認為TCP/IP篩選比較嚴格,因為這裡是除非明確允許否則拒絕,而本機安全原則是除非明確拒絕否則允許。如果我理解不當,還請指教。TCP/IP篩選設定如下:
TCP連接阜只允許21,80,5631,8735,10001,10002,10003,10004,10005;IP傳輸協定只允許6;UDP連接阜我沒有做過詳細測試,不敢亂說,以後測試了再補上。TCP/IP連接阜裡面的10001-10005是設定Serv-U的PASV模式使用的連接阜,當然也可以使用別的。
本機連接內容裡面,卸載所有的其他傳輸協定,只留下Internet傳輸協定(TCP/IP),順便把administrator帳號改個複雜點的名字,並且在本機安全原則裡面設定不顯示上次登入帳號,對帳號鎖定做出合適的設定。然後重新啟動電腦,這步設定已經完成。
三.系統權限設定
現在開始安裝軟體,所有的軟體都安裝在d盤,e盤作資料制作備份使用。先安裝Serv-U到d:\Serv-U,並且漢化順便破解,嘿嘿。然後依次安裝到d盤。現在開始設定權限。首先二話不說,c碟,d盤和e盤的安全裡面把Everyone移除,增加改名後的administrator和system,讓他們完全控制。進階裡面重置所有子對象的權限並允許傳播可繼承權限。這樣系統所有的文件,目錄全部是由改名後的administrator和system控制了,並且自動繼承上級目錄的權限,下面開始為每個目錄設定對應的權限。
執行asp,建立資料庫連接需要使用C:\Program Files\Common Files目錄下面的文件。在這裡,設定C:\Program Files\Common Files權限,加入everyone,權限為讀取,列出資料夾目錄,讀取及執行。還可以使用進階標籤進行更加嚴格的設定,但是我沒有做過,不敢胡說。
執行php,需要設定c:\winnt\php.ini的權限,讓everyone有讀取權限即可。如果php的session目錄設定為c:\winnt\temp目錄,此目錄應該讓everyone有讀取寫入權限。為提高效能,php設定為使用isapi解析,d:\php目錄讓everyone有讀取,列出資料夾目錄,讀取及執行權限。至於php.ini的設定,這裡我就不說了。第一我不很懂,第二我只講系統權限設定。
執行cgi,設定d:\perl讓everyone有讀取,列出資料夾目錄,讀取及執行權限。順便說下,cgi設定為使用isapi方式解析有利於安全和效能。
現在說下讓人頭大的Serv-U的設定了。這東西功能確實強大,但是安全性不怎麼好,需要我們來改造。最首先的是溢位攻擊,5.0.11好像已經沒有這個缺陷了。其次是修改ini組態文件,這裡已經沒有權限修改了,略過不提。據我所知現在唯一的辦法就是使用預設的管理帳號和密碼增加有寫入執行權限的帳號來執行木馬了。把預設帳號密碼修改掉就完了,這個東西直接使用editplus之類的編輯器開啟ServUDaemon.exe和ServUAdmin.exe修改就可以了。如果懶得麻煩,隨便什麼語言寫個程序都很容易作到。我以前寫過一個這樣的東西,方便自己設定。現在Serv-U基本上沒有什麼問題了。
至於資料庫,權限已經不用設定了,直接繼承d盤根目錄就可以。至於裡面的帳號密碼該怎麼設定,我也懶得說了。
現在最後一點,就是設定c:\winnt\system32目錄和他下面的一些東西了。很多程序執行需要這裡的動態連接程式庫,而且這裡文件太多,我也沒有弄明白所有的,把目錄c:\winnt\system32給everyone賦予讀取,列出資料夾目錄,讀取及執行即可。其實,這樣做是不安全的,但是別慌,我們還沒有完。在這個目錄下面,我們還需要對幾個特別程序進行單獨的設定。首先就是cacls.exe,嘿嘿,先把這個設定了在說別的。這東東是設定權限用的,讓它不繼承父目錄權限,並且讓它拒絕任何人訪問,因為我們一般不使用這個鳥東西。其他的要設定的程序列表如下:net.exe,cmd.exe,ftp.exe,tftp.exe,telnet.exe,這幾個程序設定成只允許改名後的administrator訪問。
---------------------------------第一步完---------------------------------------
------------------------------------------------ 第二步-------------------------
現在絕大多數的虛擬主機都禁用了 ASP 的標準元件:FileSystemObject,因為這個元件為 ASP 提供了強大的文件系統訪問能力,可以對伺服器硬碟上的任何文件進行讀、寫、複製、移除、改名等操作(當然,這是指在使用預設設定的 Windows NT / 2000 下才能做到)。但是禁止此元件後,引起的後果就是所有利用這個元件的 ASP 將無法執行,無法滿足客戶的需求。
如何既允許 FileSystemObject 元件,又不影響伺服器的安全性(即:不同虛擬主機用戶之間不能使用該群組件讀寫別人的文件)呢?這裡介紹本人在實驗中獲得的一種方法,下文以 Windows 2000 Server 為例來說明。
下面要做的就是給每個虛擬主機用戶設定一個單獨的用戶帳號,然後再給每個帳號分配一個允許其完全控制的目錄。
如下圖所顯示,開啟「電腦管理」→「本機用戶和組」→「用戶」,在右欄中點擊滑鼠右鍵,在彈出的表單中選項「新用戶」:
在彈出的「新用戶」對話視窗中根據實際需要輸入「用戶名」、「全名」、「描述」、「密碼」、「驗證密碼」,並將「用戶下次登入時須更改密碼」前的對號去掉,選「用戶不能更改密碼」和「密碼永不過期」。本例是給第一虛擬主機的用戶建立一個匿名訪問 Internet 訊息服務的內裝帳號「IUSR_VHOST1」,即:所有客戶端使用 http://xxx.xxx.xxxx/ 訪問此虛擬主機時,都是以這個身份來訪問的。輸入完成後點「新增」即可。可以根據實際需要,新增多個用戶,新增完畢後點「關閉」:
現在新增立的用戶已經出現在帳號列表中了,在列表中雙按該帳號,以便進一步進行設定:
在彈出的「IUSR_VHOST1」(即剛才新增的新帳號)內容對話視窗中點「隸屬於」選擇項:
剛建立的帳號預設是屬於「Users」組,選該群組,點「移除」:
現在出現的是如下圖所顯示,此時再點「增加」:
在彈出的「選項 組」對話視窗中找到「Guests」,點「增加」,此組就會出現在下方的文本項中,然後點「確定」:
出現的就是如下圖所顯示的內容,點「確定」關閉此對話視窗:
開啟「Internet 訊息服務」,開始對虛擬主機進行設定,本例中的以對「第一虛擬主機」設定為例進行說明,右擊該主機名,在彈出的表單中選項「內容」彈出一個「第一虛擬主機 內容」的對話視窗,從對話視窗中可以看到該虛擬主機用戶的使用的是「F:\VHOST1」這個資料夾:
暫時先不管剛才的「第一虛擬主機 內容」對話視窗,切換到「檔案總管」,找到「F:\VHOST1」這個資料夾,右擊,選「內容」→「安全」選擇項,此時可以看到該檔案夾的預設安全性設定是「Everyone」完全控制(視不同情況顯示的內容不完全一樣),首先將最將下的「允許將來自父系的可繼承權限傳播給該對像」前面的對號去掉:
此時會彈出如下圖所顯示的「安全」警告,點「移除」:
此時安全性選項卡中的所有組和用戶都將被清空(如果沒有清空,請使用「移除」將其清空),然後點「增加」按鈕。
將如圖中所顯示的「Administrator」及在前面所新增的新帳號「IUSR_VHOST1」增加進來,將給予完全控制的權限,還可以根據實際需要增加其他組或用戶,但一定不要將「Guests」組、「IUSR_機器名」這些匿名訪問的帳號增加上去!
再切換到前面開啟的「第一虛擬主機 內容」的對話視窗,開啟「目錄安全性」選擇項,點匿名訪問和驗證控制的「編輯」:
在彈出的「驗證方法」對方框(如下圖所顯示),點「編輯」:
彈出了「匿名用戶帳號」,預設的就是「IUSR_機器名」,點「瀏覽」:
在「選項 用戶」對話視窗中找到前面新增的新帳號「IUSR_VHOST1」,雙按:
此時匿名用戶名就改過來了,在密碼項中輸入前面新增時,為該帳號設定的密碼:
再確定一遍密碼:
OK,完成了,點確定關閉這些對話視窗。
經此設定後,「第一虛擬主機」的用戶,使用 ASP 的 FileSystemObject 元件也只能訪問自己的目錄:F:\VHOST1 下的內容,當試圖訪問其他內容時,會出現諸如「沒有權限」、「硬碟未準備好」、「500 伺服器內部錯誤」等出現錯誤提示了。
另:如果該用戶需要讀取硬碟的分區容量及硬碟的序列號,那這樣的設定將使其無法讀取。如果要允許其讀取這些和整個分區有關的內容,請右鍵點擊該硬碟的分區(磁碟區),選項「內容」→「安全」,將這個用戶的帳號增加到列表中,並至少給予「讀取」權限。由於該磁碟區下的子目錄都已經設定為「禁止將來自父系的可繼承權限傳播給該對像」,所以不會影響下面的子目錄的權限設定。 |
|