等級保護2.0-mysql


控制點

安全要求

要求解讀

測評方法

預期結果或主要證據

身份鑒別

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)配置信息:

-1-如果,show variables like 'validate%',無數據輸出,則可能未安裝密碼校驗插件validate_password,則無密碼復雜度限制功能;


-2-如啟用了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)詢問管理員是否采取其他手段配置數據庫登錄失敗處理功能。
2)執行
show variables like %max_connect_errors%";或核查my.cnf文件,應設置如下參數:
max_connect_errors=100
3) show variables like ”%timeout%“,查看返回值

1)MySQL數據庫采用第三方管理軟件,且第三方管理軟件設置登錄失敗鎖定次數
2)如輸入:show variables like '%connection_control%';無結果,且命令輸入成功,則未安裝相關插件;

如:執行成功,如下:單位毫秒:3次失敗鎖定2分鍾,這里只是示例,並不是或是需要這樣去配。

 

3)檢查會話超時:show variables like 'wait_timeout'; 10分鍾。

 

c)當進行遠程管理時,應采取必要措施、防止鑒別信息在網絡傳輸過程中被竊聽

為了防止包括鑒別信息在內的敏感信息在網絡傳輸過程中被竊聽,應限制從遠程管理數據,如果使用了遠程訪問,要確保只有定義的主機才可以訪問服務器,一般通過 TCP wrappers 、iptables或任何其它的防火牆軟件或硬件實現

1)是否采用加密等安全方式對系統進行遠程管理
2)執行
mysql>show variables like %have_ssl%"
查看是否支持ssl的連接特性,若為disabled說明此功能沒有激活,或執行\s查看是否啟用SSL;
3)如果采用本地管理方式,該項為不適用

1)遠程管理采用的方式:遠程管理數據庫,啟用了SSL連接特性。
2)用戶遠程管理數據庫時,客戶端和服務器的連接不通過或跨越不可信任的網絡,采取SSH隧道加密連接選程管理通信
3)本地管理,本條N/A

 

1)執行:show variables like 'have_ssl';

 

開啟了SSL

(2)通過抓包,驗證的確對數據進行了加密。

 

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)已禁用匿名、默認賬戶或限制匿名、默認用戶的權限;

(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
輸出結果查看root用戶是否被重命名或被刪除
2)若root賬戶未被刪除,是否更改其默認口令,避免空口令或弱口令.

1)數據庫管理系統默認賬戶已被刪除
2)數據本管理系統賬認賬戶root未被刪除,但增強其口令復雜度,不要空口令、弱口令的現象

(1)詳細詢問每個用戶用途,檢查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)不存在多人共享帳戶的情況

(1)通過查看用戶的狀態,詳細詢問每個用戶的用戶,並查看多余賬戶的account_locked的狀態,Y的代表鎖定。

 

d)應授予管理用戶所需的最小權限,實現管理用戶的權限分離

有些應用程序是通過一個特定數據庫表的用戶名和口令連接到WySQL的,安全人員不應當給予這個用戶完全的訪問權。如果攻擊者獲得了這個擁有完全訪問權的用戶,他也就擁有了所有的數據庫。因此應核查用戶是否行角色划分,核查訪問控制策略,查看管理用戶的權限是否已進行分離,並核查管理用戶權限是否為其工作任務所需的最小權限

1)是否對用戶進行角色划分且只授予賬號必須的權限
如除root外,任何用戶不應該有mysql庫user表的存取權限,禁止將fil、.process、 super權限授予管理員以外的賬戶
2)查看權限表,並驗證用戶是否具有自身角色外的其他用戶的權限


1)2)記錄管理用戶的權限分配情況:分配了網絡管理員、安全員、審計員賬號,root賬戶使用需向數據庫管理員申請

(1) 通過select * from mysql.user ;查看是否僅有root一個超級管理員的權限,是否存在與root賬戶一樣擁有所有權限的超級管理員的賬戶,並了解各用戶授權的情況及授權的原因。

 

Y代表擁有此權限,N代表沒有此權限,詳細權限說明可以見:https://blog.csdn.net/codemacket/article/details/77836010

e)應由授權主體配置訪問控制策略,訪問控制策略規定主體對客體的訪問規則

應檢查數據庫系統的安全策略,查看是否明確主體(如用戶)以用戶和/或用戶組的身份規定對客體(如文件或系統設備,目錄表和存取控制表等)的訪問控制,覆蓋范圍是否包括與信息安全直接相關的主體(如用戶)和客體(如文件,數據庫表等)及它們之間的操作(如讀、寫或執行)

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)無越權訪問

(1)通過 selcec * from mysql.user;查看每個用戶的在mysql數據庫中的權限

 

(2)通過select * from db;查看用戶在數據中的權限

 

(3)用戶表級別的權限。

 

一些權限說明,參考

https://blog.csdn.net/weixin_33816946/article/details/91532878

f)訪問控制的粒度應達到主體為用戶級或進程級,客體為文件、數據庫表級

明確提出訪問控制的粒度要求,重點目錄的訪問控制的主體可能為某個用戶或某個進程,應能夠控制用戶或進程對文件、數據庫表等客體的訪問

1)執行下列語句:
mysql>selcec * from mysql.user\G -檢查用戶權限列
mysql>selcec * from mysql.db\G --檢查數據庫權限列
2)訪談管理員並核查訪問控制粒度主體是否為用戶級,客體是否為數據庫表級

1) 2)查看是否設置了安全管理員崗位,是否由專門的安全員負責對訪問控制權限的授權工作,授權主體為用戶,客體為數據庫表

g)應對重要主體和客體設置安全標記,並控制主體對有安全標記信息資源的訪問

MySQL不提供該項功能

訪談管理員,是否采用其他技術手段

MySQL不提供該項功能,主要依據操作系統層面實現該項功能

安全審計

a)應啟用安全審計功能,審計覆蓋到每個用戶,對重要的用戶行為和重要安全事件進行審計

如果數據庫服務器並不執行任何查詢,建議啟用審計。在/etc/my.cnf文件的[Mysql]部分添加: 1og,=/var/1og/ my1ogfile
對於生產環境中任務繁重的MySOL數據庫,啟用審計會引起服務器的高昂成本,因此建議采用第三方數據庫審計產品收集審計記錄。應檢查數據庫系統,查看審計策略是否覆蓋系統內重要的安全相關事件,例如,用戶登錄系統、自主訪問控制的所有操作記錄、重要用戶行為(如增加/刪除用戶,刪除庫表)等。

1)執行下列語句:
mysql>show variables like' log_%’
查看輸出的日志內容是否覆蓋到所有用戶,記錄審計記錄覆蓋內容
2)核查是否采取第三方工具增強MySQL日志功能。若有,記錄第三方審計工具的審計內容,查看是否包括事件的日期和時間、用戶、事件類型、事件是否成功及其他與審計相關的信息

1)數據庫本地啟用了日志功能,審計內容覆蓋到每個用戶, 能夠記錄用戶行為和重要安全事件
2)啟用審計功能策略為:配置了審計日志存儲位置,或部署第三方數據庫審計產品,審計內容覆蓋到所有用戶

(1)、詢問管理員是否能對用戶登錄及用戶命令操作進行審計,請調出日志證據,開啟了general_log后能記錄Mysql的操作命令,但看不到哪個用戶。

(2) err-log能記錄用戶登錄失敗的事件,但看不到登陸成功的用戶。

 

(3)mysql   查詢日志,檢查general_log是否開啟,

看查general_log_file文件位置

查看general_log是否包括包括查詢命令:

 

 

綜上,mysql自身是不能查詢某個用戶什么時候登陸,進行了什么樣的操作。

審計功能缺失,及時log功能開啟,也不能對應到人。

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(不管其是否靜態)可以訪問

執行show grants for root@localhost
查看用戶登錄的IP地址;是否給所有用戶加上IP限制,拒絕所有未知主機進行連接
注:當user表中的Host值不為本地主機時,應指定特定IP地址,不應為%;或將user表中的Host值為空,而在host表中指定用戶帳戶允許登陸訪問的若干主機;在非信任的客戶端以數據庫賬戶登錄應被提示拒絕,用戶從其他子網登錄,應被拒絕

1、配置安全策略為:在防火牆上限制特定的終端(IP) 連接(訪問)數據庫:限定的IP地址為:XXXX

2、查看數據庫自身是否限制登陸地址:

 

%代表所有主機,localhost代表本機登陸。

b) 應能發現可能存在的已知漏洞,並在經過充分測試評估后,及時修補漏洞

攻擊者可能利用操作系統存在的安全漏洞對系統進行攻擊,應對系統進行漏洞掃描,及時發現系統中存在的已知漏洞,並在經過充分測試評估后更新系統補丁,.避免遭受由系統漏洞帶的風險

訪談MySQL補丁升級機制,查看補丁安裝情況:
1)執行如下命令查看當前補於版本:
show variables where  variable name like "version"
2)訪談數據庫是否為企業版,是否定期進行漏洞掃描,針對高風險漏洞是否評估補丁並經測試后再進行安裝

1)數據庫當前不有在高風險漏洞,補丁更新及時,記錄補丁信息為: MySQL數據庫補丁定期更新版本
2) 數據庫為企業版,定期進行漏洞掃描,在發現數據庫漏洞時,必須經測試估后進行漏洞修補

數據備份恢復

a)應提供重要數據的本地數據備份與恢復功能

任何系統都有可能發生災難,服務器、MySQL也會崩潰,也有可能遭受入侵,數據有可能被刪除。只有為最糟糕的情況做好了充分的准備,才能夠在事后快速地從災難中恢復。用戶應把備份過程作為一項日常工作。數據庫系統至少提供本地實時備份的功能,當數據發生錯誤時,能夠及時恢復數據

詢問系統管理員數據庫的備份和恢復策略是什么

備份策略為:對數據庫重要數據每天增量備份,每周全量備份:
近期恢復測試時間:每月(季度)定期進行恢復性測試演練

b)應提供異地實時備份功能,利用通信網絡將重要數據實時備份至備份場地

應提供災備中心,對重要的數據提供異地數據級備份,保證當本地系統發生災難性后果不可恢復的,利用異地保存的數據對系統數據能進行恢復

1)詢問系統管理員是否提供異地數據備份功能,是否定時批量傳送至備用場地
2)如果條件允許,則查看其實現技術措施的配置情況

部署數據備份機房:有異地備份機房,實時(定期)將數據備份到機房

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM