Microsoft建立了一種既靈活又強(qiáng)大的安全管理機(jī)制,它能夠?qū)τ脩粼L問(wèn)SQL Server服務(wù)器系統(tǒng)和數(shù)據(jù)庫(kù)的安全進(jìn)行全面地管理。按照本文介紹的步驟,你可以為SQL Server 7.0(或2000)構(gòu)造出一個(gè)靈活的、可管理的安全策略,而且它的安全性經(jīng)得起考驗(yàn)。
創(chuàng)新互聯(lián)建站長(zhǎng)期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為埇橋區(qū)企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),埇橋區(qū)網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
一、驗(yàn)證方法選擇
本文對(duì)驗(yàn)證(authentication)和授權(quán)(authorization)這兩個(gè)概念作不同的解釋。驗(yàn)證是指檢驗(yàn)用戶的身份標(biāo)識(shí);授權(quán)是指 允許用戶做些什么。在本文的討論中,驗(yàn)證過(guò)程在用戶登錄SQL Server的時(shí)候出現(xiàn),授權(quán)過(guò)程在用戶試圖訪問(wèn)數(shù)據(jù)或執(zhí)行命令的時(shí)候出現(xiàn)。
構(gòu)造安全策略的第一個(gè)步驟是確定SQL Server用哪種方式驗(yàn)證用戶。SQL Server的驗(yàn)證是把一組帳戶、密碼與Master數(shù)據(jù)庫(kù)Sysxlogins表中的一個(gè)清單進(jìn)行匹配。Windows NT/2000的驗(yàn)證是請(qǐng)求域控制器檢查用戶身份的合法性。一般地,如果服務(wù)器可以訪問(wèn)域控制器,我們應(yīng)該使用Windows NT/2000驗(yàn)證。域控制器可以是Win2K服務(wù)器,也可以是NT服務(wù)器。無(wú)論在哪種情況下,SQL Server都接收到一個(gè)訪問(wèn)標(biāo)記(Access Token)。訪問(wèn)標(biāo)記是在驗(yàn)證過(guò)程中構(gòu)造出來(lái)的一個(gè)特殊列表,其中包含了用戶的SID(安全標(biāo)識(shí)號(hào))以及一系列用戶所在組的SID。正如本文后面所介紹 的,SQL Server以這些SID為基礎(chǔ)授予訪問(wèn)權(quán)限。注意,操作系統(tǒng)如何構(gòu)造訪問(wèn)標(biāo)記并不重要,SQL Server只使用訪問(wèn)標(biāo)記中的SID。也就是說(shuō),不論你使用SQL Server 2000、SQL Server 7.0、Win2K還是NT進(jìn)行驗(yàn)證都無(wú)關(guān)緊要,結(jié)果都一樣。
如果使用SQL Server驗(yàn)證的登錄,它最大的好處是很容易通過(guò)Enterprise Manager實(shí)現(xiàn),最大的缺點(diǎn)在于SQL Server驗(yàn)證的登錄只對(duì)特定的服務(wù)器有效,也就是說(shuō),在一個(gè)多服務(wù)器的環(huán)境中管理比較困難。使用SQL Server進(jìn)行驗(yàn)證的第二個(gè)重要的缺點(diǎn)是,對(duì)于每一個(gè)數(shù)據(jù)庫(kù),我們必須分別地為它管理權(quán)限。如果某個(gè)用戶對(duì)兩個(gè)數(shù)據(jù)庫(kù)有相同的權(quán)限要求,我們必須手工設(shè) 置兩個(gè)數(shù)據(jù)庫(kù)的權(quán)限,或者編寫(xiě)腳本設(shè)置權(quán)限。如果用戶數(shù)量較少,比如25個(gè)以下,而且這些用戶的權(quán)限變化不是很頻繁,SQL Server驗(yàn)證的登錄或許適用。但是,在幾乎所有的其他情況下(有一些例外情況,例如直接管理安全問(wèn)題的應(yīng)用),這種登錄方式的管理負(fù)擔(dān)將超過(guò)它的優(yōu) 點(diǎn)。
二、Web環(huán)境中的驗(yàn)證
即使最好的安全策略也常常在一種情形前屈服,這種情形就是在Web應(yīng)用中使用SQL Server的數(shù)據(jù)。在這種情形下,進(jìn)行驗(yàn)證的典型方法是把一組SQL Server登錄名稱(chēng)和密碼嵌入到Web服務(wù)器上運(yùn)行的程序,比如ASP頁(yè)面或者CGI腳本;然后,由Web服務(wù)器負(fù)責(zé)驗(yàn)證用戶,應(yīng)用程序則使用它自己的 登錄帳戶(或者是系統(tǒng)管理員sa帳戶,或者為了方便起見(jiàn),使用Sysadmin服務(wù)器角色中的登錄帳戶)為用戶訪問(wèn)數(shù)據(jù)。
這種安排有幾個(gè)缺點(diǎn),其中最重要的包括:它不具備對(duì)用戶在服務(wù)器上的活動(dòng)進(jìn)行審核的能力,完全依賴(lài)于Web應(yīng)用程序?qū)崿F(xiàn)用戶驗(yàn)證,當(dāng)SQL Server需要限定用戶權(quán)限時(shí)不同的用戶之間不易區(qū)別。如果你使用的是IIS 5.0或者IIS 4.0,你可以用四種方法驗(yàn)證用戶。第一種方法是為每一個(gè)網(wǎng)站和每一個(gè)虛擬目錄創(chuàng)建一個(gè)匿名用戶的NT帳戶。此后,所有應(yīng)用程序登錄SQL Server時(shí)都使用該安全環(huán)境。我們可以通過(guò)授予NT匿名帳戶合適的權(quán)限,改進(jìn)審核和驗(yàn)證功能。
第二種方法是讓所有網(wǎng)站使用Basic驗(yàn)證。此時(shí),只有當(dāng)用戶在對(duì)話框中輸入了合法的帳戶和密碼,IIS才會(huì)允許他們?cè)L問(wèn)頁(yè)面。IIS依靠一個(gè)NT 安全數(shù)據(jù)庫(kù)實(shí)現(xiàn)登錄身份驗(yàn)證,NT安全數(shù)據(jù)庫(kù)既可以在本地服務(wù)器上,也可以在域控制器上。當(dāng)用戶運(yùn)行一個(gè)訪問(wèn)SQL Server數(shù)據(jù)庫(kù)的程序或者腳本時(shí),IIS把用戶為了瀏覽頁(yè)面而提供的身份信息發(fā)送給服務(wù)器。如果你使用這種方法,應(yīng)該記?。涸谕ǔG闆r下,瀏覽器與服 務(wù)器之間的密碼傳送一般是不加密的,對(duì)于那些使用Basic驗(yàn)證而安全又很重要的網(wǎng)站,你必須實(shí)現(xiàn)SSL(Secure Sockets Layer,安全套接字層)。
在客戶端只使用IE 5.0、IE 4.0、IE 3.0瀏覽器的情況下,你可以使用第三種驗(yàn)證方法。你可以在Web網(wǎng)站上和虛擬目錄上都啟用NT驗(yàn)證。IE會(huì)把用戶登錄計(jì)算機(jī)的身份信息發(fā)送給IIS,當(dāng) 該用戶試圖登錄SQL Server時(shí)IIS就使用這些登錄信息。使用這種簡(jiǎn)化的方法時(shí),我們可以在一個(gè)遠(yuǎn)程網(wǎng)站的域上對(duì)用戶身份進(jìn)行驗(yàn)證(該遠(yuǎn)程網(wǎng)站登錄到一個(gè)與運(yùn)行著Web 服務(wù)器的域有著信任關(guān)系的域)。
最后,如果用戶都有個(gè)人數(shù)字證書(shū),你可以把那些證書(shū)映射到本地域的NT帳戶上。個(gè)人數(shù)字證書(shū)與服務(wù)器數(shù)字證書(shū)以同樣的技術(shù)為基礎(chǔ),它證明用戶身份標(biāo) 識(shí)的合法性,所以可以取代NT的Challenge/Response(質(zhì)詢/回應(yīng))驗(yàn)證算法。Netscape和IE都自動(dòng)在每一個(gè)頁(yè)面請(qǐng)求中把證書(shū)信 息發(fā)送給IIS。IIS提供了一個(gè)讓管理員把證書(shū)映射到NT帳戶的工具。因此,我們可以用數(shù)字證書(shū)取代通常的提供帳戶名字和密碼的登錄過(guò)程。
由此可見(jiàn),通過(guò)NT帳戶驗(yàn)證用戶時(shí)我們可以使用多種實(shí)現(xiàn)方法。即使當(dāng)用戶通過(guò)IIS跨越Internet連接SQL Server時(shí),選擇仍舊存在。因此,你應(yīng)該把NT驗(yàn)證作為首選的用戶身份驗(yàn)證辦法。
三、設(shè)置全局組
構(gòu)造安全策略的下一個(gè)步驟是確定用戶應(yīng)該屬于什么組。通常,每一個(gè)組織或應(yīng)用程序的用戶都可以按照他們對(duì)數(shù)據(jù)的特定訪問(wèn)要求分成許多類(lèi)別。例如,會(huì) 計(jì)應(yīng)用軟件的用戶一般包括:數(shù)據(jù)輸入操作員,數(shù)據(jù)輸入管理員,報(bào)表編寫(xiě)員,會(huì)計(jì)師,審計(jì)員,財(cái)務(wù)經(jīng)理等。每一組用戶都有不同的數(shù)據(jù)庫(kù)訪問(wèn)要求。
一、基本安全設(shè)定:
(1)文件系統(tǒng)的設(shè)定 windows2000server 支持多種文件系統(tǒng),最安全的要數(shù)NTFS文件系統(tǒng),如果你的windows2000server要用作服務(wù)器,最好將所有的分區(qū)都格式化為NTFS文件系統(tǒng),fat32是不能用的。
(2)補(bǔ)?。╬ack) 目前windows2000已經(jīng)到sp4了,這個(gè)大補(bǔ)丁一定要裝的,安裝sp4后再到網(wǎng)絡(luò)上升級(jí),將微軟提供的各種重要系統(tǒng)安全更新全部都升級(jí),不要怕麻煩,這是防病毒和黑客攻擊的非常重要安全設(shè)置步驟。
(3)帳號(hào)安全帳號(hào)是windows2000server的重要的安全保證,要注意區(qū)分一些工作組的權(quán)限: administrators是系統(tǒng)管理員組,administrator是系統(tǒng)默認(rèn)的管理帳號(hào),administrator最好設(shè)置一個(gè)復(fù)雜的密碼,復(fù)雜到什么程度呢?簡(jiǎn)單的說(shuō),自己都要記不住這個(gè)密碼,這個(gè)密碼可以是字符、數(shù)字、符號(hào)、大小寫(xiě)的組合(如:AGgF!452KhtUN),密碼不要讓別人猜得到,不要用自己得電話號(hào)碼啦之類(lèi)的東西,最好在筆記本上將密碼設(shè)定好后再設(shè)置,設(shè)好密碼后妥善保管記錄密碼的筆記本,每隔一段時(shí)間更改自己的密碼 guest帳號(hào)最好禁止使用,如果沒(méi)有必要,不要添加其他的系統(tǒng)管理員帳號(hào)。
(4)關(guān)閉不必要的服務(wù)在服務(wù)中將一些不常用的服務(wù)關(guān)閉(比如打印、遠(yuǎn)程注冊(cè)表操作,信息發(fā)送等不必要的服務(wù))。
(5)網(wǎng)絡(luò)協(xié)議如果沒(méi)有其他的用途,windows2000server只需要安裝tcp/ip協(xié)議,其他不必要的協(xié)議統(tǒng)統(tǒng)刪除。(6)如果沒(méi)必要,IIS一定不要安裝(如果需要安裝iis,那么看后面的設(shè)置) IIS是windows2000server中最不安全的組件,不裝IIS,windows2000將是很安全的。
(7)默認(rèn)共享的刪除 windows2000server默認(rèn)的共享有以下幾種 c$ d$ e$ ..... IPC$ ADMIN$ 這些默認(rèn)共享一定要關(guān),否者h(yuǎn)k利用簡(jiǎn)單的Net use命令就可以將你的服務(wù)器黑掉下面提供簡(jiǎn)單的關(guān)閉這些共享的方法 A、建立一個(gè)批處理文件,如a.bat B、在該批處理文件中添加下面的語(yǔ)句 net share c$ /del (這是取消c盤(pán)的默認(rèn)共享,同理 net share d$ /del 是取消d盤(pán)的共享,你有多少個(gè)盤(pán)符,就編多少個(gè)以上的語(yǔ)句) net share ipc$/del (刪除ipc默認(rèn)共享) net share admin$ /del (刪除 admin默認(rèn)共享) C 、將以上的語(yǔ)句添加完后,將該文件放入開(kāi)始菜單中程序中啟動(dòng)文件夾中,讓windows2000server每次啟動(dòng)都將默認(rèn)的共享刪除(7)CMD的設(shè)置 cmd.exe是windows2000中非常重要的文件,很多漏洞都是要*調(diào)用該個(gè)文件,該文件在windows2000server所在目錄的system32中,我們需要對(duì)其進(jìn)行設(shè)定 A、將該文件從system32中拷貝出來(lái)放在其他地方,將原來(lái)的文件刪除 B、將拷貝出來(lái)的文件進(jìn)行權(quán)限設(shè)定,只允許administrator訪問(wèn),不允許其他任何的工作組或用戶訪問(wèn)該文件。
(8)windows2000server終端服務(wù)(默認(rèn)3389端口) windows2000server提供了遠(yuǎn)程終端服務(wù),此服務(wù)方便了網(wǎng)絡(luò)管理員對(duì)服務(wù)器的遠(yuǎn)程管理,但是,該服務(wù)也為黑客提供了非常危險(xiǎn)的攻擊,網(wǎng)絡(luò)黑客口中的所謂跳板(肉雞)絕大部分都是利用該功能進(jìn)行自我隱蔽的攻擊。一旦系統(tǒng)管理員的密碼被破解,而該服務(wù)器又提供終端服務(wù),黑客就可以完全控制了該服務(wù)器,不但服務(wù)器的各種資料會(huì)完全暴露,而且黑客還會(huì)利用這臺(tái)服務(wù)器去攻擊其他的服務(wù)器,因此該服務(wù)除非你覺(jué)得自己的服務(wù)器足夠安全,否則最好不要打開(kāi),特別是暴露在互連網(wǎng)絡(luò)中的服務(wù)器,打開(kāi)該功能一定要小心謹(jǐn)慎。 A、如何知道自己的終端服務(wù)是否打開(kāi)?終端服務(wù)需要安裝,我們可以通過(guò)控制面板中的添加/刪除程序中的添加/刪除windows組件來(lái)安裝,在windows組件向?qū)Я斜碇凶钕旅嬗袃蓚€(gè)組件,一個(gè)是“終端服務(wù)”,一個(gè)是“終端服務(wù)授權(quán)”,我們只需要安裝“終端服務(wù)”這個(gè)組件就可以將該功能啟用,一旦啟用了該功能,默認(rèn)的情況下,我們的tcp3389端口就會(huì)打開(kāi)。所以,我們看看這個(gè)地方,如果你的組件“終端服務(wù)”前面打了勾,就表明你已經(jīng)打開(kāi)了該服務(wù)。有些黑客手段很高明,一旦控制了你的計(jì)算機(jī)后,可以遠(yuǎn)程打開(kāi)該服務(wù),這種情況下,我們最好檢查windows2000server啟用了哪些服務(wù),如何檢查呢?打開(kāi)windows2000server的服務(wù)管理(開(kāi)始菜單——程序——管理工具——服務(wù))。在服務(wù)列表中檢查T(mén)erminal Services這項(xiàng)服務(wù)的狀態(tài),看看如果該服務(wù)處于“ 禁用”狀態(tài),說(shuō)明該服務(wù)沒(méi)打開(kāi),如果該服務(wù)處于“已啟動(dòng)”狀態(tài),說(shuō)明該服務(wù)已經(jīng)打開(kāi)。 B、如何關(guān)閉該服務(wù)!第一步,通過(guò)控制面板中的添加/刪除程序中的添加/刪除windows組件來(lái)將該服務(wù)組件刪除第二步,在服務(wù)中將Terminal Services服務(wù)禁用注意:需要經(jīng)常檢查該服務(wù)是否被非法啟動(dòng),如果你在你沒(méi)有啟動(dòng)該服務(wù)的情況下你發(fā)現(xiàn)它已打開(kāi),非常不幸,你的服務(wù)器已經(jīng)被黑,成為了別人的跳板(肉雞)最好的解決方法是重作服務(wù)器系統(tǒng),不要以為關(guān)閉該服務(wù)就行了。
(9)telnet服務(wù)(默認(rèn)23端口)相對(duì)于3389來(lái)講,telnet服務(wù)更不容易引起管理員的注意,該服務(wù)以前是UNIX和Linux類(lèi)系統(tǒng)提供的遠(yuǎn)程管理終端服務(wù),windows2000server也提供了,它也是一個(gè)終端服務(wù),只不過(guò)telnet服務(wù)是字符界面,而3389服務(wù)是圖形界面,二者都能完全遠(yuǎn)程控制服務(wù)器的所有功能。我以前在利用肉雞的時(shí)候,一般都不用3389,為什么呢?該服務(wù)速度慢,我一般都是打開(kāi)肉雞的telnet服務(wù),速度非???,功能也很全面,又不容易被發(fā)覺(jué) A、如何知道自己的telnet服務(wù)是否打開(kāi)?在windows2000server控制面板——管理工具中有一項(xiàng)“Telnet 服務(wù)器管理”(對(duì)應(yīng)的文件是system32中的tlntadmn.exe),這就是該服務(wù)的開(kāi)關(guān),我們可以利用該程序配置我們的telnet服務(wù)。打開(kāi)開(kāi)始菜單——程序——管理工具——服務(wù),在服務(wù)列表中有該服務(wù)對(duì)應(yīng)的一項(xiàng)“Telnet”,默認(rèn)的情況下,該服務(wù)狀態(tài)是“手動(dòng)”,如果,該服務(wù)是“已啟動(dòng)”狀態(tài),說(shuō)明該服務(wù)已經(jīng)啟動(dòng)了,你可以用以下命令連接在windows(98/2000/xp/2003)字符模式下輸入: telnet 服務(wù)器的IP地址如果出現(xiàn)了登陸界面,非常不幸,你的telnet服務(wù)真的已開(kāi),如果不是你開(kāi)的,非常不幸,你被黑了,你可能成為了肉雞。 B、如何關(guān)閉該服務(wù)!打開(kāi)開(kāi)始菜單——程序——管理工具——服務(wù),在服務(wù)中將telnet服務(wù)禁用建議:最好將system32中的tlntadmn.exe拷貝出來(lái)放到其他文件夾中并改名,并將該文件從system32中刪除。隨時(shí)檢查telnet服務(wù)的狀態(tài),如果該服務(wù)是“已啟動(dòng)”狀態(tài),而又不是你啟動(dòng)的,最好重新安裝服務(wù)器系統(tǒng)。最好隨時(shí)掃描你的服務(wù)器所開(kāi)的端口,如果23端口已開(kāi)或有一些不知名的端口已開(kāi)(因?yàn)楹诳秃芸赡軙?huì)將提供該服務(wù)的端口改為其他的端口來(lái)逃避檢查),用telnet命令測(cè)試一下,看看能不能連接。附:telnet命令格式 telnet ip地址端口如:telnet 192.168.1.1 (連接服務(wù)器192.168.1.1的默認(rèn)23端口)如:telnet 192.168.1.1555 (連接服務(wù)器192.168.1.1的555端口) SQL Server 2000的安全配置在進(jìn)行SQL Server 2000數(shù)據(jù)庫(kù)的安全配置之前,首先你必須對(duì)操作系統(tǒng)進(jìn)行安全配置,保證你的操作系統(tǒng)處于安全狀態(tài)。然后對(duì)你要使用的操作數(shù)據(jù)庫(kù)軟件(程序)進(jìn)行必要的安全審核,比如對(duì)ASP、PHP等腳本,這是很多基于數(shù)據(jù)庫(kù)的WEB應(yīng)用常出現(xiàn)的安全隱患,對(duì)于腳本主要是一個(gè)過(guò)濾問(wèn)題,需要過(guò)濾一些類(lèi)似 , ‘ @ / 等字符,防止破壞者構(gòu)造惡意的SQL語(yǔ)句。接著,安裝SQL Server2000后請(qǐng)打上補(bǔ)丁sp1以及最新的sp2。 1、使用安全的密碼策略我們把密碼策略擺在所有安全配置的第一步,請(qǐng)注意,很多數(shù)據(jù)庫(kù)帳號(hào)的密碼過(guò)于簡(jiǎn)單,這跟系統(tǒng)密碼過(guò)于簡(jiǎn)單是一個(gè)道理。對(duì)于sa更應(yīng)該注意,同時(shí)不要讓sa帳號(hào)的密碼寫(xiě)于應(yīng)用程序或者腳本中。健壯的密碼是安全的第一步!SQL Server2000安裝的時(shí)候,如果是使用混合模式,那么就需要輸入sa的密碼,除非你確認(rèn)必須使用空密碼。這比以前的版本有所改進(jìn)。同時(shí)養(yǎng)成定期修改密碼的好習(xí)慣。數(shù)據(jù)庫(kù)管理員應(yīng)該定期查看是否有不符合密碼要求的帳號(hào)。比如使用下面的SQL語(yǔ)句:Use master Select name,Password from syslogins wherepassword is null
2、使用安全帳號(hào)策略:由于SQL Server不能更改sa用戶名稱(chēng),也不能刪除這個(gè)超級(jí)用戶,所以,我們必須對(duì)這個(gè)帳號(hào)進(jìn)行最強(qiáng)的保護(hù),當(dāng)然,包括使用一個(gè)非常強(qiáng)壯的密碼,最好不要在數(shù)據(jù)庫(kù)應(yīng)用中使用sa帳號(hào),只有當(dāng)沒(méi)有其它方法登錄到 SQL Server 實(shí)例(例如,當(dāng)其它系統(tǒng)管理員不可用或忘記了密碼)時(shí)才使用 sa。建議數(shù)據(jù)庫(kù)管理員新建立個(gè)擁有與sa一樣權(quán)限的超級(jí)用戶來(lái)管理數(shù)據(jù)庫(kù)。安全的帳號(hào)策略還包括不要讓管理員權(quán)限的帳號(hào)泛濫。SQL Server的認(rèn)證模式有Windows身份認(rèn)證和混合身份認(rèn)證兩種。如果數(shù)據(jù)庫(kù)管理員不希望操作系統(tǒng)管理員來(lái)通過(guò)操作系統(tǒng)登陸來(lái)接觸數(shù)據(jù)庫(kù)的話,可以在帳號(hào)管理中把系統(tǒng)帳號(hào)“BUILTIN\Administrators”刪除。不過(guò)這樣做的結(jié)果是一旦sa帳號(hào)忘記密碼的話,就沒(méi)有辦法來(lái)恢復(fù)了。很多主機(jī)使用數(shù)據(jù)庫(kù)應(yīng)用只是用來(lái)做查詢、修改等簡(jiǎn)單功能的,請(qǐng)根據(jù)實(shí)際需要分配帳號(hào),并賦予僅僅能夠滿足應(yīng)用要求和需要的權(quán)限。比如,只要查詢功能的,那么就使用一個(gè)簡(jiǎn)單的public帳號(hào)能夠select就可以了。
3、加強(qiáng)數(shù)據(jù)庫(kù)日志記錄:審核數(shù)據(jù)庫(kù)登錄事件的“失敗和成功”,在實(shí)例屬性中選擇“安全性”,將其中的審核級(jí)別選定為全部,這樣在數(shù)據(jù)庫(kù)系統(tǒng)和操作系統(tǒng)日志里面,就詳細(xì)記錄了所有帳號(hào)的登錄事件。請(qǐng)定期查看SQL Server日志檢查是否有可疑的登錄事件發(fā)生,或者使用DOS命令。findstr /C:"登錄" d:\Microsoft SQL Server\MSSQL\LOG\*.*
4、管理擴(kuò)展存儲(chǔ)過(guò)程:對(duì)存儲(chǔ)過(guò)程進(jìn)行大手術(shù),并且對(duì)帳號(hào)調(diào)用擴(kuò)展存儲(chǔ)過(guò)程的權(quán)限要慎重。其實(shí)在多數(shù)應(yīng)用中根本用不到多少系統(tǒng)的存儲(chǔ)過(guò)程,而SQL Server的這么多系統(tǒng)存儲(chǔ)過(guò)程只是用來(lái)適應(yīng)廣大用戶需求的,所以請(qǐng)刪除不必要的存儲(chǔ)過(guò)程,因?yàn)橛行┫到y(tǒng)的存儲(chǔ)過(guò)程能很容易地被人利用起來(lái)提升權(quán)限或進(jìn)行破壞。如果你不需要擴(kuò)展存儲(chǔ)過(guò)程xp_cmdshell請(qǐng)把它去掉。使用這個(gè)SQL語(yǔ)句:use master sp_dropextendedproc xp_cmdshellxp_cmdshell是進(jìn)入操作系統(tǒng)的最佳捷徑,是數(shù)據(jù)庫(kù)留給操作系統(tǒng)的一個(gè)大后門(mén)。如果你需要這個(gè)存儲(chǔ)過(guò)程,請(qǐng)用這個(gè)語(yǔ)句也可以恢復(fù)過(guò)來(lái)。sp_addextendedproc xp_cmdshell, xpsql70.dll 如果你不需要請(qǐng)丟棄OLE自動(dòng)存儲(chǔ)過(guò)程(會(huì)造成管理器中的某些特征不能使用),這些過(guò)程包括如下:Sp_OACreateSp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty Sp_OAMethod Sp_OASetProperty Sp_OAStop 去掉不需要的注冊(cè)表訪問(wèn)的存儲(chǔ)過(guò)程,注冊(cè)表存儲(chǔ)過(guò)程甚至能夠讀出操作系統(tǒng)管理員的密碼來(lái),如下:Xp_regaddmultistring Xp_regdeletekeyXp_regdeletevalue Xp_regenumvaluesXp_regread Xp_regremovemultistring Xp_regwrite 還有一些其他的擴(kuò)展存儲(chǔ)過(guò)程,你也最好檢查檢查。在處理存儲(chǔ)過(guò)程的時(shí)候,請(qǐng)確認(rèn)一下,避免造成對(duì)數(shù)據(jù)庫(kù)或應(yīng)用程序的傷害。
5、使用協(xié)議加密:SQL Server 2000使用的Tabular Data Stream協(xié)議來(lái)進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換,如果不加密的話,所有的網(wǎng)絡(luò)傳輸都是明文的,包括密碼、數(shù)據(jù)庫(kù)內(nèi)容等等,這是一個(gè)很大的安全威脅。能被人在網(wǎng)絡(luò)中截獲到他們需要的東西,包括數(shù)據(jù)庫(kù)帳號(hào)和密碼。所以,在條件容許情況下,最好使用SSL來(lái)加密協(xié)議,當(dāng)然,你需要一個(gè)證書(shū)來(lái)支持。
6、不要讓人隨便探測(cè)到你的TCP/IP端口:默認(rèn)情況下,SQL Server使用1433端口監(jiān)聽(tīng),很多人都說(shuō)SQL Server配置的時(shí)候要把這個(gè)端口改變,這樣別人就不能很容易地知道使用的什么端口了??上?,通過(guò)微軟未公開(kāi)的1434端口的UDP探測(cè)可以很容易知道SQL Server使用的什么TCP/IP端口了。不過(guò)微軟還是考慮到了這個(gè)問(wèn)題,畢竟公開(kāi)而且開(kāi)放的端口會(huì)引起不必要的麻煩。在實(shí)例屬性中選擇TCP/IP協(xié)議的屬性。選擇隱藏 SQL Server 實(shí)例。如果隱藏了 SQL Server 實(shí)例,則將禁止對(duì)試圖枚舉網(wǎng)絡(luò)上現(xiàn)有的 SQL Server 實(shí)例的客戶端所發(fā)出的廣播作出響應(yīng)。這樣,別人就不能用1434來(lái)探測(cè)你的TCP/IP端口了(除非用Port Scan)。
7、修改TCP/IP使用的端口:請(qǐng)?jiān)谏弦徊脚渲玫幕A(chǔ)上,更改原默認(rèn)的1433端口。在實(shí)例屬性中選擇網(wǎng)絡(luò)配置中的TCP/IP協(xié)議的屬性,將TCP/IP使用的默認(rèn)端口變?yōu)槠渌丝? 9、拒絕來(lái)自1434端口的探測(cè)由于1434端口探測(cè)沒(méi)有限制,能夠被別人探測(cè)到一些數(shù)據(jù)庫(kù)信息,而且還可能遭到DOS攻擊讓數(shù)據(jù)庫(kù)服務(wù)器的CPU負(fù)荷增大,所以對(duì)Windows 2000操作系統(tǒng)來(lái)說(shuō),在IPSec過(guò)濾拒絕掉1434端口的UDP通訊,可以盡可能地隱藏你的SQL Server。10、對(duì)網(wǎng)絡(luò)連接進(jìn)行IP限制SQL Server 2000數(shù)據(jù)庫(kù)系統(tǒng)本身沒(méi)有提供網(wǎng)絡(luò)連接的安全解決辦法,但是Windows 2000提供了這樣的安全機(jī)制。使用操作系統(tǒng)自己的IPSec可以實(shí)現(xiàn)IP數(shù)據(jù)包的安全性。請(qǐng)對(duì)IP連接進(jìn)行限制,只保證自己的IP能夠訪問(wèn),也拒絕其他IP進(jìn)行的端口連接,把來(lái)自網(wǎng)絡(luò)上的安全威脅進(jìn)行有效的控制。關(guān)于IPSec的使用請(qǐng)參看: 上面主要介紹的一些SQL Server的安全配置,經(jīng)過(guò)以上的配置,可以讓SQL Server本身具備足夠的安全防范能力。當(dāng)然,更主要的還是要加強(qiáng)內(nèi)部的安全控制和管理員的安全培訓(xùn),而且安全性問(wèn)題是一個(gè)長(zhǎng)期的解決過(guò)程,還需要以后進(jìn)行更多的安全維護(hù)一、概述在應(yīng)用系統(tǒng)中,數(shù)據(jù)庫(kù)往往是最核心的部分,一旦數(shù)據(jù)庫(kù)毀壞或損壞,將會(huì)帶來(lái)巨大的損失,所以數(shù)據(jù)庫(kù)的管理越來(lái)越重要。我們?cè)谧鰯?shù)據(jù)庫(kù)管理與維護(hù)工作中,不可避免會(huì)出現(xiàn)各種各樣的錯(cuò)誤,本文針對(duì)數(shù)據(jù)庫(kù)的日志文件丟失時(shí)如何利用MDF文件恢復(fù)數(shù)據(jù)庫(kù)的方法進(jìn)行了研究。二、數(shù)據(jù)庫(kù)的恢復(fù)當(dāng)數(shù)據(jù)庫(kù)的主數(shù)據(jù)MDF文件完好無(wú)損時(shí),在丟失了LDF文件的情況下,如何利用MDF文件恢復(fù)數(shù)據(jù)庫(kù)?我們把SQL Server的日志文件分為兩類(lèi):一類(lèi)是無(wú)活動(dòng)事務(wù)的日志,另一類(lèi)是含活動(dòng)事務(wù)的日志,根據(jù)不同的日志,采取不同的方法來(lái)恢復(fù)數(shù)據(jù)庫(kù)?!?/p>
1. 無(wú)活動(dòng)事務(wù)的日志恢復(fù):無(wú)活動(dòng)事務(wù)的日志丟失時(shí),我們很容易利用MDF文件直接恢復(fù)數(shù)據(jù)庫(kù),具體方法如下:
①.分離被質(zhì)疑的數(shù)據(jù)庫(kù),可用企業(yè)管理器中的"分離數(shù)據(jù)庫(kù)工具",或者用存儲(chǔ)過(guò)程sp_detach_db分離數(shù)據(jù)庫(kù);②利用MDF文件附加數(shù)據(jù)庫(kù)生成新的日志文件,可用企業(yè)管理器中的"附加數(shù)據(jù)庫(kù)"的工具,或者用存儲(chǔ)過(guò)程sp_attach_single_file_db附加數(shù)據(jù)庫(kù)。如果數(shù)據(jù)庫(kù)的日志文件中含有活動(dòng)事務(wù),利用此方法就不能恢復(fù)數(shù)據(jù)庫(kù)。
2. 含活動(dòng)事務(wù)的日志恢復(fù):含有活動(dòng)事務(wù)的日志丟失時(shí),利用上述方法就會(huì)出現(xiàn)"數(shù)據(jù)庫(kù)和日志文件不符合,不能附加數(shù)據(jù)庫(kù)"。對(duì)于這種情況下,我們采用如下方法:
①新建同名數(shù)據(jù)庫(kù)AAA,并設(shè)它為緊急模式?停止SQL Server服務(wù)器;?把數(shù)據(jù)庫(kù)主數(shù)據(jù)MDF文件移走;?啟SQL Server服務(wù)器,新建一個(gè)同名的數(shù)據(jù)庫(kù)AAA;?停止SQL Server服務(wù)器,把移走的MDF文件再覆蓋回來(lái);?啟動(dòng)SQL Server服務(wù)器,把AAA設(shè)為緊急模式,不過(guò)默認(rèn)情況下,系統(tǒng)表是不能隨便修改的,必須首先設(shè)置一下使其能被修改,運(yùn)行以下語(yǔ)句即可: Use Master Gosp_configure ’allow updates’,1 reconfigure with override Go 接著運(yùn)行以下語(yǔ)句,把AAA數(shù)據(jù)庫(kù)設(shè)為緊急模式,即把Sysdatabases表中AAA數(shù)據(jù)庫(kù)的status屬性設(shè)為’37268’,就表示把AAA數(shù)據(jù)庫(kù)處于緊急模式。 updatesysdatabases set status=32768 where hame=’AAA’如果沒(méi)有報(bào)告什么錯(cuò)誤,就可以進(jìn)行以下操作。
②設(shè)置數(shù)據(jù)庫(kù)AAA為單用戶模式,并檢查數(shù)據(jù)庫(kù)?重啟SQL Server服務(wù)器;?把數(shù)據(jù)庫(kù)AAA設(shè)為單用戶模式Sp_dboption ’AAA’, ’single user’, ’true’ ?運(yùn)行以下語(yǔ)句,檢查數(shù)據(jù)庫(kù)AAA DBCCCHECKDB(’AAA’) 如果沒(méi)有什么大的問(wèn)題就可以把數(shù)據(jù)庫(kù)的狀態(tài)改回去。
③還原數(shù)據(jù)庫(kù)的狀態(tài)運(yùn)行以下語(yǔ)句,就可以把數(shù)據(jù)庫(kù)的狀態(tài)還原: update sysdatabases set status=28 wherename=’AAA’ sp_configure ’allow updates’,0 reconfigure with override Go 如果沒(méi)有什么大的問(wèn)題,刷新一下數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)AAA又會(huì)出現(xiàn)在你面前,但目前恢復(fù)工作還沒(méi)有做完,此時(shí)的數(shù)據(jù)庫(kù)仍不能工作,還要進(jìn)行下面的處理,才能真正恢復(fù)。④利用DTS的導(dǎo)入導(dǎo)出向?qū)?,把?shù)據(jù)庫(kù)AAA導(dǎo)入到一個(gè)新建數(shù)據(jù)庫(kù)BBB中?新建一個(gè)數(shù)據(jù)庫(kù)BBB; ?右擊BBB,選擇IMPORT功能,打開(kāi)導(dǎo)入向?qū)В?目標(biāo)源選擇"在SQL Server數(shù)據(jù)庫(kù)之間復(fù)制對(duì)象和數(shù)據(jù)庫(kù)",這樣可以把表結(jié)構(gòu),數(shù)據(jù)
目前,針對(duì)SQL Server數(shù)據(jù)庫(kù)的應(yīng)用級(jí)入侵已經(jīng)變得越來(lái)越肆無(wú)忌憚,像SQL注入、跨站點(diǎn)腳本攻擊和未經(jīng)授權(quán)的用戶訪問(wèn)等。所有這些入侵都有可能繞過(guò)前臺(tái)安全系統(tǒng)并對(duì)數(shù)據(jù)庫(kù)系統(tǒng)攻擊。對(duì)于數(shù)據(jù)庫(kù)管理來(lái)說(shuō),保護(hù)數(shù)據(jù)不受內(nèi)部和外部侵害是一項(xiàng)重要的工作。SQL Server 正日益廣泛的使用于各部門(mén)內(nèi)外,作為數(shù)據(jù)庫(kù)系統(tǒng)管理員,需要深入的理解SQL Server的安全性控制策略,以實(shí)現(xiàn)管理安全性的目標(biāo)。那么,如何確保SQL Server數(shù)據(jù)庫(kù)的安全性呢,我們可以從以下兩方面考慮。it培訓(xùn)機(jī)構(gòu)
首先、采取業(yè)界已存在的且比較成熟的數(shù)據(jù)庫(kù)審計(jì)解決方案來(lái)實(shí)現(xiàn)
實(shí)時(shí)記錄用戶對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的所有操作(如:插入、刪除、更新、用戶自定義操作等),并還原SQL操作命令包括源IP地址、目的IP地址、訪問(wèn)時(shí)間、用戶名、數(shù)據(jù)庫(kù)操作類(lèi)型、數(shù)據(jù)庫(kù)表名、字段名等,如此,可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)安全事件準(zhǔn)確全程跟蹤定位。
實(shí)時(shí)檢查數(shù)據(jù)庫(kù)不安全配置、數(shù)據(jù)庫(kù)潛在弱點(diǎn)、數(shù)據(jù)庫(kù)用戶弱口令、數(shù)據(jù)庫(kù)軟件補(bǔ)丁層次、數(shù)據(jù)庫(kù)潛藏木馬等。
進(jìn)行全方位的多層(應(yīng)用層、中間層、數(shù)據(jù)庫(kù)層)的訪問(wèn)審計(jì),通過(guò)多層業(yè)務(wù)審計(jì),實(shí)現(xiàn)數(shù)據(jù)操作原始訪問(wèn)者的精確定位。
針對(duì)于數(shù)據(jù)庫(kù)的操作行為進(jìn)行實(shí)時(shí)檢測(cè),并預(yù)設(shè)置風(fēng)險(xiǎn)控制策略,結(jié)合對(duì)數(shù)據(jù)庫(kù)活動(dòng)的實(shí)時(shí)監(jiān)控信息,進(jìn)行特征檢測(cè),任何嘗試性的攻擊操作都將被檢測(cè)到并進(jìn)行阻斷或告警;并支持通過(guò)郵件、短信、SYSLOG、SNMP、屏幕等方式告警。
其次、制定相關(guān)的數(shù)據(jù)庫(kù)管理流程
不同的人員對(duì)數(shù)據(jù)庫(kù)的操作職責(zé)不一樣,所有人員對(duì)數(shù)據(jù)庫(kù)的操作均需要事前審批,對(duì)一些非常重要的操作需要二級(jí)以上審批。申請(qǐng)操作時(shí),需明確在什么人,什么時(shí)間,因?yàn)楹问?,?duì)哪個(gè)數(shù)據(jù)庫(kù)(或表),進(jìn)行什么樣的操作,可能有什么樣的風(fēng)險(xiǎn)及采取的補(bǔ)救措施等。
數(shù)據(jù)庫(kù)數(shù)據(jù)的丟失以及數(shù)據(jù)庫(kù)被非法用戶的侵入使得數(shù)據(jù)庫(kù)管理員身心疲憊不堪,數(shù)據(jù)庫(kù)安全性問(wèn)題對(duì)于數(shù)據(jù)庫(kù)管理員來(lái)說(shuō)簡(jiǎn)直就是噩夢(mèng)。對(duì)于數(shù)據(jù)庫(kù)數(shù)據(jù)的安全問(wèn)題。本文對(duì)圍繞數(shù)據(jù)庫(kù)的安全性問(wèn)題提出了一些安全性策略,希望對(duì)數(shù)據(jù)庫(kù)管理員有所幫助。
1 備份我認(rèn)為按天設(shè)置就可以了
2 維護(hù)策略 設(shè)置一下 每日索引重新生成,我認(rèn)為就可以了
第一種方法:這是要你輸入SQL數(shù)據(jù)庫(kù)的密碼,各人安裝的密碼不一樣,必須找到安裝文件夾根目錄下setup.ini文件,打開(kāi)記住SAPWD="xxxxxxx"中的xxxxxxx,提示輸入SA口令的時(shí)候把這個(gè)輸入就OK了,如果找不到可以聯(lián)系中興通用友工程師。
第二種解決方法:
(1)在添加/刪除程序中找到進(jìn)行刪除
(2)刪除“C:ProgramFilesMicrosoftSQLServer”文件夾。
(3)重新安裝MSDE2000。
安裝用友T3,最好是XP系統(tǒng),WIN7的系統(tǒng)旗艦版可以,其它的有的不支持。