摘 要:對于大多數(shù)使用Linux虛擬主機(jī)下的Apache環(huán)境部署網(wǎng)站的管理人員來說,因缺乏相應(yīng)的root權(quán)限而使得其對網(wǎng)站的安全維護(hù)成為重點(diǎn)工作之一。本文將介紹如何利用該環(huán)境下的分布式配置文件.htaccess來改變服務(wù)器的配置而最終達(dá)到保護(hù)網(wǎng)站安全的目的。
關(guān)鍵詞:htaccess;Apache;網(wǎng)站安全
中圖分類號:TP399
在Internet上廣泛部署WEB服務(wù)是現(xiàn)今信息傳播的最主要途徑,而基于此類應(yīng)用的Linux加Apache的組合因其出色的表現(xiàn),在眾多WEB服務(wù)虛擬主機(jī)環(huán)境配置中占據(jù)著極大的市場份額。而基于網(wǎng)站集群管理的WEB服務(wù)提供商往往基于統(tǒng)籌策略給予客戶有限的主機(jī)管理權(quán)限,此時網(wǎng)站的設(shè)計(jì)與管理人員則可以通過.htaccess文件自己修改服務(wù)器配置實(shí)現(xiàn)權(quán)限控制保護(hù)網(wǎng)站安全。使用.htaccess方式不需要編寫程序就能方便實(shí)現(xiàn),只需掌握特定的配置指令及rewrite規(guī)則即可。
1 .htaccess文件與rewrite規(guī)則定義
.htaccess文件是Apache服務(wù)器上的一個基于文本的分布式配置文件,它提供了針對目錄改變配置的方法,常用在內(nèi)容提供者需要針對特定目錄改變服務(wù)器的配置而又沒有root權(quán)限的情況下,通過自行修改該文件實(shí)現(xiàn)權(quán)限控制。
Rewrite規(guī)則主要的功能就是實(shí)現(xiàn)URL的跳轉(zhuǎn),它的正則表達(dá)式是基于Perl語言,可基于服務(wù)器級和目錄級兩種方式,本文我們討論的是后者。
2 Apache下的PHP執(zhí)行權(quán)限控制
網(wǎng)站安全策略中,對目錄的執(zhí)行權(quán)限是非常敏感的,一般來說,對于可寫入的目錄是禁用腳本執(zhí)行權(quán)限的,像DedeCMS系統(tǒng),可寫入的有兩個目錄data、uploads,data目錄主要是基本配置文件和緩存數(shù)據(jù),uploads則是附件上傳保存的目錄,禁止該目錄的執(zhí)行權(quán)限可有效防止惡意寫入可執(zhí)行腳本導(dǎo)致網(wǎng)站被攻擊的可能性。我們也建議把其他一些生成純靜態(tài)html的目錄也去除執(zhí)行權(quán)限,這樣系統(tǒng)會更為安全。
該方法基于.htaccess文件中使用rewrite來達(dá)到禁止指定腳本的運(yùn)行,規(guī)則內(nèi)容如下:
[1]RewriteEngine on RewriteCond%!^$
[2]RewriteRule filePath/(.*).(php)$–[F]
其中,方括號表示代碼行序號,在規(guī)則書寫時切記去掉,代碼行[1]表示啟用rewrite開關(guān),可不必重復(fù)書寫,以下類同。將上述代碼存儲至到.hatccess文件并保存到對應(yīng)的filePath站點(diǎn)目錄下,這樣filePath目錄下的php腳本(如上例)的執(zhí)行權(quán)限就禁止了。
3 防止站內(nèi)資源盜用
現(xiàn)在互聯(lián)網(wǎng)上原創(chuàng)的內(nèi)容被轉(zhuǎn)載、盜鏈的現(xiàn)象很普遍,為有效防止盜鏈,擠占服務(wù)器帶寬,以及一定程度保護(hù)站內(nèi)資源版權(quán),可通過.htaccess文件來設(shè)置資源文件防盜鏈。規(guī)則內(nèi)容如下:
[1]RewriteCond%{HTTP_REFERER}!^$
[2]RewriteCond%{HTTP_REFERER}!^http://(www\.)?domain.com(/)?.*$[NC]
[3]RewriteRule.*\.(gif|jpg|jpeg|bmp|png)$http://www.xxx.com/photo.jpg[R,NC,L]
其中,代碼行[2]表示允許訪問行[3]所列資源類型的域名來源,為保障搜索引擎收錄及本地站點(diǎn)調(diào)用,用戶可自行擴(kuò)展,例如可另起多行,將百度、谷歌、雅虎及本地域名等設(shè)置其中。代碼行[3]表示將外鏈的圖片資源文件替換為指定路徑下的特定圖片,這里需要注意的是替換圖片建議為非本站的圖片文件,否則會造成死循環(huán)。對于其他類型的資源保護(hù),用戶可根據(jù)實(shí)際情況變更代碼行[3]的文件類型即可。
4 自定義錯誤頁
當(dāng)我們訪問某網(wǎng)站時,不合理的訪問,或者網(wǎng)站自身的問題,會出現(xiàn)各種的錯誤返回頁面。從安全角度上講,這就給攻擊者提供了某種判斷的依據(jù),為了防止這種情況,我們同樣可借助.htaccess來控制錯誤的處理方法。HTTP協(xié)議錯誤定位在400到505之間,正因?yàn)檫@些錯誤被標(biāo)準(zhǔn)化,WEB服務(wù)器處理錯誤的方法最終就取決于網(wǎng)絡(luò)管理員,使得其可以擁有自己的、個性化的錯誤頁面(例如找不到文件時),而不是服務(wù)商提供的默認(rèn)頁。配置錯誤頁的重定向語法如下:
[1]ErrorDocument[error code] [url]
[error code]為錯誤代碼,[url]可自定義為任意一個有效的網(wǎng)絡(luò)地址。舉例來說,如果我的根目錄下有一個notfound.html文件,我想使用它作為404 error的頁面:
ErrorDocument 404 /notfound.html
錯誤代碼可參考相關(guān)書籍描述,接下來,你要做的只是創(chuàng)建一個錯誤發(fā)生時顯示的指向頁面文件,然后把它們和.htaccess一起上傳。
5 目錄的密碼訪問保護(hù)
要使用.htaccess進(jìn)行網(wǎng)站目錄密碼保護(hù)主要分為2個步驟,即配置.htaccess文件和創(chuàng)建.htpasswd密碼文件。定義如下:
[1]AuthName “Section Name”
[2]AuthType Basic
[3]AuthUserFile /full/path/to/.htpasswd
[4]Require valid-user
Section Name出現(xiàn)在彈出的密碼輸入框中,我們可以自己定義,/full/path/to/.htpasswd是我們第二步密碼文件.htpasswd的絕對路徑,建議將該密碼配置文件置于站點(diǎn)之外的目錄,可防止他人通過瀏覽器的方式惡意獲取。
密碼文件的內(nèi)容格式為user:password,密碼部分必須為加密的格式。當(dāng)你試圖訪問被.htaccess密碼保護(hù)的目錄時,你的瀏覽器會彈出標(biāo)準(zhǔn)的賬號、密碼對話窗口。
6 來訪IP的篩選處理
由于網(wǎng)站的特殊發(fā)布環(huán)境,管理員可能限制某些特定IP的用戶訪問指定的內(nèi)容,或者想封禁某些指定IP地址段。.htaccess對指定IP進(jìn)行限制訪問在做網(wǎng)站優(yōu)化以及網(wǎng)站基礎(chǔ)部署中都是有用的,可以有效防止采集和信息保密,示例如下:
[1]order allow,deny
[2]deny from *.*.*.*
[3]allow from *.*.*.*
代碼行[1]表示先限定許可的,后限定禁止的,反之亦可;行[2]、[3]可限制指定IP地址段的訪問開關(guān),可采用地址位方式進(jìn)行匹配認(rèn)證。通過維護(hù)IP代碼行以達(dá)到實(shí)現(xiàn)保護(hù)網(wǎng)站安全受訪的目的。
7 結(jié)束語
網(wǎng)站的安全性不容小視,網(wǎng)站目錄權(quán)限的嚴(yán)格控制顯得尤為重要,通過.htaccess來保護(hù)網(wǎng)站安全方便和可行,因?yàn)樗幌袷褂媚_本程序那樣容易受到漏洞等軟性攻擊,而更是服務(wù)器系統(tǒng)級別的權(quán)限控制措施,很大程度上提高了網(wǎng)站的安全性。
參考文獻(xiàn):
[1]陳俊潔.常見WEB服務(wù)安全威脅的來源與防范[J].產(chǎn)業(yè)與科技論壇,2010(07):118-121.
[2]李漢強(qiáng).保護(hù)Linux下的Apache網(wǎng)站[J].開放系統(tǒng)世界,2004(06).
作者簡介:肖俊春(1976-),男,湖北孝感人,講師,碩士,長期從事網(wǎng)絡(luò)應(yīng)用平臺的開發(fā)與維護(hù),研究方向:軟件工程及網(wǎng)絡(luò)安全管理。
作者單位:湖北職業(yè)技術(shù)學(xué)院,湖北孝感 432000