如何保证数据库服务器的安全性
生活随笔
收集整理的這篇文章主要介紹了
如何保证数据库服务器的安全性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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申請證書要做到以下幾步: 一:首先我們要在我們的計算機中安裝證書服務; 開始—設置—控制面板 選擇添加刪除程序-----添加刪除windows組件---------證書服務(彈出如果安裝證書服務后,計算機名與于成員身份不能更改了點擊是 ) 選擇 “獨立根” 然后點擊 下一步 填寫 CA服務器的名稱 如下圖 默認 選擇下一步彈出 安裝證書服務時必須暫時停止Internet 信息服務 選擇 是 系統 開始安裝 CA證書服務處 如下圖 如下圖所示 安裝CA服務器 安裝完畢 二:為服務器申請證書 打開IE 在地址欄 里輸入 HTTP://CA服務器的IP/certsrv 選擇“申請一個證書” 在申請一個證書里 選擇 “ 高級申請 ” 在高級申請 里 選擇 “創建并先向此CA提交一個申請” 在填寫 高級證書申請 時 注意兩點 第一點是填寫 “姓名”時不要添錯, 第二點是在密鑰選項 里的CSP 選擇“Microsoft RSA SChannel Cryptographic Provider” 如下圖 三:頒發證書 在CA服務器上 打開證書頒發機構如下圖 在開始程序—管理工具—證書頒發機構 雙擊打開 在打開的證書頒發機構 找到“掛起的申請” 里會看到剛才申請的證書 鼠標右件--所有任務—選擇頒發 如下圖所示 四:下載并安裝證書在次用IE打開 如下圖 選擇 “查看掛起的證書申請狀態” 選擇 剛剛 “申請的服務器證書” 雙擊 進入 選擇 “安裝此證書” 在彈出的“潛在的腳本沖突” 選擇 是 五:給SQL服務器啟用加密 在開始—程序—SQL server 2005—配置工具—SQL Server Configuration Manager 如下圖 在打開的SQL Server Configuration Manager 里找到“MSSERVER的協議” 鼠標右鍵選擇屬性 彈出的MSSQLSERVER的協議屬性里在標志里選擇 打開服務器實例加密 如下圖選擇 是 在證書的標簽里 選擇為SQL服務器申請好的證書 如下圖 對sql server服務器進行加密,然后必須重啟SQL服務,如下圖 完成后我們通過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. 物理安全性:數據庫服務器的獨立存放 數據庫服務器的服務一定要獨立,不要同時跑多個種類的數據庫,防止發生沖突,防止用戶通過其他數據庫竊取到你另外的數據文件。還要注意的是數據庫服務器一定要獨立存放,不要跟過多的人接觸,最好把服務器放到專門的服務器公司,專門來存放,避免數據文件的丟失。
轉載于:https://blog.51cto.com/songtao87/110452
總結
以上是生活随笔為你收集整理的如何保证数据库服务器的安全性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 火车采集器使用感受
- 下一篇: SQL存储过程(☆)