如何防止SQLserver服務器被黑?

如何防止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,那麼看後面的設置) IISwindows2000server中最不安全的組件,不裝IISwindows2000將是很安全的

(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每次啓動都將默認的共享刪除(7CMD的設置 cmd.exewindows2000中非常重要的文件,很多漏洞都是要*調用該個文件,該文件在windows2000server所在目錄的system32中,我們需要對其進行設定 A、將該文件從system32中拷貝出來放在其他地方,將原來的文件刪除 B、將拷貝出來的文件進行權限設定,只允許administrator訪問,不允許其他任何的工作組或用戶訪問該文件。

8windows2000server終端服務(默認3389端口) windows2000server提供了遠程終端服務,此服務方便了網絡管理員對服務器的遠程管理,但是,該服務也爲黑客提供了非常危險的攻擊,網絡黑客口中的所謂跳板(肉雞)絕大部分都是利用該功能進行自我隱蔽的攻擊。一旦系統管理員的密碼被破解,而該服務器又提供終端服務,黑客就可以完全控制了該服務器,不但服務器的各種資料會完全暴露,而且黑客還會利用這臺服務器去攻擊其他的服務器,因此該服務除非你覺得自己的服務器足夠安全,否則最好不要打開,特別是暴露在互連網絡中的服務器,打開該功能一定要小心謹慎。 A、如何知道自己的終端服務是否打開?終端服務需要安裝,我們可以通過控制面板中的添加/刪除程序中的添加/刪除windows組件來安裝,在windows組件嚮導列表中最下面有兩個組件,一個是終端服務”,一個是終端服務授權,我們只需要安裝終端服務這個組件就可以將該功能啓用,一旦啓用了該功能,默認的情況下,我們的tcp3389端口就會打開。所以,我們看看這個地方,如果你的組件終端服務前面打了勾,就表明你已經打開了該服務。有些黑客手段很高明,一旦控制了你的計算機後,可以遠程打開該服務,這種情況下,我們最好檢查windows2000server啓用了哪些服務,如何檢查呢?打開windows2000server的服務管理(開始菜單——程序——管理工具——服務)。在服務列表中檢查Terminal Services這項服務的狀態,看看如果該服務處於禁用狀態,說明該服務沒打開,如果該服務處於已啓動狀態,說明該服務已經打開。 B、如何關閉該服務!第一步,通過控制面板中的添加/刪除程序中的添加/刪除windows組件來將該服務組件刪除第二步,在服務中將Terminal Services服務禁用注意:需要經常檢查該服務是否被非法啓動,如果你在你沒有啓動該服務的情況下你發現它已打開,非常不幸,你的服務器已經被黑,成爲了別人的跳板(肉雞)最好的解決方法是重作服務器系統,不要以爲關閉該服務就行了。

9telnet服務(默認23端口)相對於3389來講,telnet服務更不容易引起管理員的注意,該服務以前是UNIXLINUX類系統提供的遠程管理終端服務,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.1555端口) SQL Server 2000的安全配置在進行SQL Server 2000數據庫的安全配置之前,首先你必須對操作系統進行安全配置,保證你的操作系統處於安全狀態。然後對你要使用的操作數據庫軟件(程序)進行必要的安全審覈,比如對ASPPHP等腳本,這是很多基於數據庫的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_cmdshell xp_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 Server10、對網絡連接進行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數據庫之間複製對象和數據庫",這樣可以把表結構,數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章