sql server 2008(MSSQL2008)或者R2安全設置詳細教程(可以獨立運行于某賬戶)
[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!
服務器身份驗證
MSSQL Server 2008的身份驗證模式有兩種:一種是Windows 身份驗證模式, 另一種是SQL Server和Windows身份驗證模式(即混合模式)。對大多數數據庫服務器來說,有SQL Server身份驗證就足夠了,只可惜目前的服務器身份驗證模式里沒有這個選項,所以我們只能選擇同時帶有SQL Server和Windows身份驗證的模式(混合模式)。但這樣就帶來了兩個問題:
1、混合模式里包含了Windows身份驗證這個我們所不需要的模式,即設置上的冗余性。程序的安全性是與冗余性成反比的。
2、所謂Windows身份驗證,實際上就是通過當前Windows管理員帳戶(通常為Administrator)的登錄憑據來登錄MSSQL Server。使用Windows身份驗證,會增加Administrator密碼被盜的風險。
為解決以上兩個問題,我們需要限制混合模式里的Windows身份驗證。方法如下:
打開Microsoft SQL Server Management Studio,點擊安全性->登錄名,將Administrator對應的登錄名刪除即可。
SQL Server服務的運行身份
默認情況下,SQL Server服務是以本地系統的身份運行的。也就是說,SQL Server服務進程對系統擁有一切操作的權限,這是很不安全的。因此,我們需要將SQL Server服務的運行身份修改為普通用戶:
1、新建一個普通用戶,如mssqluser,將此用戶加入以下兩組:
SQLServerMSSQLUser
SQLServerSQLAgentUser
2、授予C盤mssqluser用戶的讀取權限,D、E等其他分區mssqluser用戶的修改權限,mssql安裝目錄(如D:/Program Files/Microsoft SQL Server),數據庫文件存放目錄(如D:/mssqldata)mssqluser用戶的完全控制權限。
3、將SQL Full-text Filter Daemon Launcher (MSSQLSERVER) SQL Server (MSSQLSERVER)服務的登錄修改為mssqluser用戶,然后重啟這兩個服務。
sa密碼的安全性
很多數據庫服務器管理員都會發現,總有人會樂此不疲地去破解sa密碼。因此,將sa密碼BT化就變成不可或缺的一步設置。另外,我們可以將sa重命名為 sa1,sa2,sa3...之類的用戶,這樣可以進一步提高sa密碼的安全性。修改之后,不要忘了更新有使用sa密碼的管理程序
sqlserver安裝性無疑是最重要的,不僅導致網站上SQL注入很嚴重,而且還可能危及服務器控制權
下面為各位自己安裝了sql軟件的朋友介紹常見的安全設置
修改SA用戶名:
1:打開查詢分析器,登陸進去(呵呵,隨便你用什么帳號進去,不過可一定要在master數據庫中有db_owner的權限)輸入
?代碼如下 | 復制代碼 |
sp_configure 'allow updates', 1
go RECONFIGURE WITH OVERRIDE go 然后再運行以下代碼 update sysxlogins set name='你要改成的名字' where sid=0x01 update sysxlogins set sid=0xE765555BD44F054F89CD0076A06EA823 where name='你要改成的名字' sp_configure 'allow updates', 0 go RECONFIGURE WITH OVERRIDE go |
然后,你查看一下SQL SERVER的角色,就會發現SA的用戶名,已經改為你的新名子了。
1、修改1433端口,至于如何修改sql的端口
點擊“開始-程序-Microsoft SQL Server-服務器網絡實用工具”
在“啟用的協議”中選中“TCP/IP”,點擊“屬性”:
輸入新的默認端口號,點擊“確定”:
點擊“確定”。
修改在網站的數據庫連接IP中填寫 localhost,端口號 即可正常連接
2、不允許外部企業管理器或者其他工具連接1433端口
在本地安全策略中設置不允許非服務器上的IP連接SQL數據庫,請將附件中的規則導入到本地安全策略中,指派即可
本安全策略為虛擬主機空間商必備策略,經過考驗(修改后1433端口后SQL封鎖無效,但還是可以大大增加服務器安全性)
3、卸載SQL的不安全組件
Xp_cmdshell(這個肯定首當其沖,不用說了)、Xp_regaddmultistring、Xp_regdeletekey、 Xp_regdeletevalue、Xp_regenumvalues、Xp_regread、Xp_regwrite、 Xp_regremovemultistring
在SQL查詢器中輸入命令卸載:刪除xp_dirtree,命令是sp_dropextendedproc 'xp_dirtree'
4、權限設置
首先在計算機管理中新建一個隸屬于users組的普通用戶用來作為MSSQL的運行用戶。
其次數據庫應該單獨安裝在一個非C盤,非網站目錄盤中,(假設您的數據安裝在E:/Program Files/Microsoft SQL Server/)
E盤的根目錄(E:/)需要以下權限:
“administrators ”的全部權限
“System ”的全部權限
“SQL的運行用戶設置“讀取”和“讀取和運行”兩個權限,并且在高級里設置為(只應用在當前文件夾)
數據庫的安裝目錄(E:/Program Files/Microsoft SQL Server/)需要以下權限:
“administrators ”的全部權限
“System ”的全部權限
“SQL的運行用戶 ”的全部權限
數據庫用普通權限運行辦法
企業管理器 — local — 點擊右鍵查看“屬性”,切換至“安全性”
經過上述設置好SQL基本可以保持在一個很好的安全狀態,另外網站的安全也一定要做好,否則通過其他途徑入侵了也枉然
建議自有服務器用戶安裝N點或者西部數碼安全助手,便于網站安全
最后還給大家加一些安全常識
1、使用安全的密碼策略
我們把密碼策略擺在所有安全設置的第一步,請注意,非常多數據庫帳號的密碼過于簡單,這跟系統密碼過于簡單是個道理。對于sa更應該注意,同時不要讓sa帳號的密碼寫于應用程式或腳本中。健壯的密碼是安全的第一步!
SQL Server2000安裝的時候,如果是使用混合模式,那么就需要輸入sa的密碼,除非你確認必須使用空密碼。這比以前的版本有所改進。
同時養成定期修改密碼的好習慣。數據庫管理員應該定期查看是否有不符合密碼需求的帳號。比如使用下面的SQL語句:
?代碼如下 | 復制代碼 |
Use master Select name,Password from syslogins where password is null |
2、使用安全的帳號策略。
由于SQL Server不能更改sa用戶名稱,也不能刪除這個終極用戶,所以,我們必須對這個帳號進行最強的保護,當然,包括使用一個非常強壯的密碼,最佳不要在數據庫應用中使用sa帳號,只有當沒有其他方法登錄到 SQL Server 實例(例如,當其他系統管理員不可用或忘記了密碼)時才使用 sa。建議數據庫管理員新建立一個擁有和sa相同權限的終極用戶來管理數據庫。安全的帳號策略還包括不要讓管理員權限的帳號泛濫。
SQL Server的認證模式有視窗系統身份認證和混合身份認證兩種。如果數據庫管理員不希望操作系統管理員來通過操作系統登陸來接觸數據庫的話,能在帳號管理 中把系統帳號“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_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 |
更有一些其他的擴展存儲過程,你也最佳檢查檢查。
在處理存儲過程的時候,請確認一下,避免造成對數據庫或應用程式的傷害。
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使用的默認端口變為其他端口。
8、拒絕來自1434端口的探測
由于1434端口探測沒有限制,能夠被別人探測到一些數據庫信息,而且還可能遭到DOS攻擊讓數據庫服務器的CPU負荷增大,所以對視窗系統 2000操作系統來說,在IPSec過濾拒絕掉1434端口的UDP通訊,能盡可能地隱藏你的SQL Server。
9、對網絡連接進行IP限制
SQL Server 2000數據庫系統本身沒有提供網絡連接的安全解決辦法,不過視窗系統 2000提供了這樣的安全機制。使用操作系統自己的IPSec能實現IP數據包的安全性。請對IP連接進行限制,只確保自己的IP能夠訪問,也拒絕其他 IP進行的端口連接,把來自網絡上的安全威脅進行有效的控制。
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!