一、SQL server數據庫介紹
SQL server美國Microsoft公司推出的一種關系型數據庫系統。SQL Server是一個可擴展的、高性能的、為分布式客戶機/服務器計算所設計的數據庫管理系統。
本次安裝環境為Windows10專業版操作系統,數據庫版本為Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) ,單機部署過程比較簡單就不在此進行講解。本文針對SQLserver等保測評進行實際操作,不妥之處還懇請留言指正,共同學習。
二、等保測評
身份鑒別
a) 應對登錄的用戶進行身份標識和鑒別,身份標識具有唯一性,身份鑒別信息具有復雜度要求并定期更換;
1)SQL server數據庫本身沒有密碼復雜度策略設置,它是使用Windows操作系統的校驗函數來校驗賬戶密碼的,所以查看SQL server數據庫密碼復雜度需要結合操作系統本地安全策略的密碼策略來看。SQL server密碼策略要同時滿足開啟Windows密碼策略并且勾選SQL server賬戶的強制實施密碼策略才算是符合,但即使這樣的話一樣可以設置6位長度的口令,所以還要設置服務器的密碼最小長度值。
2)在Microsoft SQL Server Management Studio中登錄服務器,右鍵點擊服務器,選擇“屬性”,選擇“安全性”項,查看服務器身份驗證。在Microsoft SQL Server Management Studio中選擇服務器組并展開,選擇“安全性->登錄名”項,右鍵點擊管理員用戶的“屬性”,在“常規”中 查看“強制實施密碼策略”和“強制密碼過期”
SQL server數據庫的身份驗證方式有多種,經常使用的有:windows身份驗證和SQL server 身份驗證。如果SQLServer數據庫中的登錄名
添加了該操作系統賬戶,且沒有被禁用,則無需口令即可登錄。
檢查是否開啟強制密碼策略。
3)用戶唯一標識SQLServer自動實現,這點默認符合。
4)嘗試建立弱口令賬戶,檢查是否建立成功。
b) 應具有登錄失敗處理功能,應配置并啟用結束會話、限制非法登錄次數和當登錄連接超時自動退出等相關措施;
1)SQL server的賬戶鎖定策略原理也是一樣的,都是參照Windows操作系統的校驗函數來校驗的,所以需要勾選賬戶的強制密碼過期,并且開啟操作系統的賬戶鎖定策略。勾選數據庫強制密碼過期,設置操作系統密碼鎖定策略。
2)SQL Server 數據庫連接超時包含三類:遠程登錄超時、客戶端連接數據庫超時、sql語句執行超時(主要關注遠程登錄超時),其中:
遠程登錄超時:
在Microsoft SQL Server Management Studio中登錄服務器并展開,右鍵點擊服務器,選擇“屬性”,選擇“高級”項,查看登錄超時設定。也可在Microsoft SQL Server Management Studio的查詢中輸入命令:“sp_configure”查看數據庫啟動的配置參數;其中remote login timeout為遠程登錄超時設定。
客戶端連接數據庫超時:
sql語句執行超時:
c) 當進行遠程管理時,應采取必要措施防止鑒別信息在網絡傳輸過程中被竊聽;
核查是否采用加密等安全方式對系統進行遠程管理,防止鑒別信息在網絡傳輸過程中被竊聽。檢查遠程管理時管理員所使用的管理協議,查看傳輸過程中的鑒別信息是否是經過加密處理的、抗重放的,并可使用抓包工具,判斷管理員遠程管理時傳輸過程中的鑒別信息被竊聽的可能性。
根據了解,SQL Server的加密分成兩個部分,一個是對數據的加密,一個是對連接的加密。對于數據的加密,主要是通過一系列的函數如EncryptbyKey,或者TDE來完成的。另外一部分是連接加密,自己分的話還能分成兩個階段。一個是建立連接時候的加密。另外一個階段是連接建立起來之后,客戶端和SQL Server在其上傳輸數據時候的加密。可以通過抓包判定SQL Server已經使用了SSL來加密。
SQL Server自動生成的證書是一種自簽名的證書,而通過自簽名證書實現的SSL并不能提供很強的安全性。他對中間人攻擊(man-in-the-middle attack)不具有抵抗能力。因此建議在生產環境中,應該手動給SQL Server配置證書,而不是讓它使用自動生成的證書。
默認情況下SQL Server是不加密收發的數據包信息,需要通過SQL Server的configuration Manager配置SQL Server使得它加密和客戶端之間收發的數據包信息。
其中包含客戶端的加密配置和服務器端的加密配置:
客戶端的加密配置:
服務器端的加密配置:
默認狀態下客戶端和服務器端這個選項是設置為No的,SQL Server對數據包的收發不進行加密,反之,當選項設置為yes時,SQL Server對數據包的收發進行加密。
d) 應采用口令、密碼技術、生物技術等兩種或兩種以上組合的鑒別技術對用戶進行身份鑒別,且其中一種鑒別技術至少應使用密碼技術來實現。
訪談管理員并進行驗證,是否采用雙因子身份鑒別技術,鑒別技術是什么 。實際實現雙因素認證比較困難,一般情況判定為不符合。
訪問控制
a) 應對登錄的用戶分配賬戶和權限;
1)查看用戶,并結合結合訪談管理員是否存在網絡管理員,安全管理員,系統管理員、審計管理員等多個賬戶,為各個管理用戶分配對應的權限;輸入命令:“select * from syslogins”,根據所列出的賬戶,查看是否存在默認賬戶,默認賬戶是否已禁用。
b) 應重命名或刪除默認賬戶,修改默認賬戶的默認口令
執行命令:“select * from syslogins”,檢查如sa賬戶是否重命名(實際檢查發現很多sa賬戶是不能重命名或禁用的,可能會影響系統正常運行,檢查過程中也需要權衡業務需求),數據庫一般情況不存在默認口令,輸入命令:查看是否存在默認賬戶。(SQLServer中默認賬戶其實很多,主要檢查權限過大的賬戶)
c) 應及時刪除或停用多余的、過期的賬戶,避免共享賬戶的存在
1)詢問管理員數據庫中的賬戶使用情況,是否存在無人使用的賬戶,如果存在建議刪除。
2)檢查網絡管理員,安全管理員、系統管理員不同用戶是否采用不同賬戶登錄數據庫。輸入命令:“select * from syslogins”,根據所列出的賬戶,詢問數據庫管理員各個賬戶的作用,是否存在多余的、過期的和共享賬戶。
d) 應授予管理用戶所需的最小權限,實現管理用戶的權限分離
1)詢問數據庫管理員管理賬戶是否按照最小權限進行劃分。在Microsoft SQL Server Management Studio中的查詢中輸入命令:“sp_helplogins”查看所有數據庫登錄用戶的信息及其權限。在Microsoft SQL Server Management Studio的查詢中輸入命令:“select * from sys.sql_logins”,查看SQL Server身份認證模式的能夠登錄賬戶,其中is_disabled值為1,則登錄賬戶被鎖定;輸入命令:“select * from sys.syslogins”,查看所有登錄賬戶,其中 “denylogin”的值為1時,拒絕賬戶連接到數據庫引擎,“sysadmin”的值為1時,具有系統管理員權限。Sa之類的系統管理員賬戶不負責操作業務數據庫;業務數據庫管理員不應具備系統管理權限(如刪除數據庫、表和存儲過程等)。
e) 應由授權主體配置訪問控制策略,訪問控制策略規定主體對客體的訪問規則
1)訪談和查看管理員是否制定了訪問控制策略
2)查看管理員權限;(此測評點如果數據庫已經啟用身份鑒別,且具備權限分離可判定為符合)
f) 訪問控制的粒度應達到主體為用戶級或進程級,客體為文件、數據庫表級
結合a)、b)、c)、d)、e)項,并訪談管理員并核查訪問控制粒度主體是否為用戶級,客體是否為數據庫表級。詢問數據庫管理員是否具有安全策略,數據庫是否具有重要的表。在企業管理器中右鍵點擊重要的表,查看其權限。
(此測評點多數測評機構默認判定為符合)
g)應對重要主體和客體設置安全標記,并控制主體對有安全標記信息資源的訪問
通過訪談管理員是否對重要主體和客體設置安全標記。SQL Server數據庫自身應該很難實現這個功能,可能需要依賴操作系統或者第三方來實現。該項一般默認都不符合。
安全審計
a) 應啟用安全審計功能,審計覆蓋到每個用戶,對重要的用戶行為和重要安全事件進行審計
1)查看SQLserver日志是否有日志審計記錄,檢查安全性中是否創建了審核目標。在Microsoft SQL Server Management Studio中登錄服務器并展開,右鍵點擊服務器,選擇“屬性”,選擇“安全性”項,查看登錄審核和是否啟用C2 審計跟蹤。也可在Microsoft SQL Server Management Studio的查詢中輸入命令:“sp_configure”查看“c2 audit mode”項的值,“0”是未開啟C2審計,“1”是開啟C2審計。SQL Server數據庫的審計內容包括SQL Server日志和應用程序日志。SQL Server的SQL Server日志可通過Microsoft SQL Server Management Studio進行查看,展開服務器點擊“管理-〉SQL Server 日志";SQL Server的應用程序日志可通過操作系統的日志進行查看。
2)訪談管理員是否通過第三方工具(數據庫審計系統)收集審計數據進行分析。
b) 審計記錄應包括事件的日期和時間、用戶、事件類型、事件是否成功及其他與審計相關的信息
1)檢查SQL server日志記錄的各類信息(告警日志、運行日志、錯誤日志、登錄日志等)
2)核查是否部署第三方工具(數據庫審計系統)增強SQLserver日志功能。記錄第三方審計工具的審計內容,查看是否包括事件的日期和時間、用戶、事件類型、事件是否成功及其他與審計相關的信息。
c) 應對審計記錄進行保護,定期備份,避免受到未預期的刪除、修改或覆蓋等
應保證各個管理員盡可以訪問與自身相關的日志文件,如關鍵日志僅允許特權賬戶訪問
1)訪談管理員對審計記錄如何保護,對審計記錄是否定期備份,備份策略。
是否采取了備份、轉存等手段對審計記錄進行保護,避免未預期的刪除、修 改或覆蓋,數據庫本地日志保存時間超過6個月。采用第三方數據庫審計產品,審計記錄保存時間超過6個月。
2)是否嚴格限制用戶訪問審計記錄的權限,可以通過普通用戶登錄然后是否能夠訪問修改刪除日志。
d) 應對審計進程進行保護,防止未經授權的中斷
MariDB可以根據權限建立各類型的賬戶,可以防止審計進程未經授權的中斷,如果數據庫已建立審計賬戶且各個數據庫管理員權限已分離,可判定為符合。
入侵防范
a) 應遵循最小安裝的原則,僅安裝需要的組件和應用程序
數據庫系統此測評項可判定為不適用。
b) 應關閉不需要的系統服務、默認共享和高危端口
數據庫系統此測評項不適用。
c) 應通過設定終端接入方式或網絡地址范圍對通過網絡進行管理的管理終端進行限制
SQL server數據庫沒有登錄地址限制的相關配置,多數情況下是限制數據庫服務器的登錄地址,從而實現對數據庫的登錄地址限制。
d) 應提供數據有效性檢驗功能,保證通過人機接口輸入或通過通信接口輸入的內容符合系統設定要求
數據庫系統此測評項不適用。
e) 應能發現可能存在的已知漏洞,并在經過充分測試評估后,及時修補漏洞
1) 訪談管理員是否定期或不定期進行漏洞掃描或滲透測試,周期按照天/月/季度/半年/年等方式(建議漏洞掃描周期最長半年一次)。
2)通過本次漏洞掃描是否發現與數據庫相關的高危漏洞,若存在,是否及時進行漏洞修補,執行命令:“select @@version”檢查數據庫版本。
f) 應能夠檢測到對重要節點進行入侵的行為,并在發生嚴重入侵事件時提供報警
數據庫系統此測評項不適用。
惡意代碼防范
應采用免受惡意代碼攻擊的技術措施或主動免疫可信驗證機制及時識別入侵和病毒行為,并將其有效阻斷
數據庫系統此測評項不適用。
可信驗證
可基于可信根對計算設備的系統引導程序、 系統程序、重要配置參數和應用程序等進行可信驗證,并在應用程序的關鍵執行環節進行動態可信驗證,在檢測到其可信性受到破壞后進行報警,并將驗證結果形成審計記錄送至安全管理中心
通過訪談管理員,是否采取了可信技術,可信技術主要是基于可信芯片、可信根,目前實現此技術的可能性不大,一般判定為不符合。
數據完整性
a)應采用密碼技術保證重要數據在傳輸過程中的完整性,包括但不限于鑒別數據、重要業務數據、重要審計數據、重要配置數據、重要視頻數據和重要個人信息等;
傳輸過程中的完整性一般是通過通信協議來實現的,常見的包括TLS、SSL、SSH等協議,對數據庫而言,查看是否啟用了安全協議進行數據通信,同時詢問管理員,確認是否還有其他保證數據傳輸過程中的完整性措施。根據上文描述,可知SQL Server已經使用SSL來加密。(本地管理可判定為不適用,遠程管理根據實際情況判定)
b)應采用密碼技術保證重要數據在存儲過程中的完整性,包括但不限于鑒別數據、重要業務數據和重要個人信息等。
對數據庫配置文件進行一個完整性檢測,需要配置文件初始可信狀態時的哈希值,然后再根據目前的文件生成一個哈希值,對比前后的一致性,確認數據是否被篡改過,根據了解一般數據庫自身不帶這種機制,詢問管理人員是否使用了第三方軟件對數據庫重要數據進行了完整性校驗。
實際操作中可核查數據庫表中的業務數據、審計數據有無存在哈希字段,據了解數據在前端一般通過json或xml格式進行傳輸,相關數據庫表字段中具有完整性校驗字段。目前一般做不到,判定為不符合。
數據保密性
a)應采用密碼技術保證重要數據在傳輸過程中的保密性,包括但不限于鑒別數據、重要業務數據、重要審計數據、重要配置數據、重要視頻數據和重要個人信息等;
若password是以明文密碼傳送給數據庫,建議不在生產環境中使用。若數據庫未開啟SSL時,我通過Wireshare對數據庫認證過程的數據包進行抓取,可能發現傳輸的密碼字段信息。根據上文描述,可知SQL Server已經使用SSL來加密。
總結,最直接驗證的辦法就是抓包驗證重要的加密數據(鑒別數據、需要加密的業務數據、個人信息等)是否明文傳輸。
b)應采用密碼技術保證重要數據在存儲過程中的保密性,包括但不限于鑒別數據、重要業務數據和重要個人信息等。
檢查數據庫表中的重要數據是否明文存儲,根據經驗除鑒別數據外,業務數據、審計數據實際很少加密存儲,所以一般不符合或者部分符合。如果使用數據庫加密功能,就可以符合符合,數據庫加密主要分庫內加密和庫外加密,庫內加密主要是調用的數據庫本身的加密功能,庫外加密主要通過第三方廠家的數據庫加密功能。
據了解,SQL Server幾乎支持所有的主流對稱加密算法。一般推薦使用AES-128或AES-256作為對稱加密的數據加密算法。
數據備份恢復
a)應提供重要數據的本地數據備份與恢復功能;
1)訪問管理員配置數據、審計數據、業務數據的備份策略,檢查備份策略的備份情況與管理員所說是否一致,是否具有恢復測試記錄。
2)可以通過數據庫管理工具進行備份。
b)應提供異地實時備份功能,利用通信網絡將重要數據實時備份至備份場地;
部署異地備份機房,并符合備份策略通過網絡定期進行異地備份。
c)應提供重要數據處理系統的熱冗余,保證系統的高可用性;
集群部署、雙機熱備均可判定為符合。
剩余信息保護
a)應保證鑒別信息所在的存儲空間被釋放或重新分配前得到完全清除;
一般情況下數據庫系統內核層默認無法實現剩余信息保護功能,需要第三方工具才能實現。
b)應保證存有敏感數據的存儲空間被釋放或重新分配前得到完全清除。
一般情況下數據庫系統內核層默認無法實現剩余信息保護功能,需要第三方工具才能實現。
個人信息保護
a)應僅采集和保存業務必需的用戶個人信息;
檢查數據庫中是否存儲個人信息,若有,檢查個人信息保護機制和個人信息保護管理制度
b)應禁止未授權訪問和非法使用用戶個人信息。
檢查個人信息保護機制和個人信息保護管理制度,驗證非授權人員是否可以訪問個人信息存儲的相關組件內容。
總結
SQL server數據庫運行在windows操作系統中,部分安全策略主要依賴于操作系統的安全配置,大部分安全配置幾乎可以實現,但是在實際測評過程中很多單位不愿意配置等保中要求的策略,一方面是管理員認為不方便自己運維管理,另一方面可能是數據庫在實時生產環境中,管理員擔心更改相關安全配置后影響系統的正常運行,所以我們在測評中要做好安全和生產、安全和管理的平衡。
等保2.0數據庫測評之優炫數據庫測評正在更新中…
參考資料:
GB∕T 28448-2019 《信息安全技術 網絡安全等級保護測評要求》