控制點 |
安全要求 |
要求解讀 |
測評方法 |
預期結果或主要證據 |
身份鑒別 |
a)應對登錄的用戶進行身份標識和鑒別,身份標識具有唯一性,身份鑒別信息具有復雜度要求並定期更換 |
應檢查MySQL數據庫的口令策略配置,查看其身份鑒別信息是否具有不易被冒用的特點,例如,口令足夠長,口今復雜(如規定字符應混有大,小寫字母數字和特殊字符),口令定期更新,新舊口令的替換要求 |
1)嘗試登錄數據庫,執行mysql -u root -p查看是否提示輸入口令鑒別用戶身份 2)使用如下命令查詢賬號 select user, host FROM mysql.user 結果輸出用戶列表,查者是否存在相同用戶名 3)執行如下語句查詢是否在空口令用: select * from mysql.user where length(password)= 0 or password is null 輸出結果是否為空 4)執行如下語句查看用戶口今復雜度相關配置: show variables like 'validate%'; 或show VARIABLES like "%password“ |
1)用戶登錄數據庫時,采用用戶名、口令的方式進行身份鑒別 2)查詢user表,不存在相同的用戶名 3)不存在空口令用戶; 4)配置信息: validate_password_length 8 validat_ password_mixed_case_count 1 validate_password_number_count 1 validate_password policy MEDIUM validate_password_special_char_count 1 |
|
b)應具有登錄失敗處理功能,應配置並啟用結束會話、限制非法登錄次數和當登錄連接超時自動退出等相關措施 |
應檢查數據庫系統,查看是否已配置了鑒別失敗處理功能,並設置了非法登錄次數的限制值,對超過限制值的登錄終止其鑒別會話或臨時封閉帳號。查看是否設置網絡登錄連接超時,並自動退出 |
1)詢問管理員是否采取其他手段配置數據庫登錄失敗處理功能。 2)執行 show variables like %max_connect_errors%";或核查my.cnf文件,應設置如下參數: max_connect_errors=100 3) show variables like ”%timeout%“,查看返回值 |
1)MySQL數據庫采用第三方管理軟件,且第三方管理軟件設置登錄失敗鎖定次數 2)3)數據庫管理系統本地配置了參數max_connect_errors= 100, Wait_timeout = 28800,如果mysql服務器連續接收到了來自於同一個主機的請求,且這些連續的請求全部都沒有成功的建立連接就被斷開了,當這些連續的請求的累計值大於max_connect_errors的設定值時,mysql 服務器就會阻止這台主機后續的所有請求。Wait_ timeout: 一個連接connection空閑超過8個小時(默認值28800秒),MySQL 就會自動斷開這個連接 |
|
c)當進行遠程管理時,應采取必要措施、防止鑒別信息在網絡傳輸過程中被竊聽 |
為了防止包括鑒別信息在內的敏感信息在網絡傳輸過程中被竊聽,應限制從遠程管理數據,如果使用了遠程訪問,要確保只有定義的主機才可以訪問服務器,一般通過 TCP wrappers 、iptables或任何其它的防火牆軟件或硬件實現 |
1)是否采用加密等安全方式對系統進行遠程管理 2)執行 mysql>show variables like %have_ssl%" 查看是否支持ssl的連接特性,若為disabled說明此功能沒有激活,或執行\s查看是否啟用SSL; 3)如果采用本地管理方式,該項為不適用 |
1)遠程管理采用的方式:遠程管理數據庫,啟用了SSL連接特性。 2)用戶遠程管理數據庫時,客戶端和服務器的連接不通過或跨越不可信任的網絡,采取SSH隧道加密連接選程管理通信 3)本地管理,本條N/A |
|
d)應采用口令、密碼技術、生物技術等兩種或兩種以上組合的鑒別技術對用戶進行身份鑒別,且其中一種鑒別技術至少應使用密碼技術來實現 |
MySQL不能集成其他身份鑒別措施,應通過對操作系統層面實現雙因素,強化數據庫安全 |
1)MySQL不能集成其他身份鑒別措施,應通過對操作系統層面實現雙因素 2)訪談系統管理員,是否采用其他技術手段實現雙因素身份認證,是否采用了兩種或兩種以上組合的鑒別技術,如口令、數字證書Ukey. 令牌、指紋等,是否有一種鑒別方法使用密碼技術 |
1)采用的登錄方式有:用戶名口令,MySQL數據庫無法集成其他身份鑒別方式,在操作系統實現雙因素,通常將服務器納入到堡壘機管理,同時通過限制僅允許通過堡壘機壇維服務器。在堡壘機實現雙因素身份認證。常見的雙因素認證方式有口令、數字證書Ukey. 令牌、指紋等 2)采用的密碼技術是: 在硬件UKey中使用了加密算法 |
訪問控制 |
a)應對登錄的用戶分配賬戶和權限 |
訪談管理員數據庫用戶賬戶及權限分配情況,並測試網絡管理員、安全管理員、系統管理員或核查用戶賬戶和權限設置的情況,有些mysql數據庫的匿名用戶的口令為空,因而,任何人都可以連接到這些數據庫。如果匿名帳戶grants存在,那么任何人都可以訪問數據庫,至少可以使用默認的數據庫”test“.因此,應核查是否已禁用匿名、默認賬戶的訪問權限 |
1)執行語句select user,host FROM mysql.user 輸出結果是否為網絡管理員,安全管理員,系統管理員創建了不同賬戶: 2)執行show grants for' XXXX'@' localhost': 查看網絡管理員,安全管理員、系統管理員用戶賬號的權限,權限間是否分離並相互制約 |
1)審計員的角色,創建了不同的賬戶,並為其分配了相應的權限 2)已禁用匿名、默認賬戶或限制匿名、默認用戶的權限 |
|
b)應重命名或刪除默認賬戶,修改默認賬戶的默認口令 |
在linux中,root 用戶擁有對所有數據庫的完全訪問權。因而,在linux的安裝過程中,一定要設置root口令,要改變默認的空口令 |
1)執行select user,host FROM mysql.user 輸出結果查看root用戶是否被重命名或被刪除 2)若root賬戶未被刪除,是否更改其默認口令,避免空口令或弱口令. |
1)數據庫管理系統默認賬戶已被刪除 2)數據本管理系統賬認賬戶root未被刪除,但增強其口令復雜度,不要空口令、弱口令的現象 |
|
c)應及時刪除或停用多余的、過期的賬戶,避免共享賬戶的存在 |
在默認安裝mysql中,匿名戶可訪問test數據庫.我們可以移除任何無用的數據庫,以避免在不可預料的情況下訪問了數據庫,同時刪除數據庫中多余的、過期的賬戶,如測試賬號等 |
1)在sqlplus中執行命令: select username,account_status from dba_users 2)執行下列語句: select * from mysql.user where user="" select user, host FROM mysql.user 依次核查列出的賬戶,是否存在無關的賬戶。 3)訪談網絡管理員,安全管理員、系統管理員不同用戶是否采用不同賬戶登錄系統 |
1)不存在示例帳戶 2)數據庫管理系統用戶表中不存在無關賬戶 3)不存在多人共享帳戶的情況 |
|
d)應授予管理用戶所需的最小權限,實現管理用戶的權限分離 |
有些應用程序是通過一個特定數據庫表的用戶名和口令連接到WySQL的,安全人員不應當給予這個用戶完全的訪問權。如果攻擊者獲得了這個擁有完全訪問權的用戶,他也就擁有了所有的數據庫。因此應核查用戶是否行角色划分,核查訪問控制策略,查看管理用戶的權限是否已進行分離,並核查管理用戶權限是否為其工作任務所需的最小權限 |
1)是否對用戶進行角色划分且只授予賬號必須的權限 如除root外,任何用戶不應該有mysql庫user表的存取權限,禁止將fil、.process、 super權限授予管理員以外的賬戶 2)查看權限表,並驗證用戶是否具有自身角色外的其他用戶的權限 |
1)2)記錄管理用戶的權限分配情況:分配了網絡管理員、安全員、審計員賬號,root賬戶使用需向數據庫管理員申請 |
|
d)應由授權主體配置訪問控制策略,訪問控制策略規定主體對客體的訪問規則 |
應檢查數據庫系統的安全策略,查看是否明確主體(如用戶)以用戶和/或用戶組的身份規定對客體(如文件或系統設備,目錄表和存取控制表等)的訪問控制,覆蓋范圍是否包括與信息安全直接相關的主體(如用戶)和客體(如文件,數據庫表等)及它們之間的操作[如讀、寫或執行) |
1.訪談管理員是否制定了訪問控制策略 2.執行語句: mysql>selcec * from mysql.user\G -檢查用戶權限列 mysql>selcec * from mysql.db\G --檢查數據庫權限列 mysql>selcec * from mysql.tables_priv\G 一檢查用戶表權限列 mysql>selcec * from mysql.columns_privi\G -檢查列權限列管理員 輸出的權限列是是否與管理員制定的訪問控制策略及規則一致 3)登錄不同的用戶,驗證是否存在越權訪問的情形 |
1制定數據庫訪問控制策略,由專門的安全員負責對訪問控制權限的授權工作: 2)各賬戶權限配置,均是基於安全員的安全策略配置進行的訪問控制 3)無越權訪問 |
|
e)訪問控制的粒度應達到主體為用戶級或進程級,客體為文件、數據庫表級 |
明確提出訪問控制的粒度要求,重點目錄的訪問控制的主體可能為某個用戶或某個進程,應能夠控制用戶或進程對文件、數據庫表等客體的訪問 |
1)執行下列語句: mysql>selcec * from mysql.user\G -檢查用戶權限列 mysql>selcec * from mysql.db\G --檢查數據庫權限列 2)訪談管理員並核查訪問控制粒度主體是否為用戶級,客體是否為數據庫表級 |
1) 2)由專門的安全員負責對訪問控制權限的授權工作,授權主體為用戶,客體為數據庫表 |
|
f)應對重要主體和客體設置安全標記,並控制主體對有安全標記信息資源的訪問 |
MySQL不提供該項功能 |
訪談管理員,是否采用其他技術手段 |
MySQL不提供該項功能,主要依據操作系統層面實現該項功能 |
安全審計 |
a)應啟用安全審計功能,審計覆蓋到每個用戶,對重要的用戶行為和重要安全事件進行審計 |
如果數據庫服務器並不執行任何查詢,建議啟用審計。在/etc/my.cnf文件的[Mysql]部分添加: 1og,=/var/1og/ my1ogfile 對於生產環境中任務繁重的MySOL數據庫,啟用審計會引起服務器的高昂成本,因此建議采用第三方數據庫審計產品收集審計記錄。應檢查數據庫系統,查看審計策略是否覆蓋系統內重要的安全相關事件,例如,用戶登錄系統、自主訪問控制的所有操作記錄、重要用戶行為(如增加/刪除用戶,刪除庫表)等。 |
1)執行下列語句: mysql>show variables like' log_%’ 查看輸出的日志內容是否覆蓋到所有用戶,記錄審計記錄覆蓋內容 2)核查是否采取第三方工具增強MySQL日志功能。若有,記錄第三方審計工具的審計內容,查看是否包括事件的日期和時間、用戶、事件類型、事件是否成功及其他與審計相關的信息 |
1)數據庫本地啟用了日志功能,審計內容覆蓋到每個用戶, 能夠記錄用戶行為和重要安全事件 2)啟用審計功能策略為:配置了審計日志存儲位置,或部署第三方數據庫審計產品,審計內容覆蓋到所有用戶 |
|
b)審計記錄應包括事件的日期和時間,用戶、事件類型,事件是否成功及其他與審計相關的信息 |
應檢查數據庫系統,查看審計策略是否覆蓋系統內重要的安全相關事件,例如,用戶登錄系統、自主訪問控制的所有操作記錄、重要用戶行為(如增加/刪除用戶,刪除庫表)等 |
1)執行下列語句: mysql>show variables like 'log_%' 查看輸出的日志內容是否覆蓋到所有用戶,記錄審計記錄覆蓋內容 2)核查是否采取第三方工具增強MySQL日志功能。若有,記錄第三方審計工具的審計內容,查看是否包括事件的日期和時間、用戶、事件類型、事件是否成功及其他與審計相關的信息 |
1)數據庫本地啟用了日志功能,審計內容覆蓋到每個用戶,能夠記錄重要用戶行為和重要安全事件 2)采用第三方數據庫審計產品,審計內容覆蓋到每個用戶,能夠記錄重要用戶行為和重要安全事件 |
|
c)應對審計記錄進行保護,定期備份,避免受到未預期的刪除、修改或覆蓋等 |
應保證只有root和mysql可以訪問這些日志文件,其中,錯誤日志務必須確保只有root和MySq1可以訪問hostnam'err日志文件,由於該文件存放在mysql數據歷史中,文件包含如口令、地址,表名,存儲過程名、代碼等敏感信息,易被用於信息收集,並且有可能向攻擊者提供利用數據庫漏洞的信息,攻擊者獲取安裝數據庫的服務器的內部數據: MySQL日志,應確保只有root和mysq1可以訪問logfileXY日志文件,此文件存放在mysq1的歷史目錄中。因此,應檢查MySQL數據庫系統是否對日志進行了權限設置,非授權人員不能對日志進行操作。另外,應防止審計日志空間不夠而導致無法記錄日志的情況發生,並對審計日志進行定期備份,根據《網絡安全法》要求,日志應至少保存6個月以上 |
1)訪談管理員對審計話錄如何保護,對審計記錄是否定期備份,備份策略 2)是否嚴格限制用戶訪問審計記錄的權限 |
1)采取了備份、轉存等手段對審計記錄進行保護,避免未預期的刪除、修 改或覆蓋,數據庫本地日志保存時間超過6個月 2)采用第三方數據庫審計產 品,審計記錄保存時間超過6個月 |
|
d)應對審計進程進行保護,防止未經授權的中斷 |
應測試通過非審計員的其他賬戶來中斷審計進程,驗證審計進程是否受到保護;對於MySQL數據庫系統默認符合,但是如果采取了第三方工具,則應檢查數據庫系統,查看未授權用戶是否能中斷審計進程 |
1)詢問是否嚴格限制管理員、審計員權限 2)用戶重啟實例關閉審計功能,查看是否成功 |
1)非審計員賬戶無法中斷審計進程,審計進程受到保護 2)測試其他人員是否可以對審計進程進行開啟,關閉操作,並記錄 |
入侵防范 |
a)應通過設定終端接入方式或網絡地址范圍對通過網絡進行管理的管理終端進行限制 |
直接通過本地網絡之外的計算機連接生產環境中的數據庫是異常危險的。有時,管理員會打開主機對數據庫的訪問: > GRANT ALL ON *.* TO 'root'@'%' 其實是完全放開了對root的訪問,因此把重要的操作限制給特定主機異常重要: >GRANT ALL ON *.* TO 'root'@'localhost' >GRANT ALL ON *.* TO 'root'@'myip.athome' >FLUSH PRIVILEGES此時,即限制僅允許指定的P(不管其是否靜態)可以訪問 |
查看用戶登錄的IP地址;是否給所有用戶加上IP限制,拒絕所有未知主機進行連接 注:當user表中的Host值不為本地主機時,應指定特定IP地址,不應為%;或將user表中的Host值為空,而在host表中指定用戶帳戶允許登陸訪問的若干主機;在非信任的客戶端以數據庫賬戶登錄應被提示拒絕,用戶從其他子網登錄,應被拒絕 |
配置安全策略為:在防火牆上限制特定的終端(IP) 連接(訪問)數據庫:限定的IP地址為:XXXX |
|
b) 應能發現可能存在的已知漏洞,並在經過充分測試評估后,及時修補漏洞 |
攻擊者可能利用操作系統存在的安全漏洞對系統進行攻擊,應對系統進行漏洞掃描,及時發現系統中存在的已知漏洞,並在經過充分測試評估后更新系統補丁,.避免遭受由系統漏洞帶的風險 |
訪談MySQL補丁升級機制,查看補丁安裝情況: 1)執行如下命令查看當前補於版本: show variables where variable name like "version" 2)訪談數據庫是否為企業版,是否定期進行漏洞掃描,針對高風險漏洞是否評估補丁並經測試后再進行安裝 |
1)數據庫當前不有在高風險漏洞,補丁更新及時,記錄補丁信息為: MySQL數據庫補丁定期更新版本 2) 數據庫為企業版,定期進行漏洞掃描,在發現數據庫漏洞時,必須經測試估后進行漏洞修補 |
數據備份恢復 |
a)應提供重要數據處理系統的熱冗余,保證系統的高可用性 |
任何系統都有可能發生災難,服務器、MySQL也會崩潰,也有可能遭受入侵,數據有可能被刪除。只有為最糟糕的情況做好了充分的准備,才能夠在事后快速地從災難中恢復。用戶應把備份過程作為一項日常工作。數據庫系統至少提供本地實時備份的功能,當數據發生錯誤時,能夠及時恢復數據 |
詢問系統管理員數據庫的備份和恢復策略是什么 |
備份策略為:對數據庫重要數據每天增量備份,每周全量備份: 近期恢復測試時間:每月(季度)定期進行恢復性測試演練 |
|
b)應提供異地實時備份功能,利用通信網絡將重要數據實時備份至備份場地 |
應提供災備中心,對重要的數據提供異地數據級備份,保證當本地系統發生災難性后果不可恢復的,利用異地保存的數據對系統數據能進行恢復 |
1)詢問系統管理員是否提供異地數據備份功能,是否定時批量傳送至備用場地 2)如果條件允許,則查看其實現技術措施的配置情況 |
部署數據備份機房:有異地備份機房,實時(定期)將數據備份到機房 |