iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
Security

資安新人30系列 第 21

資安新人30 Day21 資料庫安全分析 - SQL 漏洞評估工具

  • 分享至 

  • xImage
  •  

第二十一天~~~ ,接續前面資料庫,今天來介紹一個不錯的SQL 漏洞評估工具,可以利用SSMS內建功能確定資料庫的環境帳號資料等設定有沒有風險/images/emoticon/emoticon07.gif


操作說明

官網操作說明
功能僅適用於 SQL Server Management Studio (SSMS) v17.4 或更高版本

1. 開啟SSMS,選擇對應資料庫

2. 點選右鍵,工作>弱點評定>掃描弱點

https://ithelp.ithome.com.tw/upload/images/20221006/20152636d23jiPePUe.png

3.查看報告

https://ithelp.ithome.com.tw/upload/images/20221006/20152636S7k58ZagR4.png

依照弱點說明,進行修補或確認

可能會因為版本差異掃描的規則數量會有不一樣


規則

以下規則來源為:SQL Vulnerability Assessment rules reference guide所屬,針對規則逐步學習了解並記錄,有些規則不是適用於SQL Server就沒去了解行錫/images/emoticon/emoticon13.gif

審核和記錄

  • VA1258:數據庫所有者符合預期

    帳號盤點,確保有無可疑帳號

  • VA1265:啟用數據庫身份驗證的成功和失敗登錄嘗試的審核
  • VA1281:用戶定義角色的所有成員資格都要可預期的

認證和授權

  • VA1020:資料庫 GUEST 不應該具有任何角色身分
  • VA1048:主體不應該 mapped 到SA
  • VA2020:應該賦予最少(一組)主體 ALTER、ALTER ANY USER 權限
  • VA2108:最基本的最少(一組)主體應為固定高影響度資料庫角色的成員

    SQL Server 提供角色來幫助管理權限。角色是對其他主體進行分組的安全主體。數據庫級角色在其權限範圍內是數據庫範圍的。此規則檢查最小的主體集是否是固定數據庫角色的成員

  • VA2129:應授權已簽署模組的變更

    可以使用憑證或非對稱金鑰來簽署預存程序、函數或觸發程序。 這是針對無法透過擁有權鏈結繼承權限或擁有權鏈結中斷 (例如動態 SQL) 的案例所設計。 此規則會檢查對已簽署模組所做的變更,這類變更表示可能出現惡意用途。

  • VA1043:主體 GUEST 不應具有任何使用者資料庫的存取權
  • VA1095:不應將過多權限授與給 PUBLIC 角色
  • VA1248 使用者定義資料庫角色不應當作固定角色成員
  • VA1267:包含的使用者應該使用 Windows 驗證
  • VA1054:不應將過多權限授與給物件或資料行上的 PUBLIC 角色
  • VA1070:資料庫使用者不應與伺服器登入共用相同名稱
  • VA1094:不應直接將資料庫權限授與給主體
  • VA1096:不應將資料庫權限授與給主體 GUEST
  • VA1097:不應將物件或資料行權限授與給主體 GUEST
  • VA1099:不應授予 GUEST 用戶對資料庫安全對象的權限
  • VA1246:不應使用應用程序角色
  • VA1282:孤立角色應該被移除
  • VA2033:應授予對對像或列的數據庫範圍的 EXECUTE 權限的最小主體集
  • VA2109:最少的主體集應該是固定的低影響數據庫角色的成員

安裝更新和補丁

  • VA2128:SQL Server 2012 不支援

    Microsoft 不再支持舊版本的 SQL Server。

數據保護

  • VA1098:任何現有的 SSB 或鏡像端點都應該需要 AES 連接
  • VA1221:資料庫加密對稱金鑰應使用進階加密標準演算法 AES
  • VA1222:單元級加密密鑰應使用 AES 算法

    弱加密算法可能導致資料加密保護被破解!!

  • VA1223:證書密鑰金鑰至少應使用 2048 位元
  • VA1224:非對稱密鑰的長度至少應為 2048 位元
  • VA1219:應啟用透明數據加密

    透明資料加密(TDE)可在不需變更應用程式的情況下,對資料庫、相關聯的備份和交易記錄檔執行即時加密和解密,防止資料洩漏。

Surface Area Reduction

  • VA1102:除 MSDB 以外的所有數據庫都應禁用 Trustworthy

    開啟資料庫的Trustworthy屬性後。DB2上的User2可藉由預存程序模擬User1的身分去存取DB1上的資源。雖然很方便但相對也是很危險,一旦有心人士擁有某個資料庫db_owner或 db_ddladmin 等相關安全權利,且知道 login 及其他資料庫的 user 關係,就有安全疑慮。因為他可以輕易的利用Execute As的方式存取原本不可以碰觸的資源。
    (要Alter Database Set TrustWorthy,需要Sysadmin的權限)

    資料來源:Alter Database Set Trustworthy On設定資料庫信任,來達到跨資料庫存取資源

  • VA1245: 目標資料庫和主資料庫之間的dbo信息應該是一致的

  • VA1256:不應在資料庫中定義使用者 CLR 組件

  • VA1277:Polybase 網路加密應啟用
    PolyBase 是一項技術,可直接在SQL Server內存取與合併非關聯式和關聯式資料。Polybase網路加密選項會在使用 Polybase 時加密控制和資料通道。

  • VA1044:除非特別需要,否則應禁用遠程管理連接

  • VA1051:應在所有資料庫上停用 AUTO_CLOSE

    AUTO_CLOSE 選項可指定資料庫是否正常關機,並在最後一個使用者中斷連線後釋出資源。


補充資料

主體

參考資料
sys.database_principals

  • SQL Server 層級主體
    • SQL Server驗證登入
    • Windows 使用者的 Windows 驗證登入
    • Windows 群組的 Windows 驗證登入
    • AD 使用者的 Azure Active Directory 驗證登入
    • AD 群組的 Azure Active Directory 驗證登入
    • 伺服器角色
  • 資料庫層級主體
    • 資料庫使用者(有 12 種類型的使用者)
    • 資料庫角色
    • 應用程式角色
SELECT name AS [Role],type
FROM sys.database_principals

https://ithelp.ithome.com.tw/upload/images/20221006/20152636C7uLo51ZIl.png

圖片來源:sys.database_principals


透明數據加密 (TDE)

  • TDE
    SQL Server提供了透明資料加密(Transparent Data Encryption:TDE)的方法,可以在無須修改應用程式,也可以加密保護整個資料庫。

參考資料

如果有任何錯誤的地方歡迎提出。/images/emoticon/emoticon41.gif

後記

可以觀看我們團隊的鐵人發文喔~


上一篇
資安新人30 Day20 保護 SQL Server 智慧財產權
下一篇
資安新人30 Day22 安全系統發展生命週期 SSDLC
系列文
資安新人3030
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言