版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
詳解Mvsal安全配置目錄前言Mysql賬戶權(quán)限安全Mysql數(shù)據(jù)的網(wǎng)絡(luò)安全配置密碼策略安全Mysql日志Mysql數(shù)據(jù)庫服務(wù)所在主機(jī)安全配置部署SQL注入檢測、防御模塊mysqld安全相關(guān)啟動(dòng)選項(xiàng)mysql備份策略前言Mysql數(shù)據(jù)庫安全配置、或者叫加固屬于風(fēng)險(xiǎn)模型中的一環(huán),它需要安全人員在理論和實(shí)踐的學(xué)習(xí)中不斷發(fā)現(xiàn)新的問題,并針對(duì)這些問題對(duì)數(shù)據(jù)的各個(gè)方面的配置進(jìn)行強(qiáng)化。本文試圖圍繞著數(shù)據(jù)庫風(fēng)險(xiǎn)識(shí)別、數(shù)據(jù)庫安全加固這個(gè)問題,探討可以采取的措施來最大程度的保證我們的數(shù)據(jù)庫的安全控制處在一個(gè)較好的水平。Mysql賬戶權(quán)限安全mysql中存在4個(gè)控制權(quán)限的表,分別為mysql.USER表mysql.DB表mysql.TABLES_PRIV表mysql.COLUMNS_PRIV表要注意的是,Mysql中有一個(gè)數(shù)據(jù)庫"information_schema",似乎里面保存的也是一些權(quán)限信息,但是要明白的是,這個(gè)數(shù)據(jù)庫"information_schema"是為系統(tǒng)管理員提供元數(shù)據(jù)的一個(gè)簡便方式,它實(shí)際上是一個(gè)視圖,可以理解為對(duì)Mysql中的一個(gè)信息的封裝,對(duì)于Mysql主程序來說,身份認(rèn)證和授權(quán)的信息的來源只有一個(gè),就是'mysql"。/hzhida/archive/2012/08/08/2628826.html0x1.mysql?user表select*fromuser;descUSER;|Field+ |Type + |Null|Key|Default|Extra| + +-----+ + +|Host|char(60)|NO|PRI||||User|char(16)|NO|PRI||||Password|char(41)|NO| ||||Select_priv|enum('N','Y')|NO||N| ||Insert_priv|enum('N','Y')|NO||N| ||Update_priv|enum('N','Y')|NO||N| ||Delete_priv|enum('N','Y')|NO||N| ||Create_priv|enum('N','Y')|NO||N| ||Drop_priv|enum('N','Y')|NO||N| ||Reload_priv|enum('N','Y')|NO||N| |
Shutdown_priv|enum('N','Y')|NO||NProcess_priv|enum('N','Y')|NO||NFile_priv|enum('N','Y')|NO||N|Grant_priv|enum('N','Y')|NO||NReferences_priv|enum('N','Y')|NO||NIndex_priv|enum('N','Y')|NO||NAlter_priv|enum('N','Y')|NO||NShow_db_priv|enum('N','Y')|NO||NSuper_priv|enum('N','Y')|NO||N|Create_tmp_table_priv|enum('N','Y')|NO||N|||NO||N|||Execute_priv|enum('N','Y')|Repl_slave_priv |enum('N','Y')|Repl_client_priv |enum('N','Y')|Create_view_priv |enum('N','Y')|Show_view_priv |enum('N','Y')|Create_routine_priv|enum('N','Y')|Alter_routine_priv|enum('N','Y')|Create_user_priv|enum('N','Y')|Event_priv |enum('N','Y')|Trigger_priv |enum('N','Y')|NO||N|||NO||N|||NO||N | ||NO|||NO||N|||NO||N|||NO||N | ||NO||N | ||NO | |N | ||NO | |N | ||NO||N|||NO | |N | ||NO | |N | ||NO||N | ||NO||N | ||NO||N|||ssl_cipher|x509_issuer|x509_subject|max_questions|max_updates|max_connections|blob|blob|blob|int(11)unsigned|int(11)unsigned|int(11)unsigned|NO|
|NONO|NULL|NULL||NULL||NO||NO||NO||||||||max_user_connections|int(11)unsigned |NO||0|plugin|char(64) |YES|||||YES||NULL|||NO||N|||YES||NULL|||NO||N||TOC\o"1-5"\h\z+ + + + + + +0x2.mysql.db表select*fromdb;descDB;mysql>descDB;+ + + + + + +|Field |Type|Null|Key|Default|Extra|+ + + + + + +|Host |char(60)|NO|PRI| | ||Db |char(64)|NO|PRI| | ||User |char(16)|NO|PRI| | ||Select_priv|enum('N','Y')|NO| |N| ||Insert_priv|enum('N','Y')|NO||N|Update_priv|enum('N','Y')|NO||N|Delete_priv|enum('N','Y')|NO||N|Create_priv|enum('N','Y')|NO||N|Drop_priv|enum('N','Y')|NO||N|Grant_priv|enum('N','Y')|NO||N|References_priv|enum('N','Y')|NO||Index_priv|enum('N','Y')|NO||N|||Alter_priv|enum('N','Y')|NO||N|||Create_tmp_table_priv|enum('N','Y')|NO||N||Lock_tables_priv|enum('N','Y')|NO||N||TOC\o"1-5"\h\z|Create_view_priv |enum('N','Y')|NO | |N | ||Show_view_priv |enum('N','Y')|NO | |N | ||Create_routine_priv|enum('N','Y')|NO||N|||Alter_routine_priv |enum('N','Y')|NO | |N | ||Execute_priv|enum('N','Y')|NO||N|Event_priv|enum('N','Y')|NO||N|Trigger_priv|enum('N','Y')|NO||NTOC\o"1-5"\h\z+ + + + + +0x3.mysql.tables_priv表select*fromTABLES_PRIV;descTABLES_PRIV;mysql>descTABLES_PRIV;+ + TOC\o"1-5"\h\z + + + + +|Field|Type |Null|Key|Default|Extra |+ + + + + + +|Host|char(60)|NO|PRI||||Db|char(64)|NO|PRI||||User|char(16)|NO|PRI||||Table_name|char(64)|NO|PRI||||Grantor|char(77)|NOTOC\o"1-5"\h\z|MUL||||Timestamp|timestamp |NO| |CURRENT_TIMESTAMP|onupdateCURRENT_TIMESTAMP||Table_priv|set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','CreateView','Showview','Trigger')|NO| | | ||Column_priv|set('Select','Insert','Update','References')
|NO||||+ + + + + + +0x4.mysql.columns_priv表select*fromcolumns_priv;desccolumns_priv;+ + +mysql>desccolumns_priv;+ + + + +TOC\o"1-5"\h\z + +|Null|Key||Null|Key|Default|Extra + + + ++ + |Host |char(60)|NO|PRI||||Db |char(64)|NO|PRI||||User |char(16)|NO|PRI||||Table_name|char(64)|NO|PRI| | ||Column_name|char(64)|NO|PRI| | ||Timestamp|timestamp|NO| |CURRENT_TIMESTAMP|onupdateCURRENT_TIMESTAMP|TOC\o"1-5"\h\z|Column_priv|set('Select','Insert','Update','References')|NO| | ||+ ++ + + ++ +###############################################################################以上是這4個(gè)表的基本結(jié)構(gòu),在我們進(jìn)行數(shù)據(jù)庫連接、登錄的時(shí)候,mysql權(quán)限表的驗(yàn)證過程為:先從user表中的:HostUserPassword這3個(gè)字段中判斷連接的ip、用戶名、密碼是否存在,存在則通過驗(yàn)證。通過身份認(rèn)證后,進(jìn)行權(quán)限分配,按照:userdbtables_privcolumns_priv的順序進(jìn)行驗(yàn)證。即先檢查全局權(quán)限表user,如果user中對(duì)應(yīng)的權(quán)限為Y,則此用戶對(duì)所有數(shù)據(jù)庫的權(quán)限都為Y,將不再檢查db,tables_priv,columns_priv。如果全局權(quán)限表user對(duì)應(yīng)的權(quán)限為N,則到db表中檢查此用戶對(duì)應(yīng)的具體數(shù)據(jù)庫,并得到db中為Y的權(quán)限如果db中為N,則檢查tables_priv中此數(shù)據(jù)庫對(duì)應(yīng)的具體表,取得表中的權(quán)限Y,以此類推。逐級(jí)下降
用流程圖表示如下:奪口綣授世理沖瑰IE檸咕或UHrin用流程圖表示如下:奪口綣授世理沖瑰IE檸咕或UHrin_r的毀理用八無吐覽屮:尊岀的扛限f 、玄戶端數(shù)閔庫母樸請(qǐng)克業(yè)泄鉛束:的配阻TI爐:Eurrft巾苗収工了解了Mysql的賬戶權(quán)限原理和判斷流程,我們接下來需要了解就是應(yīng)該以怎樣的方式去進(jìn)行權(quán)限配置,才能達(dá)到所謂的"最小權(quán)限原則"呢?Mysql的賬戶權(quán)限優(yōu)先級(jí)順序是:user->db->tables_priv->columns_pri稍作思考,我們可以發(fā)現(xiàn),這些表的作用本質(zhì)上是一樣的,區(qū)別就在于它們的作用域范圍不同,從user到columns_pri逐級(jí)作用域范圍降低,因此控制粒度也增大,它們的配置遵循"就近原則",即以優(yōu)先級(jí)最低的那個(gè)為準(zhǔn),所以,我們?cè)谶M(jìn)行Mysql的賬戶權(quán)限安全配置的時(shí)候會(huì)發(fā)現(xiàn)"我們似乎在做很多重復(fù)性的工作"。但我們要明白的,Mysql的這種逐層次的權(quán)限配置體系為我們提供了一個(gè)細(xì)粒度的控制方法。所以我們的權(quán)限配置也應(yīng)該按照這個(gè)順序來有規(guī)劃地進(jìn)行。0x1.USER表權(quán)限權(quán)限級(jí)別權(quán)限說明最佳安全實(shí)踐:網(wǎng)站使用賬戶是否給予CREATE數(shù)據(jù)庫、表或索引創(chuàng)建數(shù)據(jù)庫、表或索引建議給與,安裝WEB系統(tǒng)時(shí)需要
權(quán)限創(chuàng)建表DROP數(shù)據(jù)庫或表刪除數(shù)據(jù)庫或表權(quán)限建議給與GRANTOPTION數(shù)據(jù)庫、表或保存的程序賦予權(quán)限選項(xiàng)不建議給與REFERENCES數(shù)據(jù)庫或表無不建議給與ALTER表更改表,比如添加字段、索引等建議給與DELETE表刪除數(shù)據(jù)權(quán)限建議給與INDEX表索引權(quán)限建議給與INSERT表插入權(quán)限建議給與SELECT表查詢權(quán)限建議給與UPDATE表更新權(quán)限建議給與CREATEVIEW視圖創(chuàng)建視圖權(quán)限建議給與SHOWVIEW視圖查看視圖權(quán)限建議給與ALTERROUTINE存儲(chǔ)過程更改存儲(chǔ)過程權(quán)限不建議給與CREATEROUTINE存儲(chǔ)過程創(chuàng)建存儲(chǔ)過程權(quán)限不建議給與EXECUTE存儲(chǔ)過程執(zhí)行存儲(chǔ)過程權(quán)限不建議給與FILE服務(wù)器主機(jī)上的文件訪問文件訪問權(quán)限不建議給與,防止因?yàn)樽⑷雽?dǎo)致的隱私文件泄漏CREATETEMPORARYTABLES服務(wù)器管理創(chuàng)建臨時(shí)表權(quán)限不建議給與,防止借助臨時(shí)表發(fā)動(dòng)的二次注入LOCKTABLES服務(wù)器管理鎖表權(quán)限不建議給與CREATEUSER服務(wù)器管理創(chuàng)建用戶權(quán)限不建議給與PROCESS服務(wù)器管理查看進(jìn)程權(quán)限不建議給與RELOAD服務(wù)器管理執(zhí)行 flush-hosts,flush-logs,flush-privileges,flush-status,flush-tables,flush-threads,refresh,reload等命令的權(quán)限不建議給與REPLICATIONCLIENT服務(wù)器管理復(fù)制權(quán)限不建議給與REPLICATIONSLAVE服務(wù)器管理復(fù)制權(quán)限不建議給與SHOWDATABASES服務(wù)器管理查看數(shù)據(jù)庫列表權(quán)限不建議給與SHUTDOWN服務(wù)器管理關(guān)閉數(shù)據(jù)庫權(quán)限不建議給與SUPER服務(wù)器管理執(zhí)行kill線程權(quán)限不建議給與從表格中可以看到,USER表主要針對(duì)數(shù)據(jù)庫的賬戶進(jìn)行粗粒度的權(quán)限控制,定義了"某人允許做什么事"。
0x2?DB表權(quán)限說明網(wǎng)站使用賬戶是否給予Select可對(duì)其下所有表進(jìn)行查詢建議給予Insert可對(duì)其下所有表進(jìn)行插入建議給予Update可對(duì)其下所有表進(jìn)行更新建議給予Delete可對(duì)其下所有表進(jìn)行刪除建議給予Create可在此數(shù)據(jù)庫下創(chuàng)建表或者索引建議給予Drop可刪除此數(shù)據(jù)庫,及此數(shù)據(jù)庫下的表不建議給予Grant賦予權(quán)限選項(xiàng)不建議給予References未來MySQL特性的占位符不建議給予Index可對(duì)其下的所有表進(jìn)行索引建議給予Alter可對(duì)其下的所有表進(jìn)行更改建議給予Create_tmp_table創(chuàng)建臨時(shí)表不建議給予Locktables可對(duì)其下所有表進(jìn)行鎖定不建議給予Createview可在此數(shù)據(jù)下創(chuàng)建視圖建議給予Showview可在此數(shù)據(jù)下查看視圖建議給予Createroutine可在此數(shù)據(jù)下創(chuàng)建存儲(chǔ)過程不建議給予Alterroutine可在此數(shù)據(jù)下更改存儲(chǔ)過程不建議給予Execute可在此數(shù)據(jù)下執(zhí)行存儲(chǔ)過程不建議給予Event可在此數(shù)據(jù)下創(chuàng)建事件調(diào)度器不建議給予Trigger可在此數(shù)據(jù)下創(chuàng)建觸發(fā)器不建議給予DB表可以看成是USER表對(duì)權(quán)限控制的一個(gè)補(bǔ)充,一個(gè)更細(xì)粒度地、針對(duì)數(shù)據(jù)庫庫級(jí)別的權(quán)限控制。同時(shí),DB表也隱式包含了將賬戶限定在某個(gè)數(shù)據(jù)庫的范圍內(nèi)這個(gè)配置,即限制某個(gè)用戶只能用對(duì)它自己的數(shù)據(jù)庫的控制權(quán),對(duì)不屬于它的數(shù)據(jù)庫禁止操作,這能有效防止橫向越權(quán)的發(fā)生。mysql>selecthost,db,userfromdb;TOC\o"1-5"\h\z+ + + +|host|db|user|+ + + +|% |test |||% |test\_%||+ + + +可以看到,user字段為空,表示當(dāng)前不對(duì)用戶做任何數(shù)據(jù)庫屬權(quán)限制,在網(wǎng)站的部署過程中,應(yīng)該單獨(dú)針對(duì)網(wǎng)站建立一個(gè)賬戶一個(gè)獨(dú)立的數(shù)據(jù)庫,并為這個(gè)賬戶分配唯一的專屬數(shù)據(jù)庫防止網(wǎng)絡(luò)被入侵后的橫向、縱向提權(quán)。對(duì)于Mysql中的賬戶權(quán)限相關(guān)的安全配置,總結(jié)如下:針對(duì)每個(gè)網(wǎng)站建立一個(gè)單獨(dú)的賬戶為每個(gè)網(wǎng)站單獨(dú)建立一個(gè)專屬數(shù)據(jù)庫(雖然DEDE、DZ普通采用表前綴的方法來實(shí)現(xiàn)"一庫多站",但好的做法還是"一庫一站")按照user->db->tables_priv->columns_pri的順序進(jìn)行細(xì)粒度的權(quán)限控制為每個(gè)用戶單獨(dú)配置一個(gè)專屬數(shù)據(jù)庫,保證當(dāng)前用戶的所有操作只能發(fā)生在它自己的數(shù)據(jù)庫中,防止SQL注入發(fā)生后,黑客通過注入點(diǎn)訪問到系統(tǒng)表賬戶權(quán)限安全配置需要的常用命令新建一個(gè)用戶并給予相應(yīng)數(shù)據(jù)庫的權(quán)限grantselect,insert,update,delete,create,dropprivilegesondatabase.*touser@localhostidentifiedby'passwd';grantallprivilegesondatabase.*touser@localhostidentifiedby'passwd';刷新權(quán)限flushprivileges;3.顯示授權(quán)showgrants;4.移除授權(quán)revokedeleteon*.*from'user'@'localhost';5.刪除用戶dropuser'user'@'localhost';6.給用戶改名renameuser'jack'@'%'to'jim'@'%';7.給用戶改密碼SETPASSWORDFOR'root'@'localhost'=PASSWORD('123456');Mysql數(shù)據(jù)的網(wǎng)絡(luò)安全配置對(duì)數(shù)據(jù)庫所在的DMZ的網(wǎng)絡(luò)拓樸的安全配置也是我們?cè)谶M(jìn)行安全評(píng)估的時(shí)候需要考慮的一個(gè)方面,這對(duì)防御內(nèi)網(wǎng)掃描、網(wǎng)絡(luò)攻擊有一定幫助。0X1:限制訪問Mysql端口的IP對(duì)Mysql的訪問IP的限制,可以從應(yīng)用層和主機(jī)層來分別達(dá)到目的1.主機(jī)層:windows可以通過windows防火墻Linux下可以通過iptables來限制允許訪問mysql端口的IP地址//只允許指定的IP進(jìn)行訪問iptables-AINPUT-ptcp-sxxxx.xxxx.xxxx.xxxx/24--dport3306-jACCEPTiptables-AINPUT-ptcp-sxxxx.xxxx.xxxx.xxxx/24--dport3306-jACCEPTiptables-PINPUTDROP可以看到,這種方法的缺點(diǎn)是硬編碼導(dǎo)致靈活性低,如果mysql的默認(rèn)端口3306被修改了(例如8890),則這條iptables規(guī)則也需要相應(yīng)的修改mysql>selecthost,user,passwordfromuser;+ + + +|host|user|password ||localhost|root|*832EB84CB764129D05D498ED9CA7E5CE9B8F83EB||.|root|*832EB84CB764129D05D498ED9CA7E5CE9B8F83EB||::|root|*832EB84CB764129D05D498ED9CA7E5CE9B8F83EB||localhost|||+ + + +這幾行記錄表明了root這個(gè)賬戶只能是本機(jī)登錄,在部署的過程中,我們可以為指定賬戶添加某個(gè)安全的跳板機(jī),并保證這個(gè)跳板機(jī)IP是不變的。0x2:修改mysql的端口windows下可以修改配置文件my.ini來實(shí)現(xiàn),linux可以修改配置文件f來實(shí)現(xiàn)。port=3306對(duì)mysql端口的修改可以從一定程度上防止端口掃描工具的掃描。0x3:限制連接用戶的數(shù)量數(shù)據(jù)庫的某用戶多次遠(yuǎn)程連接,會(huì)導(dǎo)致性能的下降和影響其他用戶的操作,有必要對(duì)其進(jìn)行限制??梢酝ㄟ^限制單個(gè)賬戶允許的連接數(shù)量來實(shí)現(xiàn),設(shè)置f文件的mysqld中的max_user_connections變量來完成。GRANT語句也可以支持資源控制選項(xiàng)來限制服務(wù)器對(duì)一個(gè)賬戶允許的使用范圍。#vi/etc/f[mysqld]max_user_connections2密碼策略安全這里所謂的密文策略安全包括Mysql自身的賬戶密碼的安全、也包括網(wǎng)站用戶的密碼安全。0X1:mysql賬戶密碼因?yàn)閙ysql本身沒有抗窮舉的帳號(hào)鎖定機(jī)制,所以對(duì)于mysql自身的登錄帳號(hào),尤其是root帳號(hào),需要遵循"密碼強(qiáng)度策略"設(shè)置高強(qiáng)度的密碼,保證攻擊者從窮舉帳號(hào)攻擊這條路無法獲得合適的投資收益比。0x2:網(wǎng)站用戶的密碼數(shù)據(jù)庫管理員無法規(guī)定用戶的網(wǎng)站使用什么樣的密碼策略,這完全取決于用戶自己的編碼習(xí)慣、或者說是站長所使用的CMS的編碼習(xí)慣。這方面,mysql無法做的更多,但也許可以做的是建立一個(gè)針對(duì)網(wǎng)站密碼窮舉、脫庫攻擊的日志追溯系統(tǒng),當(dāng)發(fā)生脫庫攻擊時(shí)能第一時(shí)間給用戶提供"事發(fā)現(xiàn)場"的更多信息?;蛘邤?shù)據(jù)庫管理員主動(dòng)進(jìn)行可控的撞庫測試,提前幫助用戶發(fā)生潛在的撞庫、脫庫風(fēng)險(xiǎn)。Mysql日志啟動(dòng)Mysql的日志不僅可以為我們提供性能熱點(diǎn)的分析,還可以幫助我們加固Mysql數(shù)據(jù)庫的安全,例如:從日志中獲得典型SQL注入語句利用正則模型從日志中捕獲注入攻擊的發(fā)生在脫庫、數(shù)據(jù)泄漏之后獲得關(guān)于受攻擊數(shù)據(jù)庫的情況、泄漏范圍等數(shù)據(jù)mysql有以下幾種日志,它們都在my.ini中進(jìn)行配置:錯(cuò)誤日志:-log-errlog-error=E:/wamp/logs/mysql_error.log2.查詢?nèi)罩荆ㄓ涗浰蠸QL語句):-loglog=E:/wamp/logs/mysql.log3.慢查詢?nèi)罩荆?log-slow-queries查看慢查詢時(shí)間showvariableslike"long_query_time";默認(rèn)10s查看慢查詢配置情況showstatuslike"%slow_queries%";查看慢查詢?nèi)罩韭窂絪howvariableslike"%slow%";//存儲(chǔ)位置、長SQL的閾值E:\wamp\bin\mysql\mysql5.6.12\data\LittleHann-PC-slow.loglong_query_time=5更新日志:-log-update5.二進(jìn)制日志:-log-bin//記錄除select語句之外的所有sql語句到日志中,可以用來恢復(fù)數(shù)據(jù)文件log-bin=E:/wamp/logs/bin查看日志開啟情況:showvariableslike'log_%';TOC\o"1-5"\h\z+ + +|Variable_name |Value |+ + +|log_bin|log_bin_basename|log_bin_index|ON||E:\wamp\bin\mysql\mysql5.6.12\data\mysql-bin|E:\wamp\bin\mysql\mysql5.6.12\data\mysql-bin.index|TOC\o"1-5"\h\z|log_bin_trust_function_creators |OFF ||log_bin_use_v1_row_events |OFF ||log_error |E:\wamp\logs\mysql.log ||log_output |FILE ||log_queries_not_using_indexes|OFF ||log_slave_updates |OFF ||log_slow_admin_statements |OFF ||log_slow_slave_statements |OFF ||log_throttle_queries_not_using_indexes|0 ||log_warnings |1 |+ + +6.Mysql數(shù)據(jù)庫服務(wù)所在主機(jī)安全配置安全問題是一個(gè)綜合的縱深問題,Mysql的安全配置和所在系統(tǒng)(*iux、windows)的安全配置密切相關(guān)。0x1:mysql進(jìn)程運(yùn)行賬號(hào)所謂"mysql進(jìn)程運(yùn)行賬戶",即以什么樣的身份權(quán)限來啟動(dòng)mysqld這個(gè)服務(wù)進(jìn)程的。對(duì)于操作系統(tǒng)來說,每一個(gè)進(jìn)程都有一個(gè)對(duì)應(yīng)的"進(jìn)程運(yùn)行帳號(hào)",這個(gè)進(jìn)程運(yùn)行帳號(hào)決定了這個(gè)應(yīng)用程序可以獲得哪些操作系統(tǒng)的權(quán)限。在windows下禁止使用localsystem(ntauthority\system來運(yùn)行mysql賬戶,可以考慮使用networkservice或者自己新建一個(gè)windows賬號(hào),但是必須給與mysql程序所在目錄的讀取權(quán)限和data目錄的讀取和寫入權(quán)限2.在linux下,新建一個(gè)mysql賬號(hào),并在安裝的時(shí)候就指定mysql以mysql賬戶來運(yùn)行,給與程序所在目錄的讀取權(quán)限,data所在目錄的讀取和寫入權(quán)限。0x2:mysql運(yùn)行賬號(hào)的磁盤權(quán)限對(duì)mysql運(yùn)行帳號(hào)的磁盤權(quán)限的配置,就是在進(jìn)行ACL的配置(文件夾右鍵->屬性->安全),對(duì)于ACL的配置,我們需要牢記的是"默認(rèn)禁止原則",即操作系統(tǒng)會(huì)默認(rèn)對(duì)沒有明確指示的權(quán)限設(shè)定為禁止,即假如你給一個(gè)用戶授予了某個(gè)文件夾的讀權(quán)限,那么它只有讀權(quán)限,而不會(huì)擁有寫權(quán)限(權(quán)限繼承不考慮在內(nèi))。對(duì)于mysql運(yùn)行賬號(hào)的磁盤ACL配置,我們可以遵循以下原則mysql運(yùn)行賬號(hào)需要給予程序所在目錄的讀取權(quán)限,以及data目錄的讀取和寫入權(quán)限,保證mysql的正常運(yùn)行不容許給予其他目錄的寫入和執(zhí)行權(quán)限,特別是有網(wǎng)站的,這可以有效防御針對(duì)mysql的提權(quán)、或者webshell提權(quán)udf提權(quán)系統(tǒng)關(guān)鍵目錄、注冊(cè)表寫入啟動(dòng)文件取消mysql運(yùn)行賬戶對(duì)于cmd,sh等一些程序的執(zhí)行權(quán)限,這可以防御當(dāng)mysql核心帳號(hào)被黑客獲取后進(jìn)一步提權(quán)1)root賬戶被泄露由于對(duì)cmd、sh等關(guān)鍵程序進(jìn)行了權(quán)限控制,黑客無法繼續(xù)深入操作系統(tǒng)提權(quán)0x3:ChrootingChroot是Unix/類Unix的一種手段,它的建立會(huì)將其與主系統(tǒng)幾乎完全隔離,也就是說,-旦遭到什么問題,也不會(huì)危及到正在運(yùn)行的主系統(tǒng)。這是一個(gè)非常有效的辦法,特別是在配置網(wǎng)絡(luò)服務(wù)程序的時(shí)候。0x4:刪除歷史命令記錄歷史命令記錄是一種測信道數(shù)據(jù)泄漏,從某種程序上來說,"歷史命令記錄"就像種植在系統(tǒng)上的一個(gè)鍵盤記錄rootkit,如果黑客獲取到了目標(biāo)服務(wù)器的webshell,就可以通過閱讀"歷史命令記錄"來獲取到大量的管理員操作記錄,包括帳號(hào)和密碼。這些歷史文件包括:~/.bash_history~/.mysql_historycat/dev/null>~/.bash_historycat/dev/null>~/.mysql_history0x5:mysql.sock安全配置默認(rèn)情況下,PHP支持使用socket方式和msyql數(shù)據(jù)庫進(jìn)行通信,換句話來說,這也意味著,在服務(wù)器本機(jī)可以允許無密碼直接登錄mysql,請(qǐng)看下面的一段實(shí)例代碼:<?phpini_set("mysql.default_socket=/var/lib/mysql/mysql.sock");$sql="selectuser();";$res=mysql_query($sql);$final=mysql_fetch_array($res);die(var_dump($final));?>執(zhí)行成功‘result:array(2){[0]=>string(16)"apache@localhost"["user()"]=>string(16)"apache@localhost"}這意味著黑客在獲取了目標(biāo)服務(wù)器的webshell之后,可以在不知道m(xù)ysql帳號(hào)密碼的情況下直接從數(shù)據(jù)庫中獲取隱私數(shù)據(jù)。防御的方法還是一樣,針對(duì)mysql程序帳號(hào)進(jìn)行磁盤ACL控制,防止mysql越權(quán)讀/寫/執(zhí)行非mysql目錄下的文件。部署SQL注入檢測、防御模塊根據(jù)OWASP2013的報(bào)告顯示,針對(duì)數(shù)據(jù)庫的攻擊方式,SQL注入依然是主要的因素,因此針對(duì)SQLInjection的攻擊,除了針對(duì)應(yīng)用層的代碼安全審計(jì)、SDLC之外,在數(shù)據(jù)庫層部署數(shù)據(jù)庫防火墻也應(yīng)該作為縱深防御的一個(gè)手段。目前基于SQL注入檢測、防御的的數(shù)據(jù)庫防火墻大概有以下幾個(gè):安華金和數(shù)據(jù)庫防火墻系統(tǒng)(Xsecure-DBFirewall)Snort入侵檢測系統(tǒng)能針對(duì)指定端口進(jìn)行正則特征匹配方式的SQL注入檢測Java/J2EE過濾器對(duì)于J2ee的WEB應(yīng)用來說,可以在HTTP請(qǐng)求上部署過濾器,并將SQL注入檢測規(guī)律寫在過濾器中druid-sql-wall開源SQL檢測、阻斷系統(tǒng)mysqld安全相關(guān)啟動(dòng)選項(xiàng)--local-infile[={0|1}]如果用-local-infile=0啟動(dòng)服務(wù)器,則客戶端不能使用LOCALinLOADDATA語句,防止基于注入的直接文件讀取數(shù)據(jù)泄漏--old-passwords強(qiáng)制服務(wù)器為新密碼生成短(pre-4.1)密碼哈希。當(dāng)服務(wù)器必須支持舊版本客戶端程序時(shí),為了保證兼容性這很有用。(OBSOLETE)-safe-show-database在MySQL5.1以前版本的MySQL中,該選項(xiàng)使SHOWDATABASES語句只顯示用戶具有部分權(quán)限的數(shù)據(jù)庫名在MySQL5.1中,該選項(xiàng)不再作為現(xiàn)在的默認(rèn)行為使用,有一個(gè)SHOWDATABASES權(quán)限可以用來控制每個(gè)賬戶對(duì)數(shù)據(jù)庫名的訪問。--safe-user-create如果啟用,用戶不能用GRANT語句創(chuàng)建新用戶,除非用戶有mysql.user表的INSERT權(quán)限。如果你想讓用戶具有授權(quán)權(quán)限來創(chuàng)建新用戶,你應(yīng)給用戶授予下面的權(quán)限:mysql>GRANTINSERT(user)ONmysql.userTO'user_name'@'host_name';這樣確保用戶不能直接更改權(quán)限列,必須使用GRANT語句給其它用戶授予該權(quán)限。--secure-auth不允許鑒定有舊(pre-4.1)密碼的賬戶。--skip-grant-tables這個(gè)選項(xiàng)導(dǎo)致服務(wù)器根本不使用權(quán)限系統(tǒng)。這給每個(gè)人以完全訪問所有的數(shù)據(jù)庫的權(quán)力,這個(gè)選項(xiàng)常常在發(fā)生了忘記了msyql密碼的情況使用這個(gè)方式在本機(jī)"無密碼登錄mysql"通過執(zhí)行mysqladminflush-privileges或mysqladmineload命令,或執(zhí)行FLUSHPRIVILEGES語句,你能告訴一個(gè)正在運(yùn)行的服務(wù)器再次開始使用授權(quán)表。--skip-name-resolve主機(jī)名不被解析。所有在授權(quán)表的Host的列值必須是IP號(hào)或localhost--skip-networking在網(wǎng)絡(luò)上不允許TCP/IP連接。所有到mysqld的連接必須經(jīng)由Unix套接字進(jìn)行--skip-show-database使用該選項(xiàng),只允許有SHOWDATABASES權(quán)限的用戶執(zhí)行SHOWDATABASES語句,該語句顯示所有數(shù)據(jù)庫名。不使用該選項(xiàng),允許所有用戶執(zhí)行SHOWDATABASES但只顯示用戶有SHOWDATABASES權(quán)限或部分?jǐn)?shù)據(jù)庫權(quán)限的數(shù)據(jù)庫名。請(qǐng)注意全局權(quán)限指數(shù)據(jù)庫的權(quán)限。9.mysq備份策略像mysql、sqlserver、access這種數(shù)據(jù)庫都是將數(shù)據(jù)以單獨(dú)文件的形式保存在磁盤上的,所以,對(duì)于數(shù)據(jù)庫的備份也可以采用傳統(tǒng)的文件備份策略。總的來說,有以下方式:本地備份使用mysqldump進(jìn)行備份非常簡單,在備份數(shù)據(jù)庫的時(shí)候,我們還可以同時(shí)使用管道gzip命令對(duì)備份文件進(jìn)行壓縮,可以采用Rsync的異地備份方式方式,將備份服務(wù)器的目錄掛載到數(shù)據(jù)庫服務(wù)器,將數(shù)據(jù)庫文件備份打包后,通過crontab定時(shí)備份數(shù)據(jù):備份數(shù)據(jù)使用命令:#!/bin/shtime='date+"("%F")"%R'$/usr/local/mysql/bin/mysqldump-uroot-p111database_backup|gzip>/home/zhenghan/mysql/mysql_backup.$time.gzcrontab-lmhdommondowcommand0000***/home/zhenghan/mysql/backup.sh恢復(fù)數(shù)據(jù)使用命令:gzip-dmysql_backup.\(2014-06-17\)00\:00.gzmysql_backup.(2014-06-17)00:00#mysql-uroot-p111</home/zhenghan/mysql/mysql_backup.\(2014-06-17\)00\:00網(wǎng)絡(luò)備份MySQL本身自帶的mysqldump備份使用mysqldump可以把整個(gè)數(shù)據(jù)庫裝載到一個(gè)單獨(dú)的文本文件中。這個(gè)文件包含有所有重建您的數(shù)據(jù)庫所需要的SQL命令。這個(gè)命令取得所有的模式(schema)并且將其轉(zhuǎn)換成DDL語法(CREATE語句,即數(shù)據(jù)庫定義語句),取得所有的數(shù)據(jù),并且從這些數(shù)據(jù)中創(chuàng)建INSERT語句。這個(gè)工具將您的數(shù)據(jù)庫中所有的設(shè)計(jì)倒轉(zhuǎn)。因?yàn)樗械臇|西都被包含到了一個(gè)文本文件中。這個(gè)文本文件可以用一個(gè)簡單的批處理和一個(gè)合適SQL語句導(dǎo)回到MySQ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第7單元 工業(yè)革命和國際共產(chǎn)主義運(yùn)動(dòng)的興起(高頻非選擇題25題)(解析版)
- 2014年高考語文試卷(江西)(空白卷)
- 藤制品與現(xiàn)代家居的融合-洞察分析
- 遙感數(shù)據(jù)質(zhì)量評(píng)價(jià)-洞察分析
- 虛擬現(xiàn)實(shí)藝術(shù)版權(quán)保護(hù)策略-洞察分析
- 虛擬現(xiàn)實(shí)游戲健康影響研究-洞察分析
- 水產(chǎn)養(yǎng)殖自動(dòng)化探索-洞察分析
- 無線輸入輸出設(shè)備技術(shù)-洞察分析
- 現(xiàn)代炸藥研究進(jìn)展-洞察分析
- 印刷行業(yè)市場細(xì)分策略-洞察分析
- 2024-2025學(xué)年銅官山區(qū)數(shù)學(xué)三年級(jí)第一學(xué)期期末調(diào)研試題含解析
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之18:“7支持-7.1資源”(雷澤佳編制-2025B0)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之17:“6策劃-6.6合作”(雷澤佳編制-2025B0)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之16:“6策劃-6.5組織結(jié)構(gòu)”(雷澤佳編制-2025B0)
- GB/T 45016-2024發(fā)動(dòng)機(jī)附件帶傳動(dòng)系統(tǒng)機(jī)械式自動(dòng)張緊輪試驗(yàn)方法
- 南寧市三好學(xué)生主要事跡(8篇)
- 2024版玻璃幕墻工程材料采購合同2篇
- JGJ46-2024 建筑與市政工程施工現(xiàn)場臨時(shí)用電安全技術(shù)標(biāo)準(zhǔn)
- 2023-2024-1習(xí)思想學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 說明書hid500系列變頻調(diào)速器使用說明書s1.1(1)
- 全球?qū)嶒?yàn)室儀器耗材國際品牌簡介
評(píng)論
0/150
提交評(píng)論