控制點 |
安全要求 |
要求解讀 |
測評方法 |
預期結果或主要證據 |
身份鑒別 |
a)應對登錄的用戶進行身份標識和鑒別,身份標識具有唯一性,身份鑒別信息具有復雜度要求並定期更換 |
應檢查MySQL數據庫的口令策略配置,查看其身份鑒別信息是否具有不易被冒用的特點,例如,口令足夠長,口今復雜(如規定字符應混有大,小寫字母數字和特殊字符),口令定期更新,新舊口令的替換要求 |
1)嘗試登錄數據庫,執行mysql -u root -p查看是否提示輸入口令鑒別用戶身份 |
1)用戶登錄數據庫時,采用用戶名、口令的方式進行身份鑒別
-1-如果,show variables like 'validate%',無數據輸出,則可能未安裝密碼校驗插件validate_password,則無密碼復雜度限制功能;
各參數解釋: validate_password_check_user_name :設置為ON的時候表示能將密碼設置成當前用戶名。 validate_password_dictionary_file:validate_password用於檢查密碼的字典文件的路徑名。 validate_password_length :validate_password所需密碼的最小字符數。
validate_password_mixed_case_count :如果密碼策略是中等或更強的,validate_password要求密碼具有的小寫和大寫字符的最小數量。對於給定的這個值密碼必須有那么多小寫字符和那么多大寫字符。
validate_password_number_count:如果密碼策略是中等或更強的,validate_password要求密碼具有的數字(數字)字符的最小數量。
validate_password_policy : validate_password強制執行的密碼策略,validate_password_policy影響validate_password如何使用它的其他策略設置系統變量,除了根據用戶名檢查密碼之外,后者由validate_password_check_user_name獨立控制。
validate_password_policy值可以使用數值0、1、2或相應的符號值LOW、MEDIUM、STRONG來指定。下表描述了為每個策略執行的測試。對於長度測試,所需的長度是validate_password_length系統變量的值。類似地,其他測試所需的值由其他validate_password_xxx變量提供。 (5)查看用戶上次密碼修改的時間,看是否定期進行修改;
|
b)應具有登錄失敗處理功能,應配置並啟用結束會話、限制非法登錄次數和當登錄連接超時自動退出等相關措施 |
應檢查數據庫系統,查看是否已配置了鑒別失敗處理功能,並設置了非法登錄次數的限制值,對超過限制值的登錄終止其鑒別會話或臨時封閉帳號。查看是否設置網絡登錄連接超時,並自動退出 |
1)詢問管理員是否采取其他手段配置數據庫登錄失敗處理功能。 |
1)MySQL數據庫采用第三方管理軟件,且第三方管理軟件設置登錄失敗鎖定次數 如:執行成功,如下:單位毫秒:3次失敗鎖定2分鍾,這里只是示例,並不是或是需要這樣去配。
3)檢查會話超時:show variables like 'wait_timeout'; 10分鍾。
|
|
c)當進行遠程管理時,應采取必要措施、防止鑒別信息在網絡傳輸過程中被竊聽 |
為了防止包括鑒別信息在內的敏感信息在網絡傳輸過程中被竊聽,應限制從遠程管理數據,如果使用了遠程訪問,要確保只有定義的主機才可以訪問服務器,一般通過 TCP wrappers 、iptables或任何其它的防火牆軟件或硬件實現 |
1)是否采用加密等安全方式對系統進行遠程管理 |
1)遠程管理采用的方式:遠程管理數據庫,啟用了SSL連接特性。
1)執行:show variables like 'have_ssl';
開啟了SSL (2)通過抓包,驗證的確對數據進行了加密。
|
|
d)應采用口令、密碼技術、生物技術等兩種或兩種以上組合的鑒別技術對用戶進行身份鑒別,且其中一種鑒別技術至少應使用密碼技術來實現 |
MySQL不能集成其他身份鑒別措施,應通過對操作系統層面實現雙因素,強化數據庫安全 |
1)MySQL不能集成其他身份鑒別措施,應通過對操作系統層面實現雙因素 |
1)采用的登錄方式有:用戶名口令,MySQL數據庫無法集成其他身份鑒別方式,在操作系統實現雙因素,通常將服務器納入到堡壘機管理,同時通過限制僅允許通過堡壘機壇維服務器。在堡壘機實現雙因素身份認證。常見的雙因素認證方式有口令、數字證書Ukey. 令牌、指紋等 |
|
訪問控制 |
a)應對登錄的用戶分配賬戶和權限 |
訪談管理員數據庫用戶賬戶及權限分配情況,並測試網絡管理員、安全管理員、系統管理員或核查用戶賬戶和權限設置的情況,有些mysql數據庫的匿名用戶的口令為空,因而,任何人都可以連接到這些數據庫。如果匿名帳戶grants存在,那么任何人都可以訪問數據庫,至少可以使用默認的數據庫”test“.因此,應核查是否已禁用匿名、默認賬戶的訪問權限 |
1)執行語句select user,host FROM mysql.user |
(1)使用select * from user; 詳細了解各類用戶的權限。
詳細權限說明可以見:https://blog.csdn.net/codemacket/article/details/77836010。 訪談管理員主要為用戶分配了什么角色,為各類用戶分配了了什么樣的權限權限, 示例!!!也可以使用:show grants for 用戶名; 查看各類用戶的權限,得出結果如下:GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON *.* TO 'dbadmin'@'%' WITH GRANT OPTION |
b)應重命名或刪除默認賬戶,修改默認賬戶的默認口令 |
在linux中,root 用戶擁有對所有數據庫的完全訪問權。因而,在linux的安裝過程中,一定要設置root口令,要改變默認的空口令 |
1)執行select user,host FROM mysql.user |
1)數據庫管理系統默認賬戶已被刪除 (1)詳細詢問每個用戶用途,檢查root 用戶或在其他默認用戶口令是否修改;
|
|
c)應及時刪除或停用多余的、過期的賬戶,避免共享賬戶的存在 |
在默認安裝mysql中,匿名戶可訪問test數據庫.我們可以移除任何無用的數據庫,以避免在不可預料的情況下訪問了數據庫,同時刪除數據庫中多余的、過期的賬戶,如測試賬號等 |
1)在sqlplus中執行命令: select username,account_status from dba_users |
1)不存在示例帳戶 (1)通過查看用戶的狀態,詳細詢問每個用戶的用戶,並查看多余賬戶的account_locked的狀態,Y的代表鎖定。
|
|
d)應授予管理用戶所需的最小權限,實現管理用戶的權限分離 |
有些應用程序是通過一個特定數據庫表的用戶名和口令連接到WySQL的,安全人員不應當給予這個用戶完全的訪問權。如果攻擊者獲得了這個擁有完全訪問權的用戶,他也就擁有了所有的數據庫。因此應核查用戶是否行角色划分,核查訪問控制策略,查看管理用戶的權限是否已進行分離,並核查管理用戶權限是否為其工作任務所需的最小權限 |
1)是否對用戶進行角色划分且只授予賬號必須的權限 |
(1) 通過select * from mysql.user ;查看是否僅有root一個超級管理員的權限,是否存在與root賬戶一樣擁有所有權限的超級管理員的賬戶,並了解各用戶授權的情況及授權的原因。
Y代表擁有此權限,N代表沒有此權限,詳細權限說明可以見:https://blog.csdn.net/codemacket/article/details/77836010。 |
|
e)應由授權主體配置訪問控制策略,訪問控制策略規定主體對客體的訪問規則 |
應檢查數據庫系統的安全策略,查看是否明確主體(如用戶)以用戶和/或用戶組的身份規定對客體(如文件或系統設備,目錄表和存取控制表等)的訪問控制,覆蓋范圍是否包括與信息安全直接相關的主體(如用戶)和客體(如文件,數據庫表等)及它們之間的操作(如讀、寫或執行) |
1.訪談管理員是否制定了訪問控制策略 |
1制定數據庫訪問控制策略,由專門的安全員負責對訪問控制權限的授權工作: (1)通過 selcec * from mysql.user;查看每個用戶的在mysql數據庫中的權限
(2)通過select * from db;查看用戶在數據中的權限
(3)用戶表級別的權限。
一些權限說明,參考 https://blog.csdn.net/weixin_33816946/article/details/91532878 |
|
f)訪問控制的粒度應達到主體為用戶級或進程級,客體為文件、數據庫表級 |
明確提出訪問控制的粒度要求,重點目錄的訪問控制的主體可能為某個用戶或某個進程,應能夠控制用戶或進程對文件、數據庫表等客體的訪問 |
1)執行下列語句: |
1) 2)查看是否設置了安全管理員崗位,是否由專門的安全員負責對訪問控制權限的授權工作,授權主體為用戶,客體為數據庫表 |
|
g)應對重要主體和客體設置安全標記,並控制主體對有安全標記信息資源的訪問 |
MySQL不提供該項功能 |
訪談管理員,是否采用其他技術手段 |
MySQL不提供該項功能,主要依據操作系統層面實現該項功能 |
|
安全審計 |
a)應啟用安全審計功能,審計覆蓋到每個用戶,對重要的用戶行為和重要安全事件進行審計 |
如果數據庫服務器並不執行任何查詢,建議啟用審計。在/etc/my.cnf文件的[Mysql]部分添加: 1og,=/var/1og/ my1ogfile |
1)執行下列語句: |
1)數據庫本地啟用了日志功能,審計內容覆蓋到每個用戶, 能夠記錄用戶行為和重要安全事件 (1)、詢問管理員是否能對用戶登錄及用戶命令操作進行審計,請調出日志證據,開啟了general_log后能記錄Mysql的操作命令,但看不到哪個用戶。 (2) err-log能記錄用戶登錄失敗的事件,但看不到登陸成功的用戶。
(3)mysql 查詢日志,檢查general_log是否開啟, 看查general_log_file文件位置 查看general_log是否包括包括查詢命令:
綜上,mysql自身是不能查詢某個用戶什么時候登陸,進行了什么樣的操作。 審計功能缺失,及時log功能開啟,也不能對應到人。 |
b)審計記錄應包括事件的日期和時間,用戶、事件類型,事件是否成功及其他與審計相關的信息 |
應檢查數據庫系統,查看審計策略是否覆蓋系統內重要的安全相關事件,例如,用戶登錄系統、自主訪問控制的所有操作記錄、重要用戶行為(如增加/刪除用戶,刪除庫表)等 |
1)執行下列語句: |
1)數據庫本地啟用了日志功能,審計內容覆蓋到每個用戶,能夠記錄重要用戶行為和重要安全事件 |
|
c)應對審計記錄進行保護,定期備份,避免受到未預期的刪除、修改或覆蓋等 |
應保證只有root和mysql可以訪問這些日志文件,其中,錯誤日志務必須確保只有root和MySq1可以訪問hostnam'err日志文件,由於該文件存放在mysql數據歷史中,文件包含如口令、地址,表名,存儲過程名、代碼等敏感信息,易被用於信息收集,並且有可能向攻擊者提供利用數據庫漏洞的信息,攻擊者獲取安裝數據庫的服務器的內部數據: MySQL日志,應確保只有root和mysq1可以訪問logfileXY日志文件,此文件存放在mysq1的歷史目錄中。因此,應檢查MySQL數據庫系統是否對日志進行了權限設置,非授權人員不能對日志進行操作。另外,應防止審計日志空間不夠而導致無法記錄日志的情況發生,並對審計日志進行定期備份,根據《網絡安全法》要求,日志應至少保存6個月以上 |
1)訪談管理員對審計話錄如何保護,對審計記錄是否定期備份,備份策略 |
1)采取了備份、轉存等手段對審計記錄進行保護,避免未預期的刪除、修 改或覆蓋,數據庫本地日志保存時間超過6個月 |
|
|
應測試通過非審計員的其他賬戶來中斷審計進程,驗證審計進程是否受到保護;對於MySQL數據庫系統默認符合,但是如果采取了第三方工具,則應檢查數據庫系統,查看未授權用戶是否能中斷審計進程 |
1)詢問是否嚴格限制管理員、審計員權限 |
1)非審計員賬戶無法中斷審計進程,審計進程受到保護 |
|
入侵防范 |
|
直接通過本地網絡之外的計算機連接生產環境中的數據庫是異常危險的。有時,管理員會打開主機對數據庫的訪問: |
執行show grants for root@localhost |
1、配置安全策略為:在防火牆上限制特定的終端(IP) 連接(訪問)數據庫:限定的IP地址為:XXXX 2、查看數據庫自身是否限制登陸地址:
%代表所有主機,localhost代表本機登陸。 |
b) 應能發現可能存在的已知漏洞,並在經過充分測試評估后,及時修補漏洞 |
攻擊者可能利用操作系統存在的安全漏洞對系統進行攻擊,應對系統進行漏洞掃描,及時發現系統中存在的已知漏洞,並在經過充分測試評估后更新系統補丁,.避免遭受由系統漏洞帶的風險 |
訪談MySQL補丁升級機制,查看補丁安裝情況: |
1)數據庫當前不有在高風險漏洞,補丁更新及時,記錄補丁信息為: MySQL數據庫補丁定期更新版本 |
|
數據備份恢復 |
a)應提供重要數據的本地數據備份與恢復功能 |
任何系統都有可能發生災難,服務器、MySQL也會崩潰,也有可能遭受入侵,數據有可能被刪除。只有為最糟糕的情況做好了充分的准備,才能夠在事后快速地從災難中恢復。用戶應把備份過程作為一項日常工作。數據庫系統至少提供本地實時備份的功能,當數據發生錯誤時,能夠及時恢復數據 |
詢問系統管理員數據庫的備份和恢復策略是什么 |
備份策略為:對數據庫重要數據每天增量備份,每周全量備份: |
b)應提供異地實時備份功能,利用通信網絡將重要數據實時備份至備份場地 |
應提供災備中心,對重要的數據提供異地數據級備份,保證當本地系統發生災難性后果不可恢復的,利用異地保存的數據對系統數據能進行恢復 |
1)詢問系統管理員是否提供異地數據備份功能,是否定時批量傳送至備用場地 |
部署數據備份機房:有異地備份機房,實時(定期)將數據備份到機房 |