摘要:任何的服務(wù)器被入侵,很大程度上都由于網(wǎng)管經(jīng)驗不足或配置不當(dāng)導(dǎo)致的,這里我們針對SQL注入的方式來配置服務(wù)器,最大限度的提高服務(wù)器的安全系數(shù)。
關(guān)鍵詞:SQL注入;服務(wù)器;安全
中圖分類號:TP393文獻標(biāo)識碼:A文章編號:1009-3044(2008)36-2885-02
Dispose the Server Which Can Resist the Pouring Attack from SQL
ZENG Fang
(Jiujiang Institute Informational Science and Technical Institute,Jiangxi 332005,China)
Abstract: Sever invasion is due to the lack of experience and technology from the the webmaster.Here we focusing on defending SQL injection to enhance sever security.
Key words: SQL injection;server;security
來自微軟全球技術(shù)支持中心安全支持團隊的一份報告,從2008年1月起到2008年5月中,已經(jīng)有3次大規(guī)模的SQL注入攻擊,都是大于10,001,000頁/天的SQL注入式攻擊,其問題不僅僅在于程序員在編寫代碼的時候,沒有對用戶輸入數(shù)據(jù)進行合理判斷,還有與服務(wù)器的配置不當(dāng)也有很大的關(guān)系,這里針對windows2000+sql2000服務(wù)器進行分析,配置一個安全穩(wěn)定的服務(wù)器。
1 SQL注入攻擊的實現(xiàn)
SQL注入攻擊是通過程序員編寫程序的不嚴(yán)謹和服務(wù)器的配置不當(dāng),故意提交特殊的代碼來收集程序及服務(wù)器的信息來尋找注入點并判斷后臺數(shù)據(jù)庫類型,然后根據(jù)XP_CMDSHELL等可執(zhí)行情況,來發(fā)現(xiàn)虛擬目錄并上傳木馬來獲取服務(wù)器管理員的權(quán)限。
2 通過配置服務(wù)器及SQL來防范SQL注入
2.1 對服務(wù)器的程序進行檢查
要想阻止SQL注入,應(yīng)用程序的代碼必須編寫正確。應(yīng)用程序必須禁止用戶直接訪問到SOL Server。避免直接訪問可以極為簡單地通過參數(shù)化查詢來完成。參數(shù)化查詢使得SQL命令和命令所需要執(zhí)行的數(shù)據(jù)獨立起來。把單引號等SQL關(guān)鍵字過濾掉,可以自建函數(shù)過濾,也可以使用具有過濾功能的控件。發(fā)現(xiàn)客戶端提交的參數(shù)中有\(zhòng)"exec、insert、select、delete、from、update、count、user、xp_cmdshell、add、net、Asc\"等用于SQL注入的常用字符時,立即停止執(zhí)行ASP并給出警告信息或轉(zhuǎn)向出錯頁面。
2.2 權(quán)限的安全合理配置
用于程序連接數(shù)據(jù)庫的用戶應(yīng)拒絕使用服務(wù)器角色組成員,應(yīng)使用數(shù)據(jù)庫用戶角色組的成員,最好的方法是只給予db_reader,db_writer權(quán)限,遇到有需要備份的用戶請另行新建用戶——注意:只要有備份權(quán)限就可以通過BACKUP得到WEBSHELL!使用db_redaer,db_wirter不能直接用SQL指令建表,但是對于網(wǎng)站的安全也起到了至關(guān)重要的作用,入侵者無法使用create talbe,想進一步獲取服務(wù)器信息,無處保存。
2.3 刪除所有對數(shù)據(jù)庫可有可無的存儲過程、對注冊表操作的擴展進程
利用SQL Sever中的存儲過程,入侵者可以很容易地構(gòu)造相應(yīng)的SQL語句,進行修改數(shù)據(jù)庫、系統(tǒng)用戶名、系統(tǒng)注冊表等各種危害性極大的操作,因此有必要刪除掉無用的存儲過程。例如:
Xp_regaddmultistring
Xp_regdeletekey
Xp_regdeletevalue
Xp_regenumvalues (通過它可獲得所以網(wǎng)頁目錄)
Xp_regread (對Public可以執(zhí)行) (通過它可獲得默認網(wǎng)頁根目錄,“\\”)
Xp_regremovemultistring
Xp_regwrite 等。
2.4 對連接數(shù)據(jù)庫服務(wù)器進行IP限制
拒絕對除開本地以外的IP地址的連接。并修改SQL默認的數(shù)據(jù)庫端口的連接。
2.5 服務(wù)器IIS設(shè)置
管理員一定要定期的檢查ISS日志,可以檢查IIS日志來查找嘗試?yán)迷撀┒吹姆钦U埱蟆?/p>
SQL入侵是根據(jù)IIS給出的錯誤提示來入侵的,所以我們要把一切ASP錯誤,服務(wù)器返回的信息設(shè)置為http500錯誤。方法如下:打開“Internet信息服務(wù)程序”->右鍵點擊左邊的“默認網(wǎng)站”->選擇“屬性”->選擇“自定義錯誤子窗口”->選擇“錯誤映射”中的“500:100”->點擊“編輯屬性”,把500:100這個錯誤的默認提示頁C:\\WINDOWS\\Help\\iisHelp\\common\\500-100.asp改成C:\\WINDOws\\Help\\iisHelp\\common\\500.htm即可。這時,無論ASP運行中出什么錯,服務(wù)器都只提示HTTP 500錯誤。
服務(wù)器管理員還應(yīng)在IIS中為每個網(wǎng)站設(shè)置好執(zhí)行權(quán)限。一般情況下不給那些靜態(tài)網(wǎng)站以“腳本和可執(zhí)行”權(quán)限。動態(tài)網(wǎng)站只要給個“純腳本”權(quán)限就夠了,對于那些通過網(wǎng)站后臺管理中心上傳的文件存放的目錄,執(zhí)行權(quán)限設(shè)為“無”
2.6 使用安全的數(shù)據(jù)庫賬號
在一些網(wǎng)站中給予一般用戶連接數(shù)據(jù)庫SQLServer或MySQL的權(quán)限都是“SA”。這是非常危險的做法!應(yīng)該根據(jù)實際需要分配新的賬號,刪除多余的用戶,定期更改密碼,經(jīng)常檢查數(shù)據(jù)庫登錄用戶和權(quán)限有沒有被非法更改,并給予用戶能滿足其使用需要的有限權(quán)限就夠了。一般來說可以設(shè)置網(wǎng)站用戶連接時使用“public”權(quán)限的賬號。并使用較小權(quán)限的帳號啟動SQL。
2.7 刪除不必要的通訊協(xié)議和及時升級補丁
1) 使用防火墻關(guān)閉TCP 1433/UDP 1434端口對外連接
2) 升級最新的補丁(關(guān)注微軟發(fā)布的補丁文件,是備及時修改,最新MS SQL 2000 SERVER有SP4補丁了)
3 服務(wù)器被入侵急救措施
如果服務(wù)器一旦被入侵,首先立刻關(guān)閉IIS,根據(jù)日志情況對木馬的后門進行安全檢測,關(guān)閉不需要的帳戶,對已經(jīng)別掛上木馬的頁面進行修復(fù)并限制訪問后臺數(shù)據(jù)庫的IP地址,并給服務(wù)器安裝上防御SQL攻擊的防火墻,檢查是否給系統(tǒng)安裝了最新的補丁及關(guān)閉一些不需要的服務(wù)等等。
4 結(jié)束語
SQL注入攻擊目前仍然是黑客的主要攻擊手段之一,但是隨著黑客技術(shù)的不斷發(fā)展,其攻擊方式會向智能化、自動化等方向發(fā)展,服務(wù)器的安全維護并不是一朝一夕的事,我們只有合理的去配置服務(wù)器,把損失降到最低。
參考文獻:
[1] 徐陋,姚國祥.SQL注入攻擊全面預(yù)防辦法及其應(yīng)用[J].微計算機信息,2006(22).
[2] SQL Injection.http://msdn.microsoft.com/en-us/library/ms161953.aspx.
[3] 打造抵御SQL注入攻擊的MSSQL服務(wù)器.http://www.3800hk.com/news/w63/134386.html.