這篇文章將為大家詳細(xì)講解有關(guān)Tracee中怎么使用eBPF來(lái)追蹤容器和系統(tǒng)事件,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元于田做網(wǎng)站,已為上家服務(wù),為于田各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
Tracee是一款易于使用的輕量級(jí)容器和系統(tǒng)追蹤工具,在該工具的幫助下,研究人員可以實(shí)時(shí)監(jiān)控系統(tǒng)調(diào)用和其他系統(tǒng)事件。Tracee的獨(dú)特之處就在于,它只會(huì)追蹤新創(chuàng)建的進(jìn)程和容器,也就是Tracee運(yùn)行之后所開(kāi)啟的進(jìn)程和容器,這樣就可以幫助用戶將注意力放在相關(guān)事件上,而不是系統(tǒng)中所發(fā)生的每一件事情。向Tracee添加新事件(尤其是系統(tǒng)調(diào)用)也非常簡(jiǎn)單,而且無(wú)需手寫(xiě)任何代碼。
除了追蹤功能之外,Tracee還能夠捕捉到寫(xiě)入磁盤(pán)或內(nèi)存的文件,并提取動(dòng)態(tài)加載至應(yīng)用程序內(nèi)存中的代碼。在這些功能的幫助下,我們將能夠獲取到運(yùn)行進(jìn)程的內(nèi)部情況。
Tracee要求運(yùn)行系統(tǒng)的Linux內(nèi)核版本 >= 4.14。
如果使用Docker鏡像的話,還需要滿足下列條件:
C標(biāo)準(zhǔn)庫(kù);
libelf和zlib庫(kù);
clang >= 9;
如果使用的是預(yù)編譯的eBPF代碼,則需要滿足下列條件:
clang >= 9;
/usr/src下包含可用的內(nèi)核Header,由用戶提供,需匹配正在運(yùn)行的內(nèi)核版本;
docker run --name tracee --rm --privileged --pid=host -v /lib/modules/:/lib/modules/:ro -v /usr/src:/usr/src:ro -v /tmp/tracee:/tmp/tracee aquasec/tracee
上述命令將會(huì)以無(wú)參數(shù)的形式運(yùn)行Tracee,默認(rèn)會(huì)收集所有新創(chuàng)建進(jìn)程的相關(guān)事件,并將其以標(biāo)準(zhǔn)輸出的形式打印在表格中。
Tracee這個(gè)程序基于eBPF程序(tracee.bpf.$kernelversion.$traceeversion.o)實(shí)現(xiàn),當(dāng)Tracee開(kāi)始運(yùn)行后,它將會(huì)尋找eBPF程序,路徑可能是/tmp/tracee或TRACEE_BPF_FILE環(huán)境變量定義的路徑。如果沒(méi)有找到eBPF的話,程序?qū)?huì)嘗試自動(dòng)構(gòu)建eBPF,這一步可以使用--build-policy選項(xiàng)來(lái)控制。
最簡(jiǎn)單的方法就是讓tracee程序自動(dòng)構(gòu)建eBPF程序,我們可以按照下列方式獲取可執(zhí)行程序:
從項(xiàng)目的GitHub庫(kù)上下載(tar.gz);
使用Docker鏡像:aquasec/tracee(已包含所有依賴組件);
使用make build命令從源代碼構(gòu)建可執(zhí)行程序;
在Docker容器中使用源碼構(gòu)建可執(zhí)行程序:make build DOCKER=1;
或者說(shuō),我們也可以預(yù)編譯eBPF程序,并將其提供給tracee程序。這樣一來(lái),我們就不需要用到clang和內(nèi)核Header了。我們可以按照下列方式構(gòu)建eBPF:
make bpf
如需在Docker容器中構(gòu)建,請(qǐng)運(yùn)行下列命令:
make bpf DOCKER=1
或
make all make all DOCKER=1
拿到eBPF程序之后,我們就可以將其提供給Tracee了。此時(shí),我們可以使用更加輕量級(jí)的aquasec/tracee:slim鏡像來(lái)代替完整的Docker鏡像。這個(gè)鏡像無(wú)法構(gòu)建eBPF程序,因此我們需要預(yù)先完成eBPF的構(gòu)建。
如果Tracee執(zhí)行的不是追蹤任務(wù),那么它就不需要其他權(quán)限。比如說(shuō),構(gòu)建eBPF程序、枚舉所有選項(xiàng)等等,都能夠以普通用戶完成。
如需執(zhí)行追蹤任務(wù),Tracee則需要更高級(jí)別的管理員權(quán)限了。
下面給出的是Tracee的樣本輸出(無(wú)額外參數(shù)運(yùn)行,默認(rèn)追蹤所有事件):
TIME(s) UID COMM PID TID RET EVENT ARGS 176751.746515 1000 zsh 14726 14726 0 execve pathname: /usr/bin/ls, argv: [ls] 176751.746772 1000 zsh 14726 14726 0 security_bprm_check pathname: /usr/bin/ls, dev: 8388610, inode: 777 176751.747044 1000 ls 14726 14726 -2 access pathname: /etc/ld.so.preload, mode: R_OK 176751.747077 1000 ls 14726 14726 0 security_file_open pathname: /etc/ld.so.cache, flags: O_RDONLY|O_LARGEFILE, dev: 8388610, inode: 533737 ...
關(guān)于Tracee中怎么使用eBPF來(lái)追蹤容器和系統(tǒng)事件就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
分享標(biāo)題:Tracee中怎么使用eBPF來(lái)追蹤容器和系統(tǒng)事件
網(wǎng)站地址:http://www.chinadenli.net/article34/peiise.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、Google、移動(dòng)網(wǎng)站建設(shè)、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)