如何保護SQL數據庫服務器的安全

SQL Server 2000的安全配置在進行SQL Server 2000數據庫的安全配置之前,首先必須對操作系統進行安全配置,保證操作系統處於安全狀態。然後對要使用的操作數據庫軟件(程序)進行必要的安全審覈,比如對ASP、PHP等腳本,這是很多基於數據庫的Web應用常出現的安全隱患,對於腳本主要是一個過濾問題,需要過濾一些類似“,; @ /”等字符,防止破壞者構造惡意的SQL語句。接着,安裝SQL Server2000後請打上最新SQL補丁SP3。

    SQL Server的安全配置

    1.使用安全的密碼策略

    我們把密碼策略擺在所有安全配置的第一步,請注意,很多數據庫賬號的密碼過於簡單,這跟系統密碼過於簡單是一個道理。對於sa更應該注意,同時不要讓sa賬號的密碼寫於應用程序或者腳本中。健壯的密碼是安全的第一步,建議密碼含有多種數字字母組合並9位以上。SQL Server2000安裝的時候,如果是使用混合模式,那麼就需要輸入sa的密碼,除非您確認必須使用空密碼,這比以前的版本有所改進。同時養成定期修改密碼的好習慣,數據庫管理員應該定期查看是否有不符合密碼要求的賬號。

    2.使用安全的賬號策略

    由於SQL Server不能更改sa用戶名稱,也不能刪除這個超級用戶,所以,我們必須對這個賬號進行最強的保護,當然,包括使用一個非常強壯的密碼,最好不要在數據庫應用中使用sa賬號,只有當沒有其他方法登錄到 SQL Server 實例(例如,當其他系統管理員不可用或忘記了密碼)時才使用 sa。建議數據庫管理員新建立個擁有與sa一樣權限的超級用戶來管理數據庫。安全的賬號策略還包括不要讓管理員權限的賬號氾濫。

    SQL Server的認證模式有Windows身份認證和混合身份認證兩種。如果數據庫管理員不希望操作系統管理員來通過操作系統登錄來接觸數據庫的話,可以在賬號管理中把系統賬號“BUILTIN\Administrators”刪除。不過這樣做的結果是一旦sa賬號忘記密碼的話,就沒有辦法來恢復了。很多主機使用數據庫應用只是用來做查詢、修改等簡單功能的,請根據實際需要分配賬號,並賦予僅僅能夠滿足應用要求和需要的權限。比如,只要查詢功能的,那麼就使用一個簡單的public賬號能夠select就可以了。

    3.加強數據庫日誌的記錄

    審覈數據庫登錄事件的“失敗和成功”,在實例屬性中選擇“安全性”,將其中的審覈級別選定爲全部,這樣在數據庫系統和操作系統日誌裏面,就詳細記錄了所有賬號的登錄事件。請定期查看SQL Server日誌檢查是否有可疑的登錄事件發生,或者使用DOS命令。

    4.管理擴展存儲過程

    對存儲過程進行大手術,並且對賬號調用擴展存儲過程的權限要慎重。其實在多數應用中根本用不到多少系統的存儲過程,而SQL Server的這麼多系統存儲過程只是用來適應廣大用戶需求的,所以請刪除不必要的存儲過程,因爲有些系統的存儲過程能很容易地被人利用起來提升權限或進行破壞。如果您不需要擴展存儲過程Xp_cmdshell請把它去掉。使用這個SQL語句:

    use master
    sp_dropextendedproc 'Xp_cmdshell'

    Xp_cmdshell是進入操作系統的最佳捷徑,是數據庫留給操作系統的一個大後門。如果您需要這個存儲過程,請用這個語句也可以恢復過來。

    sp_addextendedproc 'xp_cmdshell', 'xpSQL70.dll'

    如果您不需要請丟棄OLE自動存儲過程(會造成管理器中的某些特徵不能使用)。

    這些過程如下: Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
                   Sp_OAMethod Sp_OASetProperty Sp_OAStop

    去掉不需要的註冊表訪問的存儲過程,註冊表存儲過程甚至能夠讀出操作系統管理員的密碼來,命令如下:
    Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue
    Xp_regenumvalues Xp_regread Xp_regremovemultistring
    Xp_regwrite

    還有一些其他的擴展存儲過程,也最好檢查檢查。在處理存儲過程的時候,請確認一下,避免造成對數據庫或應用程序的傷害。

    5.使用協議加密

    SQL Server 2000使用的Tabular Data Stream協議來進行網絡數據交換,如果不加密的話,所有的網絡傳輸都是明文的,包括密碼、數據庫內容等,這是一個很大的安全威脅。能被人在網絡中截獲到他們需要的東西,包括數據庫賬號和密碼。所以,在條件容許情況下,最好使用SSL來加密協議,當然,您需要一個證書來支持。

    6.不要讓人隨便探測到您的TCP/IP端口

    默認情況下,SQL Server使用1433端口監聽,很多人都說SQL Server配置的時候要把這個端口改變,這樣別人就不會輕易地知道使用的什麼端口了。可惜,通過微軟未公開的1434端口的UDP探測可以很容易知道SQL Server使用的什麼TCP/IP端口。不過微軟還是考慮到了這個問題,畢竟公開而且開放的端口會引起不必要的麻煩。在實例屬性中選擇TCP/IP協議的屬性。選擇隱藏 SQL Server實例。如果隱藏了SQL Server實例,則將禁止對試圖枚舉網絡上現有的 SQL Server實例的客戶端所發出的廣播作出響應。這樣,別人就不能用1434來探測您的TCP/IP端口了(除非用Port Scan)。

    7.修改TCP/IP使用的端口

    請在上一步配置的基礎上,更改原默認的1433端口。在實例屬性中選擇網絡配置中的TCP/IP協議的屬性,將TCP/IP使用的默認端口變爲其他端口。

    8.拒絕來自1434端口的探測

    由於1434端口探測沒有限制,能夠被別人探測到一些數據庫信息,而且還可能遭到DoS***讓數據庫服務器的CPU負荷增大,所以對Windows 2000操作系統來說,在IPSec過濾拒絕掉1434端口的UDP通信,可以儘可能地隱藏您的SQL Server。

    9.對網絡連接進行IP限制

    SQL Server 2000數據庫系統本身沒有提供網絡連接的安全解決辦法,但是Windows 2000提供了這樣的安全機制。使用操作系統自己的IPSec可以實現IP數據包的安全性。請對IP連接進行限制,只保證自己的IP能夠訪問,也拒絕其他IP進行的端口連接,對來自網絡上的安全威脅進行有效的控制。

    上面主要介紹的一些SQL Server的安全配置,經過以上的配置,可以讓SQL Server本身具備足夠的安全防範能力。當然,更主要的還是要加強內部的安全控制和管理員的安全培訓,而且安全性問題是一個長期的解決過程,還需要以後進行更多的安全維護。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章