sqlserver安全性
① 如何提高sql Server的安全性(下)
每個服務必須與一個 Windows 帳戶相關聯,並從這個帳戶中衍生出安全性上下文。SQL Server允許sa 登錄的用戶(有時也包括其他用戶)來訪問操作系統特性。這些操作系統調用是由擁有伺服器進程的帳戶的安全性上下文來創建的。如果伺服器被攻破了,那麼這些操作系統調用可能被利用來向其他資源進行攻擊,只要所擁有的過程(SQL Server服務帳戶)可以對其進行訪問。因此,為 SQL Server 服務僅授予必要的許可權是十分重要的。
我們推薦您採用下列設置:SQL Server Engine/MSSQLServer如果擁有指定實例,那麼它們應該被命名為MSSQL$InstanceName。作為具有一般用戶許可權的 Windows 域用戶帳戶運行。不要作為本地系統、本地管理員或域管理員帳戶來運行。
SQL Server Agent Service/SQLServerAgent如果您的環境中不需要,請禁用該服務;否則請作為具有一般用戶許可權的Windows域用戶帳戶運行。不要作為本地系統、本地管理員或域管理員帳戶來運行。
重點: 如果下列條件之一成立,那麼 SQL Server Agent 將需要本地 Windows管理員許可權:SQL Server Agent 使用標準的 SQL Server 身份驗證連接到SQL Server(不推薦)。
SQL Server Agent 使用多伺服器管理主伺服器(MSX)帳戶,而該帳戶使用標准 SQL Server 身份驗證進行連接。
SQL Server Agent 運行非sysadmin固定伺服器角色成員所擁有的 Microsoft ActiveX?腳本或 CmdExec 作業。
如果您需要更改與 SQL Serve r服務相關聯的帳戶,請使用 SQL Server Enterprise Manager。Enterprise Manager 將為 SQL Server 所使用的文件和注冊表鍵設置合適的許可權。不要使用 Microsoft 管理控制台的"服務"(在控制面板中)來更改這些帳戶,因為這樣需要手動地調制大量的注冊表鍵和NTFS文件系統許可權以及Micorsoft Windows用戶許可權。
帳戶信息的更改將在下一次服務啟動時生效。如果您需要更改與 SQL Server 以及 SQL Server Agent 相關聯的帳戶,那麼您必須使用 Enterprise Manager 分別對兩個服務進行更改。
7.在防火牆上禁用 SQL Server 埠SQL Server 的默認安裝將監視 TCP 埠 1433 以及UDP埠 1434。配置您的防火牆來過濾掉到達這些埠的數據包。而且,還應該在防火牆上阻止與指定實例相關聯的其他埠。
8.使用最安全的文件系統NTFS 是最適合安裝 SQL Server 的文件系統。它比 FAT 文件系統更穩定且更容易恢復。而且它還包括一些安全選項,例如文件和目錄 ACL 以及文件加密(EFS)。在安裝過程中,如果偵測到 NTFS,SQL Server 將在注冊表鍵和文件上設置合適的 ACL。不應該去更改這些許可權。
通過 EFS,資料庫文件將在運行 SQL Server 的帳戶身份下進行加密。只有這個帳戶才能解密這些文件。如果您需要更改運行 SQL Server 的帳戶,那麼您必須首先在舊帳戶下解密這些文件,然後在新帳戶下重新進行加密。
9.刪除或保護舊的安裝文件SQL Server 安裝文件可能包含由純文本或簡單加密的憑證和其他在安裝過程中記錄的敏感配置信息。這些日誌文件的保存位置取決於所安裝的SQL Server版本。在 SQL Server 2000 中,下列文件可能受到影響:默認安裝時:\Program Files\Microsoft SQL Server\MSSQL\Install文件夾中,以及指定實例的:\Program Files\Microsoft SQL Server\ MSSQL$\Install文件夾中的sqlstp.log, sqlsp.log和setup.iss如果當前的系統是從 SQL Server 7.0 安裝升級而來的,那麼還應該檢查下列文件:%Windir% 文件夾中的setup.iss以及Windows Temp文件夾中的sqlsp.log。
Microsoft發布了一個免費的實用工具 Killpwd,它將從您的系統中找到並刪除這些密碼。
10.審核指向 SQL Server 的連接SQL Server 可以記錄事件信息,用於系統管理員的審查。至少您應該記錄失敗的 SQL Server 連接嘗試,並定期地查看這個日誌。在可能的情況下,不要將這些日誌和數據文件保存在同一個硬碟上。
要在 SQL Server 的 Enterprise Manager 中審核失敗連接,請按下列步驟操作:展開伺服器組。
右鍵點擊伺服器,然後點擊屬性。
在安全性選項卡的審核等級中,點擊失敗。
② 如何提高SQL Server的安全性控制
SQLServer2000的安全配置在進行SQLServer2000資料庫的安全配置之前,首先你必須對操作系統進行安全配置,保證你的操作系統處於安全狀態。然後對你要使用的操作資料庫軟體(程序)進行必要的安全審核,比如對ASP、PHP等腳本,這是很多基於資料庫的WEB應用常出現的安全隱患,對於腳本主要是一個過濾問題,需要過濾一些類似,『;@/等字元,防止破壞者構造惡意的SQL語句。接著,安裝SQLServer2000後請打上補丁sp1,sp2以及最新的sp3,sp4。在做完上面三步基礎之後,我們再來討論SQLServer的安全配置。1、使用安全的密碼策略我們把密碼策略擺在所有安全配置的第一步,請注意,很多資料庫帳號的密碼過於簡單,這跟系統密碼過於簡單是一個道理。對於sa更應該注意,同時不要讓sa帳號的密碼寫於應用程序或者腳本中。健壯的密碼是安全的第一步!SQLServer2000安裝的時候,如果是使用混合模式,那麼就需要輸入sa的密碼,除非你確認必須使用空密碼。這比以前的版本有所改進。同時養成定期修改密碼的好習慣。資料庫管理員應該定期查看是否有不符合密碼要求的帳號。比如使用下面的SQL語句:UsemasterSelectname,、使用安全的帳號策略由於SQLServer不能更改sa用戶名稱,也不能刪除這個超級用戶,所以,我們必須對這個帳號進行最強的保護,當然,包括使用一個非常強壯的密碼,最好不要在資料庫應用中使用sa帳號,只有當沒有其它方法登錄到SQLServer實例(例如,當其它系統管理員不可用或忘記了密碼)時才使用sa。建議資料庫管理員新建立個擁有與sa一樣許可權的超級用戶來管理資料庫。安全的帳號策略還包括不要讓管理員許可權的帳號泛濫。SQLServer的認證模式有Windows身份認證和混合身份認證兩種。如果資料庫管理員不希望操作系統管理員來通過操作系統登陸來接觸資料庫的話,可以在帳號管理中把系統帳號「BUILTIN\Administrators」刪除。不過這樣做的結果是一旦sa帳號忘記密碼的話,就沒有法來恢復了。很多主機使用資料庫應用只是用來做查詢、修改等簡單功能的,請根據實際需要分配帳號,並賦予僅僅能夠滿足應用要求和需要的許可權。比如,只要查詢功能的,那麼就使用一個簡單的public帳號能夠select就可以了。3、加強資料庫日誌的記錄審核資料庫登錄事件的「失敗和成功」,在實例屬性中選擇「安全性」,將其中的審核級別選定為全部,這樣在資料庫系統和操作系統日誌裡面,就詳細記錄了所有帳號的登錄事件。請定期查看SQLServer日誌檢查是否有可疑的登錄事件發生,或者使用DOS命令。findstr/C:"登錄"d:\MicrosoftSQLServer\MSSQL\LOG\*.*4、管理擴展存儲過程對存儲過程進行大手術,並且對帳號調用擴展存儲過程的許可權要慎重。其實在多數應用中根本用不到多少系統的存儲過程,而SQLServer的這么多系統存儲過程只是用來適應廣大用戶需求的,所以請刪除不必要的存儲過程,因為有些系統的存儲過程能很容易地被人利用起來提升許可權或進行破壞。如果你不需要擴展存儲過程xp_cmdshell請把它去掉。使用這個SQL語句:usemastersp_dropextendedproc'xp_cmdshell'xp_cmdshell是進入操作系統的最佳捷徑,是資料庫留給操作系統的一個大後門。如果你需要這個存儲過程,請用這個語句也可以恢復過來。sp_addextendedproc'xp_cmdshell','xpsql70.dll'如果你不需要請丟棄OLE自動存儲過程(會造成管理器中的某些特徵不能使用),這些過程包括如下:Sp_OACreateSp_OADestroySp_OAGetErrorInfoSp_OAGetPropertySp_OAMethodSp_OASetPropertySp_OAStop去掉不需要的注冊表訪問的存儲過程,注冊表存儲過程甚至能夠讀出操作系統管理員的密碼來,如下:Xp_regaddmultistringXp_regdeletekeyXp_regdeletevalueXp_regenumvaluesXp_regreadXp_regremovemultistringXp_regwrite還有一些其他的擴展存儲過程,你也最好檢查檢查。在處理存儲過程的時候,請確認一下,避免造成對資料庫或應用程序的傷害。5、使用協議加密SQLServer2000使用的TabularDataStream協議來進行網路數據交換,如果不加密的話,所有的網路傳輸都是明文的,包括密碼、資料庫內容等等,這是一個很大的安全威脅。能被人在網路中截獲到他們需要的東西,包括資料庫帳號和密碼。所以,在條件容許情況下,最好使用SSL來加密協議,當然,你需要一個證書來支持。6、不要讓人隨便探測到你的TCP/IP埠默認情況下,SQLServer使用1433埠監聽,很多人都說SQLServer配置的時候要把這個埠改變,這樣別人就不能很容易地知道使用的什麼埠了。可惜,通過微軟未公開的1434埠的UDP探測可以很容易知道SQLServer使用的什麼TCP/IP埠了。不過微軟還是考慮到了這個問題,畢竟公開而且開放的埠會引起不必要的麻煩。在實例屬性中選擇TCP/IP協議的屬性。選擇隱藏SQLServer實例。如果隱藏了SQLServer實例,則將禁止對試圖枚舉網路上現有的SQLServer實例的客戶端所發出的廣播作出響應。這樣,別人就不能用1434來探測你的TCP/IP埠了(除非用PortScan)。7、修改TCP/IP使用的埠請在上一步配置的基礎上,更改原默認的1433埠。在實例屬性中選擇網路配置中的TCP/IP協議的屬性,將TCP/IP使用的默認埠變為其他埠.9、拒絕來自1434埠的探測由於1434埠探測沒有限制,能夠被別人探測到一些資料庫信息,而且還可能遭到DOS攻擊讓資料庫伺服器的CPU負荷增大,所以對Windows2000操作系統來說,在IPSec過濾拒絕掉1434埠的UDP通訊,可以盡可能地隱藏你的SQLServer。10、對網路連接進行IP限制SQLServer2000資料庫系統本身沒有提供網路連接的安全解決法,但是Windows2000提供了這樣的安全機制。使用操作系統自己的IPSec可以實現IP數據包的安全性。請對IP連接進行限制,只保證自己的IP能夠訪問,也拒絕其他IP進行的埠連接,把來自網路上的安全威脅進行有效的控制。
③ 如何防止SQLserver伺服器被黑
一、基本安全設定:
(1)文件系統的設定 windows2000server 支持多種文件系統,最安全的要數NTFS文件系統,如果你的windows2000server要用作伺服器,最好將所有的分區都格式化為NTFS文件系統,fat32是不能用的。
(2)補丁(pack) 目前windows2000已經到sp4了,這個大補丁一定要裝的,安裝sp4後再到網路上升級,將微軟提供的各種重要系統安全更新全部都升級,不要怕麻煩,這是防病毒和黑客攻擊的非常重要安全設置步驟。
(3)帳號安全帳號是windows2000server的重要的安全保證,要注意區分一些工作組的許可權: administrators是系統管理員組,administrator是系統默認的管理帳號,administrator最好設置一個復雜的密碼,復雜到什麼程度呢?簡單的說,自己都要記不住這個密碼,這個密碼可以是字元、數字、符號、大小寫的組合(如:AGgF!452KhtUN),密碼不要讓別人猜得到,不要用自己得電話號碼啦之類的東西,最好在筆記本上將密碼設定好後再設置,設好密碼後妥善保管記錄密碼的筆記本,每隔一段時間更改自己的密碼 guest帳號最好禁止使用,如果沒有必要,不要添加其他的系統管理員帳號。
(4)關閉不必要的服務在服務中將一些不常用的服務關閉(比如列印、遠程注冊表操作,信息發送等不必要的服務)。
(5)網路協議如果沒有其他的用途,windows2000server只需要安裝tcp/ip協議,其他不必要的協議統統刪除。(6)如果沒必要,IIS一定不要安裝(如果需要安裝iis,那麼看後面的設置) IIS是windows2000server中最不安全的組件,不裝IIS,windows2000將是很安全的。
(7)默認共享的刪除 windows2000server默認的共享有以下幾種 c$ d$ e$ ..... IPC$ ADMIN$ 這些默認共享一定要關,否者hk利用簡單的Net use命令就可以將你的伺服器黑掉下面提供簡單的關閉這些共享的方法 A、建立一個批處理文件,如a.bat B、在該批處理文件中添加下面的語句 net share c$ /del (這是取消c盤的默認共享,同理 net share d$ /del 是取消d盤的共享,你有多少個盤符,就編多少個以上的語句) net share ipc$/del (刪除ipc默認共享) net share admin$ /del (刪除 admin默認共享) C 、將以上的語句添加完後,將該文件放入開始菜單中程序中啟動文件夾中,讓windows2000server每次啟動都將默認的共享刪除(7)CMD的設置 cmd.exe是windows2000中非常重要的文件,很多漏洞都是要*調用該個文件,該文件在windows2000server所在目錄的system32中,我們需要對其進行設定 A、將該文件從system32中拷貝出來放在其他地方,將原來的文件刪除 B、將拷貝出來的文件進行許可權設定,只允許administrator訪問,不允許其他任何的工作組或用戶訪問該文件。
(8)windows2000server終端服務(默認3389埠) windows2000server提供了遠程終端服務,此服務方便了網路管理員對伺服器的遠程管理,但是,該服務也為黑客提供了非常危險的攻擊,網路黑客口中的所謂跳板(肉雞)絕大部分都是利用該功能進行自我隱蔽的攻擊。一旦系統管理員的密碼被破解,而該伺服器又提供終端服務,黑客就可以完全控制了該伺服器,不但伺服器的各種資料會完全暴露,而且黑客還會利用這台伺服器去攻擊其他的伺服器,因此該服務除非你覺得自己的伺服器足夠安全,否則最好不要打開,特別是暴露在互連網路中的伺服器,打開該功能一定要小心謹慎。 A、如何知道自己的終端服務是否打開?終端服務需要安裝,我們可以通過控制面板中的添加/刪除程序中的添加/刪除windows組件來安裝,在windows組件向導列表中最下面有兩個組件,一個是「終端服務」,一個是「終端服務授權」,我們只需要安裝「終端服務」這個組件就可以將該功能啟用,一旦啟用了該功能,默認的情況下,我們的tcp3389埠就會打開。所以,我們看看這個地方,如果你的組件「終端服務」前面打了勾,就表明你已經打開了該服務。有些黑客手段很高明,一旦控制了你的計算機後,可以遠程打開該服務,這種情況下,我們最好檢查windows2000server啟用了哪些服務,如何檢查呢?打開windows2000server的服務管理(開始菜單——程序——管理工具——服務)。在服務列表中檢查Terminal Services這項服務的狀態,看看如果該服務處於「 禁用」狀態,說明該服務沒打開,如果該服務處於「已啟動」狀態,說明該服務已經打開。 B、如何關閉該服務!第一步,通過控制面板中的添加/刪除程序中的添加/刪除windows組件來將該服務組件刪除第二步,在服務中將Terminal Services服務禁用注意:需要經常檢查該服務是否被非法啟動,如果你在你沒有啟動該服務的情況下你發現它已打開,非常不幸,你的伺服器已經被黑,成為了別人的跳板(肉雞)最好的解決方法是重作伺服器系統,不要以為關閉該服務就行了。
(9)telnet服務(默認23埠)相對於3389來講,telnet服務更不容易引起管理員的注意,該服務以前是UNIX和Linux類系統提供的遠程管理終端服務,windows2000server也提供了,它也是一個終端服務,只不過telnet服務是字元界面,而3389服務是圖形界面,二者都能完全遠程式控制制伺服器的所有功能。我以前在利用肉雞的時候,一般都不用3389,為什麼呢?該服務速度慢,我一般都是打開肉雞的telnet服務,速度非常快,功能也很全面,又不容易被發覺 A、如何知道自己的telnet服務是否打開?在windows2000server控制面板——管理工具中有一項「Telnet 伺服器管理」(對應的文件是system32中的tlntadmn.exe),這就是該服務的開關,我們可以利用該程序配置我們的telnet服務。打開開始菜單——程序——管理工具——服務,在服務列表中有該服務對應的一項「Telnet」,默認的情況下,該服務狀態是「手動」,如果,該服務是「已啟動」狀態,說明該服務已經啟動了,你可以用以下命令連接在windows(98/2000/xp/2003)字元模式下輸入: telnet 伺服器的IP地址如果出現了登陸界面,非常不幸,你的telnet服務真的已開,如果不是你開的,非常不幸,你被黑了,你可能成為了肉雞。 B、如何關閉該服務!打開開始菜單——程序——管理工具——服務,在服務中將telnet服務禁用建議:最好將system32中的tlntadmn.exe拷貝出來放到其他文件夾中並改名,並將該文件從system32中刪除。隨時檢查telnet服務的狀態,如果該服務是「已啟動」狀態,而又不是你啟動的,最好重新安裝伺服器系統。最好隨時掃描你的伺服器所開的埠,如果23埠已開或有一些不知名的埠已開(因為黑客很可能會將提供該服務的埠改為其他的埠來逃避檢查),用telnet命令測試一下,看看能不能連接。附:telnet命令格式 telnet ip地址埠如:telnet 192.168.1.1 (連接伺服器192.168.1.1的默認23埠)如:telnet 192.168.1.1555 (連接伺服器192.168.1.1的555埠) SQL Server 2000的安全配置在進行SQL Server 2000資料庫的安全配置之前,首先你必須對操作系統進行安全配置,保證你的操作系統處於安全狀態。然後對你要使用的操作資料庫軟體(程序)進行必要的安全審核,比如對ASP、PHP等腳本,這是很多基於資料庫的WEB應用常出現的安全隱患,對於腳本主要是一個過濾問題,需要過濾一些類似 , 『 @ / 等字元,防止破壞者構造惡意的SQL語句。接著,安裝SQL Server2000後請打上補丁sp1以及最新的sp2。 1、使用安全的密碼策略我們把密碼策略擺在所有安全配置的第一步,請注意,很多資料庫帳號的密碼過於簡單,這跟系統密碼過於簡單是一個道理。對於sa更應該注意,同時不要讓sa帳號的密碼寫於應用程序或者腳本中。健壯的密碼是安全的第一步!SQL Server2000安裝的時候,如果是使用混合模式,那麼就需要輸入sa的密碼,除非你確認必須使用空密碼。這比以前的版本有所改進。同時養成定期修改密碼的好習慣。資料庫管理員應該定期查看是否有不符合密碼要求的帳號。比如使用下面的SQL語句:Use master Select name,Password from syslogins wherepassword 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_cmdshellxp_cmdshell是進入操作系統的最佳捷徑,是資料庫留給操作系統的一個大後門。如果你需要這個存儲過程,請用這個語句也可以恢復過來。sp_addextendedproc xp_cmdshell, xpsql70.dll 如果你不需要請丟棄OLE自動存儲過程(會造成管理器中的某些特徵不能使用),這些過程包括如下:Sp_OACreateSp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty Sp_OAMethod Sp_OASetProperty Sp_OAStop 去掉不需要的注冊表訪問的存儲過程,注冊表存儲過程甚至能夠讀出操作系統管理員的密碼來,如下:Xp_regaddmultistring Xp_regdeletekeyXp_regdeletevalue Xp_regenumvaluesXp_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本身具備足夠的安全防範能力。當然,更主要的還是要加強內部的安全控制和管理員的安全培訓,而且安全性問題是一個長期的解決過程,還需要以後進行更多的安全維護一、概述在應用系統中,資料庫往往是最核心的部分,一旦資料庫毀壞或損壞,將會帶來巨大的損失,所以資料庫的管理越來越重要。我們在做資料庫管理與維護工作中,不可避免會出現各種各樣的錯誤,本文針對資料庫的日誌文件丟失時如何利用MDF文件恢復資料庫的方法進行了研究。二、資料庫的恢復當資料庫的主數據MDF文件完好無損時,在丟失了LDF文件的情況下,如何利用MDF文件恢復資料庫?我們把SQL Server的日誌文件分為兩類:一類是無活動事務的日誌,另一類是含活動事務的日誌,根據不同的日誌,採取不同的方法來恢復資料庫。
1. 無活動事務的日誌恢復:無活動事務的日誌丟失時,我們很容易利用MDF文件直接恢復資料庫,具體方法如下:
①.分離被質疑的資料庫,可用企業管理器中的"分離資料庫工具",或者用存儲過程sp_detach_db分離資料庫;②利用MDF文件附加資料庫生成新的日誌文件,可用企業管理器中的"附加資料庫"的工具,或者用存儲過程sp_attach_single_file_db附加資料庫。如果資料庫的日誌文件中含有活動事務,利用此方法就不能恢復資料庫。
2. 含活動事務的日誌恢復:含有活動事務的日誌丟失時,利用上述方法就會出現"資料庫和日誌文件不符合,不能附加資料庫"。對於這種情況下,我們採用如下方法:
①新建同名資料庫AAA,並設它為緊急模式•停止SQL Server伺服器;•把資料庫主數據MDF文件移走;•啟SQL Server伺服器,新建一個同名的資料庫AAA;•停止SQL Server伺服器,把移走的MDF文件再覆蓋回來;•啟動SQL Server伺服器,把AAA設為緊急模式,不過默認情況下,系統表是不能隨便修改的,必須首先設置一下使其能被修改,運行以下語句即可: Use Master Gosp_configure 』allow updates』,1 reconfigure with override Go 接著運行以下語句,把AAA資料庫設為緊急模式,即把Sysdatabases表中AAA資料庫的status屬性設為』37268』,就表示把AAA資料庫處於緊急模式。 updatesysdatabases set status=32768 where hame=』AAA』如果沒有報告什麼錯誤,就可以進行以下操作。
②設置資料庫AAA為單用戶模式,並檢查資料庫•重啟SQL Server伺服器;•把資料庫AAA設為單用戶模式Sp_dboption 』AAA』, 』single user』, 』true』 •運行以下語句,檢查資料庫AAA DBCCCHECKDB(』AAA』) 如果沒有什麼大的問題就可以把資料庫的狀態改回去。
③還原資料庫的狀態運行以下語句,就可以把資料庫的狀態還原: update sysdatabases set status=28 wherename=』AAA』 sp_configure 』allow updates』,0 reconfigure with override Go 如果沒有什麼大的問題,刷新一下資料庫,資料庫AAA又會出現在你面前,但目前恢復工作還沒有做完,此時的資料庫仍不能工作,還要進行下面的處理,才能真正恢復。④利用DTS的導入導出向導,把資料庫AAA導入到一個新建資料庫BBB中•新建一個資料庫BBB; •右擊BBB,選擇IMPORT功能,打開導入向導;•目標源選擇"在SQL Server資料庫之間復制對象和資料庫",這樣可以把表結構,數據
④ 如何保證SQLServer資料庫安全
目前,針對SQL Server資料庫的應用級入侵已經變得越來越肆無忌憚,像SQL注入、跨站點腳本攻擊和未經授權的用戶訪問等。所有這些入侵都有可能繞過前台安全系統並對資料庫系統攻擊。對於資料庫管理來說,保護數據不受內部和外部侵害是一項重要的工作。SQL Server 正日益廣泛的使用於各部門內外,作為資料庫系統管理員,需要深入的理解SQL Server的安全性控制策略,以實現管理安全性的目標。那麼,如何確保SQL Server資料庫的安全性呢,我們可以從以下兩方面考慮。it培訓機構
首先、採取業界已存在的且比較成熟的資料庫審計解決方案來實現
實時記錄用戶對資料庫系統的所有操作(如:插入、刪除、更新、用戶自定義操作等),並還原SQL操作命令包括源IP地址、目的IP地址、訪問時間、用戶名、資料庫操作類型、資料庫表名、欄位名等,如此,可實現對資料庫安全事件准確全程跟蹤定位。
實時檢查資料庫不安全配置、資料庫潛在弱點、資料庫用戶弱口令、資料庫軟體補丁層次、資料庫潛藏木馬等。
進行全方位的多層(應用層、中間層、資料庫層)的訪問審計,通過多層業務審計,實現數據操作原始訪問者的精確定位。
針對於資料庫的操作行為進行實時檢測,並預設置風險控制策略,結合對資料庫活動的實時監控信息,進行特徵檢測,任何嘗試性的攻擊操作都將被檢測到並進行阻斷或告警;並支持通過郵件、簡訊、SYSLOG、SNMP、屏幕等方式告警。
其次、制定相關的資料庫管理流程
不同的人員對資料庫的操作職責不一樣,所有人員對資料庫的操作均需要事前審批,對一些非常重要的操作需要二級以上審批。申請操作時,需明確在什麼人,什麼時間,因為何事,對哪個資料庫(或表),進行什麼樣的操作,可能有什麼樣的風險及採取的補救措施等。
資料庫數據的丟失以及資料庫被非法用戶的侵入使得資料庫管理員身心疲憊不堪,資料庫安全性問題對於資料庫管理員來說簡直就是噩夢。對於資料庫數據的安全問題。本文對圍繞資料庫的安全性問題提出了一些安全性策略,希望對資料庫管理員有所幫助。
⑤ 如何確保SQLServer的安全性
sqlserver 自身有安全性相關的功能,根據這個功能進行設置就可以了。
⑥ sqlserver有哪些安全策略
Microsoft建立了一種既靈活又強大的安全管理機制,它能夠對用戶訪問SQL Server伺服器系統和資料庫的安全進行全面地管理。按照本文介紹的步驟,你可以為SQL Server 7.0(或2000)構造出一個靈活的、可管理的安全策略,而且它的安全性經得起考驗。
一、驗證方法選擇
本文對驗證(authentication)和授權(authorization)這兩個概念作不同的解釋。驗證是指檢驗用戶的身份標識;授權是指 允許用戶做些什麼。在本文的討論中,驗證過程在用戶登錄SQL Server的時候出現,授權過程在用戶試圖訪問數據或執行命令的時候出現。
構造安全策略的第一個步驟是確定SQL Server用哪種方式驗證用戶。SQL Server的驗證是把一組帳戶、密碼與Master資料庫Sysxlogins表中的一個清單進行匹配。Windows NT/2000的驗證是請求域控制器檢查用戶身份的合法性。一般地,如果伺服器可以訪問域控制器,我們應該使用Windows NT/2000驗證。域控制器可以是Win2K伺服器,也可以是NT伺服器。無論在哪種情況下,SQL Server都接收到一個訪問標記(Access Token)。訪問標記是在驗證過程中構造出來的一個特殊列表,其中包含了用戶的SID(安全標識號)以及一系列用戶所在組的SID。正如本文後面所介紹 的,SQL Server以這些SID為基礎授予訪問許可權。注意,操作系統如何構造訪問標記並不重要,SQL Server只使用訪問標記中的SID。也就是說,不論你使用SQL Server 2000、SQL Server 7.0、Win2K還是NT進行驗證都無關緊要,結果都一樣。
如果使用SQL Server驗證的登錄,它最大的好處是很容易通過Enterprise Manager實現,最大的缺點在於SQL Server驗證的登錄只對特定的伺服器有效,也就是說,在一個多伺服器的環境中管理比較困難。使用SQL Server進行驗證的第二個重要的缺點是,對於每一個資料庫,我們必須分別地為它管理許可權。如果某個用戶對兩個資料庫有相同的許可權要求,我們必須手工設 置兩個資料庫的許可權,或者編寫腳本設置許可權。如果用戶數量較少,比如25個以下,而且這些用戶的許可權變化不是很頻繁,SQL Server驗證的登錄或許適用。但是,在幾乎所有的其他情況下(有一些例外情況,例如直接管理安全問題的應用),這種登錄方式的管理負擔將超過它的優 點。
二、Web環境中的驗證
即使最好的安全策略也常常在一種情形前屈服,這種情形就是在Web應用中使用SQL Server的數據。在這種情形下,進行驗證的典型方法是把一組SQL Server登錄名稱和密碼嵌入到Web伺服器上運行的程序,比如ASP頁面或者CGI腳本;然後,由Web伺服器負責驗證用戶,應用程序則使用它自己的 登錄帳戶(或者是系統管理員sa帳戶,或者為了方便起見,使用Sysadmin伺服器角色中的登錄帳戶)為用戶訪問數據。
這種安排有幾個缺點,其中最重要的包括:它不具備對用戶在伺服器上的活動進行審核的能力,完全依賴於Web應用程序實現用戶驗證,當SQL Server需要限定用戶許可權時不同的用戶之間不易區別。如果你使用的是IIS 5.0或者IIS 4.0,你可以用四種方法驗證用戶。第一種方法是為每一個網站和每一個虛擬目錄創建一個匿名用戶的NT帳戶。此後,所有應用程序登錄SQL Server時都使用該安全環境。我們可以通過授予NT匿名帳戶合適的許可權,改進審核和驗證功能。
第二種方法是讓所有網站使用Basic驗證。此時,只有當用戶在對話框中輸入了合法的帳戶和密碼,IIS才會允許他們訪問頁面。IIS依靠一個NT 安全資料庫實現登錄身份驗證,NT安全資料庫既可以在本地伺服器上,也可以在域控制器上。當用戶運行一個訪問SQL Server資料庫的程序或者腳本時,IIS把用戶為了瀏覽頁面而提供的身份信息發送給伺服器。如果你使用這種方法,應該記住:在通常情況下,瀏覽器與服 務器之間的密碼傳送一般是不加密的,對於那些使用Basic驗證而安全又很重要的網站,你必須實現SSL(Secure Sockets Layer,安全套接字層)。
在客戶端只使用IE 5.0、IE 4.0、IE 3.0瀏覽器的情況下,你可以使用第三種驗證方法。你可以在Web網站上和虛擬目錄上都啟用NT驗證。IE會把用戶登錄計算機的身份信息發送給IIS,當 該用戶試圖登錄SQL Server時IIS就使用這些登錄信息。使用這種簡化的方法時,我們可以在一個遠程網站的域上對用戶身份進行驗證(該遠程網站登錄到一個與運行著Web 伺服器的域有著信任關系的域)。
最後,如果用戶都有個人數字證書,你可以把那些證書映射到本地域的NT帳戶上。個人數字證書與伺服器數字證書以同樣的技術為基礎,它證明用戶身份標 識的合法性,所以可以取代NT的Challenge/Response(質詢/回應)驗證演算法。Netscape和IE都自動在每一個頁面請求中把證書信 息發送給IIS。IIS提供了一個讓管理員把證書映射到NT帳戶的工具。因此,我們可以用數字證書取代通常的提供帳戶名字和密碼的登錄過程。
由此可見,通過NT帳戶驗證用戶時我們可以使用多種實現方法。即使當用戶通過IIS跨越Internet連接SQL Server時,選擇仍舊存在。因此,你應該把NT驗證作為首選的用戶身份驗證辦法。
三、設置全局組
構造安全策略的下一個步驟是確定用戶應該屬於什麼組。通常,每一個組織或應用程序的用戶都可以按照他們對數據的特定訪問要求分成許多類別。例如,會 計應用軟體的用戶一般包括:數據輸入操作員,數據輸入管理員,報表編寫員,會計師,審計員,財務經理等。每一組用戶都有不同的資料庫訪問要求。