詳解MySQL安全配置_第1頁
詳解MySQL安全配置_第2頁
詳解MySQL安全配置_第3頁
詳解MySQL安全配置_第4頁
詳解MySQL安全配置_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

詳解Mvsal安全配置目錄前言Mysql賬戶權(quán)限安全Mysql數(shù)據(jù)的網(wǎng)絡(luò)安全配置密碼策略安全Mysql日志Mysql數(shù)據(jù)庫服務(wù)所在主機安全配置部署SQL注入檢測、防御模塊mysqld安全相關(guān)啟動選項mysql備份策略前言Mysql數(shù)據(jù)庫安全配置、或者叫加固屬于風(fēng)險模型中的一環(huán),它需要安全人員在理論和實踐的學(xué)習(xí)中不斷發(fā)現(xiàn)新的問題,并針對這些問題對數(shù)據(jù)的各個方面的配置進行強化。本文試圖圍繞著數(shù)據(jù)庫風(fēng)險識別、數(shù)據(jù)庫安全加固這個問題,探討可以采取的措施來最大程度的保證我們的數(shù)據(jù)庫的安全控制處在一個較好的水平。Mysql賬戶權(quán)限安全mysql中存在4個控制權(quán)限的表,分別為mysql.USER表mysql.DB表mysql.TABLES_PRIV表mysql.COLUMNS_PRIV表要注意的是,Mysql中有一個數(shù)據(jù)庫"information_schema",似乎里面保存的也是一些權(quán)限信息,但是要明白的是,這個數(shù)據(jù)庫"information_schema"是為系統(tǒng)管理員提供元數(shù)據(jù)的一個簡便方式,它實際上是一個視圖,可以理解為對Mysql中的一個信息的封裝,對于Mysql主程序來說,身份認(rèn)證和授權(quán)的信息的來源只有一個,就是'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個表的基本結(jié)構(gòu),在我們進行數(shù)據(jù)庫連接、登錄的時候,mysql權(quán)限表的驗證過程為:先從user表中的:HostUserPassword這3個字段中判斷連接的ip、用戶名、密碼是否存在,存在則通過驗證。通過身份認(rèn)證后,進行權(quán)限分配,按照:userdbtables_privcolumns_priv的順序進行驗證。即先檢查全局權(quán)限表user,如果user中對應(yīng)的權(quán)限為Y,則此用戶對所有數(shù)據(jù)庫的權(quán)限都為Y,將不再檢查db,tables_priv,columns_priv。如果全局權(quán)限表user對應(yīng)的權(quán)限為N,則到db表中檢查此用戶對應(yīng)的具體數(shù)據(jù)庫,并得到db中為Y的權(quán)限如果db中為N,則檢查tables_priv中此數(shù)據(jù)庫對應(yīng)的具體表,取得表中的權(quán)限Y,以此類推。逐級下降

用流程圖表示如下:奪口綣授世理沖瑰IE檸咕或UHrin用流程圖表示如下:奪口綣授世理沖瑰IE檸咕或UHrin_r的毀理用八無吐覽屮:尊岀的扛限f 、玄戶端數(shù)閔庫母樸請克業(yè)泄鉛束:的配阻TI爐:Eurrft巾苗収工了解了Mysql的賬戶權(quán)限原理和判斷流程,我們接下來需要了解就是應(yīng)該以怎樣的方式去進行權(quán)限配置,才能達到所謂的"最小權(quán)限原則"呢?Mysql的賬戶權(quán)限優(yōu)先級順序是:user->db->tables_priv->columns_pri稍作思考,我們可以發(fā)現(xiàn),這些表的作用本質(zhì)上是一樣的,區(qū)別就在于它們的作用域范圍不同,從user到columns_pri逐級作用域范圍降低,因此控制粒度也增大,它們的配置遵循"就近原則",即以優(yōu)先級最低的那個為準(zhǔn),所以,我們在進行Mysql的賬戶權(quán)限安全配置的時候會發(fā)現(xiàn)"我們似乎在做很多重復(fù)性的工作"。但我們要明白的,Mysql的這種逐層次的權(quán)限配置體系為我們提供了一個細(xì)粒度的控制方法。所以我們的權(quán)限配置也應(yīng)該按照這個順序來有規(guī)劃地進行。0x1.USER表權(quán)限權(quán)限級別權(quán)限說明最佳安全實踐:網(wǎng)站使用賬戶是否給予CREATE數(shù)據(jù)庫、表或索引創(chuàng)建數(shù)據(jù)庫、表或索引建議給與,安裝WEB系統(tǒng)時需要

權(quán)限創(chuàng)建表DROP數(shù)據(jù)庫或表刪除數(shù)據(jù)庫或表權(quán)限建議給與GRANTOPTION數(shù)據(jù)庫、表或保存的程序賦予權(quán)限選項不建議給與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存儲過程更改存儲過程權(quán)限不建議給與CREATEROUTINE存儲過程創(chuàng)建存儲過程權(quán)限不建議給與EXECUTE存儲過程執(zhí)行存儲過程權(quán)限不建議給與FILE服務(wù)器主機上的文件訪問文件訪問權(quán)限不建議給與,防止因為注入導(dǎo)致的隱私文件泄漏CREATETEMPORARYTABLES服務(wù)器管理創(chuàng)建臨時表權(quán)限不建議給與,防止借助臨時表發(fā)動的二次注入LOCKTABLES服務(wù)器管理鎖表權(quán)限不建議給與CREATEUSER服務(wù)器管理創(chuàng)建用戶權(quán)限不建議給與PROCESS服務(wù)器管理查看進程權(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表主要針對數(shù)據(jù)庫的賬戶進行粗粒度的權(quán)限控制,定義了"某人允許做什么事"。

0x2?DB表權(quán)限說明網(wǎng)站使用賬戶是否給予Select可對其下所有表進行查詢建議給予Insert可對其下所有表進行插入建議給予Update可對其下所有表進行更新建議給予Delete可對其下所有表進行刪除建議給予Create可在此數(shù)據(jù)庫下創(chuàng)建表或者索引建議給予Drop可刪除此數(shù)據(jù)庫,及此數(shù)據(jù)庫下的表不建議給予Grant賦予權(quán)限選項不建議給予References未來MySQL特性的占位符不建議給予Index可對其下的所有表進行索引建議給予Alter可對其下的所有表進行更改建議給予Create_tmp_table創(chuàng)建臨時表不建議給予Locktables可對其下所有表進行鎖定不建議給予Createview可在此數(shù)據(jù)下創(chuàng)建視圖建議給予Showview可在此數(shù)據(jù)下查看視圖建議給予Createroutine可在此數(shù)據(jù)下創(chuàng)建存儲過程不建議給予Alterroutine可在此數(shù)據(jù)下更改存儲過程不建議給予Execute可在此數(shù)據(jù)下執(zhí)行存儲過程不建議給予Event可在此數(shù)據(jù)下創(chuàng)建事件調(diào)度器不建議給予Trigger可在此數(shù)據(jù)下創(chuàng)建觸發(fā)器不建議給予DB表可以看成是USER表對權(quán)限控制的一個補充,一個更細(xì)粒度地、針對數(shù)據(jù)庫庫級別的權(quán)限控制。同時,DB表也隱式包含了將賬戶限定在某個數(shù)據(jù)庫的范圍內(nèi)這個配置,即限制某個用戶只能用對它自己的數(shù)據(jù)庫的控制權(quán),對不屬于它的數(shù)據(jù)庫禁止操作,這能有效防止橫向越權(quán)的發(fā)生。mysql>selecthost,db,userfromdb;TOC\o"1-5"\h\z+ + + +|host|db|user|+ + + +|% |test |||% |test\_%||+ + + +可以看到,user字段為空,表示當(dāng)前不對用戶做任何數(shù)據(jù)庫屬權(quán)限制,在網(wǎng)站的部署過程中,應(yīng)該單獨針對網(wǎng)站建立一個賬戶一個獨立的數(shù)據(jù)庫,并為這個賬戶分配唯一的專屬數(shù)據(jù)庫防止網(wǎng)絡(luò)被入侵后的橫向、縱向提權(quán)。對于Mysql中的賬戶權(quán)限相關(guān)的安全配置,總結(jié)如下:針對每個網(wǎng)站建立一個單獨的賬戶為每個網(wǎng)站單獨建立一個專屬數(shù)據(jù)庫(雖然DEDE、DZ普通采用表前綴的方法來實現(xiàn)"一庫多站",但好的做法還是"一庫一站")按照user->db->tables_priv->columns_pri的順序進行細(xì)粒度的權(quán)限控制為每個用戶單獨配置一個專屬數(shù)據(jù)庫,保證當(dāng)前用戶的所有操作只能發(fā)生在它自己的數(shù)據(jù)庫中,防止SQL注入發(fā)生后,黑客通過注入點訪問到系統(tǒng)表賬戶權(quán)限安全配置需要的常用命令新建一個用戶并給予相應(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ò)安全配置對數(shù)據(jù)庫所在的DMZ的網(wǎng)絡(luò)拓樸的安全配置也是我們在進行安全評估的時候需要考慮的一個方面,這對防御內(nèi)網(wǎng)掃描、網(wǎng)絡(luò)攻擊有一定幫助。0X1:限制訪問Mysql端口的IP對Mysql的訪問IP的限制,可以從應(yīng)用層和主機層來分別達到目的1.主機層:windows可以通過windows防火墻Linux下可以通過iptables來限制允許訪問mysql端口的IP地址//只允許指定的IP進行訪問iptables-AINPUT-ptcp-sxxxx.xxxx.xxxx.xxxx/24--dport3306-jACCEPTiptables-AINPUT-ptcp-sxxxx.xxxx.xxxx.xxxx/24--dport3306-jACCEPTiptables-PINPUTDROP可以看到,這種方法的缺點是硬編碼導(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這個賬戶只能是本機登錄,在部署的過程中,我們可以為指定賬戶添加某個安全的跳板機,并保證這個跳板機IP是不變的。0x2:修改mysql的端口windows下可以修改配置文件my.ini來實現(xiàn),linux可以修改配置文件f來實現(xiàn)。port=3306對mysql端口的修改可以從一定程度上防止端口掃描工具的掃描。0x3:限制連接用戶的數(shù)量數(shù)據(jù)庫的某用戶多次遠(yuǎn)程連接,會導(dǎo)致性能的下降和影響其他用戶的操作,有必要對其進行限制??梢酝ㄟ^限制單個賬戶允許的連接數(shù)量來實現(xiàn),設(shè)置f文件的mysqld中的max_user_connections變量來完成。GRANT語句也可以支持資源控制選項來限制服務(wù)器對一個賬戶允許的使用范圍。#vi/etc/f[mysqld]max_user_connections2密碼策略安全這里所謂的密文策略安全包括Mysql自身的賬戶密碼的安全、也包括網(wǎng)站用戶的密碼安全。0X1:mysql賬戶密碼因為mysql本身沒有抗窮舉的帳號鎖定機制,所以對于mysql自身的登錄帳號,尤其是root帳號,需要遵循"密碼強度策略"設(shè)置高強度的密碼,保證攻擊者從窮舉帳號攻擊這條路無法獲得合適的投資收益比。0x2:網(wǎng)站用戶的密碼數(shù)據(jù)庫管理員無法規(guī)定用戶的網(wǎng)站使用什么樣的密碼策略,這完全取決于用戶自己的編碼習(xí)慣、或者說是站長所使用的CMS的編碼習(xí)慣。這方面,mysql無法做的更多,但也許可以做的是建立一個針對網(wǎng)站密碼窮舉、脫庫攻擊的日志追溯系統(tǒng),當(dāng)發(fā)生脫庫攻擊時能第一時間給用戶提供"事發(fā)現(xiàn)場"的更多信息?;蛘邤?shù)據(jù)庫管理員主動進行可控的撞庫測試,提前幫助用戶發(fā)生潛在的撞庫、脫庫風(fēng)險。Mysql日志啟動Mysql的日志不僅可以為我們提供性能熱點的分析,還可以幫助我們加固Mysql數(shù)據(jù)庫的安全,例如:從日志中獲得典型SQL注入語句利用正則模型從日志中捕獲注入攻擊的發(fā)生在脫庫、數(shù)據(jù)泄漏之后獲得關(guān)于受攻擊數(shù)據(jù)庫的情況、泄漏范圍等數(shù)據(jù)mysql有以下幾種日志,它們都在my.ini中進行配置:錯誤日志:-log-errlog-error=E:/wamp/logs/mysql_error.log2.查詢?nèi)罩荆ㄓ涗浰蠸QL語句):-loglog=E:/wamp/logs/mysql.log3.慢查詢?nèi)罩荆?log-slow-queries查看慢查詢時間showvariableslike"long_query_time";默認(rèn)10s查看慢查詢配置情況showstatuslike"%slow_queries%";查看慢查詢?nèi)罩韭窂絪howvariableslike"%slow%";//存儲位置、長SQL的閾值E:\wamp\bin\mysql\mysql5.6.12\data\LittleHann-PC-slow.loglong_query_time=5更新日志:-log-update5.二進制日志:-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ù)所在主機安全配置安全問題是一個綜合的縱深問題,Mysql的安全配置和所在系統(tǒng)(*iux、windows)的安全配置密切相關(guān)。0x1:mysql進程運行賬號所謂"mysql進程運行賬戶",即以什么樣的身份權(quán)限來啟動mysqld這個服務(wù)進程的。對于操作系統(tǒng)來說,每一個進程都有一個對應(yīng)的"進程運行帳號",這個進程運行帳號決定了這個應(yīng)用程序可以獲得哪些操作系統(tǒng)的權(quán)限。在windows下禁止使用localsystem(ntauthority\system來運行mysql賬戶,可以考慮使用networkservice或者自己新建一個windows賬號,但是必須給與mysql程序所在目錄的讀取權(quán)限和data目錄的讀取和寫入權(quán)限2.在linux下,新建一個mysql賬號,并在安裝的時候就指定mysql以mysql賬戶來運行,給與程序所在目錄的讀取權(quán)限,data所在目錄的讀取和寫入權(quán)限。0x2:mysql運行賬號的磁盤權(quán)限對mysql運行帳號的磁盤權(quán)限的配置,就是在進行ACL的配置(文件夾右鍵->屬性->安全),對于ACL的配置,我們需要牢記的是"默認(rèn)禁止原則",即操作系統(tǒng)會默認(rèn)對沒有明確指示的權(quán)限設(shè)定為禁止,即假如你給一個用戶授予了某個文件夾的讀權(quán)限,那么它只有讀權(quán)限,而不會擁有寫權(quán)限(權(quán)限繼承不考慮在內(nèi))。對于mysql運行賬號的磁盤ACL配置,我們可以遵循以下原則mysql運行賬號需要給予程序所在目錄的讀取權(quán)限,以及data目錄的讀取和寫入權(quán)限,保證mysql的正常運行不容許給予其他目錄的寫入和執(zhí)行權(quán)限,特別是有網(wǎng)站的,這可以有效防御針對mysql的提權(quán)、或者webshell提權(quán)udf提權(quán)系統(tǒng)關(guān)鍵目錄、注冊表寫入啟動文件取消mysql運行賬戶對于cmd,sh等一些程序的執(zhí)行權(quán)限,這可以防御當(dāng)mysql核心帳號被黑客獲取后進一步提權(quán)1)root賬戶被泄露由于對cmd、sh等關(guān)鍵程序進行了權(quán)限控制,黑客無法繼續(xù)深入操作系統(tǒng)提權(quán)0x3:ChrootingChroot是Unix/類Unix的一種手段,它的建立會將其與主系統(tǒng)幾乎完全隔離,也就是說,-旦遭到什么問題,也不會危及到正在運行的主系統(tǒng)。這是一個非常有效的辦法,特別是在配置網(wǎng)絡(luò)服務(wù)程序的時候。0x4:刪除歷史命令記錄歷史命令記錄是一種測信道數(shù)據(jù)泄漏,從某種程序上來說,"歷史命令記錄"就像種植在系統(tǒng)上的一個鍵盤記錄rootkit,如果黑客獲取到了目標(biāo)服務(wù)器的webshell,就可以通過閱讀"歷史命令記錄"來獲取到大量的管理員操作記錄,包括帳號和密碼。這些歷史文件包括:~/.bash_history~/.mysql_historycat/dev/null>~/.bash_historycat/dev/null>~/.mysql_history0x5:mysql.sock安全配置默認(rèn)情況下,PHP支持使用socket方式和msyql數(shù)據(jù)庫進行通信,換句話來說,這也意味著,在服務(wù)器本機可以允許無密碼直接登錄mysql,請看下面的一段實例代碼:<?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帳號密碼的情況下直接從數(shù)據(jù)庫中獲取隱私數(shù)據(jù)。防御的方法還是一樣,針對mysql程序帳號進行磁盤ACL控制,防止mysql越權(quán)讀/寫/執(zhí)行非mysql目錄下的文件。部署SQL注入檢測、防御模塊根據(jù)OWASP2013的報告顯示,針對數(shù)據(jù)庫的攻擊方式,SQL注入依然是主要的因素,因此針對SQLInjection的攻擊,除了針對應(yīng)用層的代碼安全審計、SDLC之外,在數(shù)據(jù)庫層部署數(shù)據(jù)庫防火墻也應(yīng)該作為縱深防御的一個手段。目前基于SQL注入檢測、防御的的數(shù)據(jù)庫防火墻大概有以下幾個:安華金和數(shù)據(jù)庫防火墻系統(tǒng)(Xsecure-DBFirewall)Snort入侵檢測系統(tǒng)能針對指定端口進行正則特征匹配方式的SQL注入檢測Java/J2EE過濾器對于J2ee的WEB應(yīng)用來說,可以在HTTP請求上部署過濾器,并將SQL注入檢測規(guī)律寫在過濾器中druid-sql-wall開源SQL檢測、阻斷系統(tǒng)mysqld安全相關(guān)啟動選項--local-infile[={0|1}]如果用-local-infile=0啟動服務(wù)器,則客戶端不能使用LOCALinLOADDATA語句,防止基于注入的直接文件讀取數(shù)據(jù)泄漏--old-passwords強制服務(wù)器為新密碼生成短(pre-4.1)密碼哈希。當(dāng)服務(wù)器必須支持舊版本客戶端程序時,為了保證兼容性這很有用。(OBSOLETE)-safe-show-database在MySQL5.1以前版本的MySQL中,該選項使SHOWDATABASES語句只顯示用戶具有部分權(quán)限的數(shù)據(jù)庫名在MySQL5.1中,該選項不再作為現(xiàn)在的默認(rèn)行為使用,有一個SHOWDATABASES權(quán)限可以用來控制每個賬戶對數(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這個選項導(dǎo)致服務(wù)器根本不使用權(quán)限系統(tǒng)。這給每個人以完全訪問所有的數(shù)據(jù)庫的權(quán)力,這個選項常常在發(fā)生了忘記了msyql密碼的情況使用這個方式在本機"無密碼登錄mysql"通過執(zhí)行mysqladminflush-privileges或mysqladmineload命令,或執(zhí)行FLUSHPRIVILEGES語句,你能告訴一個正在運行的服務(wù)器再次開始使用授權(quán)表。--skip-name-resolve主機名不被解析。所有在授權(quán)表的Host的列值必須是IP號或localhost--skip-networking在網(wǎng)絡(luò)上不允許TCP/IP連接。所有到mysqld的連接必須經(jīng)由Unix套接字進行--skip-show-database使用該選項,只允許有SHOWDATABASES權(quán)限的用戶執(zhí)行SHOWDATABASES語句,該語句顯示所有數(shù)據(jù)庫名。不使用該選項,允許所有用戶執(zhí)行SHOWDATABASES但只顯示用戶有SHOWDATABASES權(quán)限或部分?jǐn)?shù)據(jù)庫權(quán)限的數(shù)據(jù)庫名。請注意全局權(quán)限指數(shù)據(jù)庫的權(quán)限。9.mysq備份策略像mysql、sqlserver、access這種數(shù)據(jù)庫都是將數(shù)據(jù)以單獨文件的形式保存在磁盤上的,所以,對于數(shù)據(jù)庫的備份也可以采用傳統(tǒng)的文件備份策略??偟膩碚f,有以下方式:本地備份使用mysqldump進行備份非常簡單,在備份數(shù)據(jù)庫的時候,我們還可以同時使用管道gzip命令對備份文件進行壓縮,可以采用Rsync的異地備份方式方式,將備份服務(wù)器的目錄掛載到數(shù)據(jù)庫服務(wù)器,將數(shù)據(jù)庫文件備份打包后,通過crontab定時備份數(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可以把整個數(shù)據(jù)庫裝載到一個單獨的文本文件中。這個文件包含有所有重建您的數(shù)據(jù)庫所需要的SQL命令。這個命令取得所有的模式(schema)并且將其轉(zhuǎn)換成DDL語法(CREATE語句,即數(shù)據(jù)庫定義語句),取得所有的數(shù)據(jù),并且從這些數(shù)據(jù)中創(chuàng)建INSERT語句。這個工具將您的數(shù)據(jù)庫中所有的設(shè)計倒轉(zhuǎn)。因為所有的東西都被包含到了一個文本文件中。這個文本文件可以用一個簡單的批處理和一個合適SQL語句導(dǎo)回到MySQ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論