合天網安實驗室:MSSQL資料庫安全實驗
MSSQL資料庫安全實驗(實驗截圖在下方)
一.預備知識
1、資料庫安全的概念
對任何企業組織來說,資料的安全性最為重要。安全性主要是指允許那些具有相應的資料訪問許可權的使用者能夠登入到資料庫,並訪問資料以及對資料庫物件實施各種許可權範圍內的操作,但是要拒絕所有的非授權使用者的非法操作。因此安全性管理與使用者管理是密不可分的。
2、SQL Server的安全性
SQL Server 2000 的安全性管理是建立在認證(authentication)和訪問許可(permission)兩者機制上的。認證是用來確定登入SQL Server 的使用者的登入賬號和密碼是否正確,以此來驗證其是否具有連線SQL Server 的許可權。但是通過認證階段並不代表該使用者能夠訪問SQL Server 中的資料,使用者只有在獲取訪問資料庫的許可權之後,才能夠對伺服器上的資料庫進行許可權許可下的各種操作(主要是針對資料庫物件,如表、檢視、儲存過程等)
3、SQL Server的認證模式
SQL Server提供了2種安全管理模式,即Windows 身份驗證模式和混合身份驗證模式,資料庫設計者和資料庫管理員可以根據實際情況進行選擇。每個使用者必須通過登入帳戶建立自己的身份驗證,以獲得對SQL Server 例項的訪問許可權。
SQL Server 2000提供了兩種確認使用者的登入認證模式:Windows認證模式和混合認證模式。
(1)Windows認證模式
SQL Server資料庫系統通常執行在NT伺服器平臺
(2)混合認證模式
在混合認證模式下,Windows認證和SQL Server 認證這兩種認證模式都是可用的。NT的使用者既可以使用NT認證,也可以使用SQL Server 認證。
在SQL Server認證模式下,使用者在連線SQL Server時必須提供登入名和登入密碼
4、SQL Server許可權管理
SQL Server資料庫管理系統利用角色設定、管理使用者的許可權。登入名本身並不能讓使用者訪問伺服器中的資料庫資源。要訪問具體資料庫中的資源,還必須有該資料庫的使用者名稱。新的登入建立以後,才能建立資料庫使用者,資料庫使用者在特定的資料庫內建立,必須和某個登入名相關聯。資料庫使用者建立後,通過授予使用者許可權來指定使用者訪問特定物件的許可權。通過角色,可以將使用者集中到一個單元中,然後對這個單元應用許可權。對角色授予或收回許可權時,將對其中的所有成員生效。利用角色進行許可權設定可以實現對所有使用者許可權的設定,大大減少了管理員的工作量。
二.實驗步驟
本實驗通過練習以掌握管理資料庫登入的方法;掌握管理資料庫使用者的方法;掌握管理資料庫角色的方法;掌握管理資料庫許可權的方法,實驗任務共分為五部分,詳情如下:
1.管理SQL Server認證模式
(1)確認 SQL Server 驗證
①在桌面上單擊“開始”,選擇“程式”→“Microsoft SQL Server 2005” →“SQL Server Management Studio”,出現“連線到伺服器”對話方塊。
②在“連線到伺服器”對話方塊中,按表中的指定值進行設定,然後單擊“連線”按鈕,如下圖。
實驗截圖:↓↓↓
③如果“物件資源管理器”不可見,則選擇“檢視”選單上的“物件資源管理器”。
④在“物件資源管理器”中,右擊伺服器,然後單擊“屬性”。
⑤單擊“安全性”。
⑥在“伺服器身份驗證”選項區中,可以選擇身份驗證模式,“Windows 身份驗證模式”或“SQL Server 和Windows 身份驗證模式”,本次實驗選擇“SQL Server 和Windows 身份驗證模式”。
實驗截圖:↓↓↓
⑦選擇身份驗證模式後,單擊“確定”按鈕以執行該更改。
⑧在“物件資源管理器”中,右擊伺服器,然後單擊“重新啟動”。
當提示確認時,請單擊“是”。
如果通知“SQL Server 代理”服務也將停止時,請單擊“是”。
⑨在“摘要”面板中,右擊“SQL Server 代理”,然後單擊“啟動”。
當提示是否確實要啟動SQLSERVERAGENT服務時,點選是。
實驗截圖↓↓↓
實驗步驟二
2.管理資料庫登入
SQL Server有兩個預設的使用者登入賬號:即sa和administrators\builtin。sa是系統管理員,它是SQL Server的一個超級登入賬號,這個賬號具有操作SQL Server伺服器的一切許可權。BUILTIN\Administrators組成員的 Windows NT 4.0 或 Windows 2000 使用者自動成為 sysadmin 固有伺服器角色成員。
(1)使用企業管理器管理Windows身份驗證的登入帳號。
① 回到桌面,右擊我的電腦,點選管理。
然後一次展開系統工具-本地使用者和組-使用者,此時在右邊可以看到當前系統中所有的使用者。
實驗截圖↓↓↓
在右側空白處右擊,點選新使用者。
新增一個使用者WinUser,並給該使用者設定一個密碼,本實驗使用的密碼是admin,密碼可隨意設定,但是需要記住,在後面需要用到,把使用者下次登入時須更改密碼前面的勾選去掉,把密碼永不過期的選項選上,然後點選建立,設定如圖:
建立完後點擊關閉。
實驗截圖↓↓↓
此時在使用者列表中可以看到該使用者已經新增成功。
然後右擊該使用者,選擇屬性。
彈出如下對話方塊: 點選隸屬於選項卡。
然後點選左下角的新增按鈕。彈出選擇組對話方塊。 點選左下角的高階,彈出如下對話方塊:
點選立即查詢,在搜尋結果中選擇 administrators。
然後點選確定按鈕,會自動返回上一回話視窗。
同樣點選確定。此時,在winuser屬性的隸屬於選項卡下可以看到,多了一個administrators。
實驗截圖↓↓↓
然後點選右下角的應用,最後點選確定。
②在SQL Server Management Studio中,右擊資料庫,選擇新建資料庫
在資料庫名稱內輸入student新建一個student資料庫,然後點選確定 。
展開例項下的“安全性”,右擊“登入名”按鈕,在彈出的快捷選單中選擇“新建登入”。
開啟SQL Server登入屬性對話方塊。在“常規”選項卡中,單擊“名稱”輸入框右側的按鈕。
彈出選擇使用者或組對話方塊
點選高階,彈出新的對話方塊
點選右側的立即查詢,在搜尋結果中,找到winuser並選擇該使用者,然後點選確定。
會自動返回上一個對話方塊,然後點選確定。 驗證方式選擇 “Windows 身份驗證”。
預設資料庫選擇student,完成登陸賬號winuser的建立。
③選擇“伺服器角色”選項卡。可以在伺服器角色列表框中選擇相應的伺服器角色成員。在這裡,設定登入使用者winuser的伺服器角色為系統管理員。
④選擇“使用者對映”選項卡,在列表框中列出了該賬號可以訪問的資料庫,如果單擊資料庫左邊的複選框,表示該使用者可以訪問相應的資料庫。在這裡,選中資料庫master和student左邊的複選框,表示登陸使用者winuser可以訪問的資料庫為master和student。在下方的資料庫角色成員身份都選擇public。然後點選確定。
在物件資源管理器中,展開安全性-登入名,可以看到winuser已存在。
實驗截圖↓↓↓
同時,展開資料庫-系統資料庫-student-安全性-使用者,在使用者列表中可以看到資料庫student中已經建立一個數據庫使用者winuser。
實驗截圖↓↓↓
驗證用WinUser賬號登入SQL Server:首先在作業系統中登出當前使用者的登陸,將使用者切換到WinUser,再用此賬號連線SQL Server查詢分析器,用Windows身份驗證登入,可以進入查詢分析器,使用資料庫master和student。
由於遠端桌面登出會又會自動連線,所以我們需要先修改當前使用者(administrator)的登入密碼。
來到桌面,右擊我的電腦,點選管理,在計算機管理視窗,依次展開 系統工具-本地使用者和組-使用者(不會的可參考之前新建winuser時的步驟),在右側右擊administrator,選擇設定密碼。
會彈出如下對話方塊,點選繼續。
然後設定一個密碼(我設定的密碼是admin),可以隨意設定,但是需要記住密碼,後面還需要登陸該使用者。
點選確定,會提示密碼已設定
然後點選左下角的開始,選擇登出
彈出確認視窗,點選登出。
然後會自動到登陸頁面,輸入之前新建的winuser和密碼,點選確定登入。
登入後,點選左下角的開始-所有程式-Microsoft SQL Server 2005-SQL Server Management Studio 進入SQL Server Management Studio。
身份驗證選擇 Windows 身份驗證。
點選連線後,登陸成功,此時可以新建查詢,使用資料庫master和student。
(2)使用SQL Server Management Studio管理SQL Server身份驗證的登入帳號。
登出winuser,切換到administrator使用者(不會的可參考之前從administrator切換到winuser的步驟)。
①在 SQL Server Management Studio中,展開例項下的“安全性”,右擊“登入名”按鈕,在彈出的快捷選單中選擇“新建登入”(參考前面新建登入步驟),
②在登入名輸入框內輸入需要新建的使用者名稱,這裡新建的使用者名稱是SQLUser。驗證方式選擇SQL Server身份驗證,然後在密碼框輸入SQLUser的密碼。這裡設定成test。把強制實施密碼策略的複選框去勾選去掉,預設資料庫選擇master,然後點選確認。
注意:採用該方法建立的SQL Server登入賬號只能用於登入SQL Server服務,與登入的計算機的Windows賬號無關,不能用此賬號登入Windows。
③單擊“使用者對映”,在“對映到此用登入名的使用者”中,將所有資料庫都選中,下方的資料庫角色成員身份全部選擇public,然後單擊確定完成賬號的建立。
④關閉SQL Server Management Studio重新開啟,在登入頁面處身份驗證選擇SQL Server身份驗證。然後輸入剛才新建的賬號和密碼,然後點選連線。
登入成功,此時可以新建查詢來查詢資料。
實驗截圖如下↓↓↓
實驗步驟三管理資料庫使用者
資料庫使用者對資料的訪問許可權以及對資料庫物件的所有關係都是通過使用者賬號來控制的。在資料庫中,使用者賬號與登入賬號是兩個不同的概念。一個合法的登入賬號只表明該賬號通過了Windows認證或SQL Server 認證,但不能表明其可以對資料庫資料和資料物件進行某種或某些操作,只有其同時擁有了使用者賬號後,才能夠訪問資料庫。所以一個登入賬號總是與一個或多個數據庫使用者賬號(這些賬號必須分別存在相異的資料庫中)相對應,這樣才可以訪問資料庫。
(1)建立資料庫使用者
開啟SQL Server Management Studio,展開伺服器-資料庫,選擇要建立使用者的資料庫,如student,展開student,用滑鼠右鍵單擊“安全性”節點,從彈出的選單中選擇“新建-使用者”命令。
彈出“新建使用者”對話方塊,在使用者名稱輸入框輸入要新建的資料庫使用者名稱稱,如dbuser
在“登入名”處點選後面的按鈕
彈出選擇登入名對話方塊,在該對話方塊選擇瀏覽
彈出查詢物件對話方塊,在裡面選擇一個使用者,選擇administrators。
然後點選確定,自動返回到選擇登入名對話方塊
點選確定,在此使用者擁有的架構勾選db_owner,資料庫角色成員身份同樣選擇db_owner,單擊“確定”按鈕,即可完成資料庫使用者的建立。
實驗截圖↓↓↓
(2)修改使用者資訊
用滑鼠右鍵單擊要修改的使用者,在系統彈出選單上單擊“屬性”
可開啟“資料庫使用者”對話方塊檢視該使用者的資訊,同時需要時能直接修改相應使用者的設定資訊。
實驗截圖↓↓↓
(3)刪除資料庫使用者。
在企業管理器中,用滑鼠右鍵單擊要刪除的資料庫使用者,如資料庫student中的資料庫使用者dbuser,從快捷選單中選擇“刪除”命令即可。
實驗步驟四
管理資料庫角色
SQL Server有自己的固有角色。固有角色是指 SQL Server預先定義好的系統角色。使用者不能修改這些角色的任何屬性,也不能建立新的伺服器固有角色和資料庫固有角色。
資料庫角色是在資料庫的安全級別上建立,一個數據庫角色只在其所在的資料庫中有效,對其他資料庫無效。在資料庫中,除了有固有的資料庫角色外,還可以自定義資料庫角色,同時根據需要,可以為資料庫角色新增成員或刪除自定義角色。
1.建立資料庫角色
開啟SQL Server Management Studio,展開伺服器-資料庫,選擇要建立使用者的資料庫,如student,展開student,用滑鼠右鍵單擊“安全性”節點,從彈出的選單中選擇“新建-資料庫角色”命令。
彈出“新建角色”對話方塊,在角色名稱輸入框中輸入資料庫新角色的名稱,如NewRole,點選所有者後面的按鈕
在裡面選擇一個使用者,例如選擇winuser(如果不會,參考前面的步驟)
在此角色擁有的架構中選擇db_owner,然後點選確定,完成角色建立。
可以在安全性-角色-資料庫角色中看到,剛才新增的角色已經成功。
實驗截圖如下↓↓↓
(2)刪除自定義的資料庫角色
在SQL Server Management Studio中,用滑鼠右鍵單擊要刪除的自定義角色,如NewRole,從彈出的選單中選擇“刪除”命令即可刪除自定義角色。
注意:不能刪除一個有成員的角色,在刪除角色之前,應先刪除其成員。
實驗截圖如下↓↓↓
實驗步驟五
管理資料庫許可權
許可權用來指定授權使用者可以使用的資料庫物件和這些授權使用者可以對這些資料庫物件執行的操作。使用者在登入到SQL Server之後,其使用者賬號所歸屬的NT組或角色所被賦予的許可權決定了該使用者能夠對哪些資料庫物件執行哪種操作以及能夠訪問、修改哪些資料。在SQL Server中包括語句級許可權和物件級許可權。
(1)進行語句級許可權管理:
啟動SQL Server Management Studio,展開例項資料庫,右擊student資料庫,在彈出的快捷選單中選擇“屬性”,然後選擇“許可權”選項卡。在使用者WinUser一欄中,將“建立表”和“建立檢視”選中.
在SQLUser一欄中,則選擇除“建立表”和“建立檢視”以外的選項
圖中許可權設定的方法是:
許可許可權中複選框單擊為勾號時:表示授予該許可權。
許可許可權中複選框單擊為叉號時:表示角色或使用者不具有該操作許可權。
許可許可權中複選框既沒勾號,也沒叉號時:表示角色或使用者是否具有該操作許可權要根據隱含規則來決定。
這樣的結果是,授予使用者WinUser可以在資料庫student中建立檢視和表。授予使用者SQLUser可以在資料庫student中進行除建立檢視和表以外的所有操作。
實驗截圖↓↓↓
三.課後習題
四.分析與思考
1、 SQL Server的Windows認證模式和混合認證模式的區別?
答:主要集中在信任連線和非信任連線。
windows 身份驗證相對於混合模式更加安全,使用本連線模式時候,sql不判斷sa密碼,而僅根據使用者的windows許可權來進行身份驗證,我們稱為“信任連線”,但是在遠端連線的時候會因NTML驗證的緣 故,無法登陸。
混合模式驗證就比較既當本地使用者訪問sql時候採用windows身份驗證建立信任連線,當遠端使用者訪問時由於未通過windows認證,而進行sql server認證(使用sa的使用者也可以登入sql),建立“非信任連 接”,從而使得遠端使用者也可以登入。
更加直接一些就是windows身份驗證,不驗證sa密碼,如果windows登入密碼不正確,無法訪問sql,混合模式既可以使用windows身份驗證登入,有可以在遠端使用sa密碼登入。
準確來說,混合身份驗證模式,也就是基於Windows
身份驗證和SQL Server身份混合驗證。在這個模式中,系統會判斷賬號在Windows作業系統
下是否可信,對於可信連線,系統直接採用Windows身份驗證機制,而非可信連線,這個連線
不僅包括遠端使用者還包括本地使用者,SQL Server 會自動通過賬戶的存在性和密碼的匹配
性來進行驗證。比如當SQL Server例項在Windows 98上執行時,必須使用混合模式,因為在
Windows 98上不支援Windows身份驗證模式
2、 分析資料庫各種角色許可權的異同,自定義資料庫,並進行許可權管理,深入理解實驗原理。
答: 伺服器登入名,指有許可權登入到某伺服器的使用者;
登入名一定屬於某些角色,預設為public
伺服器角色,指一組固定的伺服器使用者
伺服器角色不容許更改
登入後也不一定有許可權操作資料庫
資料庫使用者,指有許可權能操作資料庫的使用者
資料庫使用者對應於伺服器登入名以便登入者可以操作資料庫
資料庫角色,指一組固定的有某些許可權的資料庫角色
資料庫角色可以新增,可以定製不同許可權
伺服器登入名需要於資料庫的使用者對映後才擁有操作資料庫的許可權
資料庫使用者屬於某組資料庫角色以獲取操作資料庫的許可權
3、 查閱近期資料庫安全事件,分析攻擊原理,掌握資料庫安全的重要性
答:Oracle 的廣告技術部門,因伺服器處於不安全且未設定密碼的狀態,導致資料庫中全球數十億人的記錄被洩露。
Oracle 於 2014 年以超過 4 億美元的價格收購了初創企業 BlueKai ,並將其產品新增到 Oracle 的資料雲(ODC)和營銷雲(OMC)中。BlueKai 通過 cookie 和其他跟蹤技術監視網路上的使用者,併為第三方 提供資料收集服務,同時維護著一個大型資料庫。因為背後有 Oracle 的支撐,BlueKai 的發展相當迅速。據 Whotracks 網站估計,BlueKai 跟蹤了所有 Web 流量的 1%以上。
但在相當長的一段時期內,儲存這些資料的伺服器壓根沒有設定密碼,導致網路跟蹤資料被全面洩露在公開網際網路上。
其中的數十億條記錄,隨時可供任何人翻閱檢視。