實例講解Web數(shù)據(jù)庫安全防護
數(shù)據(jù)庫是Web的命脈,由于管理者的安全疏漏使得其成為攻擊者入侵Web的入口。如何來加固Web數(shù)據(jù)庫呢?筆者就以當(dāng)前使用比較廣泛的Access和MSSQL數(shù)據(jù)庫為例,說說Web數(shù)據(jù)庫的安全防護。
1、Access數(shù)據(jù)庫防下載
數(shù)據(jù)庫被下載這對Web來說幾乎是毀滅性的,因為攻擊者從中可以獲取包括管理員帳戶及密碼等在內(nèi)的敏感信息,然后實施進一步的攻擊。可被下載的數(shù)據(jù)庫主要是Access數(shù)據(jù)庫,采用這種數(shù)據(jù)庫的Web站點不在少數(shù)。防止Access數(shù)據(jù)庫下載,可以從以下幾個方面入手。
(1)數(shù)據(jù)庫改名
數(shù)據(jù)庫改名包括兩部分,首先將其改成比較生僻的名稱,建議名字足夠長并使用某些特殊字符以防被攻擊者猜中。另外,將mdb后綴改為asp,以防數(shù)據(jù)庫被下載。當(dāng)然數(shù)據(jù)庫改名后,數(shù)據(jù)庫連接配置文件也要進行修改。
(2)改變數(shù)據(jù)庫路徑
站點系統(tǒng)都有默認的數(shù)據(jù)庫路徑,由于安全意識淡薄,部署Web站點時有很多人不去修改數(shù)據(jù)庫路徑,因而攻擊者很容易地猜到該站點的數(shù)據(jù)庫路徑。
更改數(shù)據(jù)庫路徑,大家可以在站點目錄下創(chuàng)建比較生僻的目錄,然后將數(shù)據(jù)庫文件拷貝到該目錄中。當(dāng)然,更改數(shù)據(jù)庫路徑后,需要修改站點系統(tǒng)的數(shù)據(jù)庫連接文件。一般asp站點系統(tǒng)的數(shù)據(jù)庫連接文件是conn.asp。打開該文件后,然后根據(jù)實際情況進行修改,使得其跟當(dāng)前的數(shù)據(jù)庫路徑相一致。
(3)設(shè)置好目錄權(quán)限
要設(shè)置好數(shù)據(jù)庫目錄的訪問權(quán)限,原則是權(quán)限最小化以防止非正常的訪問。因為Web程序是通過IIS用戶運行的,我們只要給IIS用戶讀取和寫入權(quán)限,然后通過“IIS管理器”把這個目錄的腳本執(zhí)行權(quán)限去掉,防止入侵者在該目錄中通過上傳獲得webshell了。
(4)添加mdb的擴展映射
IIS對于不能解析的文件類型就會彈出下載對話框讓用戶下載,我們可以通過在IIS管理器中添加對mdb的擴展映射,防止數(shù)據(jù)庫被下載。其設(shè)置方法是:打開IIS管理器定位到相應(yīng)的Web站點,右鍵選擇“屬性”,然后依次點擊“主目錄→配置→映射”,在“應(yīng)用程序擴展”里面添加.mdb文件應(yīng)用解析,至于用于解析它的可執(zhí)行文件大家可以自己進行選擇,只要讓攻擊者無法訪問數(shù)據(jù)庫文件就可以了。
(5)數(shù)據(jù)庫改造
思路是將數(shù)據(jù)庫后綴名(.mdb)修改為.asp,然后在數(shù)據(jù)庫中加上一個NotDownLoad的表以防數(shù)據(jù)庫被下載。具體操作方法如下:
首先新建一個.asp文件(notdown.asp),其代碼如下:
然后在服務(wù)器端運行notdown.asp,這樣在數(shù)據(jù)庫添加了包含notdown字段的notdownload數(shù)據(jù)表,即可防止數(shù)據(jù)庫的下載,因為notdown有一個值是"< %",asp運行是因缺少"% >"關(guān)閉標記而拒絕訪問,下載當(dāng)然會失敗。
#p#
2、MSSQL數(shù)據(jù)庫防注入
MSSQL數(shù)據(jù)庫是大中型Web站點常采用的數(shù)據(jù)庫,對于SQL數(shù)據(jù)最大的威脅是注入。攻擊者通過注入來調(diào)用SQL語句執(zhí)行系統(tǒng)命令,因此其危險性更大。一個注入點,有可能造成整個Web服務(wù)器的淪陷。防MSSQL注入可以從下面幾個方面入手。
(1)慎重選擇建站系統(tǒng)
通過站點系統(tǒng)建立一個Web站點是非常容易的,但是某些站點系統(tǒng)代碼編寫不夠嚴謹,考慮不周,變量過濾不嚴等使得可被攻擊者利用。因此,選擇一款安全的站點系統(tǒng)是至關(guān)重要的。當(dāng)然,沒有百分之百安全的站點系統(tǒng)。管理員如果懂代碼的話可以進行檢測分析,看看是否有漏洞。另外,可以扮演入侵者進行入侵檢測。最后,及時打補丁也是非常重要的。
(2)最小權(quán)限連接數(shù)據(jù)庫
Web站點連接數(shù)據(jù)庫都是通過相應(yīng)的帳戶進行連接,在這些帳戶中SA是權(quán)限最大的也是最危險的。數(shù)據(jù)庫不要用SA帳戶,使用SA帳戶連接數(shù)據(jù)庫對服務(wù)器來說就是一場災(zāi)難。一般來說可以使用DB_OWNER權(quán)限帳戶連接數(shù)據(jù)庫,如果可以正常運行,使用public用戶最安全的。設(shè)置成dbo權(quán)限連接數(shù)據(jù)庫之后,入侵者基本就只能通過猜解用戶名和密碼或者是差異備份來獲得webshell了,對于前者,我們可以通過加密和修改管理后臺的默認登陸地址來防御。對于差異備份,我們知道它的條件是有備份的權(quán)限,并且要知道web的目錄。這樣被攻擊的可能性大大地降低。
(3)刪除危險的存儲過程
MSSQL數(shù)據(jù)庫系統(tǒng)集成了較多的存儲過程,這些命令集方便了我們的操作當(dāng)然也為攻擊者入侵Web提供了便利。因此我們要根據(jù)需要刪除某些在Web中用不到的,并且可被攻擊者利用才存儲過程。比如xp_regread和xp_dirtree這兩個存儲過程可被攻擊者用來讀取注冊表信息和列目錄,我們可以刪除。另外,xp_cmdshell可被用來執(zhí)行DOS命令比如建立系統(tǒng)帳戶等等,是非常危險的。sp_makwebtask過程,可以讀取SQL SELECT命令所得到的結(jié)果到表格形式的HTML文件中。這些比較危險可被攻擊者利用的存儲過程我們可以刪除。比如刪除xp_cmdshell可以執(zhí)行“exec master..sp_dropextendedproc xp_cmdshell”,其它的類似。
(4)修改錯誤頁,誤導(dǎo)攻擊者
SQL注入入侵是根據(jù)IIS給出的ASP錯誤提示信息來入侵的,如果我們把IIS設(shè)置成不管出什么樣的ASP錯誤,只給出一種錯誤提示信息,即http 500錯誤,那么攻擊者就無法獲得敏感信息實施入侵了。打開IIS管理器選擇相應(yīng)的Web站點打開其站點屬性窗口,在“自定義錯誤”選項卡下選擇“500:100”點擊“編輯”打開“編輯自定義錯誤屬性”窗口,消息類型選擇“文件”,然后通過瀏覽定位到自己構(gòu)造的錯誤頁,比如“c:\test.htm”,然后確定即可。
總結(jié):防下載、防注入這是從Web安全的角度出發(fā)實施的非常規(guī)措施,在常態(tài)下我們一定要做好Web數(shù)據(jù)庫的備份,這才是最基本的。
【編輯推薦】