既然是我們的防范是從入侵者角度來進行考慮,那么我們就首先需要知道入侵者的入侵方式。目前較為流行web入侵方式都是通過尋找程序的漏洞先得到網站的webshell然后再根據服務器的配置來找到相應的可以利用的方法進行提權,進而拿下服務器權限的。所以配合服務器來設置防止webshell是有效的方法。
一、防止數據庫被非法下載
應當說,有一點網絡安全的管理員,都會把從網上下載的網站程序的默認數據庫路徑進行更改。當然也有一部分管理員非常粗心,拿到程序直接在自己的服務器上進行安裝,甚至連說明文件都不進行刪除,更不要說更改數據庫路徑了。這樣黑客就可以通過直接從源碼站點下載網站源程序,然后在本地測試找到默認的數據庫,再通過下載數據庫讀取里面的用戶信息和資料(一般是經過MD5加密的)找到管理入口進行登陸獲得webshell。還有一種情況是由于程序出錯暴出了網站數據庫的路徑,那么怎么防止這種情況的發生呢?我們可以添加mdb的擴展映射。如下圖所示:
打開IIS添加一個MDB的映射,讓mdb解析成其他下載不了的文件:“IIS屬性”—“主目錄”—“配置”—“映射”—“應用程序擴展”里面添加.mdb文件應用解析,至于用于解析它的文件大家可以自己進行選擇,只要訪問數據庫文件出現無法訪問就可以了。
這樣做的好處是:1只是要是mdb后綴格式的數據庫文件就肯定下載不了;2對服務器上所有的mdb文件都起作用,對于虛擬主機管理員很有用處。
二、防止上傳
針對以上的配置如果使用的是MSSQL的數據庫,只要存在注入點,依然可以通過使用注入工具進行數據庫的猜解。倘若上傳文件根本沒有身份驗證的話,我們可以直接上傳一個asp的木馬就得到了服務器的webshell。
對付上傳,我們可以總結為:可以上傳的目錄不給執行權限,可以執行的目錄不給上傳權限。Web程序是通過IIS用戶運行的,我們只要給IIS用戶一個特定的上傳目錄有寫入權限,然后又把這個目錄的腳本執行權限去掉,就可以防止入侵者通過上傳獲得webshell了。配置方法:首先在IIS的web目錄中,打開權限選項卡、只給IIS用戶讀取和列出目錄權限,然后進入上傳文件保存和存放數據庫的目錄,給IIS用戶加上寫入權限,最后在這兩個目錄的“屬性”—“執行權限”選項把“純腳本”改為“無”即可。見下圖:
最后提醒一點,在你設置以上權限的時候,一定要注意到設置好父目錄的繼承。避免所做的設置白費。
三、MSSQL注入
對于MSSQL數據庫的防御,我們說,首先要從數據庫連接帳戶開始。數據庫不要用SA帳戶。使用SA帳戶連接數據庫對服務器來說就是一場災難。一般來說可以使用DB_OWNER權限帳戶連接數據庫,如果可以正常運行,使用public用戶最安全的。設置成dbo權限連接數據庫之后,入侵者基本就只能通過猜解用戶名和密碼或者是差異備份來獲得webshell了,對于前者,我們可以通過加密和修改管理后臺的默認登陸地址來防御。對于差異備份,我們知道它的條件是有備份的權限,并且要知道web的目錄。尋找web目錄我們說通常是通過遍歷目錄進行尋找或者直接讀取注冊表來實現。無路這兩個方法的哪一種,都用到了xp_regread和xp_dirtree兩個擴展存儲過程,我們只需要刪除這兩個擴展存儲就可以了,當然也可以把對應的dll文件也一起刪除。
但是如果是由于程序出錯自己暴出了web目錄,就沒有辦法了。所以我們還要讓帳戶的權限更低,無法完成備份操作。具體操作如下:在這個帳戶的屬性—數據庫訪問選項里只需要對選中對應的數據庫并賦予其DBO權限,對于其他數據庫不要操作。接著還要到該數據庫—屬性—權限把該用戶的備份和備份日志的權限去掉,這樣入侵者就不能通過差異備份獲得webshell了。