亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 6264 | 回復(fù): 6
打印 上一主題 下一主題

通過修改mysql源碼添加審計(jì)功能 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-03-04 16:00 |只看該作者 |倒序?yàn)g覽
本帖最后由 ubuntuer 于 2011-03-04 16:01 編輯

通過修改mysql源碼添加審計(jì)功能
實(shí)驗(yàn)環(huán)境:vmware虛擬centos5.3
虛擬機(jī):192.168.83.137 (自己編譯的mysqld 5.1.55)
         192.168.83.133  mysql client

一、原理
   Mysql審計(jì)無非抓包(tcp and 3306),目前mysqlsniffer已經(jīng)很好的完成了抓包功能,加點(diǎn)自己的功能也簡單,這個(gè)下次有機(jī)會(huì)再說,mysqlsniffer的代碼量很少,對于用過pcap的人來說,都是a piece of cake!
   今天還是說下從mysql的源碼入手,大家都知道m(xù)ysql有了慢log功能,讓我們先看看一條慢log:
   
這個(gè)語句似乎已經(jīng)滿足了審計(jì)的功能,誰在那里在什么時(shí)間做了什么???
Root于11:00:22在localhost上執(zhí)行了insert操作
我們大膽的想下,如果mysql每條語句都打log是不是就完成審計(jì)了呢?absolutely,不過這個(gè)似乎太黃太暴力了,只針對特定用戶特定機(jī)器執(zhí)行審計(jì)操作是不是就達(dá)到審計(jì)的要求了呢….嗯哼、嗯哼~~~
那我們再添加兩個(gè)選項(xiàng) audit-user、audit-ip不就ok了么,so just do it

Ps:
  在這個(gè)的基礎(chǔ)上,可以將慢log修改成發(fā)送到另一臺(tái)server上統(tǒng)一分析,這樣對性能也沒有什么影響。我這個(gè)只是個(gè)非常非常粗糙的版本,請?jiān)徫倚薷膍ysql代碼后make && make install后,居然啟動(dòng)成功,審計(jì)成功的驚喜吧…留待后面完善

二、代碼修改
   2.1 添加配置選項(xiàng)
     2.1.1 加載源碼
Sourceinsight加載mysql 5.1.55源碼(si,默認(rèn)不加載.cc文件,options->Document options設(shè)置下)
     2.1.2 如何添加配置選項(xiàng)
讓我們先了解下log-error這個(gè)配置選項(xiàng)(因?yàn)槲覀兲砑拥呐渲眠x項(xiàng),也將是字符串滴,注意是log-error不是log_error),我們在依葫蘆畫,search下主要有:



struct my_option my_long_options[] = {
   ….
   {"log-error", OPT_ERROR_LOG_FILE, "Error log file.",
    &log_error_file_ptr, &log_error_file_ptr, 0, GET_STR,
    OPT_ARG, 0, 0, 0, 0, 0, 0}
   …
}

看下就知道m(xù)ysql讀取配置選項(xiàng)為log-error的值到log_error_file_ptr這個(gè)變量中,這里var_type(GET_STR, GET_STR_ALLOC等)和arg_type(NO_ARG, OPT_ARG,REQUIRED_ARG)你懂的,我就不說了

接下來就是log_error_file_ptr這個(gè)變量是怎么使用的了,還是按潛規(guī)則,search了哦
其實(shí)最主要的就是在init_server_components中將log_error_file_ptr賦值到了log_error_file中
fn_format(log_error_file, log_error_file_ptr, mysql_data_home, ".err",
                MY_UNPACK_FILENAME | MY_SAFE_PATH);
接下來就是如何用這個(gè)變量了,大家注意我標(biāo)紅的


在mysql_priv.h中extern了,在log.cc和set_var.cc中使用了log_error_file這個(gè)變量。。
先看看set_var.cc吧 sys_log_error的類型為sys_var_const,sys_var_const的構(gòu)造函數(shù)有個(gè)chain_sys_var,看字面意思就這個(gè)這個(gè)函數(shù)是將所有變量(其實(shí)也就是配置選項(xiàng)串起來了),這里就不細(xì)說了,有興趣的自己跟下
到這里如何添加配置選項(xiàng)就清晰了

2.1.3
首先在mysqld中添加一個(gè)我們自己的配置選項(xiàng)

至于opt_audit_user的定義,這些就不說了
將這個(gè)變量保存到一個(gè)數(shù)組中(這里完全模仿log-error),在init_server_components中添加:
snprintf(audit_user, sizeof(audit_user), "%s", opt_audit_user);
在mysql_priv.h中添加:
extern char* opt_audit_user;
extern char audit_user[FN_REFLEN];

2.2 審計(jì)原理
   利用慢log,search下long_query_time在log_slow_statement中
    if (((end_utime_of_query - thd->utime_after_lock) >
         thd->variables.long_query_time || …
    一路追尋,找到
   具體的語句打印在
bool LOGGER::slow_log_print(THD *thd, const char *query, uint query_length,
                            ulonglong current_utime)

  那么一切都清晰而又明了了,如果設(shè)置long_query_time為0,把>修改為>=,在的slow_log_print里過濾掉一些不想審計(jì)的東東,就ok了

三、源碼編譯安裝
   具體源碼怎么修改的,我就不寫了,代碼我給出來…
   Make && make install后cp ./support-files/mysql.server /etc/init.d/mysqld就可以了。。。

四、        使用
4.1 配置文件/etc/my.cnf
修改配置文件,添加下面的幾個(gè)選項(xiàng)


哈哈,上面兩個(gè)配置選項(xiàng)就是自己添加的,表示只審計(jì)來自192.168.86.133上的secutcs用戶,log-slow-queries表示log存放的文件名,long_query_time=0表示記錄任何log(聰明的你可能已經(jīng)想到了還需要修改某處的>為>=)

4.2         啟動(dòng)mysql,查看審計(jì)log
[root@localhost ~]# /etc/init.d/mysqld start
這里的mysqld就是mysql.server cp過來的,強(qiáng)烈建議使用mysql.server這個(gè)啟動(dòng)腳本,在137上查看審計(jì)log



4.3        133上使用secutcs賬戶連接
[root@localhost ~]# mysql -usecutcs -p123456 -h192.168.83.137 test
4.4        137上audit_log

4.5        137上自己使用root帳號(hào)看是否能審計(jì)
[root@localhost ~]# mysql -uroot -p123456 test -S /var/lib/mysql/mysql.sock
使用root賬戶,沒有效果

在133上使用 另一個(gè)賬戶haha也沒有反映
[root@localhost ~]# mysql -uhaha -p123456 -h192.168.83.137 test  
4.6        來查看下我們設(shè)置的變量
  
五、        后續(xù)
目前這種做法,對正常的慢log有影響,后續(xù)再專門添加一個(gè)audit-log表示審計(jì)功能開啟與否,long-query-time也再另添加一個(gè)audit-long-query-time就可以了

六、        附件patch包
有些地方我可能敲了回車,patch包不一定對,但是vim打開下audit.patch基本在那里修改了,已經(jīng)很清除了
   如果patch包不行,直接使用 ,我把sql子目錄打包了,如果設(shè)計(jì)到路徑問題,我configure的時(shí)候使用的是./configure –prefix=/usr/local

word和程序都在附件里了,大家笑納
blog地址為:http://blog.chinaunix.net/space. ... =blog&id=154149
  

mysql審計(jì).tar (4.44 MB, 下載次數(shù): 708)

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2011-03-04 16:00 |只看該作者
上傳上來圖片什么的都看不清楚了,大家看附件里的word文檔

論壇徽章:
1
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-03-12 06:20:00
3 [報(bào)告]
發(fā)表于 2011-03-04 16:16 |只看該作者
本帖最后由 qlks 于 2011-03-04 16:20 編輯

我在4.0的時(shí)候?qū)戇^類似的一個(gè)
http://72891.cn/thread-1191873-1-1.html
但是沒有audit-user,host功能
現(xiàn)在終于有人完成了這個(gè)功能
恭喜,非常不錯(cuò)

我有以下幾個(gè)問題,使這個(gè)審計(jì)做得再精細(xì)一點(diǎn):
1.可否將審計(jì)單獨(dú)放到一個(gè)文件或者表中?
2.參數(shù)是否可以熱調(diào)?

若可以實(shí)現(xiàn)的話,請第一時(shí)間與我聯(lián)系

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2011-03-04 17:14 |只看該作者
我在4.0的時(shí)候?qū)戇^類似的一個(gè)

但是沒有audit-user,host功能
現(xiàn)在終于有人完成了這個(gè)功能
恭喜,非常不 ...
qlks 發(fā)表于 2011-03-04 16:16



    可以做到的...
   可以交流下: 我QQ  9197015

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2011-03-04 17:20 |只看該作者
1.  對于1再增加一個(gè)選項(xiàng)就可以了,其實(shí)我個(gè)人是想發(fā)送網(wǎng)絡(luò)包,統(tǒng)一分析的
2.  對于動(dòng)態(tài)修改,跟蹤一個(gè)可以動(dòng)態(tài)修改的變量,應(yīng)該完善bool update(THD *thd, set_var *var);這個(gè)函數(shù)就可以了,待驗(yàn)證...
有空我嘗試下

論壇徽章:
1
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-03-12 06:20:00
6 [報(bào)告]
發(fā)表于 2011-03-04 17:57 |只看該作者
1.  對于1再增加一個(gè)選項(xiàng)就可以了,其實(shí)我個(gè)人是想發(fā)送網(wǎng)絡(luò)包,統(tǒng)一分析的

恩,技術(shù)上的確不是非常復(fù)雜。記錄到表可以稍微直觀點(diǎn),可以參考Oracle審計(jì)的做法

2.  對于動(dòng)態(tài)修改,跟蹤一個(gè)可以 ...
ubuntuer 發(fā)表于 2011-03-04 17:20

這個(gè)就要考慮是否是全局的,還是會(huì)話級(jí)別的,是否都可以熱調(diào),可能還需要加一個(gè)互斥量來進(jìn)行同步

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2011-03-07 17:26 |只看該作者
GOOGLE有類似的補(bǔ)丁,為何不用
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP