來源:巨靈鳥軟件 作者:進銷存軟件 發布:2014/10/15 瀏覽次數:5706
十八、如何安全配置MSSQL數據庫
微軟的SQL Server是一種廣泛使用的數據庫,很多單位、企業內部信息化平臺等都是基于SQL Server上的,但是數據庫的安全性還沒有被人們意識到。多數管理員認為只要把網絡和操作系統的安全搞好了,那么所有的應用程序也就安全了。數據庫系統中存在的安全漏洞和不當的配置通常會造成嚴重的后果,而且都難以發現。數據庫應用程序通常同操作系統的最高管理員密切相關。
這里,我們主要談論有關SQL Server2000數據庫的安全配置以及一些相關的安全和使用上的問題。 在進行SQL Server 2000數據庫的安全配置之前,首先你必須對操作系統進行安全配置,保證你的操作系統處于安全狀態。然后對你要使用的操作數據庫軟件(程序)進行必要的安全審核,比如對ASP、PHP等腳本,這是很多基于數據庫的WEB應用常出現的安全隱患,對于腳本主要是一個過濾問題,需要過濾一些類似 , ‘ ; @ / 等字符,防止破壞者構造惡意的SQL語句。接著,安裝SQL Server2000后請打上補丁sp1以及最新的sp2。下載地址是:
http://www.microsoft.com/sql/downloads/2000/sp1.asp
http://www.microsoft.com/sql/downloads/2000/sp2.asp
在做完上面三步基礎之后,我們再來討論SQL Server的安全配置。
在此之前我想對如何使用SQL語句操作作一個簡單的圖示。
執行SQL語句有兩種方式,一種是基于文本工具isql,類似dos操作界面的方法,另外一種就是使用SQL查詢器來查詢,它是一個可視化的界面。
SQL查詢器可以在“開始”“程序”“Microsoft SQL Server” 找到它的快捷方式,程序具體位置是
C:\Program Files\Microsoft SQL Server\80\Tools\Binn\isqlw.exe
這里簡單介紹一下使用isql查詢方式(基于命令行的)
找到isql程序,它在C:\Program Files\Microsoft SQL Server\80\Tools\Binn目錄下面(版本的不同或者安裝路徑不同可能在其他目錄中)。
開啟一個cmd命令窗口,
輸入:cd “Program Files\Microsoft SQL Server\80\Tools\Binn”
接著輸入:isql –S 服務器IP -U sa –P sa用戶的密碼
系統會出來一個前面是標示命令行數的數值,后面跟一個>符號表示需要用戶在后面輸入SQL 語句命令,如上圖 1> use master 表示第一行,use master是用戶的輸入。最后一行go表示開始處理SQL語句命令,如無特別說明,以下命令均是在該終端下執行的。詳細SQL命令請參考其他有關手冊。 1、使用安全的密碼策略 我們把密碼策略擺在所有安全配置的第一步,對于sa用戶應該注意此帳號的密碼設置,盡量避免不要讓sa帳號的密碼寫于應用程序或者腳本中。默認安裝sa用戶密碼為空,應在安裝后盡快修改它,并且養成定期修改密碼的好習慣。數據庫管理員應該定期查看是否有不符合密碼要求的帳號 比如使用下面的SQL語句: Use master Select name from syslogins where password is null 給用戶密碼修改命令的語句是: sp_password ‘原密碼’,‘新密碼’,‘用戶帳號名’。 比如:
該命令就是把用戶名為“netconf”的密碼由原來的“netconf”改成“netconf1”。 2、使用安全的帳號策略。 由于SQL Server不能更改sa用戶名稱,也不能刪除這個超級用戶,所以,我們必須對這個帳號進行最強的保護,首先要選擇一個非常強壯的密碼。 其次,最好不要在數據庫應用中使用sa帳號,只有當沒有其它方法登錄到 SQL Server時才使用 sa。建議數據庫管理員新建立一個擁有與sa一樣權限的超級用戶來管理數據庫。安全的帳號策略還包括不要讓管理員權限的帳號泛濫。 SQL Server的認證模式有Windows身份認證和混合身份認證兩種。如果數據庫管理員不希望操作系統管理員來通過操作系統登陸來接觸數據庫的話,可以在帳號管理中把系統帳號“BUILTIN\Administrators”刪除。不過這樣做的結果是一旦sa帳號忘記密碼的話,就沒有辦法來恢復了。 很多主機使用數據庫應用只是用來做查詢、修改等簡單功能的,請根據實際需要分配帳號,并賦予僅僅能夠滿足應用要求和需要的權限。比如,只要查詢功能的,那么就使用一個簡單的public帳號能夠select就可以了。 3、管理擴展存儲過程。 對存儲過程進行大手術,并且對帳號調用擴展存儲過程的權限要慎重。其實在多數應用中根本用不到多少系統的存儲過程,而SQL Server的這么多系統存儲過程只是用來適應廣大用戶需求的,所以請刪除不必要的存儲過程,因為有些系統的存儲過程能很容易地被人利用起來提升權限或進行破壞。 如果你不需要擴展存儲過程xp_cmdshell請把它去掉。使用這個SQL語句: use master EXEC sp_dropextendedproc 'xp_cmdshell' xp_cmdshell是進入操作系統的最佳捷徑,是數據庫留給操作系統的一個大后門。如果你需要這個存儲過程,請用這個語句也可以恢復過來。 EXEC sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 如果你不需要請丟棄OLE(對象鏈接與嵌套,Object Linking and Embedding)自動存儲過程(會造成管理器中的某些特征不能使用),這些過程包括如下: EXEC Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty &, nbsp; Sp_OAMe, , , , thod Sp_OASetProperty Sp_OAStop 去掉不需要的注冊表訪問的存儲過程,注冊表存儲過程甚至能夠讀出操作系統管理員的密碼來,如下: Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues Xp_regread Xp_regremovemultistring Xp_regwrite 還有一些其他的擴展存儲過程,你也最好檢查檢查。 在處理存儲過程的時候,請確認一下,避免造成對數據庫或應用程序的傷害。 7、對網絡連接進行IP限制 SQL Server 2000數據庫系統本身沒有提供網絡連接的安全解決辦法,但是Windows 2000提供了這樣的安全機制。使用操作系統自己的IPSec可以實現IP數據包的安全性。請對IP連接進行限制,只保證自己的IP能夠訪問,也拒絕其他IP進行的端口連接,把來自網絡上的安全威脅進行有效的控制。 在windows 2000中提供了一種叫IPsec的安全工具,它能通過自定義規則來允許或者拒絕其他用戶通過TCP/IP協議來訪問服務器某個端口。 在網絡屬性里面,選擇網卡的“本地連接”“tcp/ip屬性”選擇“高級” 選擇屬性,勾選“啟用TCP/IP篩選(所有示配器)”
這樣,其他用戶通過這塊網卡就只能訪問到服務器的21,80,1433端口了。 Windows NT/2000的日志文件通常有應用程序日志,安全日志、系統日志、DNS服務器日志、FTP日志、WWW日志等等。當非法用戶探測系統信息的時候,就會在安全日志里迅速地記下機器被探測時所用的用戶名、時間等等,用FTP探測后,也會立刻在FTP日志中記下IP、時間、探測所用的用戶名和密碼等等,由此可見日志審計的重要性。以下即是對各種服務日志文件的默認位置和文件內容描述: 關于日志文件默認位置: 應用程序日志、安全日志、系統日志、DNS等服務日志的默認位置在系統安裝目錄下的system32\config下。 關于日志文件保存目錄詳細描述: 安全日志文件:系統安裝目錄\system32\config\SecEvent.EVT 系統日志文件:系統安裝目錄\system32\config\SysEvent.EVT 應用程序日志文件:系統安裝目錄\system32\config\AppEvent.EVT FTP日志默認位置:系統安裝目錄\system32\logfiles\msftpsvc1\日志文件 WWW日志默認位置:系統安裝目錄\system32\logfiles\w3svc1\日志文件 定時(Scheduler)服務日志默認位置:系統安裝目錄\schedlgu.txt 安全日志文件,系統日志文件,應用程序日志文件,這三個日志記錄都是有系統的一個稱為: Event Log服務生成的,Event Log 的作用是記錄程序和 Windows 發送的事件消息。事件日志包含對診斷問題有所幫助的信息。停止和啟動該服務就可以停止或者開始記錄上述三個日志文件。 FTP日志和WWW日志均是在Internet信息服務里面配置和控制。 在控制面板,管理工具里面打開Internet信息服務,如下圖: 其中“dumplogin”是機器名,分別右鍵“默認FTP站點”“默認Web站點”,選擇“屬性”,以FTP的為例:
勾選“啟用日志記錄”就可以記錄FTP站點的信息了,日志文件格式建議選擇“W3C擴充日志文件格式”。 選擇“屬性”
“新日志時間間隔”意思是每隔多長時間系統日志單獨寫成新的一個文件,比如:選擇“每天”,那么每天在日志文件目錄下就會多一個新的文件,該文件內容主要是記錄當天的訪問記錄。 還可以選擇按大小來拆分,選擇:“當文件大小達到”一定大小的時候,才會生成一個新的文件,系統默認是每天單獨記錄在一個文件里。 在“擴充的屬性”里面,允許用戶選擇記錄哪些內容以及格式等。
比如需要記錄事件發生的日期,時間,以及客戶IP地址,用戶名等等,那么就勾選相應的欄目。最后點“應用”就可以記錄了。 對于WWW服務來說,操作和FTP站點完全一樣。 既然系統日志文件能夠記錄所有的訪問信息,為了防止他人修改系統的日志文件,隱藏自己的行蹤,我們必須限制對日志文件的訪問,禁止一般權限的用戶去查看日志文件。具體方法是: 我們可以利用文件系統對目錄和文件級的權限保護(如前所述),來設置只有管理員才可以對以上提到的系統日志文件有操作權限。另外,我們還要小心保護好具有超級權限的密碼和用戶,因為黑客一旦知道了這些具有超級權限的帳號后,他們就可以修改日志文件來隱藏其蹤跡了。 我們建議管理員應該養成定時、定期備份日志的習慣。 對于FTP,WWW日志,只要拷貝文件到其他目錄就行了。 (注:當天的日志必須要停止掉相應的服務才能備份)。 對于事件日志,需要打開事件查看器,然后再選擇想要備份的日志: 選擇“另存日志文件”,在對話框中選擇路徑和文件名,然后“保存”即可。 注:由于事件日志不是按日期來分開,所以當文件大小達到設置大小的時候可能會重寫文件,所以應該經常注意文件是否到達定額。文件最大設置大小和到達設置大小會如何處理在后面會有詳細介紹。
來源:巨靈鳥 歡迎分享本文
上一個文章:技術一旦被用來作惡,究竟會有多可怕(一)
下一個文章:Windows操作系統安全如何防范(三)