如何保證數據庫服務器的安全性

1.使用安全的密碼策略
我們把密碼策略擺在所有安全配置的第一步,請注意,很多數據庫帳號的密碼過於簡單,這跟系統密碼過於簡單是一個道理。對於sa更應該注意,同時不要讓sa帳號的密碼寫於應用程序或者腳本中。健壯的密碼是安全的第一步!
SQL Server2005安裝的時候,如果是使用混合模式,那麼就需要輸入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就可以了。創建用戶定義的數據庫角色,然後分配權限。完成這個步驟最簡單的方法是創建一些名字與全局組名字配套的角色。例如對於前面例子中的會計系統,我們可以創建Accounting Data Entry Operators、Accounting Data Entry Managers之類的角色。由於會計數據庫中的角色與帳務處理任務有關,你可能想要縮短這些角色的名字。然而,如果角色名字與全局組的名字配套,你可以減少混亂,能夠更方便地判斷出哪些組屬於特定的角色。
3.簡化安全管理
SQL Server驗證的登錄不僅能夠方便地實現,而且與NT驗證的登錄相比,它更容易編寫到應用程序裏。但是,如果用戶的數量超過25,或者服務器數量在一個以上,或者每個用戶都可以訪問一個以上的數據庫,或者數據庫有多個管理員,SQL Server驗證的登錄不容易管理。由於SQL Server沒有顯示用戶有效權限的工具,要記憶每個用戶具有哪些權限以及他們爲何要得到這些權限就更加困難。即使對於一個數據庫管理員還要擔負其他責任的小型系統,簡化安全策略也有助於減輕問題的複雜程度。因此,首選的方法應該是使用NT驗證的登錄,然後通過一些精心選擇的全局組和數據庫角色管理數據庫訪問。
4.加強數據庫日誌的記錄。
審覈數據庫登錄事件的“失敗和成功”,在實例屬性中選擇“安全性”,將其中的審覈級別選定爲全部,這樣在數據庫系統和操作系統日誌裏面,就詳細記錄了所有帳號的登錄事件。定期查看SQL Server日誌檢查是否有可疑的登錄事件發生,或者使用DOS命令。
findstr /C:"登錄" d:\Microsoft SQL Server\MSSQL\LOG\*.*
5.管理擴展存儲過程
對存儲過程進行大手術,並且對帳號調用擴展存儲過程的權限要慎重。其實在多數應用中根本用不到多少系統的存儲過程,而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
還有一些其他的擴展存儲過程,你也最好檢查檢查。
在處理存儲過程的時候,請確認一下,避免造成對數據庫或應用程序的傷害。
6.使用協議加密
SQL Server 2005使用的Tabular Data Stream協議來進行網絡數據交換,如果不加密的話,所有的網絡傳輸都是明文的,包括密碼、數據庫內容等等,這是一個很大的安全威脅。能被人在網絡中截獲到他們需要的東西,包括數據庫帳號和密碼。所以,在條件容許情況下,最好使用SSL來加密協議,當然,你需要一個證書來支持。
7.不要讓人隨便探測到你的TCP/IP端口
默認情況下,SQL Server使用1433端口監聽,很多人都說SQL Server配置的時候要把這個端口改變,這樣別人就不能很容易地知道使用的什麼端口了。可惜,通過微軟未公開的1434端口的UDP探測可以很容易知道SQL Server使用的什麼TCP/IP端口了(請參考《深入探索SQL Server網絡連接的安全問題》)。
不過微軟還是考慮到了這個問題,畢竟公開而且開放的端口會引起不必要的麻煩。在實例屬性中選擇TCP/IP協議的屬性。選擇隱藏 SQL Server 實例。如果隱藏了 SQL Server 實例,則將禁止對試圖枚舉網絡上現有的 SQL Server 實例的客戶端所發出的廣播作出響應。這樣,別人就不能用1434來探測你的TCP/IP端口了(除非用Port Scan)。
8.修改TCP/IP使用的端口
請在上一步配置的基礎上,更改原默認的1433端口。在實例屬性中選擇網絡配置中的TCP/IP協議的屬性,將TCP/IP使用的默認端口變爲其他端口。
9.拒絕來自1434端口的探測
由於1434端口探測沒有限制,能夠被別人探測到一些數據庫信息,而且還可能遭到DOS***讓數據庫服務器的CPU負荷增大,所以對Windows 2000操作系統來說,在IPSec過濾拒絕掉1434端口的UDP通訊,可以儘可能地隱藏你的SQL Server。
10.對網絡連接進行IP限制
SQL Server 2005數據庫系統本身沒有提供網絡連接的安全解決辦法,但是Windows 2000提供了這樣的安全機制。使用操作系統自己的IPSec可以實現IP數據包的安全性。請對IP連接進行限制,只保證自己的IP能夠訪問,也拒絕其他IP進行的端口連接,把來自網絡上的安全威脅進行有效的控制。
11.網絡傳輸安全性
將明文轉化爲暗文:我們在給SQL申請證書要做到以下幾步:
一:首先我們要在我們的計算機中安裝證書服務;
開始—設置—控制面板
clip_image002
選擇添加刪除程序-----添加刪除windows組件---------證書服務(彈出如果安裝證書服務後,計算機名與於成員身份不能更改了點擊是 )
clip_image004
clip_image006
選擇 “獨立根” 然後點擊 下一步
clip_image008
填寫 CA服務器的名稱 如下圖
clip_image010
默認 選擇下一步彈出 安裝證書服務時必須暫時停止Internet 信息服務 選擇 是
clip_image012
系統 開始安裝 CA證書服務處 如下圖
clip_image014
如下圖所示 安裝CA服務器 安裝完畢
clip_image016
二:爲服務器申請證書
打開IE 在地址欄 裏輸入 HTTP://CA服務器的IP/certsrv 選擇“申請一個證書”
clip_image018
在申請一個證書裏 選擇 “ 高級申請 ”
clip_image020
在高級申請 裏 選擇 “創建並先向此CA提交一個申請”
clip_image022
在填寫 高級證書申請 時 注意兩點 第一點是填寫 “姓名”時不要添錯, 第二點是在密鑰選項 裏的CSP 選擇“Microsoft RSA SChannel Cryptographic Provider” 如下圖
clip_image024
clip_image026
三:頒發證書
在CA服務器上 打開證書頒發機構如下圖 在開始程序—管理工具—證書頒發機構 雙擊打開
clip_image028
在打開的證書頒發機構 找到“掛起的申請” 裏會看到剛纔申請的證書 鼠標右件--所有任務—選擇頒發 如下圖所示
clip_image030
四:下載並安裝證書在次用IE打開 如下圖 選擇 “查看掛起的證書申請狀態”
clip_image032
選擇 剛剛 “申請的服務器證書” 雙擊 進入
clip_image034
選擇 “安裝此證書” 在彈出的“潛在的腳本衝突” 選擇 是
clip_image036
五:給SQL服務器啓用加密
在開始—程序—SQL server 2005—配置工具—SQL Server Configuration Manager 如下圖
clip_image038
在打開的SQL Server Configuration Manager 裏找到“MSSERVER的協議” 鼠標右鍵選擇屬性
clip_image040
彈出的MSSQLSERVER的協議屬性裏在標誌裏選擇 打開服務器實例加密 如下圖選擇 是
clip_image042
在證書的標籤裏 選擇爲SQL服務器申請好的證書 如下圖
clip_image044
對sql server服務器進行加密,然後必須重啓SQL服務,如下圖
clip_image046
完成後我們通過web傳輸的所有數據全都是通過加密的,即使對方從中間竊取到信息,也完全不用擔心,數據庫的數據文件不會丟失。
12.數據庫存儲安全性:做備份
備份分爲:完全備份,差異備份,事務日誌備份,文件和文件組備份。一般情況不用文件和文件組備份。
備份的目的地:磁盤的一個文件:disk='盤符及文件名';備份設備:先創建備份設備,在應用此設備即可
a:完全備份:備份數據庫的所有內容。sql 語句爲:
backup datebase 數據庫名稱 to disk='盤符及文件名'
backup datebase 數據庫名稱 to 備份設備名
創建一個備份設備:
sp_addumpdevice 'disk','itet_back','f:\backup\itet.bak'
例如:
use itet
create table test
(
編號 char(4),
姓名 varchar(10),
性別 char(2),
年齡 int
)
insert into test values ('0001','張三','男',20)
backup database itet to itet_back
drop database itet
use master
還原數據庫:
語法:restore database 數據庫名稱 from 備份設備
restore database itet from itet_back
select * from itet..test
b:差異備份:備份的是上一次完全備份以後發生的更改的內容,只依賴完全備份
語法:backup database 數據庫名稱 to 備份設備 with differential
例如:
use itet
insert into test values ('0002','李四','女',29
select * from test
backup database itet to itet_back with differential
還原數據庫:
語法:restore database 數據庫名稱 from 備份設備
use master
restore database itet from itet_back with file=1,norecovery
restore database itet from itet_back with file=3,recovery
select * from itet..test
c:事務日誌備份:備份的是上一次備份以後發生更改的內容
語法:backup log 數據庫名稱 to 備份設備
insert into itet..test values ('0004','趙六','男',41)
huan
還原事務日誌備份:
語法:restore log 數據庫名稱 from 備份設備
backup log itet to itet_back
drop database itet
restore headeronly from itet_back
restore database itet from itet_back with file=1,norecovery
restore database itet from itet_back with file=3,norecovery
restore log itet from itet_back with file=4,recovery
select * from itet..test
13.數據庫的恢復模型:
簡單模型:處於此模型,由只記錄數據,不記錄操作。
大容量日誌記錄:不記錄大容量操作: "select into" "bulk insert"
完全模型:支持的備份類型最完整。
14.時刻確保你裝了最新的服務程序更新包。
15.安裝防病毒軟件, 要保證數據庫的安全,一定要先保證系統的安全,解決系統安全的好辦法之一少不了安裝防病毒軟件,來防止***的***,避免有些病毒使服務器運轉緩慢,有效的避免病毒給數據庫帶來的危害!
16. 物理安全性:數據庫服務器的獨立存放
數據庫服務器的服務一定要獨立,不要同時跑多個種類的數據庫,防止發生衝突,防止用戶通過其他數據庫竊取到你另外的數據文件。還要注意的是數據庫服務器一定要獨立存放,不要跟過多的人接觸,最好把服務器放到專門的服務器公司,專門來存放,避免數據文件的丟失。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章