明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

安全維護(hù) IIS asp 網(wǎng)站的高級(jí)技巧

[摘要]一:前言 (僅以此文感謝好友bigeagle。不是他,我可能不用這么擔(dān)心win2000安全問(wèn)題的。呵呵。 人說(shuō),一朝被蛇咬,十年怕.....。就是這樣。2000年初,當(dāng)我終于擺脫winnt 4.0 server那可怕的補(bǔ)丁之旅,邁向win2000 server時(shí)。我終于可以比較放心我的服務(wù)...
一:前言
  (僅以此文感謝好友bigeagle。不是他,我可能不用這么擔(dān)心win2000安全問(wèn)題的。呵呵。

   人說(shuō),一朝被蛇咬,十年怕.....。就是這樣。2000年初,當(dāng)我終于擺脫winnt 4.0 server那可怕的補(bǔ)丁之旅,邁向win2000 server時(shí)。我終于可以比較放心我的服務(wù)器了。但隨著sp1的補(bǔ)丁出現(xiàn)。我知道,與微軟的補(bǔ)丁因緣又開(kāi)始輪回了。但還好。win2000自動(dòng)化的管理還是讓我放心好多,而以前管理winnt后
的失眠癥狀也逐漸消失了。偶爾還能見(jiàn)到我的“夢(mèng)”老弟。但這一切都伴隨者同bigeagle的一次知心交談中付之東流了。一次。bigeagle發(fā)來(lái)qq。給我看了一段代碼。我一看就知道這不是bigeagle寫的代碼,那

么爛,不過(guò)有點(diǎn)熟悉。再一看。?!這不是我的數(shù)據(jù)庫(kù)連接字符串嗎!!GOD。頓時(shí)覺(jué)得有一種不祥的預(yù)兆。不過(guò)還好,這個(gè)只是個(gè)access的,我還用了一些手段防止他被下載。但這足以讓我長(zhǎng)時(shí)間的失眠又來(lái)了。(再次說(shuō)明,bigeagle不是蛇,他是鷹)

二:安裝過(guò)程中的IIS 與 asp安全防護(hù)。(這里只考慮是web服務(wù)器,而不是本地機(jī)子上的web開(kāi)發(fā)平臺(tái)。



   接下來(lái)的幾天有是幾個(gè)難熬的日子。我開(kāi)始重新部署win2000 web服務(wù)器的安全策略。

   找到asp代碼被泄漏的原因,原來(lái)。我的補(bǔ)丁每次打得都比較及時(shí)的。但一次因?yàn)樾遁dFTP時(shí),重裝了IIS,而這之后,我并沒(méi)有再打補(bǔ)丁而導(dǎo)致最新的漏洞web解析出錯(cuò)。(就是那個(gè)較新的漏洞 Translate

:f 用這個(gè)加上一些工具就可以看到asp的代碼了。)
   首先,開(kāi)始重裝IIS。
   這次安裝的策略就是安全,夠用。去掉一些多余的東西。
   一:FTP不要安裝了,功能不好,還容易出錯(cuò),并且漏洞很大。Ftp缺省傳輸密碼的過(guò)程可是明文傳送

,很容易被人截獲。(可以考慮用第三方工具。)
   二:一切實(shí)例、文檔也不要安裝了。這是在web服務(wù)器上,最好不要這些例子,事實(shí)證明可以從這些例

子站點(diǎn)突破IIS的防線的。

   三:安裝時(shí)選擇站點(diǎn)目錄,建議不要用缺省目錄c:\inetpub,最好安裝道不是系統(tǒng)盤的盤上。如:

d:\IISWEB,可以考慮自建目錄。這樣即使IIS被突破,也能盡可能的保護(hù)好系統(tǒng)文件了。
   
   四:不要安裝html的遠(yuǎn)程管理。html的遠(yuǎn)程管理在winnt 4.0還能用的上,但漏洞比較大,而且比較危

險(xiǎn),端口號(hào)雖然是隨機(jī)的,但很容易被人掃描道,從而留下隱患。事實(shí)上,我們可以通過(guò)另一臺(tái)服務(wù)器上

的IIS來(lái)管理他。這樣比較安全。

   五:多余的服務(wù)也不要安了,如NNtp,如果不做新聞組。就不要安了。smtp,如果有更好的郵件服務(wù)

,也不要裝他了。
   
   六:索引服務(wù)器。這個(gè)索引真的是很有用,但我沒(méi)有用過(guò)他。否則,你可以用他建立個(gè)整個(gè)站點(diǎn)的文件搜索的,但現(xiàn)在好像大多數(shù)的asp網(wǎng)頁(yè)都是一個(gè)網(wǎng)頁(yè),動(dòng)態(tài)從數(shù)據(jù)庫(kù)里查詢。所以根本用不上索引服務(wù)器了,(不是索引不好,而是本身上面的那種asp文件結(jié)構(gòu)就不適合)所以可以不要安裝。

三:有目的進(jìn)行安全配置。

一:開(kāi)發(fā)前的工作。
   
  首先,啟動(dòng)IIS后,看有沒(méi)有\(zhòng)iissamples,\IIShelp,\msadc\,這些目錄,如果有,他們大多是用來(lái)作為例子,幫助安裝的,刪掉他們,再把腳本庫(kù)也刪掉,直到web目錄只留下干靜的新建的虛擬目錄即可,如果有管理的web站點(diǎn),也刪掉他。沒(méi)有他,我們一樣可以工作的更好。 還有看看有沒(méi)有printer的文件夾,
他們大多數(shù)都是些通過(guò)web來(lái)訪問(wèn)打印機(jī)的。MS就是怪。為了表示我的功力強(qiáng)大,允許通過(guò)web來(lái)遠(yuǎn)程打印。相信沒(méi)有哪個(gè)網(wǎng)絡(luò)公司是通過(guò)web網(wǎng)來(lái)打印的把。也不可能讓網(wǎng)友來(lái)使用你的計(jì)算機(jī)吧。那好,去掉他



   然后。開(kāi)始詳細(xì)配置各個(gè)web虛擬目錄的安全。大概的策略是這樣的。

   分類每個(gè)文件夾管理,如,可以吧擴(kuò)展名是相同的分配到同一目錄,如*.asp的,和*.inc就盡量分開(kāi)。如果是*.asp的,則開(kāi)放虛擬目錄權(quán)限,但將實(shí)際目錄權(quán)限授予administrator,system(完全控制)everyone (rc)即可。這樣可以通過(guò)web允許讀取。但實(shí)際上你可以加大安全力度,如果你認(rèn)位他是比較保

密的。如果是*.inc的,則開(kāi)放目錄權(quán)限,但不允許通過(guò)直接訪問(wèn)。這里又一個(gè)技巧了。比如。你可以允許實(shí)際目錄被everyone訪問(wèn),但在IIS中,你把改目錄瀏覽項(xiàng)去掉,則改包含文件只能被源文件讀取,但不允許被直接讀許。這樣,他就不可能下在倒一些你的單機(jī)數(shù)據(jù)庫(kù)了。而且你的*.inc文件也不會(huì)被瀏覽器直接閱讀。
  剛才我的老弟“夢(mèng)”還在問(wèn)我,有沒(méi)有辦法可以讓別人看不到你的連接字符串,你可以試試下面的方法!
  1 首先建立連接字符串,并建立一個(gè)單獨(dú)的文件*.inc(要是*.inc的,不要*.asp的)你把你的連接字

符串用變量復(fù)制進(jìn)來(lái)。
  如:connstr=""Provider=SQLOLEDB.1;Password=passw;...................."
  2 然后建立一個(gè)文件夾include,放在根目錄里。
  3 然后每一個(gè)文件用下面的辦法打開(kāi)連接。
  如:<!-- #include file="include\*.inc" -->
      set conn=server.createobject("adodb.connection")
      conn.open connstr

  4 最后在iis里把include 文件夾用拒絕讀的方法保護(hù)起來(lái)。你會(huì)發(fā)現(xiàn),你的連接可以照常打開(kāi),但是如果對(duì)方看到你的源代碼,他也看不到連接字符串,即使他看到了包含文件路徑及名稱。他也無(wú)法下載,或是用ie 打開(kāi)。所以,可以保護(hù)你的連接字符串了。
  

   這里用的方法是Nt 權(quán)限與 IIS權(quán)限的共同審核。我們知道,為了讓用戶從web上訪問(wèn)道服務(wù)器的文件,每個(gè)安裝了IIS后的服務(wù)器都會(huì)有兩個(gè)內(nèi)置賬號(hào)。I_USExxxxxx,I_WAMxxxxxx(x為你的機(jī)器名),這樣你就可以有的放矢的防治某些從你的web網(wǎng)絡(luò)查看你的必要信息的用戶了。

   當(dāng)然,還有一些比較好的文件策略你可以參考一下:
   如:CGI (.exe, .dll, .cmd, .pl)Everyone (X)不允許讀去,運(yùn)行。Administrators(完全控制)
System(完全控制)
   所以,你在編寫asp應(yīng)用程序時(shí),盡量歸類好你的目錄。方便用IIS和NT進(jìn)行管理。
   如。采用下列結(jié)構(gòu)比較好
  d:\web\asptest\static (放置*.htm)
  d:\web\asptest\script (放置*.asp)
  d:\web\asptest\include(放置*.inc)
  d:\web\asptest\images (放置*.gif,*.jpg)
這樣你就可以用上面的方法來(lái)達(dá)到安全目的了。

二:?jiǎn)⒂萌罩颈O(jiān)測(cè)。

這是亡羊補(bǔ)牢的好工具,至少你可以用它來(lái)監(jiān)測(cè)誰(shuí)通過(guò)webl干了什么,當(dāng)然,你還要保護(hù)該日志的權(quán)限只能是被系統(tǒng)管理員。和超級(jí)管理所控制。這樣避免某些人的干了某些事而不留痕跡。為了留好現(xiàn)場(chǎng)而又不影響IIS的響應(yīng)速度。還是建議選則w3c擴(kuò)展日志格式比較好。(以前別人介紹我用ODBC,看來(lái)比較方便,

但實(shí)際上不是這樣。他受到數(shù)據(jù)庫(kù)的影響很大。而且速度較慢了)。
可以考慮紀(jì)錄下一下現(xiàn)場(chǎng)數(shù)據(jù):
客戶 IP 地址
用戶名
方法
URI 資源
HTTP 狀態(tài)
Win32 狀態(tài)
用戶代理
服務(wù)器 IP 地址
服務(wù)器端口

如果在一臺(tái)計(jì)算機(jī)上有多個(gè) Web 服務(wù)器,則后兩種屬性非常有用。Win32 狀態(tài)屬性對(duì)于調(diào)試非常有用。檢查日志時(shí),密切注意錯(cuò)誤 5,這意味著訪問(wèn)被拒絕。在命令行上輸入 net helpmsg err,可找出其它 Win32 錯(cuò)誤的含義,其中 err 是要查找的錯(cuò)誤號(hào)。


三:配置合適的腳本映射。

  相信我,大部分的asp源代碼泄漏都是通過(guò)不安全,或是有錯(cuò)誤的腳本映射導(dǎo)致的。而他們中的大多數(shù)可能你用不到。如下面我說(shuō)的。

  1 *.htr這是一個(gè)比較厲害的文件,他是web應(yīng)用程序的一種。同hta一樣。這是些比較厲害的功能,但介紹很少。hta就是一種html 格式的 application,功能比較強(qiáng)大。切安全性比htm要低。所以可能會(huì)導(dǎo)致功能強(qiáng)大的操作。比如htr就可以通過(guò)web來(lái)重社密碼。相信我們大多數(shù)的asp程序員和NT網(wǎng)管不需要這個(gè)把。那好,把他的對(duì)應(yīng)選項(xiàng)刪掉好了。否則,任何人都可以通過(guò)你的web來(lái)進(jìn)行非法操作,甚至格式化

掉你的硬盤。

  2 *.hta 這個(gè)我已經(jīng)說(shuō)過(guò)了,他是把雙刃劍,用的好,你可以通過(guò)他來(lái)訪問(wèn)nt的很多操作,在asp上開(kāi)nt用戶也是可能的。但大多數(shù)的工作可以不通過(guò)web來(lái)事最好的。而*.hta在web很少用到,雖然他在iis4.0就推出了。比如,你把一個(gè)文件保存成*.hta,你就可以用ie打開(kāi)。看看,很奇怪的界面吧。聽(tīng)ms

的工程師說(shuō).net中吧*.hta換了個(gè)說(shuō)法,功能加大了。看來(lái)網(wǎng)管的工作又該加大了。如果你想安全一些。刪掉吧。

  3 *.idc 這個(gè)東東是個(gè)比較老的數(shù)據(jù)庫(kù)連接方法了,現(xiàn)在大多數(shù)都直接用asp文件。不用idc了,所以刪掉他。

  4 *.printer這個(gè)是打印機(jī)文件。去掉他好了
  
  5 *.htw , *.ida *.idq這些都是索引文件,也可以去掉了。

四:好的安全習(xí)慣。

  賬號(hào)策略,密碼策略
  這些其實(shí)都在我的前兩片貼子貼過(guò)了。,等等,感興趣的可以看看相關(guān)文章。
  另外。還要注意要多上ms的站點(diǎn),看看安全公告。(MS的訪問(wèn)量就是這樣長(zhǎng)期排行世界前三的。
  還要準(zhǔn)備好一些第三方的工具。如掃描工具,模擬攻擊工具。多上安全站點(diǎn)看看。
  如果你可以交道一些比較好的黑道朋友(我另一個(gè)師兄家家的方法),也是比較好的。(黑道是黑客走的路。
  

五:防止asp代碼被泄漏。
  
  這里只能說(shuō)是防止,我只有從已經(jīng)發(fā)現(xiàn)的看asp方法的漏洞入手,現(xiàn)在對(duì)于iis4.0則幾乎有20種以上的辦法,但安裝了sp6a后有兩種,可以到微軟的網(wǎng)站安全公告下載2000-8月后的補(bǔ)丁可以解決。但如果你用了本文上面的方法?梢匝b到sp6就可以了。

  如果是win2000 server,則有兩種方法。安了sp1后,還有一種,所以你必須倒微軟安全公告欄去下載

相應(yīng)的hotfix?梢越鉀Q。

六:防止惡意的破壞。

  這個(gè)功能能對(duì)付一些被你監(jiān)測(cè)到的不良分子,你可以在日志中、或第三方工具看到到底是誰(shuí)在不停的探測(cè)、破壞你的IIS,那么把他列為不收歡迎的黑名單,這樣,你再配置站點(diǎn)時(shí)可以對(duì)其IP,或域進(jìn)行拒絕訪問(wèn),不過(guò)這一過(guò)程是要付出代價(jià)的,你的IIS要擔(dān)任反向查找的功能。可能會(huì)比較耗時(shí)。

六: 安全的話題。
   以上還只是IIS與asp的。如果你要用道數(shù)據(jù)庫(kù)。用道遠(yuǎn)程管理,用道遠(yuǎn)程連接數(shù)據(jù)庫(kù)。那還要分別注意。正如我說(shuō)的。沒(méi)有絕對(duì)的安全。而這也才是安全的需要。關(guān)于安全的話題,沒(méi)有結(jié)束,只有待續(xù)。。