SQL Server 2000的安全配置

來源:互聯網
上載者:User
server|安全 在進行SQL Server 2000資料庫的安全配置之前,首先你必須對*作系統進行安全配置,
保證你的*作系統處於安全狀態。然後對你要使用的*作資料庫軟體(程式)進行必要的安全性稽核,
比如對ASP、PHP等指令碼,這是很多基於資料庫的WEB應用常出現的安全隱患,
對於指令碼主要是一個過濾問題,需要過濾一些類似 , ‘ @ / 等字元,防止破壞者構造惡意的SQL語句。
接著,安裝SQL Server2000後請打上補丁sp1以及最新的sp2。

下載地址是:http://www.microsoft.com/sql/downloads/2000/sp1.asp 
和  http://www.microsoft.com/sql/downloads/2000/sp2.asp

在做完上面三步基礎之後,我們再來討論SQL Server的安全配置。

1、使用安全的密碼原則
我們把密碼原則擺在所有安全配置的第一步,請注意,很多資料庫帳號的密碼過於簡單,
這跟系統密碼過於簡單是一個道理。對於sa更應該注意,同時不要讓sa帳號的密碼寫於應用程式或者指令碼中。
健壯的密碼是安全的第一步!
SQL Server2000安裝的時候,如果是使用混合模式,那麼就需要輸入sa的密碼,
除非你確認必須使用空密碼。這比以前的版本有所改進。
同時養成定期修改密碼的好習慣。資料庫管理員應該定期查看是否有不符合密碼要求的帳號。
比如使用下面的SQL語句:
Use master
Select name,Password from syslogins where password is null

2、使用安全的帳號策略。
由於SQL Server不能更改sa使用者名稱稱,也不能刪除這個超級使用者,
所以,我們必須對這個帳號進行最強的保護,當然,包括使用一個非常強壯的密碼,
最好不要在資料庫應用中使用sa帳號,只有當沒有其它方法登入到 SQL Server 執行個體
(例如,當其它系統管理員不可用或忘記了密碼)時才使用 sa。
建議資料庫管理員建立立一個擁有與sa一樣許可權的超級使用者來管理資料庫。
安全的帳號策略還包括不要讓管理員權限的帳號泛濫。
SQL Server的認證模式有Windows身份認證和混合身份認證兩種。
如果資料庫管理員不希望*作系統管理員來通過*作系統登陸來接觸資料庫的話,
可以在帳號管理中把系統帳號“BUILTIN\Administrators”刪除。
不過這樣做的結果是一旦sa帳號忘記密碼的話,就沒有辦法來恢複了。
很多主機使用資料庫應用只是用來做查詢、修改等簡易功能的,
請根據實際需要分配帳號,並賦予僅僅能夠滿足應用要求和需要的許可權。
比如,只要查詢功能的,那麼就使用一個簡單的public帳號能夠select就可以了。

3、加強資料庫*志的記錄。
審核心數據庫登入事件的“失敗和成功”,在執行個體屬性中選擇“安全性”,
將其中的審核層級選定為全部,這樣在資料庫系統和*作系統*志裡面,
就詳細記錄了所有帳號的登入事件。

請定期查看SQL Server*志檢查是否有可疑的登入事件發生,或者使用DOS命令。
findstr /C:"登入" d:\Microsoft SQL Server\MSSQL\LOG\*.*

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使用的預設連接埠變為其他連接埠.



9、拒絕來自1434連接埠的探測
由於1434連接埠探測沒有限制,能夠被別人探測到一些資料庫資訊,而且還可能遭到DOS攻擊讓資料庫伺服器的CPU負荷增大,所以對Windows 2000*作系統來說,在IPSec過濾拒絕掉1434連接埠的UDP通訊,
可以儘可能地隱藏你的SQL Server。

10、對網路連接進行IP限制
SQL Server 2000資料庫系統本身沒有提供網路連接的安全解決辦法,
但是Windows 2000提供了這樣的安全機制。使用*作系統自己的IPSec可以實現IP資料包的安全性。
請對IP串連進行限制,只保證自己的IP能夠訪問,也拒絕其他IP進行的連接埠串連,
把來自網路上的安全威脅進行有效控制。
關於IPSec的使用請參看:http://www.microsoft.com/china/technet/security/ipsecloc.asp

上面主要介紹的一些SQL Server的安全配置,經過以上的配置,可以讓SQL Server本身具備足夠的安全防範能力。當然,更主要的還是要加強內部的安全控制和管理員的安全培訓,
而且安全性問題是一個長期的解決過程,還需要以後進行更多的安全維護。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.