1.使用健壯安全的密碼策略
很多數據庫帳號的密碼過于簡單,這跟系統密碼過于簡單是一個道理。對于sa更應該注意,同時不要讓sa帳號的密碼寫于應用程序或者腳本中。健壯的密碼是安全的第一步!SQL Server2000安裝的時候,如果是使用混合模式,那么就需要輸入sa的密碼,除非你確認必須使用空密碼。這比以前的版本有所改進。同時養成定期修改密碼的好習慣。數據庫管理員應該定期查看是否有不符合密碼要求的帳號。
比如使用下面的SQL語句:
|
|
由于SQL Server不能更改sa用戶名稱,也不能刪除這個超級用戶,所以,我們必須對這個帳號進行最強的保護,當然,包括使用一個非常強壯的密碼,最好不要在數據庫應用中使用sa帳號,只有當沒有其它方法登錄到 SQL Server 實例(例如,當其它系統管理員不可用或忘記了密碼)時才使用 sa。建議數據庫管理員新建立個擁有與sa一樣權限的超級用戶來管理數據庫。安全的帳號策略還包括不要讓管理員權限的帳號泛濫。
SQL Server的認證模式有Windows身份認證和混合身份認證兩種。在任何可能的時候,您都應該對指向SQL Server的連接要求Windows身份驗證模式。
Windows認證模式比混合模式更優越,原因在以下:
1) 它通過限制對Microsoft Windows用戶和域用戶帳戶的連接,保護SQL Server免受大部分Internet工具的侵害。
2) 服務器將從Windows安全增強機制中獲益,例如更強的身份驗證協議以及強制的密碼復雜性和過期時間 。
3) 使用Windows認證,不需要將密碼存放在連接字符串中。存儲密碼是使用標準SQL Server登錄的應用程序的主要漏洞之一。
4) Windows認證意味著你只需要將密碼存放在一個地方。
要在SQL Server的Enterprise Manager安裝Windows身份驗證模式,請按下列步驟操作:
|
SQL Server的默認安裝將監視TCP端口1433以及UDP端口1434。配置您的防火墻來過濾掉到達這些端口的數據包。而且,還應該在防火墻上阻止與指定實例相關聯的其他端口。
4.審核指向SQL Server的連接
SQL Server可以記錄事件信息,用于系統管理員的審查。至少您應該記錄失敗的SQL Server連接嘗試,并定期地查看這個日志。在可能的情況下,不要將這些日志和數據文件保存在同一個硬盤上。
要在SQL Server的Enterprise Manager中審核失敗連接,請按下列步驟操作:
|
對存儲過程進行大手術,并且對帳號調用擴展存儲過程的權限要慎重。其實在多數應用中根本用不到多少系統的存儲過程,而SQL Server的這么多系統存儲過程只是用來適應廣大用戶需求的,所以請刪除不必要的存儲過程,因為有些系統的存儲過程能很容易地被人利用起來提升權限或進行破壞。如果你不需要擴展存儲過程xp_cmdshell請把它去掉。使用這個SQL語句:
|
|
|
|
6.使用視圖和存儲程序以分配給用戶訪問數據的權利
使用視圖和存儲程序以分配給用戶訪問數據的權利,而不是讓用戶編寫一些直接訪問表格的特別查詢語句。通過這種方式,你無需在表格中將訪問權利分配給用戶。視圖和存儲程序也可以限制查看的數據。例如,如果你的雇員表格包含一些秘密的工資信息,你可以建立一個省略了工資欄的視圖。
7.使用最安全的文件系統
NTFS是最適合安裝SQL Server的文件系統。它比FAT文件系統更穩定且更容易恢復。而且它還包括一些安全選項,例如文件和目錄ACL以及文件加密(EFS)。在安裝過程中,如果偵測到 NTFS,SQL Server將在注冊表鍵和文件上設置合適的ACL。不應該去更改這些權限。
通過EFS,數據庫文件將在運行SQL Server的帳戶身份下進行加密。只有這個帳戶才能解密這些文件。如果您需要更改運行SQL Server的帳戶,那么您必須首先在舊帳戶下解密這些文件,然后在新帳戶下重新進行加密。
8.安裝升級包
為了提高服務器安全性,最有效的一個方法就是升級到SQL Server 2000 Service Pack 3a (SP3a)。另外,您還應該安裝所有已發布的安全更新。
9.使用Microsoft基線安全性分析器(MBSA)來評估服務器的安全性
MBSA 是一個掃描多種Microsoft產品的不安全配置的工具,包括SQL Server和Microsoft SQL Server 2000 Desktop Engine(MSDE 2000)。它可以在本地運行,也可以通過網絡運行。該工具針對下面問題對SQL Server安裝進行檢測:
|
10.其他安全策略
另外,在安裝SQL Server時,還有一些技巧值得注意。
使用TCP/IP作為SQL Server的網絡庫。這是微軟推薦使用的庫,是經受考驗的。如果服務器將與網絡連接,使用非標準端口會被一些別有用心的人破壞。
使用一個低級別的帳號來運行SQL Server,而不是一個管理帳號。這對系統崩潰的時候起著保護作用。
不要允許未獲得安全許可的客人訪問任何包括安全數據的數據庫。
將數據庫保護于一個“被鎖的房間”。記住,很多騷擾都是來自于內部的人。